21Aug

W jaki sposób serwery NTP radzą sobie tak dokładnie?

Wielu z nas miało sporadyczne problemy z naszymi komputerami i innymi urządzeniami z zachowaniem dokładnych ustawień czasu, ale szybka synchronizacja z serwerem NTP sprawia, że ​​wszystko wraca do zdrowia. Ale jeśli nasze własne urządzenia mogą stracić dokładność, w jaki sposób serwery NTP są tak dokładne?

Dzisiejsze pytanie &Sesja odpowiedzi przychodzi do nas dzięki uprzejmości SuperUser - poddziału Stack Exchange, opartego na społecznościach grupy Q & A.

Zdjęcie dzięki uprzejmości LEOL30( Flickr).

Pytanie Czytnik

SuperUser Frank Thornton chce wiedzieć, w jaki sposób serwery NTP są w stanie pozostać tak dokładne:

Zauważyłem, że na moich serwerach i innych komputerach zegary zawsze dryfują, więc muszą być zsynchronizowane, aby zachować dokładność.W jaki sposób zegary serwera NTP nie dryfują i zawsze są tak dokładne?

W jaki sposób serwerom NTP udaje się zachować taką dokładność?

Odpowiedź Autor

SuperUser Michael Kjorling ma odpowiedź dla nas:

Serwery NTP polegają na bardzo dokładnych zegarach do dokładnego mierzenia czasu. Częstym źródłem czasu dla centralnych serwerów NTP są zegary atomowe lub odbiorniki GPS( pamiętaj, że satelity GPS mają wbudowane zegary atomowe).Te zegary są zdefiniowane jako dokładne, ponieważ zapewniają bardzo dokładne odniesienie do czasu.

W zegarach GPS i atomowych nie ma nic magicznego, co sprawi, że powiedzą dokładnie, która jest godzina. Ze względu na działanie zegarów atomowych są one po prostu bardzo dobre, ponieważ kiedyś powiedziano im, która jest godzina, utrzymując dokładny czas ( ponieważ drugi jest zdefiniowany pod względem efektów atomowych).W rzeczywistości warto zauważyć, że czas GPS różni się od czasu UTC, do którego jesteśmy przyzwyczajeni. Te zegary atomowe są z kolei zsynchronizowane z Międzynarodowym czasem Atomowym lub TAI, aby nie tylko dokładnie powiedzieć upływ czasu, ale także czasu .

Gdy masz dokładny czas w jednym systemie podłączonym do sieci, takiej jak Internet, jest to kwestia inżynierii protokołów umożliwiającej przesyłanie dokładnych czasów między hostami przez niewiarygodną sieć.Pod tym względem serwer NTP Stratum 2( lub dalej od rzeczywistego źródła czasu) nie różni się od synchronizowania systemu stacjonarnego z zestawem serwerów NTP.

Do czasu, w którym uzyskasz kilka dokładnych czasów( uzyskanych z serwerów NTP lub gdzie indziej) i znasz stopień zaawansowania lokalnego zegara( który jest łatwy do ustalenia), możesz obliczyć współczynnik dryfowania lokalnego zegara w stosunku do "wierzył"dokładne "upływ czasu. Po zablokowaniu wartość ta może być następnie użyta do ciągłego dostosowywania zegara lokalnego, tak aby raportował wartości bardzo zbliżone do dokładnego upływu czasu, nawet jeśli lokalny zegar czasu rzeczywistego jest wysoce niedokładny. Dopóki twój lokalny zegar nie jest wysoce błędny , powinno to pozwolić na zachowanie dokładnego czasu przez jakiś czas, nawet jeśli twoje źródło czasu jest niedostępne z jakiegokolwiek powodu.

Niektóre implementacje klienta NTP( prawdopodobnie większość demonów ntpd lub implementacje usług systemowych) robią to, a inne( takie jak ntpd's comption ntpdate, które po prostu ustawiają zegar raz) nie. Jest to powszechnie określane jako , ponieważ stale zapisuje miarę dryfu zegara, ale ściśle mówiąc, nie musi być zapisywany jako konkretny plik na dysku.

W NTP, Stratum 0 jest z definicji dokładnym źródłem czasu. Stratum 1 to system wykorzystujący źródło czasu Stratum 0 jako źródło czasu( i dlatego jest nieco mniej dokładny niż źródło czasu Stratum 0).Stratum 2 ponownie jest nieco mniej dokładny niż Stratum 1, ponieważ synchronizuje swój czas ze źródłem Stratum 1 i tak dalej. W praktyce ta utrata dokładności jest tak mała, że ​​jest całkowicie znikoma we wszystkich, ale w najbardziej ekstremalnych przypadkach.

Czy chcesz coś dodać do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych użytkowników Stack Exchange, którzy znają się na technologii? Sprawdź cały wątek dyskusji tutaj.