NTP

Материал из Википедии — свободной энциклопедии
Версия от 13:10, 16 июля 2025; imported>Alex NB OT (замена имён и значений устаревшего неподдерживаемого InternetArchiveBot формата параметров доступности ссылок (11), замена устаревших имён параметров (8))
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигации Перейти к поиску

Шаблон:Карточка протокола NTP (англ. Шаблон:Lang-en2 — протокол сетевого времени) — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной Шаблон:D-. Протокол был разработан Шаблон:Нп5, профессором Делавэрского университета, в 1985 году. Версия на 2015 год — NTPv4<ref name="rfc5905">RFC 5905</ref>.

NTP, основанный на алгоритме Марзулло, использует для своей работы протокол UDP и учитывает время передачи. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи. В версии 4 способен достигать точности 10 мс (1/100 с) при работе через Интернет, и до 0,2 мс (1/5000 с) и лучше внутри локальных сетей<ref name="ntp-presice">Шаблон:Cite web</ref>.

Наиболее широкое применение протокол NTP находит для синхронизации серверов точного времени. Для достижения максимальной точности предпочтительна постоянная работа программного обеспечения NTP в режиме системной службы. В семействе операционных систем Microsoft Windows — это служба W32Time<ref>Шаблон:Cite web</ref>, в UNIX-подобных системах — демон Ntpd<ref name="MillsBook">Шаблон:Книга</ref> или chronyd.

Более простая реализация этого алгоритма известна как SNTP — простой протокол сетевого времени. Используется во встраиваемых системах и устройствах, не требующих высокой точности, а также в пользовательских программах точного времени<ref name="rfc4330">RFC 4330</ref>.

Структура пакета

Структура пакета описана в RFC 5905<ref name="rfc5905"/>. Пакет состоит из целого числа 32-битных слов.

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

Заголовок

Заголовок NTP
Отступ Октет 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

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

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

Номер версии

Длина — 3 бита, от англ. Шаблон:Lang-en2.
Целое число, представляющее версию протокола.

Режим

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

Часовой слой

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

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

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

Точность

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

Задержка

Длина — 32 бита, от англ. Шаблон:Lang-en2.
Общее время распространения сигнала в обе стороны в коротком формате NTP.

Дисперсия

Длина — 32 бита, от англ. Шаблон:Lang-en2.
Общая дисперсия для источника времени в коротком формате NTP.

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

Длина — 32 бита, от англ. Шаблон:Lang-en2.
Код источника синхронизации. Зависит от значения в поле Часовой слой.
Для слоя 0 — это четыре ASCII символа, называемые «kiss code», используются для отладки и мониторинга. Смотри ниже
Для слоя 1 — это четыре октета ASCII символов, дополненные слева нулями, назначенные для опорного времени. В таблице ниже представлен список, поддерживаемый IANA<ref name="rid-iana">Шаблон:Cite web</ref>.
ID Источник
GOES Геостационарный спутник системы экологического мониторинга и наблюдения
GPS Система глобального позиционирования
GAL Система местоопределения «Галилео»
PPS Шаблон:Нп5
IRIG Шаблон:Нп5, США
WWVB Шаблон:Нп5, Колорадо, США
DCF Низкочастотный радиопередатчик, 77.5 кГц, DCF77, Майнфлинген, ФРГ
HBG Шаблон:Нп5, Швейцария
MSF Шаблон:Нп5, Великобритания
JJY Низкочастотный радиопередатчик, 40 кГц, Фукусима, 60 кГц, Сага, Япония
LORC Среднечастотный радиопередатчик, 100 кГц, радионавигация, Шаблон:Нп5
TDF Шаблон:Нп5, Франция
CHU Шаблон:Нп5, Канада
WWV Шаблон:Нп5, США
WWVH Шаблон:Нп5, США
NIST Телефонный модем Национального института стандартов и технологий США
ACTS Телефонный модем Национального института стандартов и технологий США
USNO Телефонный модем Национальной обсерватории США
PTB Телефонный модем Шаблон:Нп5
Для слоя 2 и выше — это идентификатор сервера и может быть использован для фиксирования временных петель. Если используется IPv4, то идентификатор представляет собой четыре октета IP адреса. Если используется IPv6, то это первые четыре октета MD5 хэша адреса. При использовании IPv6 адресов для сервера с NTPv4 и клиента с NTPv3 идентификатор может принимать случайное значение, из-за чего временные петли могут быть не зафиксированы.

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

Длина — 64 бита, от англ. Шаблон:Lang-en2.
Время, когда система последний раз устанавливала или корректировала время. Формат NTP.

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

Длина — 64 бита, от англ. Шаблон:Lang-en2.
Время клиента, когда запрос отправляется серверу. Формат NTP.

Время приёма

Длина — 64 бита, от англ. Шаблон:Lang-en2.
Время сервера, когда запрос приходит от клиента. Формат NTP.

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

Длина — 64 бита, от англ. Шаблон:Lang-en2.
Время сервера, когда запрос отправляется клиенту. Формат NTP.

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

Для слоя 0, который считается неопределённым или недопустимым, поле Идентификатор источника может использоваться для доставки сообщений, которые выполняют роль данных о состоянии системы и управления доступом. Такие сообщения называются «Kiss-o'-Death»<ref name="kod" group="заметка">От «Kiss of Death», что в переводе значит «последний удар» или «последняя попытка».</ref> (KoD), а доставляемые ими ASCII-данные называются «kiss codes» (коды «помощи»). Перечень принятых в настоящее время кодов «помощи» представлен в таблице ниже<ref name="rid-iana" />.

Получатели KoD-сообщений обязаны их проверить и выполнить следующие действия<ref name="rfc5905" />:

  • При получении кодовых комбинаций DENY и RSTR клиент обязан разорвать виртуальные соединения с данным сервером времени и прекратить передачу сообщений этому серверу.
  • При получении кодовой комбинации RATE клиент обязан незамедлительно снизить свой интервал опроса этого сервера и продолжать его уменьшать каждый раз при получении этой кодовой комбинации.
  • При получении кодовой комбинации начинающейся с ASCII-символа Х, предназначенной для проведения экспериментальных исследований и последующих усовершенствований, она должна быть проигнорирована, если она не распознаётся.
  • Все другие кодовые комбинации и KoD-сообщения, не определённые данным протоколом, уничтожаются после их поверки.
Коды «помощи»
Код Описание
ACST Виртуальное соединение установлено одноадресным сервером
AUTH Аутентификация сервером завершилась отказом
AUTO Autokey-последовательность некорректна
BCST Виртуальное соединение установлено широковещательным сервером
CRYP Криптографическая аутентификация или идентификация завершились отказом
DENY Удалённый сервер отказал в доступе
DROP Потеря удаленного сервера времени в симметричном режиме
RSTR Отказ в доступе вследствие локальной стратегии безопасности
INIT Виртуальное соединение с первого раза не установлено
MCST Виртуальное синхросоединение установлено динамически обнаруженным сервером
NKEY Ключ не найден (либо он никогда ранее не загружался, либо он является ненадёжным)
RATE Скорость превышена. Сервер временно запретил доступ, так как клиент превысил порог скорости
RMOT Изменение виртуального соединения со стороны удалённого IP-узла, использующего NTP-протокол напрямую
STEP Произошла итерация по изменению системного времени, виртуальное синхросоединение не установлено

Часовые слои

Жёлтые стрелки обозначают аппаратное соединение; красные стрелки обозначают сетевое соединение.

NTP использует иерархическую сеть, где каждый уровень имеет свой номер, называемый слой (англ. Шаблон:Lang-en2). Слой 1 — первичные серверы, непосредственно синхронизирующиеся с национальными службами времени через спутник, радио или телефонный модем. Слой 2 — вторичные серверы, синхронизируются с первичными серверами, и т. д. Как правило, клиенты и серверы NTP с относительно небольшим числом клиентов не синхронизируется с первичными серверами. Существует несколько сотен общественных вторичных серверов, работающих на более высоких слоях. Они являются предпочтительным выбором<ref name="ntp-warp">Шаблон:Cite web</ref>.

Формат времени

Время представляется в системе NTP 64-битным числом (8 байт), состоящим из 32-битного счётчика секунд и 32-битного счётчика долей секунды, позволяя передавать время в диапазоне 232 секунд, с теоретической точностью 2−32 секунды. Поскольку шкала времени в NTP повторяется каждые 232 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 68 лет<ref>Шаблон:Cite web</ref>). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать 70 лет (с учётом високосных лет), чтобы корректно совместить время с Windows или Unix-системами<ref name="ntp-warp" /><ref name="ntp-leap">Шаблон:Cite web</ref>.

Шаблон:Anchor

Короткий формат времени
Бит 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 Секунды Доли секунд

Шаблон:Anchor

Обычный формат времени
Бит 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 Доли секунд

Шаблон:Anchor

Формат даты
Бит 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

См. также

Заметки

Шаблон:Примечания

Примечания

Шаблон:Примечания

Литература

  • Шаблон:Публикация
  • Миллс, Дэвид Л. Сличение времени в компьютерных сетях. Протокол сетевого времени на Земле и в космосе. — Киев : Wircom, 2011. — С. 464. — ISBN 978-966-97191-0-2.
  • Другие версии RFC: RFC 778, RFC 891, RFC 956, RFC 958, RFC 1305, RFC 2030, RFC 4330

Ссылки

Шаблон:Навигационная таблица

Шаблон:Добротная статья