Открыть сервис

NTP

NTP (Network Time Protocol, протокол сетевого времени) — это сетевой протокол, предназначенный для синхронизации внутренних часов компьютеров и других устройств в сетях с коммутацией пакетов (включая Интернет) с эталонным источником времени. Обеспечивает точность синхронизации в диапазоне от миллисекунд до десятков микросекунд в зависимости от качества каналов связи и конфигурации сети.

История

Разработка NTP началась в 1981 году в Университете Делавэра (США) под руководством Дэвида Миллса. Первая спецификация протокола была опубликована в 1985 году в виде RFC 958. В 1988 году вышла версия NTPv2 (RFC 1059), в 1992 — NTPv3 (RFC 1305), а в 2010 году — NTPv4 (RFC 5905), которая является текущей стабильной версией. Протокол изначально создавался для обеспечения точного времени в компьютерных сетях и с течением времени стал стандартом де-факто для синхронизации времени в Интернете.

Принцип работы

NTP использует иерархическую архитектуру, основанную на стратах (уровнях). Устройства делятся на серверы и клиенты, при этом серверы могут быть одновременно клиентами для серверов более высокого уровня.

Страты

Страта (stratum) — это число, указывающее расстояние от эталонных часов. Чем меньше число, тем ближе устройство к первичному источнику времени:

Алгоритмы синхронизации

NTP использует алгоритм Марзулло (Marzullo’s algorithm) и его модификации для выбора наилучшего источника времени из нескольких доступных. Процесс синхронизации включает несколько этапов:

  1. Обмен временными метками: клиент отправляет запрос серверу, указывая время отправки (T1). Сервер фиксирует время получения (T2) и время отправки ответа (T3). Клиент фиксирует время получения ответа (T4).
  2. Вычисление задержки и смещения: на основе четырёх временных меток вычисляются:
  1. Коррекция часов: клиент корректирует свои часы на величину смещения, при этом учитывается задержка распространения для повышения точности.

Для предотвращения резких скачков времени NTP использует метод подстройки (slewing) — плавное изменение частоты системных часов, а не мгновенное переключение. Это важно для приложений, чувствительных к временным разрывам (например, базы данных, системы реального времени).

Архитектура и реализация

Серверы NTP

Серверы NTP могут быть публичными (доступными в Интернете) или частными (внутри корпоративных сетей). Наиболее известные пулы публичных серверов:

В России существуют национальные серверы точного времени, поддерживаемые Государственной службой времени и частоты (ГСВЧ): ntp1.vniiftri.ru, ntp2.vniiftri.ru, ntp3.vniiftri.ru.

Клиенты NTP

Клиентская часть NTP встроена в большинство операционных систем:

SNTP (Simple Network Time Protocol)

SNTP — упрощённая версия NTP, описанная в RFC 4330 (ныне устаревшем, заменён на RFC 5905). Отличается отсутствием сложных алгоритмов фильтрации и выбора источников. Используется в устройствах с ограниченными ресурсами (встраиваемые системы, бытовая техника) и в клиентах, которым не требуется высокая точность. SNTP-клиенты обычно синхронизируются с одним сервером без анализа множества источников.

Точность и факторы влияния

Точность синхронизации NTP зависит от нескольких факторов:

При использовании аппаратных меток времени (например, PTP — Precision Time Protocol) точность может достигать субмикросекундного уровня, но NTP в стандартной реализации на это не рассчитан.

Безопасность

NTP уязвим для ряда атак:

Для защиты используется:

Применение

NTP используется практически во всех сферах, где требуется точное время:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →