Меню
Главная
Случайная статья
Настройки
|
SNTP (англ. Simple Network Time Protocol) — протокол синхронизации времени по компьютерной сети. Является упрощённой реализацией протокола NTP. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени. SNTP протокол является частным случаем NTP протокола с некоторыми упрощениями. Таким образом SNTP клиент может обращаться к любому NTP-серверу, как к серверу SNTP.
Содержание
Формат времени
В протоколе SNTP используется одинаковый с протоколом NTP формат представления времени — 64-битное число, состоящее из 32-битного счётчика секунд и 32-битного счётчика долей секунд. Нулевое значение счётчика времени соответствует нулю часов 1 января 1900 г., 6 ч 28 м 16 с 7 февраля 2036 г. и т. д. Для успешного функционирования протокола необходимо, чтобы клиент знал своё время в пределах ±34 лет относительно времени сервера.
Формат сообщения
Байт |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31
|
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) от одного или нескольких серверов. Первый ответивший сервер используется для последующих одноадресных запросов, остальные ответы игнорируются.
Поле
|
Одно- многоадресный
|
Широковещательный
|
Запрос |
Ответ
|
Индикатор коррекции |
0 |
0—3 |
0—3
|
Номер версии |
1—4 |
из запроса |
1—4
|
Режим |
3 |
4 |
5
|
Страта |
0 |
0—15 |
0—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
|
|