If-Koubou

Как NTP сървърите успяват да останат толкова точни?

Как NTP сървърите успяват да останат толкова точни? (Как да)

Много от нас са имали случаен проблем с нашите компютри и други устройства, които запазват точните настройки на времето, но бързото синхронизиране с NTP сървъра прави всичко добре отново. Но ако нашите собствени устройства могат да загубят точността си, как NTP сървърите успяват да останат толкова точни?

Днешната сесия за въпроси и отговори ни идва с любезното съдействие на SuperUser - подразделение на Stack Exchange - обединяване на уеб сайтове с въпроси и отговори.

Снимката е предоставена от LEOL30 (Flickr).

Въпроса

Reader на SuperUser Франк Торнтън иска да знае как NTP сървърите могат да останат толкова точни:

Забелязах, че на моите сървъри и други машини, часовниците винаги се носят, така че те трябва да се синхронизират, за да останат точни. Как часовниците на сървъра на NTP поддържат отклонения и винаги остават толкова точни?

Как NTP сървърите успяват да останат толкова точни?

Отговорът

Сътрудникът на SuperUser Майкъл Кьорлинг има отговор за нас:

NTP сървърите разчитат на много точни часовници за точност на отчитането. Основният източник на време за централните NTP сървъри са атомните часовници или GPS приемниците (не забравяйте, че GPS сателитите имат атомни часовници на борда). Тези часовници са дефинирани като точни, тъй като те осигуряват много точна информация за времето.

Няма нищо магическо за GPS или атомни часовници, които да накарат те да ви кажат колко точно е времето. Поради това, как работят атомните часовници, те просто са много добри, след като веднъж бяха разказани колко е часът, съхраняемост точното време (тъй като второто е определено по отношение на атомните ефекти). Всъщност, заслужава да се отбележи, че GPS времето е различно от UTC, което сме свикнали да виждаме. Тези атомни часовници на свой ред са синхронизирани срещу Международното атомно време или TAI, за да не само точно да разкажат времето, но и на време.

След като разполагате с точно време на една система, свързана към мрежа като Интернет, това е въпрос на инженеринг на протокола, който дава възможност за прехвърляне на точни времена между хостове чрез ненадеждна мрежа. В това отношение NTP сървър на Stratum 2 (или по-далеч от действителния източник на време) не се различава от настолната ви система, синхронизирана срещу набор от NTP сървъри.

Докато имате няколко точни времена (както са получени от NTP сървъри или другаде) и знаете скоростта на напредъка на местния часовник (което е лесно да се определи), можете да изчислите скоростта на хода на местния часовник спрямо " "Преминаване на времето. След като бъде заключена, тази стойност може да бъде използвана за непрекъснато настройване на местния часовник, за да се направят отчетни стойности много близо до точното време, дори ако самият часовник в реално време е твърде неточен. Докато часовникът ви не е високо непостоянен, това би трябвало да позволи да поддържате точно време за известно време, дори ако източникът на време нагоре по веригата стане недостъпен по някаква причина.

Някои реализации на NTP клиент (вероятно повечето ntpd приложения на демон или системна услуга) правят това, а други (като например ntpd's compant ntpdate, които просто задават часовника веднъж) не го правят. Това обикновено се нарича a отрицателен файл защото постоянно съхранява мярка за плаващ часовник, но строго казано не е необходимо да се съхранява като конкретен файл на диска.

В NTP, Stratum 0 по дефиниция е точен източник на време. Stratum 1 е система, която използва временен източник Stratum 0 като свой източник на време (и по този начин е малко по-малко точен от Stratum 0 времевия източник). Stratum 2 отново е малко по-точен от Stratum 1, защото синхронизира времето си с източника на Stratum 1 и т.н. На практика тази загуба на точност е толкова малка, че е напълно незначителна във всички, но най-крайните случаи.

Имате ли нещо, което да добавите към обяснението? Звучи в коментарите. Искате ли да прочетете повече отговори от други потребители на Stack Exchange? Вижте цялата тема на дискусията тук.