Wielu z nas miało sporadyczne problemy z zachowaniem dokładnych ustawień czasu na naszych komputerach i innych urządzeniach, ale szybka synchronizacja z serwerem NTP sprawia, że wszystko jest w porządku. Ale jeśli nasze własne urządzenia mogą stracić dokładność, w jaki sposób serwery NTP zachowują taką dokładność?
Dzisiejsza sesja pytań i odpowiedzi jest dostępna dzięki uprzejmości SuperUser - części Stack Exchange, grupy witryn internetowych z pytaniami i odpowiedziami.
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 maszynach zegary zawsze dryfują, więc muszą się zsynchronizować, aby zachować dokładność. W jaki sposób zegary serwera NTP zapobiegają dryfowaniu i zawsze pozostają tak dokładne?
Jak serwery NTP są tak dokładne?
Odpowiedź
Współautor SuperUser Michael Kjorling ma dla nas odpowiedź:
Serwery NTP polegają na bardzo dokładnych zegarach do precyzyjnego pomiaru czasu. Typowym źródłem czasu dla centralnych serwerów NTP są zegary atomowe lub odbiorniki GPS (pamiętaj, że satelity GPS mają na pokładzie zegary atomowe). Te zegary są określane jako dokładne, ponieważ zapewniają bardzo dokładne odniesienie czasowe.
Nie ma nic magicznego w GPS lub zegarach atomowych, które sprawiają, że dokładnie mówią, która jest godzina. Ze względu na sposób działania zegarów atomowych są po prostu bardzo dobrzy, ponieważ kiedyś powiedziano im, która jest godzina, konserwacja dokładny czas (od druga jest zdefiniowana w kategoriach efektów atomowych ). W rzeczywistości warto to zauważyć Czas GPS różni się od czasu UTC że jesteśmy bardziej przyzwyczajeni do oglądania. Te zegary atomowe są z kolei zsynchronizowane Międzynarodowy czas atomowy lub TAI aby nie tylko dokładnie opisać upływ czasu, ale także the czas.
Gdy masz dokładny czas w jednym systemie podłączonym do sieci takiej jak Internet, jest to kwestia inżynierii protokołu, która umożliwia przesyłanie dokładnych czasów między hostami przez zawodną sieć. Pod tym względem serwer NTP Stratum 2 (lub dalej od rzeczywistego źródła czasu) nie różni się od synchronizacji systemu stacjonarnego z zestawem serwerów NTP.
Do czasu, gdy będziesz mieć kilka dokładnych czasów (uzyskanych z serwerów NTP lub gdzie indziej) i znasz tempo postępu swojego lokalnego zegara (co jest łatwe do ustalenia), możesz obliczyć szybkość dryftu lokalnego zegara w stosunku do „uważanego za dokładny " upływ czasu. Po zablokowaniu wartość ta może być następnie wykorzystana do ciągłego dostosowywania lokalnego zegara, aby raportował wartości bardzo zbliżone do dokładnego upływu czasu, nawet jeśli sam lokalny zegar czasu rzeczywistego jest bardzo niedokładny. O ile twój lokalny zegar nie jest wysoki niekonsekwentny , powinno to pozwolić na utrzymywanie dokładnego czasu przez jakiś czas, nawet jeśli twoje zewnętrzne źródło czasu stanie się niedostępne z jakiegokolwiek powodu.
Niektóre implementacje klienta NTP (prawdopodobnie większość demonów ntpd lub implementacji usług systemowych) robią to, a inne (np. Ntpdate towarzyszący ntpd, który po prostu ustawia zegar raz) nie. Jest to powszechnie określane jako plik plik dryfu ponieważ stale przechowuje miarę dryfu zegara, ale ściśle mówiąc nie musi być przechowywany jako określony 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 (a zatem jest nieco mniej dokładny niż źródło czasu Stratum 0). Stratum 2 znowu jest nieco mniej dokładne 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 pomijalna we wszystkich przypadkach, z wyjątkiem najbardziej ekstremalnych.
Masz coś do dodania do wyjaśnienia? Dźwięk w komentarzach. Chcesz przeczytać więcej odpowiedzi od innych zaawansowanych technicznie użytkowników Stack Exchange? Sprawdź cały wątek dyskusji tutaj .