Similar presentations:
NTP
1.
Протокол NTPВыполнил: Брылёв В.С.
2.
История протокола NTP1Протокол сетевого времени (NTP) — это сетевой протокол для синхронизации часов между
компьютерными системами в пакетных сетях с переменной задержкой передачи данных.
NTP работает с 1985 года и является одним из старейших интернет-протоколов,
используемых по сей день. Протокол был разработан Дэвидом Л. Миллсом из Университета
Делавэра.
this guy
3.
Для чего нужен NTPNTP предназначен для синхронизации
участвующих компьютеров с отклонением в
несколько миллисекунд от Всемирного
координированного времени (UTC). Он
использует алгоритм пересечения —
модифицированную версию алгоритма
Марзулло — для выбора точных серверов
времени и разработан с целью минимизации
влияния переменной сетевой задержки.
4.
Где используется NTPПротокол NTP в настоящее время используется на всех операционных системах
(Windows, MacOS, Linux, Android, IOS, BSD). А также для большого количества
разных назначений:
• IT-инфраструктура
• Кибербезопасность
• Финансы
• Телекоммуникации
• Промышленность и IoT
5.
Общий принцип работы NTPNTP Сервера работающие на уровне
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 пакета.