Эта статья входит в число добротных статей

NTP

Материал из Википедии — свободной энциклопедии
Перейти к навигацииПерейти к поиску
NTP
НазваниеNetwork Time Protocol
Уровень (помодели OSI)Прикладной
СемействоTCP/IP
Создан в1985
Порт/ID123/UDP
Назначение протоколаСинхронизация часов
СпецификацияRFC 5905

NTP (англ. Network Time Protocol — протокол сетевого времени) —сетевой протокол для синхронизации внутреннихчасовкомпьютера с использованием сетей с переменнойлатентностью. Протокол был разработанДэвидом Л. Миллсом[англ.], профессоромДелавэрского университета, в 1985 году. Версия на2015 год — NTPv4[1].

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-битных слов.

Данные в заголовке будут отличаться для различных режимов работы. Например, клиент в полячасовой слой,идентификатор источника,начальное время ивремя приёма должен записать нули.

Заголовок

[править |править код]
Заголовок NTP
ОтступОктет0123
ОктетБит012345678910111213141516171819202122232425262728293031
00ИКВерсияРежимЧасовой слойИнтервал опросаТочность
432Задержка
864Дисперсия
1296Идентификатор источника
16128Время обновления
20160
24192Начальное время
28224
32256Время приёма
36288
40320Время отправки
44352

Индикатор коррекции

[править |править код]
Пример синхронизации времени, используя NTP
Длина — 2 бита, отангл. Leap Indicator.
Целое число, показывающее предупреждение осекунде координации.
ЗначениеОписание
0Нет предупреждения
1Последняя минута дня содержит 61 секунду
2Последняя минута дня содержит 59 секунд
3Неизвестно (время не синхронизировано)

Номер версии

[править |править код]
Длина — 3 бита, отангл. Version Number.
Целое число, представляющее версию протокола.

Режим

[править |править код]
Длина — 3 бита, отангл. Mode.
Целое число, представляющее режим. Значения представлены в таблице ниже.
ЗначениеОписание
0Зарезервировано
1Симметричный активный режим
2Симметричный пассивный режим
3Клиент
4Сервер
5Широковещательный режим
6Контрольное сообщение NTP
7Зарезервировано для частного использования

Часовой слой

[править |править код]
Длина — 8 бит, отангл. Stratum.
Целое число, представляющеечасовой слой.
ЗначениеОписание
0Не определено или недопустим
1Первичный сервер
2-15Вторичный сервер, использующий NTP
16Не синхронизировано
17-255Зарезервировано

Интервал опроса

[править |править код]
Длина — 8 бит, отангл. Poll.
Целое число со знаком, представляющее максимальный интервал между последовательными сообщениями. Значение равно двоичному логарифму секунд. Предлагаемые по умолчанию пределы на минимальные и максимальные опросы — 6 и 10, соответственно.

Точность

[править |править код]
Длина — 8 бит, отангл. Precision.
Целое число со знаком, представляющее точность системных часов. Значение равно двоичному логарифму секунд. Например, значению −18 будет соответствовать точность около 1 мкс.

Задержка

[править |править код]
Длина — 32 бита, отангл. Root Delay.
Общее время распространения сигнала в обе стороны вкоротком формате NTP.

Дисперсия

[править |править код]
Длина — 32 бита, отангл. Root Dispersion.
Общая дисперсия для источника времени вкоротком формате NTP.

Идентификатор источника

[править |править код]
Длина — 32 бита, отангл. Reference ID.
Код источника синхронизации. Зависит от значения в полеЧасовой слой.
Дляслоя 0 — это четыреASCII символа, называемые «kiss code», используются для отладки и мониторинга.Смотри ниже
Дляслоя 1 — это четыре октета ASCII символов, дополненные слева нулями, назначенные для опорного времени. В таблице ниже представлен список, поддерживаемыйIANA[6].
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Телефонный модемНационального метрологического института Германии[англ.]
Дляслоя 2 и выше — это идентификатор сервера и может быть использован для фиксирования временных петель. Если используетсяIPv4, то идентификатор представляет собой четыре октета IP адреса. Если используетсяIPv6, то это первые четыре октетаMD5 хэша адреса. При использовании IPv6 адресов для сервера с NTPv4 и клиента с NTPv3 идентификатор может принимать случайное значение, из-за чего временные петли могут быть не зафиксированы.

Время обновления

[править |править код]
Длина — 64 бита, отангл. Reference Timestamp.
Время, когда система последний раз устанавливала или корректировала время.Формат NTP.

Начальное время

[править |править код]
Длина — 64 бита, отангл. Origin Timestamp.
Время клиента, когда запрос отправляется серверу.Формат NTP.

Время приёма

[править |править код]
Длина — 64 бита, отангл. Receive Timestamp.
Время сервера, когда запрос приходит от клиента.Формат NTP.

Время отправки

[править |править код]
Длина — 64 бита, отангл. Transmit Timestamp.
Время сервера, когда запрос отправляется клиенту.Формат NTP.

NTP-сообщение «Kiss-o'-Death»

[править |править код]

Дляслоя 0, который считается неопределённым или недопустимым, полеИдентификатор источника может использоваться для доставки сообщений, которые выполняют роль данных о состоянии системы и управления доступом. Такие сообщения называются «Kiss-o'-Death»[заметка 1] (KoD), а доставляемые ими ASCII-данные называются «kiss codes» (коды «помощи»). Перечень принятых в настоящее время кодов «помощи» представлен в таблице ниже[6].

Получатели KoD-сообщений обязаны их проверить и выполнить следующие действия[1]:

  • При получении кодовых комбинацийDENY иRSTR клиент обязан разорвать виртуальные соединения с данным сервером времени и прекратить передачу сообщений этому серверу.
  • При получении кодовой комбинацииRATE клиент обязан незамедлительно снизить свой интервал опроса этого сервера и продолжать его уменьшать каждый раз при получении этой кодовой комбинации.
  • При получении кодовой комбинации начинающейся с ASCII-символаХ, предназначенной для проведения экспериментальных исследований и последующих усовершенствований, она должна быть проигнорирована, если она не распознаётся.
  • Все другие кодовые комбинации и KoD-сообщения, не определённые данным протоколом, уничтожаются после их поверки.
Коды «помощи»
КодОписание
ACSTВиртуальное соединение установлено одноадресным сервером
AUTHАутентификация сервером завершилась отказом
AUTOAutokey-последовательность некорректна
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].

Короткий формат времени
Бит012345678910111213141516171819202122232425262728293031
0СекундыДоли секунд

Обычный формат времени
Бит012345678910111213141516171819202122232425262728293031
0Секунды
4Доли секунд

Формат даты
Бит012345678910111213141516171819202122232425262728293031
0Номер эры
4Отступ эры
8Доли
12

См. также

[править |править код]

Заметки

[править |править код]
  1. От «Kiss of Death», что в переводе значит «последний удар» или «последняя попытка».

Примечания

[править |править код]
  1. 123RFC 5905
  2. NTP FAQ . Проект NTP. Дата обращения: 25 октября 2015. Архивировано 6 сентября 2011 года.
  3. Windows Time Service Technical Reference . technet.microsoft.com (17 августа 2011). Дата обращения: 19 сентября 2011. Архивировано 6 сентября 2011 года.
  4. David L. Mills. Computer Network Time Synchronization: The Network Time Protocol (англ.). —Taylor & Francis, 2010. —ISBN 978-0-8493-5805-0. — [Архивировано 18 июля 2014 года.]
  5. RFC 4330
  6. 12Параметры NTP . IANA (22 июня 2010). Дата обращения: 23 октября 2015. Архивировано 4 марта 2016 года.
  7. 12How NTP Works . Дата обращения: 10 марта 2014. Архивировано 20 июня 2014 года.
  8. NTP Timestamp Calculations . www.eecis.udel.edu. Дата обращения: 12 апреля 2016. Архивировано 26 октября 2015 года.
  9. The NTP Timescale and Leap Seconds . Дата обращения: 12 мая 2012. Архивировано 15 мая 2012 года.

Литература

[править |править код]

Ссылки

[править |править код]
  • NTP: The Network Time Protocol (англ.). Network Time Foundation. — Общественный проект по развитию протокола и служб NTP. Дата обращения: 29 сентября 2008. Архивировано 5 сентября 2017 года.
  • Welcome to the NTP.Servers Web (англ.). Network Time Foundation (18 апреля 2013). — Проект публичных серверов NTP и рабочей группыIETF по протоколу NTP. Дата обращения: 6 декабря 2010. Архивировано 8 декабря 2010 года.
  • NTP Pool Project . — Общественный ресурс — кластер публичных NTP-серверов, поддерживаемых волонтёрами. Дата обращения: 7 марта 2019. Архивировано 22 апреля 2009 года.
  • NTP Server Online Tester . Server Test. — Онлайн-инструмент для проверки доступности сервера в Интернете. Дата обращения: 7 марта 2019. Архивировано 7 марта 2019 года.
  • Услуги NTP серверов . ВНИИФТРИ. — Серверы точного времени Главного метрологического центра государственной службы времени, частоты и определения параметров вращения Земли Всероссийского научно-исследовательского института Физико-технических и радиотехнических измерений. Дата обращения: 1 марта 2021. Архивировано 24 января 2021 года.
Перейти к шаблону «IPstack»
ОсновныепротоколыTCP/IP по уровняммодели OSI
Физический
Канальный
Сетевой
Транспортный
Сеансовый
Представления
Прикладной
Другие прикладные


✰
Эта статья входит в числодобротных статей русскоязычного раздела Википедии.
Источник —https://ru.wikipedia.org/w/index.php?title=NTP&oldid=146170125
Категории:
Скрытые категории: