Як NTP-сервери управляють, щоб залишатися настільки точними?
Багато хто з нас іноді мав проблеми з нашими комп'ютерами та іншими пристроями, які зберігали точні налаштування часу, але швидка синхронізація з сервером NTP знову робить все добре. Але якщо наші власні пристрої можуть втратити точність, як NTP-сервери вдаються так точно?
Сьогоднішня сесія запитань та відповідей приходить до нас люб'язно SuperUser - підрозділ Stack Exchange, групування веб-сайтів із запитаннями та відповідями на рівні спільноти..
Фото надано LEOL30 (Flickr).
Питання
Читач від SuperUser Frank Thornton хоче знати, як NTP-сервери можуть залишатися такими точними:
Я помітив, що на моїх серверах та інших машинах годинники завжди дрейфують, щоб вони були синхронізовані, щоб залишатися точними. Як годинник сервера NTP тримати від дрейфуючих і завжди залишаються настільки точними?
Як NTP-сервери встигають залишатися настільки точними?
Відповідь
Співробітник SuperUser Майкл Кьорлінг має відповідь для нас:
NTP-сервери покладаються на високоточні годинники для точного хронометражу. Загальним джерелом часу для центральних серверів NTP є атомні годинники або GPS-приймачі (пам'ятайте, що супутники GPS мають на борту атомні годинники). Ці годинники визначені як точні, оскільки вони забезпечують дуже точний час.
Існує нічого магічного про GPS або атомних годин, які змушують їх точно сказати, в який час. Через те, як працюють атомні годинники, вони просто дуже хороші, колись сказали, що це час, зберігання точний час (оскільки другий визначається в термінах атомних ефектів). Насправді, варто відзначити, що час GPS відрізняється від UTC, який ми більше звикли бачити. Ці атомні годинники, у свою чергу, синхронізовані з Міжнародним атомним часом або TAI, щоб не тільки точно сказати про час, але й час.
Після того, як в одній системі є точний час, підключений до мережі, подібної до Інтернету, це питання техніки протоколів, що дозволяє передавати точні часи між хостами через ненадійну мережу. У цьому відношенні Ntr-сервер Stratum 2 (або віддалений від фактичного джерела часу) нічим не відрізняється від синхронізації настільної системи з набором NTP-серверів.
До того часу, коли ви маєте кілька точних часів (отриманих з серверів NTP або в іншому місці) і знаєте швидкість просування вашого місцевого годинника (що легко визначити), ви можете обчислити швидкість дрейфу місцевих годин в порівнянні з "вірною точністю" »Проходження часу. Після того, як заблоковано, це значення може бути використано для безперервного налаштування локальних годин, щоб зробити звіт про значення, близькі до точного часу, навіть якщо локальні годинники реального часу дуже неточні. Поки ваш місцевий годинник не дуже високий непостійний, це повинно дозволити зберігати точний час протягом деякого часу, навіть якщо ваш джерело часу вгору з будь-якої причини стане недоступним.
Деякі реалізації NTP-клієнта (ймовірно, більшість демонів ntpd або реалізації системних служб) роблять це, а інші (наприклад, ntpdate ntpd, який просто встановлює годинник один раз), не роблять цього. Це зазвичай називають a файл дрейфу тому що він постійно зберігає міру дрейфу годинника, але, строго кажучи, він не повинен зберігатися як певний файл на диску.
У NTP Stratum 0 за визначенням є точним джерелом часу. Страт 1 - це система, яка використовує джерело часу Stratum 0 як джерело часу (і, таким чином, трохи менш точне, ніж джерело часу Stratum 0). Прошарок 2 знову трохи менш точний, ніж Stratum 1, оскільки він синхронізує свій час з джерелом Stratum 1 і так далі. На практиці така втрата точності настільки мала, що вона є зовсім незначною у всіх випадках, крім найбільш екстремальних.
Маєте щось додати до пояснення? Звучить в коментарях. Хочете прочитати більше відповідей від інших технологічних користувачів Stack Exchange? Перегляньте повний потік обговорення тут.