Многие из нас время от времени сталкивались с проблемой, когда наши компьютеры и другие устройства сохраняли точные настройки времени, но быстрая синхронизация с сервером NTP снова помогает. Но если наши собственные устройства могут терять точность, как серверам NTP удается оставаться такими точными?
Сегодняшняя сессия вопросов и ответов проходит благодаря SuperUser - подразделению Stack Exchange, группы веб-сайтов вопросов и ответов, управляемой сообществом.
Фото любезно предоставлено LEOL30 (Flickr) .
Вопрос
Читатель SuperUser Фрэнк Торнтон хочет знать, как серверы NTP могут оставаться такими точными:
Я заметил, что на моих серверах и других машинах часы всегда дрейфуют, так что им приходится синхронизироваться, чтобы оставаться точными. Как часы сервера NTP не дрейфуют и всегда остаются такими точными?
Как серверам NTP удается оставаться такими точными?
Ответ
У участника SuperUser Майкл Кьорлинг есть для нас ответ:
Серверы NTP полагаются на высокоточные часы для точного измерения времени. Обычным источником времени для центральных серверов NTP являются атомные часы или приемники GPS (помните, что у спутников GPS есть встроенные атомные часы). Эти часы считаются точными, поскольку они обеспечивают очень точную привязку времени.
В GPS или атомных часах нет ничего волшебного, которое заставило бы их сказать вам точное время. Из-за того, как работают атомные часы, они просто очень хорошо умеют, когда однажды им сказали, который час, сохранение точное время (с второй определяется в терминах атомных эффектов ). На самом деле стоит отметить, что Время GPS отличается от UTC что мы привыкли видеть. Эти атомные часы, в свою очередь, синхронизированы с Международное атомное время или TAI чтобы не только точно определять ход времени, но и в время.
Если у вас есть точное время в одной системе, подключенной к сети, такой как Интернет, это вопрос разработки протокола, позволяющий передавать точное время между хостами по ненадежной сети. В этом отношении NTP-сервер Stratum 2 (или более удаленный от фактического источника времени) ничем не отличается от вашей настольной системы, синхронизирующейся с набором NTP-серверов.
К тому времени, когда у вас будет несколько точных значений времени (полученные с серверов NTP или где-либо еще) и вы узнаете скорость продвижения ваших локальных часов (которую легко определить), вы сможете рассчитать скорость дрейфа ваших локальных часов относительно «предполагаемой точности " Течение времени. После фиксации это значение можно затем использовать для постоянной настройки локальных часов, чтобы они отображали значения, очень близкие к точному течению времени, даже если сами локальные часы реального времени очень неточны. Пока ваши местные часы не очень неустойчивый , это должно позволить сохранять точное время в течение некоторого времени, даже если исходный источник времени недоступен по какой-либо причине.
Некоторые реализации клиента NTP (вероятно, большинство реализаций демона ntpd или системных служб) делают это, а другие (например, ntpdate, являющийся компаньоном ntpd, который просто устанавливает часы один раз) - нет. Это обычно называют дрейфовый файл потому что он постоянно хранит меру отклонения часов, но, строго говоря, его не нужно хранить как отдельный файл на диске.
В NTP Stratum 0 по определению является источником точного времени. Stratum 1 - это система, которая использует источник времени Stratum 0 в качестве источника времени (и, таким образом, немного менее точен, чем источник времени Stratum 0). Stratum 2 снова немного менее точен, чем Stratum 1, потому что он синхронизирует свое время с источником Stratum 1 и так далее. На практике эта потеря точности настолько мала, что ею можно пренебречь во всех случаях, кроме самых крайних.
Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полной веткой обсуждения здесь .