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

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

Можно ли синхронизировать свой комп по атомным часам

В прошлый раз мы рассказали, какие сложности могут ждать программистов, когда они пишут код для работы со временем. Сегодня перейдём на более сложный уровень: как компьютеры и другие устройства синхронизируют время между собой.

Зачем нужна синхронизация

От того, какое на компьютере установлено время, зависит многое:

  • отображение спецпредложений и акций на сайтах;
  • публикация и сортировка комментариев к статьям;
  • совместная работа компьютеров в локальной сети — если время на компьютерах будет различаться, это может привести к сбоям;
  • если одна база данных обслуживается с нескольких компьютеров, они должны чётко синхронизироваться во времени; иначе запрос одного компьютера может прилететь из будущего, а реальный запрос из будущего попасть в далекое прошлое;
  • если вы используете телефон для двойной аутентификации, то с неправильным временем телефон будет выдавать неправильный код, и аутентификация не пройдёт;
  • от времени зависят сертификаты безопасности: если ваше локальное время намного отличается от общемирового, то для вас все сертификаты безопасности будут недействительными, сайты не откроются.

В целом единственный случай, когда не нужна синхронизация, — когда компьютер работает независимо от сети, а результаты его вычислений не связаны со временем. В остальных случаях синхронизация полезна. 

Как работает синхронизация

В общем виде синхронизация времени работает так:

  1. Устройство посылает запрос на сервер синхронизации и запоминает время, когда ушёл запрос. Запрос идёт по протоколу NTP, о нём ниже.
  2. Сервер получает запрос, и, если всё в порядке, — записывает, когда он его получил, и отправляет данные с точным временем на сервере.
  3. Устройство получает ответ от сервера и записывает, во сколько оно его получило. 
  4. Зная время отправки и получения запроса и точное время на сервере, можно рассчитать глобальное время (но с какой-то точностью). 

Это всё повторяется с какой-то периодичностью — раз в час, раз в день или с любым другим интервалом. 

Что такое NTP

NTP — это сокращение от Network Time Protocol, что переводится как «протокол сетевого времени». 

Протокол спроектирован так, чтобы заниматься только синхронизацией времени. Для этого используются пакеты объёмом всего 48 байт, причём 24 из них заполняет устройство, а 24 — сервер. Это значит, что для точности в 0,01 секунды достаточно один раз получить и передать 48 символов. Если размер пакета сделать слишком большим, то задержки при передаче будут больше и может пострадать точность синхронизации.

Для работы NTP нужен сервер точного времени, который ответит на наш запрос. Сервер всегда знает, какое сейчас время, и моментально реагирует на каждый запрос. 

Как работает синхронизация времени в интернете
В операционной системе Windows точное время берётся с сервера time.windows.com
Как работает синхронизация времени в интернете
У компании Apple сервер точного времени — time.apple.com

Какие бывают серверы синхронизации

В протоколе NTP есть несколько классов серверов точного времени, в зависимости от точности. Эти классы называются Stratum, а цифра после названия показывает уровень сервера по отношению к самому точному времени.

Stratum 1 — самые точные серверы, которые могут учитывать время с точностью в одну триллионную долю секунды. Они получают время напрямую от атомных часов либо от сервисов GRS или «Глонасс». Для запуска и обслуживания такого сервера нужно сложное оборудование, поэтому серверов первого уровня в мире мало. Большинство из них не отвечает на запросы от обычных пользователей и обслуживает только другие серверы уровнем пониже. 

Stratum 2 — серверы точного времени второго уровня. Они получают данные от серверов первого уровня и работают с погрешностью примерно 0,001 секунды. Такие серверы уже могут отвечать на большинство запросов и обслуживать серверы поменьше.

Stratum 3 получают данные от серверов второго уровня, и тут уже точность может падать до 0,05 секунды. Дальше идут уровни 4, 5 и так далее, ограничений снизу нет.

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

Какая точность нужна для синхронизации

Если вам просто нужно «обычное» точное время с точностью до секунды (например, на телефоне или в часах), то подойдёт любой сервер синхронизации времени. Обычно это будут сервера Stratum 3, потому что их больше всего. 

Если нужно что-то обрабатывать с точностью до 0,01 секунды, то нужно найти сервер второго уровня в своей стране и подключиться к нему (так будет точнее). Например, можно использовать серверы в Саратове.

Если же вам нужна точность 0,001 секунды или выше — договаривайтесь с владельцем сервера первого уровня или создавайте свой сервер. 

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Соцсети:

Алина Грызлова

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Начать карьеру в ИТ
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Еще по теме
Rust — молодой и дерзкий язык программирования
Rust — молодой и дерзкий язык программирования

Говорят, что это одновременно C++ и Haskell.

medium
Bluetooth: как работает и зачем нужен
Bluetooth: как работает и зачем нужен

Чтобы подключать наушники и другие устройства

medium
Как это устроено: транзисторы

Наши компьютеры основаны на транзисторах. Но на чём основаны транзисторы?

medium
Как устроен интернет: адреса

Вторая часть рассказа об устройстве интернета. Читайте, пока не заблокировали!

easy
Как выиграть в самой сложной игре мира
Как выиграть в самой сложной игре мира

Поручим это нейронке.

easy
Как устроен React
Как устроен React (на примере статьи про эпидемию)

Это как JavaScript, только интереснее.

hard
Кто такая Unity и почему она всем нравится

Бесплатный движок с классной графикой, реалистичной физикой и понятным интерфейсом.

easy
Биотех-стартапы: что они делают и что в них интересного
Биотех-стартапы: что они делают и что в них интересного

Краткий конспект подкаста

easy
Непрерывный цикл разработки — это как?
Непрерывный цикл разработки — это как?

CI/CD на простых примерах

medium
Кто такой архитектор в ИТ и как им стать
Кто такой архитектор в ИТ и как им стать

Сам код не пишет, а другие — пишут.

easy
easy