TorrentPier
- 1 year ago
- 0
- 0
NTP ( англ. Network Time Protocol — протокол сетевого времени) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью . Протокол был разработан , профессором Делавэрского университета , в 1985 году. Версия на 2015 год — NTPv4 .
NTP, основанный на алгоритме Марзулло , использует для своей работы протокол UDP и учитывает время передачи. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи . В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет , и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей .
Наиболее широкое применение протокол NTP находит для синхронизации серверов точного времени. Для достижения максимальной точности предпочтительна постоянная работа программного обеспечения NTP в режиме системной службы . В семействе операционных систем Microsoft Windows — это служба W32Time , в UNIX-подобных системах — демон Ntpd или chronyd.
Более простая реализация этого алгоритма известна как SNTP — простой протокол сетевого времени. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени .
Структура пакета описана в RFC 5905 . Пакет состоит из целого числа 32-битных слов.
Данные в заголовке будут отличаться для различных режимов работы. Например, клиент в поля , , и должен записать нули.
Отступ | Октет | 0 | 1 | 2 | 3 | ||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Октет | Бит | 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 | 0 | ||||||||||||||||||||||||||||||||
4 | 32 | ||||||||||||||||||||||||||||||||
8 | 64 | ||||||||||||||||||||||||||||||||
12 | 96 | ||||||||||||||||||||||||||||||||
16 | 128 | ||||||||||||||||||||||||||||||||
20 | 160 | ||||||||||||||||||||||||||||||||
24 | 192 | ||||||||||||||||||||||||||||||||
28 | 224 | ||||||||||||||||||||||||||||||||
32 | 256 | ||||||||||||||||||||||||||||||||
36 | 288 | ||||||||||||||||||||||||||||||||
40 | 320 | ||||||||||||||||||||||||||||||||
44 | 352 |
Значение | Описание |
---|---|
0 | Нет предупреждения |
1 | Последняя минута дня содержит 61 секунду |
2 | Последняя минута дня содержит 59 секунд |
3 | Неизвестно (время не синхронизировано) |
Значение | Описание |
---|---|
0 | Зарезервировано |
1 | Симметричный активный режим |
2 | Симметричный пассивный режим |
3 | Клиент |
4 | Сервер |
5 | Широковещательный режим |
6 | Контрольное сообщение NTP |
7 | Зарезервировано для частного использования |
Значение | Описание |
---|---|
0 | Не определено или недопустим |
1 | Первичный сервер |
2-15 | Вторичный сервер, использующий NTP |
16 | Не синхронизировано |
17-255 | Зарезервировано |
ID | Источник |
---|---|
GOES | Геостационарный спутник системы экологического мониторинга и наблюдения |
GPS | Система глобального позиционирования |
GAL | Система местоопределения «Галилео» |
PPS | |
IRIG | , США |
WWVB | , Колорадо, США |
DCF | Низкочастотный радиопередатчик, 77.5 кГц, DCF77 , Майнфлинген, ФРГ |
HBG | , Швейцария |
MSF | , Великобритания |
JJY | Низкочастотный радиопередатчик, 40 кГц, Фукусима, 60 кГц , Сага, Япония |
LORC | Среднечастотный радиопередатчик, 100 кГц, радионавигация, |
TDF | , Франция |
CHU | , Канада |
WWV | , США |
WWVH | , США |
NIST | Телефонный модем Национального института стандартов и технологий США |
ACTS | Телефонный модем Национального института стандартов и технологий США |
USNO | Телефонный модем Национальной обсерватории США |
PTB | Телефонный модем |
Для слоя 0 , который считается неопределённым или недопустимым, поле может использоваться для доставки сообщений, которые выполняют роль данных о состоянии системы и управления доступом. Такие сообщения называются «Kiss-o'-Death» (KoD), а доставляемые ими ASCII-данные называются «kiss codes» (коды «помощи»). Перечень принятых в настоящее время кодов «помощи» представлен в таблице ниже .
Получатели KoD-сообщений обязаны их проверить и выполнить следующие действия :
Код | Описание |
---|---|
ACST | Виртуальное соединение установлено одноадресным сервером |
AUTH | Аутентификация сервером завершилась отказом |
AUTO | Autokey-последовательность некорректна |
BCST | Виртуальное соединение установлено широковещательным сервером |
CRYP | Криптографическая аутентификация или идентификация завершились отказом |
DENY | Удалённый сервер отказал в доступе |
DROP | Потеря удаленного сервера времени в симметричном режиме |
RSTR | Отказ в доступе вследствие локальной стратегии безопасности |
INIT | Виртуальное соединение с первого раза не установлено |
MCST | Виртуальное синхросоединение установлено динамически обнаруженным сервером |
NKEY | Ключ не найден (либо он никогда ранее не загружался, либо он является ненадёжным) |
RATE | Скорость превышена. Сервер временно запретил доступ, так как клиент превысил порог скорости |
RMOT | Изменение виртуального соединения со стороны удалённого IP-узла, использующего NTP-протокол напрямую |
STEP | Произошла итерация по изменению системного времени, виртуальное синхросоединение не установлено |
NTP использует иерархическую сеть, где каждый уровень имеет свой номер, называемый слой ( англ. stratum ). Слой 1 — первичные серверы, непосредственно синхронизирующиеся с национальными службами времени через спутник, радио или телефонный модем. Слой 2 — вторичные серверы, синхронизируются с первичными серверами, и т. д. Как правило, клиенты и серверы NTP с относительно небольшим числом клиентов не синхронизируется с первичными серверами. Существует несколько сотен общественных вторичных серверов, работающих на более высоких слоях. Они являются предпочтительным выбором .
Время представляется в системе NTP 64-битным числом (8 байт ), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 2 32 секунд, с теоретической точностью 2 −32 секунды. Поскольку шкала времени в NTP повторяется каждые 2 32 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 68 лет ). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать 70 лет (с учётом високосных лет), чтобы корректно совместить время с Windows или Unix-системами .
Бит | 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 | Секунды | Доли секунд |
Бит | 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 | Секунды | |||||||||||||||||||||||||||||||
4 | Доли секунд |
Бит | 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 | Номер эры | |||||||||||||||||||||||||||||||
4 | Отступ эры | |||||||||||||||||||||||||||||||
8 | Доли | |||||||||||||||||||||||||||||||
12 |