У багатьох з нас іноді виникають проблеми із збереженням точних налаштувань часу на комп’ютерах та інших пристроях, але швидка синхронізація із сервером 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, який просто встановлює годинник один раз) - ні. Це зазвичай називають a файл дрейфу оскільки він постійно зберігає міру відхилення годинника, але, строго кажучи, його не потрібно зберігати як певний файл на диску.
У NTP Stratum 0 за визначенням є точним джерелом часу. Stratum 1 - це система, яка використовує джерело часу Stratum 0 як джерело часу (і, отже, трохи менш точна, ніж джерело часу Stratum 0). Stratum 2 знову трохи менш точний, ніж Stratum 1, оскільки він синхронізує свій час із джерелом Stratum 1 тощо. На практиці ця втрата точності настільки мала, що є абсолютно незначною у всіх, крім самих крайніх випадках.
Є що додати до пояснення? Звук у коментарях. Хочете прочитати більше відповідей від інших досвідчених користувачів Stack Exchange? Ознайомтесь із повним обговоренням тут .