SNTP

Перейти к навигацииПерейти к поиску
SNTP
Название Simple Network Time Protocol
Уровень (по модели OSI) Прикладной
СемействоTCP/IP
Порт/ID123/UDP
Назначение протокола Синхронизация времени
СпецификацияRFC 4330

SNTP (англ. Simple Network Time Protocol) — протокол синхронизации времени по компьютерной сети. Является упрощённой реализацией протокола NTP. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени. SNTP протокол является частным случаем NTP протокола с некоторыми упрощениями. Таким образом SNTP клиент может обращаться к любому NTP-серверу, как к серверу SNTP.

Формат времени

В протоколе SNTP используется одинаковый с протоколом NTP формат представления времени — 64-битное число, состоящее из 32-битного счётчика секунд и 32-битного счётчика долей секунд. Нулевое значение счётчика времени соответствует нулю часов 1 января 1900 г., 6 ч 28 м 16 с 7 февраля 2036 г. и т. д. Для успешного функционирования протокола необходимо, чтобы клиент знал своё время в пределах ±34 лет относительно времени сервера.

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

Байт012345678910111213141516171819202122232425262728293031
0—3ИКНВРежимСтратаИнтервал опросаТочность
4—7Задержка
8—11Дисперсия
12—15Идентификатор источника
16—19Время обновления
20—23
24—27Начальное время
28—31
32—35Время приёма
36—39
40—43Время отправки
44—47
48—51Ключ идентификации
52—55Дайджест сообщения
56—59
60—63
64—67
  • Индикатор коррекции (ИК) показывает предупреждение о будущей вставке или удалении секунды в последней минуте суток:
ИКЗначение
0Нет коррекции
1Последняя минута будет иметь 61 секунду
2Последняя минута будет иметь 59 секунд
3Время не синхронизировано
  • Номер версии (НВ) — текущее значение 4.
  • Режим:
РежимЗначение
0Зарезервирован
1Симметричный активный
2Симметричный пассивный
3Клиент
4Сервер
5Широковещательный
6Зарезервирован для управляющих сообщений NTP
7Зарезервирован для частного использования
  • Страта — поле определено только для сообщений сервера:
СтратаЗначение
0Поцелуй смерти (сервер не должен использоваться)
1Первичная синхронизация
2-15Вторичная синхронизация
16-255Зарезервированно
  • Интервал опроса — беззнаковое целое, двоичная экспонента которого показывает максимальный интервал между последовательными сообщениями в секундах. Определено только для сообщений сервера, допустимые значения от 4 (16 с) до 17 (около 36 ч).
  • Точность — знаковое целое, двоичная экспонента которого показывает точность системных часов. Определено только для сообщений сервера, типичные значения от −6 до −20.
  • Задержка — знаковое число с фиксированной запятой, находящейся между 15 и 16 знаками, показывающее полное время распространения сигнала туда и обратно до источника синхронизации сервера времени. Определено только для сообщений сервера.
  • Дисперсия — беззнаковое число с фиксированной запятой, находящейся между 15 и 16 знаками, показывающее максимальную ошибку из-за нестабильности часов. Определено только для сообщений сервера.
  • Идентификатор источника — источник синхронизации сервера, строка для страты 0 и 1, IP-адрес для вторичных серверов. Определено только для сообщений сервера.
  • Время обновления — время, когда системные часы последний раз были установлены или скорректированны.
  • Начальное время, время приёма, время отправки определены ниже.
  • Ключ идентификации, дайджест сообщения — необязательные поля, используемые для аутентификации.

Работа клиента

Клиент SNTP может работать в одноадресном, широковещательном и многоадресном режимах. В одноадресном режиме клиент посылает запрос (режим 3) и ждёт ответ (режим 4) от сервера. В широковещательном режиме клиент не посылает запросы, а ожидает сообщения (режим 5) от одного или нескольких серверов. В многоадресном режиме клиент посылает запрос (режим 3) по широковещательному адресу и ждёт ответ (режим 4) от одного или нескольких серверов. Первый ответивший сервер используется для последующих одноадресных запросов, остальные ответы игнорируются.

Поле Одно- многоадресный Широковещательный
ЗапросОтвет
Индикатор коррекции00—30—3
Номер версии1—4из запроса1—4
Режим345
Страта00—150—15
Интервал опроса0игнорируетсяигнорируется
Точность0игнорируетсяигнорируется
Задержка0игнорируетсяигнорируется
Дисперсия0игнорируетсяигнорируется
Идентификатор источника0игнорируетсяигнорируется
Время обновления0игнорируетсяигнорируется
Начальное время0см. описаниеигнорируется
Время приёма0см. описаниеигнорируется
Время отправкисм. описаниесм. описаниесм. описание
Аутентификациянеобязательнонеобязательнонеобязательно
Дайджест сообщениянеобязательнонеобязательнонеобязательно

В одноадресном и многоадресном режиме клиент заполняет поля «НВ», «Режим» и, необязательно, «Время отправки». Остальные поля заполняются нулями. Сервер, получая запрос от клиента, подготавливает своё сообщение для ответа, копируя поле «Время отправки», указанное в запросе клиента, в поле «Начальное время», а также заполняет поля «Время приёма» и «Время отправки». «Время прибытия» фиксируется клиентом в момент приёма ответа от сервера.

НаименованиеКодКогда генерируется
Начальное времяТ1Время отправки запроса клиентом (время у клиента, т.е. несинхронизированное)
Время приёмаТ2Время приёма запроса сервером
Время отправкиТ3Время отправки ответа сервером
Время прибытияТ4Время приёма ответа клиентом (время у клиента, т.е. несинхронизированное)

Клиент, получая ответ от сервера, в качестве текущего времени устанавливает T4 + t, где t - сдвиг локального времени. Этот сдвиг учитывает задержку передачи пакетов, в связи с чем синхронизированное время клиента максимально приближенно ко времени сервера.

Сдвиг локального времени t и задержка передачи пакетов d вычисляется по формулам:

t = ((T2 - T1) + (T3 - T4)) / 2
d = (T4 - T1) - (T3 - T2)

Формула для сдвига t получается из следующего уравнения: T` = T4 + t = T3 + d/2

В широковещательном режиме клиент не получает информации о задержке распространения и коррекция не производится.

См. также

Ссылки

RFC 4330 — Simple Network Time Protocol (SNTP) Version 4