Mange av oss har av og til hatt et problem med at datamaskiner og andre enheter beholder nøyaktige tidsinnstillinger, men en rask synkronisering med en NTP-server gjør det bra igjen. Men hvis våre egne enheter kan miste nøyaktighet, hvordan klarer NTP-servere å være så nøyaktige?
Dagens spørsmål og svar-økt kommer til oss med tillatelse fra SuperUser - en underavdeling av Stack Exchange, en samfunnsdrevet gruppe av spørsmål og svar-nettsteder.
Foto med tillatelse fra LEOL30 (Flickr) .
Spørsmålet
SuperUser-leser Frank Thornton vil vite hvordan NTP-servere er i stand til å forbli så nøyaktige:
Jeg har lagt merke til at klokkene alltid driver på serverne mine og andre maskiner slik at de må synkroniseres for å være nøyaktige. Hvordan holder NTP-serverklokkene seg fra å drive og forblir alltid så nøyaktige?
Hvordan klarer NTP-serverne å være så nøyaktige?
Svaret
SuperUser-bidragsyter Michael Kjorling har svaret for oss:
NTP-servere er avhengige av svært nøyaktige klokker for presisjonstidtaking. En vanlig tidskilde for sentrale NTP-servere er atomklokker eller GPS-mottakere (husk at GPS-satellitter har atomklokker ombord). Disse klokkene er definert som nøyaktige siden de gir en nøyaktig tidsreferanse.
Det er ikke noe magisk ved GPS eller atomur som får dem til å fortelle deg nøyaktig hva klokka er. På grunn av hvordan atomur fungerer, er de rett og slett veldig flinke til, etter å ha blitt fortalt hva klokka er, holder nøyaktig tid (siden den andre er definert i form av atomeffekter ). Det er faktisk verdt å merke seg det GPS-tid er forskjellig fra UTC at vi er mer vant til å se. Disse atomurene er i sin tur synkronisert mot International Atomic Time eller TAI for ikke bare å fortelle tidens gang, men også de tid.
Når du har en nøyaktig tid på ett system koblet til et nettverk som Internett, handler det om protokollteknikk som muliggjør overføring av presise tider mellom verter over et upålitelig nettverk. I denne forbindelse er en Stratum 2 (eller lenger fra den aktuelle tidskilden) NTP-server ikke forskjellig fra at skrivebordssystemet synkroniseres mot et sett med NTP-servere.
Når du har noen nøyaktige tider (som hentet fra NTP-servere eller andre steder) og vet hastigheten på fremgangen til din lokale klokke (som er lett å bestemme), kan du beregne den lokale klokkens drivhastighet i forhold til den "antatte nøyaktige ”Tidens gang. Når den er låst inn, kan denne verdien deretter brukes til kontinuerlig å justere den lokale klokken slik at den rapporterer verdiene veldig nær nøyaktig tid, selv om den lokale sanntidsklokken i seg selv er svært unøyaktig. Så lenge den lokale klokken ikke er høy uberegnelig , dette burde tillate å holde nøyaktig tid i noen tid, selv om tidskilden din oppstrøms blir utilgjengelig av en eller annen grunn.
Noen NTP-klientimplementeringer (sannsynligvis de fleste ntpd-demonene eller systemtjenesteimplementeringene) gjør dette, og andre (som ntpds ledsager ntpdate som bare stiller klokken en gang) gjør det ikke. Dette blir ofte referert til som en drift file fordi den vedvarende lagrer et mål på klokkedrift, men strengt tatt trenger den ikke å lagres som en bestemt fil på disken.
I NTP er Stratum 0 per definisjon en nøyaktig tidskilde. Stratum 1 er et system som bruker en Stratum 0-tidskilde som sin tidskilde (og er dermed litt mindre nøyaktig enn Stratum 0-tidskilden). Stratum 2 er igjen litt mindre nøyaktig enn Stratum 1 fordi den synkroniserer sin tid mot Stratum 1-kilden og så videre. I praksis er dette tapet av nøyaktighet så lite at det er helt ubetydelig i alle, men de mest ekstreme tilfellene.
Har du noe å legge til forklaringen? Lyd av i kommentarene. Vil du lese flere svar fra andre teknologikyndige Stack Exchange-brukere? Sjekk ut hele diskusjonstråden her .