Опубликован: 10.10.2007 | Уровень: специалист | Доступ: платный
Лекция 7:

Сетевой протокол времени NTP

Приложение А. Формат данных NTP — версия 3

Формат NTP -сообщения, которое следует сразу после UDP-заголовка, показан на рис. 7.2.

Формат сообщения NTP.

Рис. 7.2. Формат сообщения NTP.

Индикатор добавления ( LIleap indicator) — двухбитовое поле предупреждения о предстоящем добавлении/вычитании секунды к последней минуте текущего дня. Значения этих битов смотри в таблице 7.1.

Номер версии (VN) — трехбитовое поле, указывающее на номер версии протокола NTP, в настоящее время (3).

Режим (Mode) — трехбитовое поле, определяющее режим, значения кодов режима приведены в таблице 7.2.

Слой (Stratum) — 8-битовое поле, определяющее код слоя, где работают локальные часы. Коды слоя представлены в таблице 7.3. Возможные значения кодов лежат в интервале от нуля до NTP.INFIN включительно.

Период запросов (poll interval) — 8-битовое поле, указывающее на максимальное значение интервала между запросами. Код, записанный в этом поле, интерпретируется как целое число со знаком и характеризует значение периода в секундах как ближайшее к величине степени двух. Коды, которые могут быть записаны в этом поле, должны лежать в интервале между NTP.MAXPOLL и NTP.MAXPOLL включительно.

Точность (precision) — 8-битовое поле, обозначающее точность локальных часов в секундах. Код поля интерпретируется как целая степень со знаком числа 2.

Базовая задержка (Root Delay) — 32-битовое поле, характеризующее RTT до эталонного источника в секундах. Код поля интерпретируется как число с фиксированной запятой, размещенной между битами 15 и 16. Заметим, что величина этого кода может иметь и отрицательное значение (зависит от точности часов и величины дрейфа).

Базовая дисперсия (Root Dispersion) — 32-битовое поле, определяющее максимальную ошибку по отношению к эталонному источнику в секундах. Код поля интерпретируется как число с фиксированной запятой (между 15 и 16 битами). Допустимы только положительные значения.

Идентификатор эталонных часов (Reference Clock Identifier) — 32-битовое поле, идентифицирующее конкретные эталонные часы. В случае кода слоя нуль (не специфицировано) или слоя 1 (первичный эталон) — это 4-октетная комбинация, выравнивается по левому краю и дополняется нулями (ASCII). Когда идентификатор в NTP не специфицирован, предлагаются asci -идентификаторы, приведенные в таблице 7.4.

В случае слоя 2 и больше (вторичный эталон) — это 4-октетный IP-адрес ЭВМ — первичного эталона.

Эталонная временная метка (Reference Timestamp) — поле локального времени (64-битовый формат временных меток), когда часы корректировались в последний раз.

Исходная временная метка (Originate Timestamp) определяет время, когда запрос направлен серверу (стандартный 64-битовый формат временных меток).

Получаемая временная метка (Receive Timestamp) — время, когда запрос прибыл к серверу (стандартный 64-битовый формат временных меток).

Передаваемая временная метка (Transmit Timestamp) — локальное время, когда послан отклик сервером (стандартный 64-битовый формат временных меток).

Аутентификатор (authenticator) (опционно) — поле, содержащее аутентификационную информацию. Используется лишь в случае реализации NTP -аутентификации.

Приложение Б. Сообщения управления NTP

В сетевой среде должны быть средства управления программами NTP, такие, как установка индикатора добавления секунды (Leap-Indicator) со стороны первичного сервера, настройка различных системных параметров и процедур мониторинга. Эти операции могут быть реализованы с привлечением протокола snmp и соответствующего расширения базы данных MIB. Однако в тех случаях, когда такие средства недоступны, функции могут быть реализованы с помощью специальных управляющих NTP -сообщений.

Управляющие сообщения NTP имеют код 6 в поле режима первого октета NTP -заголовка. Формат поля данных специфичен для каждой из команд или отклика. Однако в большинстве случаев формат конструируется так, чтобы облегчить его непосредственное чтение. Как правило, он состоит из ASCII-строк. Если используется аутентификатор, поле данных дополняется нулями до границы, кратной целому числу 32-битных слов.

IP-ЭВМ не должны обрабатывать дейтограммы длиннее 576 октетов; однако, некоторые команды или отклики могут содержать данные, не помещающиеся в одну дейтограмму. Для решения этой проблемы все октеты сообщения нумеруются, начиная с нуля. При передаче фрагментов сообщения номер первого октета записывается в поле смещения (offset), а число октетов в поле длины. Бит (M — more) устанавливается во всех фрагментах за исключением последнего.

Большинство контрольных функций включает посылку команды и получение отклика. Отправитель выбирает ненулевой порядковый номер и устанавливает статусное поле и биты R и E равными нулю. Получатель интерпретирует код операции и дополнительную информацию, содержащуюся в поле данных, вносит изменение в поле статуса и устанавливает бит R=1, а также возвращает три 32-битного слова заголовка вместе с другой дополнительной информацией поля данных. В случае неверного формата сообщения или ошибки в поле данных получатель заносит соответствующий код в поле статуса, устанавливает биты R и E равными 1 и опционно записывает диагностическое сообщение в поле данных.

Некоторые команды осуществляют чтение или запись для системных переменных и переменных партнеров для ассоциации, идентифицированной в команде. Другие читают или записывают значения переменных, которые связаны с радио-часами и другими приборами, имеющими непосредственное отношение к эталонам времени. Для определения ассоциации применяется ее 16-битовый идентификатор. Для системных переменных используется идентификатор нуль. Управляющий объект может затребовать текущий список идентификаторов с тем, чтобы их задействовать в дальнейшем. При попытке употребить уже недействительный идентификатор будет прислан соответствующий отклик, после чего необходимо запросить список идентификаторов еще раз.

Некоторые события, такие, как изменение статуса доступа к партнеру, не сопряжены с какими-либо командами и происходят асинхронно. Программа может запоминать информацию о таких событиях и пересылать ее в откликах. Текущий статус и краткая аннотация чрезвычайных событий пересылаются каждым откликом. Биты в статусном поле указывают на то, произошло ли какое-либо событие с момента предыдущего отклика и было ли их больше одного.

Формат сообщений управления NTP

Формат заголовков управляющих NTP -сообщений показан на рис. 7.3. Этот заголовок располагается непосредственно вслед за UDP-заголовком.

Формат управляющего сообщения NTP

Рис. 7.3. Формат управляющего сообщения NTP

Первые два бита, обозначенные ZZ, должны всегда содержать 0.

Номер версии (VN — version number) — трехбитовое поле, указывающее на номер версии протокола NTP, в настоящее время (3).

Режим (Mode) — трехбитовое поле, определяющее режим, значение кода режима для управляющих сообщений равно 6.

Бит отклика (R) — равен нулю для команд и 1 для откликов.

Бит ошибки (E) — равен нулю для нормального отклика и 1 в случае ошибки.

Бит продолжения (M — more) — равен нулю для последнего фрагмента и 1 для всех остальных.

Код операции (OP) — 5-битовое поле, определяющее код команды. Значения кодов и их функции представлены в таблице 7.5.

Таблица 7.5. Коды операции управляющего сообщения
Код Функция
0 Зарезервировано
1 чтение статуса команда/отклик
2 чтение переменной команда/отклик
3 запись переменной команда/отклик
4 чтение переменных часов команда/отклик
5 запись переменных часов команда/отклик
6 установка адреса/порта trap команда/отклик
7 отклик на Trap
8-31 Зарезервировано на будущее

Порядковый номер (Sequence) — 16-битовое поле, определяющее номер запроса или отклика и облегчающее определения их соответствия.

Статус — 16-битовое поле, содержащее код статуса системы, партнера или часов.

Идентификатор ассоциации (Association ID) — 16-битовое поле, несущее в себе идентификатор ассоциации.

Смещение (Offset) — 16-битовое поле, которое определяет положение первого октета поля данных в сообщении, передаваемом в нескольких дейтограммах (позиция задается в октетах).

Длина (Count) — 16-битовое поле, определяющее длину поля данных в октетах.

Данные — это поле содержит информацию сообщения, как для команд, так и для откликов. Максимальное число октетов в поле данных равно 468.

Аутентификатор (опционно). Поле, содержащие аутентификационную информацию. Используется лишь в случае реализации NTP -аутентификации.

Статусные слова

Статусные слова указывают на текущее состояние системы ассоциации и часов. Эти слова интерпретируются программами сетевого мониторинга и имеют 4 разных 16-битовых формата. Статусные слова партнеров и системы соответствуют откликам для всех команд за исключением случая чтения/записи переменных часов и установки адреса/порта для TRAP. Идентификатор ассоциации нуль соответствует системным статусным словам, в то время как ненулевой идентификатор указывает на какую-то конкретную ассоциацию. Статусное слово, присланное в ответ на команду чтения или записи переменной часов, указывает на состояние оборудования и кодирующего программного обеспечения.

Системные статусные слова

Системное статусное слово может присутствовать в статусном поле отклика и имеет следующий формат.

Индикатор добавления ( LIleap indicator) — двухбитовое поле предупреждения о предстоящем добавлении/вычитании секунды к последней минуте текущего дня. Значения этих битов смотри в таблице 7.1.

Источник часов (clock source) — 6-битовое поле, указывающее на используемый в данный момент источник синхронизации. Назначение кодов этого поля описано в таблице 7.6.

Таблица 7.6. Коды источников временного эталона
Код Функция
0 Не специфицирован или неизвестен
1 Калиброванные атомные часы (напр., hp 5061)
2 vlf (диапазон 4) или НЧ (диапазон 5) радио (напр., omega, wwvb)
3 ВЧ (диапазон 7) радио (напр., chu, msf, wwv/h)
4 УВЧ (диапазон 9) спутник (напр., goes, gps)
5 Локальная сеть (напр., dcn, tsp, dts)
6 UDP/ NTP
7 UDP/time
8 eyeball-and-wristwatch
9 Телефонный модем (напр., nist)
10-63 Зарезервировано на будущее

Системный счетчик событий — четырехбитовое целое число, которое обозначает число событий, происшедших с момента последнего получения статусного слова системы. Счетчик обнуляется, когда присылается в статусном поле отклика, и остается неизменным после достижения значения 15.

Код системного события — четырехбитовое число, идентифицирующее последнее системное событие, новое значение переписывает предыдущее. Коды событий перечислены в таблице 7.7.

Таблица 7.7. Коды системных событий
Код Функция
0 Не специфицировано
1 Рестарт системы
2 Системный или аппаратный сбой
3 Новое статусное слово системы (изменение битов добавления или синхронизации)
4 Новый источник синхронизации или слой (изменение sys.peer или sys.stratum)
5 Сброс системных часов (корректирующая добавка превысила clock.max)
6 Некорректное системное время или дата
7 system clock exception
8-15 Зарезервировано на будущее
Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?

Нияз Сабиров
Нияз Сабиров

Здравствуйте. А уточните, пожалуйста, по какой причине стоимость изменилась? Была стоимость в 1 рубль, стала в 9900 рублей.

Дмитрий Власов
Дмитрий Власов
Россия, Калининград