Förstå datortidstämplar med NTP
Måndag september 8th, 2008Hur en dator behandlar tiden är helt annorlunda än hur människor uppfattar det. Vi ordnar tid i sekunder, minuter, timmar, dagar, veckor, månader och år, medan datorer å andra sidan ordnar tid som ett enda tal som representerar de sekunder som har gått från en enda punkt, känd som prime epoken.
De flesta datorer använder NTP (Network Time Protocol) för att hantera tid och nätverk, många synkroniseras med en dedikerad NTP-tidsserver. NTP vet ingenting om dagar, år eller århundraden, bara sekunder från början epoken. Denna främsta epok är inställd (för de flesta system) vid midnatt vid sekelskiftet i det tjugonde århundradet som för en människa skulle spelas in som något som: 00: 00 - 01,01,1900.
Datorer räknar dock med tiden som antalet sekunder förbi denna punkt. Om en dator var i 1900, skulle dess tidsstämpel vid midnatt januari 1 vara 0 medan i 1972 samma datum skulle tidsstämpeln vara 2,272,060,800, vilket motsvarar antalet sekunder sedan 1900.
Tidstämplarna startar om varje 136-år med nästa omslag på grund av 2036. Detta har orsakat oro hos vissa som fruktar ett Millennium Bug-typscenario, även om de flesta tvivel kommer att inträffa när en omslag av tidstämpeln händer en Era integer kommer att läggas till (+ 1), så att datorer kan hantera tidsutrymmen som täcker mer än ett omslag. Om datorer och NTP behöver ta itu med tiden som sträcker sig före den primära epoken används ett negativt heltal (för 1500 används 3 för att representera tre cykler av 136 år).
Timestamps används i praktiskt taget varje transaktion som moderna datorer har till uppgift att göra som att skicka e-post, felsökning och programmering. Eftersom tiden är linjär, vet en dator att varje tidstämpel alltid är större än den föregående och därför är det svårt för datorer och NTP att hantera felaktigheter i tid, särskilt när tiden plötsligt verkar gå bakåt.
Detta kan hända om datorer inte synkroniseras samtidigt. Om ett e-postmeddelande skickas till en maskin med en långsammare klocka, förefaller det att datorn har mottagits innan den har skickats. Brist på synkronisering kan allvarliga problem och kan till och med lämna ett system som är sårbart för skadliga attacker och till och med bedrägeri.
På grund av detta synkroniseras de flesta datornätverk till UTC (Coordinated Universal Time). UTC är en global tidsplan och samma för alla världen över är den baserad på den tid som atomklockor berättar som är mycket noggranna, varken att vinna eller förlora en sekund i miljoner år.
De flesta datanätverk använder en dedikerad NTP tidsserver att få en UTC-tid för att synkronisera sina datorer också. UTC är tillgängligt från hela Internet (även om det inte är säkert) via GPS-nätverket (Global Positioning System), eller genom att ta emot nationella tids- och frekvensutsändningar via långvåg.
NTP synkroniserar en dator genom att kontrollera den mottagna UTC-tiden och lägga till eller håller datorns tidsstämpel tills den passar perfekt till UTC. Genom att använda en dedikerad NTP-tidsserver kan UTC upprätthållas på ett nätverk till några millisekunder av UTC-tid.