Loading AI tools
протокол синхронизации времени по сети Из Википедии, свободной энциклопедии
NTP (англ. Network Time Protocol — протокол сетевого времени) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью. Протокол был разработан Дэвидом Л. Миллсом[англ.], профессором Делавэрского университета, в 1985 году. Версия на 2015 год — NTPv4[1].
NTP | |
---|---|
Название | Network Time Protocol |
Уровень (по модели OSI) | Прикладной |
Семейство | TCP/IP |
Создан в | 1985 |
Порт/ID | 123/UDP |
Назначение протокола | Синхронизация часов |
Спецификация | RFC 5905 |
NTP, основанный на алгоритме Марзулло, использует для своей работы протокол UDP и учитывает время передачи. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей[2].
Наиболее широкое применение протокол NTP находит для синхронизации серверов точного времени. Для достижения максимальной точности предпочтительна постоянная работа программного обеспечения NTP в режиме системной службы. В семействе операционных систем Microsoft Windows — это служба W32Time[3], в UNIX-подобных системах — демон Ntpd[4] или chronyd.
Более простая реализация этого алгоритма известна как SNTP — простой протокол сетевого времени. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени[5].
Структура пакета описана в RFC 5905[1]. Пакет состоит из целого числа 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 | Общий радиосигнал с длительностью импульса, равной 1 секунде[англ.] |
IRIG | Группа стандартизации в телеметрии[англ.], США |
WWVB | Низкочастотный радиопередатчик, 60 кГц, Форт Коллинз[англ.], Колорадо, США |
DCF | Низкочастотный радиопередатчик, 77.5 кГц, DCF77, Майнфлинген, ФРГ |
HBG | Низкочастотный радиопередатчик, 75 кГц, Прангинс[англ.], Швейцария |
MSF | Низкочастотный радиопередатчик, 60 кГц, Антхорн[англ.], Великобритания |
JJY | Низкочастотный радиопередатчик, 40 кГц, Фукусима, 60 кГц, Сага, Япония |
LORC | Среднечастотный радиопередатчик, 100 кГц, радионавигация, LORAN-C[англ.] |
TDF | Среднечастотный радиопередатчик, 162 кГц, Аллоуис[англ.], Франция |
CHU | Высокочастотный радиопередатчик, Оттава, Онтарио[англ.], Канада |
WWV | Высокочастотный радиопередатчик, Форт Коллинз, Колорадо[англ.], США |
WWVH | Высокочастотный радиопередатчик, Кауаи, Гавайи[англ.], США |
NIST | Телефонный модем Национального института стандартов и технологий США |
ACTS | Телефонный модем Национального института стандартов и технологий США |
USNO | Телефонный модем Национальной обсерватории США |
PTB | Телефонный модем Национального метрологического института Германии[англ.] |
Для слоя 0, который считается неопределённым или недопустимым, поле Идентификатор источника может использоваться для доставки сообщений, которые выполняют роль данных о состоянии системы и управления доступом. Такие сообщения называются «Kiss-o'-Death»[заметка 1] (KoD), а доставляемые ими ASCII-данные называются «kiss codes» (коды «помощи»). Перечень принятых в настоящее время кодов «помощи» представлен в таблице ниже[6].
Получатели KoD-сообщений обязаны их проверить и выполнить следующие действия[1]:
Код | Описание |
---|---|
ACST | Виртуальное соединение установлено одноадресным сервером |
AUTH | Аутентификация сервером завершилась отказом |
AUTO | Autokey-последовательность некорректна |
BCST | Виртуальное соединение установлено широковещательным сервером |
CRYP | Криптографическая аутентификация или идентификация завершились отказом |
DENY | Удалённый сервер отказал в доступе |
DROP | Потеря удаленного сервера времени в симметричном режиме |
RSTR | Отказ в доступе вследствие локальной стратегии безопасности |
INIT | Виртуальное соединение с первого раза не установлено |
MCST | Виртуальное синхросоединение установлено динамически обнаруженным сервером |
NKEY | Ключ не найден (либо он никогда ранее не загружался, либо он является ненадёжным) |
RATE | Скорость превышена. Сервер временно запретил доступ, так как клиент превысил порог скорости |
RMOT | Изменение виртуального соединения со стороны удалённого IP-узла, использующего NTP-протокол напрямую |
STEP | Произошла итерация по изменению системного времени, виртуальное синхросоединение не установлено |
NTP использует иерархическую сеть, где каждый уровень имеет свой номер, называемый слой (англ. stratum). Слой 1 — первичные серверы, непосредственно синхронизирующиеся с национальными службами времени через спутник, радио или телефонный модем. Слой 2 — вторичные серверы, синхронизируются с первичными серверами, и т. д. Как правило, клиенты и серверы NTP с относительно небольшим числом клиентов не синхронизируется с первичными серверами. Существует несколько сотен общественных вторичных серверов, работающих на более высоких слоях. Они являются предпочтительным выбором[7].
Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 232 секунд, с теоретической точностью 2−32 секунды. Поскольку шкала времени в NTP повторяется каждые 232 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 68 лет[8]). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать 70 лет (с учётом високосных лет), чтобы корректно совместить время с Windows или Unix-системами[7][9].
Бит | 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 |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.