Звіримо годинники. NetTime - програма синхронізації часу
Коли я спробував з'ясувати, наскільки точно йдуть системні годинник, то дещо розчарувався. З'ясувалося, зокрема, що елемент, який генерує електричні імпульси через рівні проміжки часу, робить це не набагато точніше тих, що використовуються в дешевих китайських годиннику. Ми всі чули, що такі речі можна купувати за лічені центи або на вагу, бо точність їх невисока, але достатня для нетривалого життя на дитячому зап'ясті. Так і для більшості комп'ютерів невелика похибка аж ніяк не смертельна. Справді, чи варто морочитися з-за того, що ваш комп'ютер поспішає на три секунди в день? Виявилося, що в деяких випадках варто.
Уявити собі такий випадок не складно. Наприклад, комп'ютери, які використовуються у фінансовій сфері, можуть «накосячіть», коли співпаде час переказу грошей з часом нарахування відсотків за вкладом. В історії хакерства відомі випадки, коли група осіб, діючи за попередньою змовою, використовувала особливості роботи банківських мереж для «обдурювання» вкладу шляхом швидкого перекладу з банку в банк у визначений час. Вгадайте, в який час? Правильно - опівночі!
Якщо є проблема, то є і рішення. Припустимо, в Мережі є якийсь комп'ютер, годинник якого йдуть суперточна. Але запитати його "Ей, Time Server, котра година?" буде явно недостатньо. Спочатку треба з'ясувати, скільки часу витратиться на передачу питання туди і отримання відповіді назад. Адже суперточна комп'ютер може в реальності перебувати на іншому кінці земної кулі. Системи UNIX здавна навчилися синхронізувати час по мережі, для цього був розроблений спеціальний мережевий протокол NTP (Network Time Protocol, мережевий протокол синхронізації часу). У сучасному Інтернеті використовується вдосконалена версія цього протоколу під назвою SNTP. Програми, які його використовують, називаються сервером і клієнтом мережевого часу. Перший працює постійно на найбільш точній комп'ютері, а другий - на менш точному комп'ютері, запускаються планувальником завдань по імені сгоп. На «Маке» клієнт мережевого часу також вбудований в операційну систему і має досить зручний призначений для користувача інтерфейс.
Мал. 4.8. Панель налаштування утиліти синхронізації годин NetTime
Мал. 4.9. Інформаційне вікно програми NetTime. Кнопка Update Now дозволяє з'ясувати, котра година з точністю до мілісекунди
На рис. 4.9 видно, що програма рапортує про повну відповідність локального часу еталонному, але коли я перший раз запустив програму, вона показала Large Adjustment (Великі відхилення) замість Time is synchronized (Час синхронізовано) - цілих 3 хвилини різниці. Оце сюрприз! Такі кварцові елементи, як в таймері мого комп'ютера, треба розщеплювати молотком на атоми для атомного годинника, з якими звіряє час NetTime.
Натисніть кнопку ОК, і програма буде тихо робити свою маленьку, але таку корисну справу в фоновому режимі через задані вами проміжки часу.
Системні адміністратори напевно по достоїнству оцінять програму синхронізації часу NetTime. Іноді дуже важливо мати в мережі комп'ютер, який буде синхронізувати час з найточнішими годинами Інтернету і служити сервером для синхронізації всіх системних годин в локальній мережі.
Ви можете самі налаштувати до п'яти серверів мережевого часу, з якими програма буде регулярно синхронізувати системний годинник по протоколу SNTP, або використовувати можливість автоматичної конфігурації.