SNTP () — протокол синхронизации времени по компьютерной сети. Является упрощённой реализацией протокола 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

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

См. также Служба точного времени OpenNTPD

Ссылки RFC 4330 — Simple Network Time Protocol (SNTP) Version 4

Категория:Протоколы прикладного уровня