Как NTP-серверам удается сохранять точность?
У многих из нас иногда возникали проблемы с нашими компьютерами и другими устройствами, сохраняющими точные настройки времени, но быстрая синхронизация с 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 или системной службы) делают это, а другие (например, сопутствующий ntpd ntpdate, который просто устанавливает время один раз) этого не делают. Это обычно называют дрейф файл потому что он постоянно хранит меру сдвига тактовой частоты, но, строго говоря, его не нужно хранить как отдельный файл на диске.
В NTP Stratum 0 по определению является точным источником времени. Stratum 1 - это система, которая использует источник времени Stratum 0 в качестве источника времени (и, следовательно, немного менее точен, чем источник времени Stratum 0). Уровень 2 снова немного менее точен, чем уровень 1, потому что он синхронизирует свое время с источником уровня 1 и так далее. На практике эта потеря точности настолько мала, что она совершенно незначительна во всех случаях, кроме самых крайних..
Есть что добавить к объяснению? Отключить звук в комментариях. Хотите узнать больше ответов от других технически подкованных пользователей Stack Exchange? Ознакомьтесь с полным обсуждением здесь.