Как NTP сървъри управляват да останат толкова точни?
Много от нас са имали случайни проблеми с нашите компютри и други устройства, запазващи точни настройки на времето, но бърза синхронизация с NTP сървър прави всичко отново добре. Но ако нашите собствени устройства могат да загубят точност, как NTP сървърите успяват да останат толкова точни?
Днешната сесия за въпроси и отговори идва при нас с любезното съдействие на SuperUser - подразделение на Stack Exchange, групирано от общността уеб сайтове за въпроси и отговори.
Снимката е предоставена от LEOL30 (Flickr).
Въпроса
Четецът на SuperUser Frank Thornton иска да знае как NTP сървърите могат да останат толкова точни:
Забелязах, че на моите сървъри и други машини часовниците винаги се отклоняват, така че трябва да се синхронизират, за да останат точни. Как часовникът на NTP сървъра се пази от плаващи и винаги остава толкова точен?
Как NTP сървърите успяват да останат толкова точни?
Отговорът
Авторът на SuperUser Майкъл Кьорлинг има отговор за нас:
NTP сървърите разчитат на много точни часовници за прецизно отчитане на времето. Общ времеви източник за централни NTP сървъри са атомни часовници или GPS приемници (не забравяйте, че GPS сателитите разполагат с атомни часовници). Тези часовници са дефинирани като точни, тъй като осигуряват много точна справка за времето.
Няма нищо вълшебно за GPS или атомните часовници, които да ви кажат точно кога е то. Тъй като атомните часовници работят, те просто са много добри, след като веднъж им е било казано колко е часът, съхраняемост точното време (тъй като второто се дефинира като атомни ефекти). Всъщност си струва да се отбележи, че GPS времето е различно от UTC, което сме свикнали да виждаме. Тези атомни часовници са на свой ред синхронизирани с International Atomic Time или TAI, за да не само точно да се каже времето, но и на път.
След като имате точно време в една система, свързана с мрежа като интернет, става въпрос за протоколиране, което позволява прехвърлянето на точни времена между хостовете през ненадеждна мрежа. В този смисъл, Stratum 2 (или по-далеч от действителния източник на време) NTP сървърът не се различава от синхронизирането на вашата настолна система с набор от NTP сървъри.
Докато имате няколко точни времена (получени от NTP сървъри или другаде) и знаете скоростта на развитие на местния ви часовник (което е лесно да се определи), можете да изчислите скоростта на отместване на местния часовник спрямо „вярната точна“ Изминало време. Веднъж заключена, тази стойност може да се използва за непрекъснато регулиране на местния часовник, за да може да се отчитат стойности, близки до точното време, дори и самият часовник в реално време да е много неточен. Докато вашият местен часовник не е много висок непостоянен, това трябва да позволи да се запази точното време за известно време, дори ако вашият източник на време по течението стане недостъпен по някаква причина.
Някои NTP клиентски реализации (вероятно най-ntpd демон или системни услуги) правят това, а други (като ntpd придружителя ntpdate, който просто задава часовника веднъж) не го правят. Това обикновено се нарича a дрейф файл защото постоянно съхранява мярка на отклонението на часовника, но строго казано, не трябва да се съхранява като конкретен файл на диска..
В NTP, Stratum 0 по дефиниция е точен източник на време. Stratum 1 е система, която използва източник на време Stratum 0 като източник на време (и следователно е малко по-малко точен от източника на време Stratum 0). Слоят 2 отново е малко по-неточен от Стратум 1, защото синхронизира времето си с източника на Страт 1 и така нататък. На практика тази загуба на точност е толкова малка, че е напълно пренебрежима във всички случаи, освен в най-крайните случаи.
Имате ли какво да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други технологични потребители на Stack Exchange? Вижте пълната тема за дискусия тук.