Как работает NTP: сетевая синхронизация времени

Что такое NTP

Network Time Protocol (NTP) — один из старейших интернет-протоколов, до сих пор широко используемых, предназначенный для синхронизации часов между компьютерами в сети. Впервые описанный Дэвидом Миллсом в 1985 году, NTP способен поддерживать точность компьютерных часов в пределах нескольких миллисекунд в публичном интернете и субмикросекундную точность в локальных сетях.

Основной алгоритм

NTP работает за счёт обмена временными метками между клиентом и сервером. Клиент отправляет запрос со своим текущим временем (T1), сервер фиксирует момент получения (T2) и отправляет ответ с T2 и временем своей отправки (T3), а клиент фиксирует момент получения (T4). На основе этих четырёх меток:

Round-trip delay   = (T4 - T1) - (T3 - T2)
Clock offset       = ((T2 - T1) + (T3 - T4)) / 2

Клиент использует полученное смещение для корректировки локальных часов, постепенно направляя их к правильному времени, а не совершая резкий скачок (который мог бы нарушить работу приложений).

Иерархия страт (stratum)

NTP организует источники времени в иерархию, называемую стратами:

  • Страта 0: атомные часы, GPS-приёмники, радиочасы — эталонные источники времени
  • Страта 1: серверы, напрямую подключённые к устройствам страты 0 (например, time.google.com, time.cloudflare.com)
  • Страта 2: серверы, синхронизирующиеся со стратой 1 — то, что использует большинство организаций
  • Страты 3–15: каскадно ниже, с уменьшением точности на каждом «прыжке»

Публичные NTP-серверы

  • time.google.com — публичный NTP от Google (со сглаживанием високосных секунд)
  • time.cloudflare.com — NTP от Cloudflare (с поддержкой Roughtime)
  • pool.ntp.org — глобальный волонтёрский пул NTP-серверов
  • time.windows.com — сервер по умолчанию в Microsoft Windows

Проверка состояния NTP

# Linux (systemd-timesyncd)
timedatectl status
timedatectl timesync-status

# Linux (ntpd)
ntpq -p

# macOS
sntp -sS time.apple.com

# Windows
w32tm /query /status

NTP и SNTP

SNTP (Simple NTP) — упрощённая версия NTP, используемая устройствами, которым не нужна полная точность NTP: смартфонами, встроенными устройствами и IoT-датчиками. Он использует тот же протокол, но реализует лишь подмножество алгоритмов, обычно достигая точности в десятки миллисекунд.

Вопросы безопасности

Стандартный NTP не имеет аутентификации, что делает его уязвимым для атак «человек посередине», способных злонамеренно сдвинуть системные часы. NTPsec и Roughtime — современные альтернативы, добавляющие криптографическую проверку. Для критически важной инфраструктуры всегда используйте аутентифицированные источники времени.