11.01M

NTP

1.

Протокол NTP
Выполнил: Брылёв В.С.

2.

История протокола NTP1
Протокол сетевого времени (NTP) — это сетевой протокол для синхронизации часов между
компьютерными системами в пакетных сетях с переменной задержкой передачи данных.
NTP работает с 1985 года и является одним из старейших интернет-протоколов,
используемых по сей день. Протокол был разработан Дэвидом Л. Миллсом из Университета
Делавэра.
this guy

3.

Для чего нужен NTP
NTP предназначен для синхронизации
участвующих компьютеров с отклонением в
несколько миллисекунд от Всемирного
координированного времени (UTC). Он
использует алгоритм пересечения —
модифицированную версию алгоритма
Марзулло — для выбора точных серверов
времени и разработан с целью минимизации
влияния переменной сетевой задержки.

4.

Где используется NTP
Протокол NTP в настоящее время используется на всех операционных системах
(Windows, MacOS, Linux, Android, IOS, BSD). А также для большого количества
разных назначений:
• IT-инфраструктура
• Кибербезопасность
• Финансы
• Телекоммуникации
• Промышленность и IoT

5.

Общий принцип работы NTP
NTP Сервера работающие на уровне
Stratum 1, Синхронизируют сервера на
уровнях ниже, и так до конца иерархии.
Стандарт позволяет до 16 уровней, но на
практике используется 3.
Уровень Stratum 2 – это публичные NTP
сервера, с которыми чаще всего и
связываются устройства.
Stratum 0 – это сами «часы» – устройства
измеряющие время с очень большой
точностью (атомные часы, спутники и др.)

6.

Имплементации NTP
• Windows time
• Open NTPD
• NTPsec
• Chrony
• Ntpd-rs

7.

Формат NTP пакета

8.

Разбор полей пакета
• LI: Первые 2 бита занимает поле, отвечающее за високосную секунду. Это
нужно, так как каждые 1.5-2 года добавляется високосная секунда, и на одну
секунду в 31 декабря или 30 июня время становится 23:59:60.
• VN: Следующие 3 бита занимает версия протокола, на данный момент самая
распространенная - 4.
• Mode: Дальше 3 бита указывают на режим работы
0 - reserved
4 - server
1 - asymmetric active
5 - broadcast
6 - NTP Control message
2 - asymmetric passive
7 - private use
3 - client
На этом завершается первый байт :confetti:

9.

Разбор полей пакета
• Stratum: Второй байт полностью зарезервирован под указание уровня stratum, от
1 до 16, где 1 – устройство с часами, 2-15 уровни stratum, 16 –
несинхронизированное устройство.
• Poll: Еще один полностью зарезервированный байт, указывающий на
максимальный интервал между соощениями, указывается в секундах,
конвертированных в двоичный логарифм. Нужен для баланса точность времени
и нагрузки на сеть.
• Precision: Этот байт указывает на точность системных часов в долях секунды,
также указвается в двоичном логарифме от секунд, и позволяет достичь
теоретической точности до 1 микросекунды.

10.

Разбор полей пакета
• Root delay: 32 бита, показывающие время распространения сигнала тудаобратно в коротком формате времени NTP.
• Root dispersion: Общая дисперсия для источника в коротком формате NTP. То
есть максимально возможная погрешность в синхронизации времени между
локальными часами клиента и эталонным источником (от stratum 1 до клиента).
У NTP есть 3 формата хранения времени, короткий – в котором 16 бит уходит на
секунды и 16 бит на доли секунд, Обычный по 32 на каждый и формат даты –
Номер эры(32 бит), отступ эры(32 бит) и Доли секунды(64 бит).

11.

Разбор полей пакета
• Reference ID: Поле занимает 32 бита. Зависит от того на каком уровне stratum
работает устройство, на слое 1 – это 4 ASCII символа дополненные слева
нулями, которые означают источник данных, например GOES –
геостационарный спутник системы экологического мониторинги и наблюдения,
GPS – Система глобального позиционирования. На слое 0 это также 4 ASCII
символа, но они обозначают коды помощи или “kiss codes”, необходимые для
взаимодействия между устройством на stratum 0 и stratum 1. Эти коды
обозначают успешное соединение, ошибку аутентификации, ошибка
криптографической аутентификации, необходимость разорвать соединение и
др.

12.

13.

Разбор полей пакета
• Reference ID: Поле занимает 32 бита. Зависит от того на каком уровне stratum
работает устройство, на слое 1 – это 4 ASCII символа дополненные слева
нулями, которые означают источник данных, например GOES –
геостационарный спутник системы экологического мониторинги и наблюдения,
GPS – Система глобального позиционирования. На слое 0 это также 4 ASCII
символа, но они обозначают коды помощи или “kiss codes”, необходимые для
взаимодействия между устройством на stratum 0 и stratum 1. Эти коды
обозначают успешное соединение, ошибку аутентификации, ошибка
криптографической аутентификации, необходимость разорвать соединение и
др.

14.

Разбор полей пакета
• Reference timestamp: Занимает 64 бита. Момент времени когда последний раз
происходила синхронизация, в формате NTP-даты.
• Origin timestamp: Занимает 64 бита. Момент когда пакет был отправлен от
клиента на stratum выше, в формате NTP-даты.
• Recieve timestamp: Занимает 64 бита. Момент времени когда запрос был
получен NTP-сервером в формате NTP-даты.
• Transmit timestamp: Занимает 64 бита. Момент времени когда запрос был
отправлен от NTP-сервера в формате NTP-даты.

15.

Разбор полей пакета
• Extension field: занимает n*32 бита, нужен для специфических задач и
имплементаций, не является обязательным.
• Key Identifier: нужен для проверки подлинности источника времени.
• Message header: занимает 128 бит, MD5 хеш всего хедера ntp пакета.

16.

Спасибо за внимание!
English     Русский Rules