Zrozumienie znaczników czasu komputera za pomocą NTP
Poniedziałek, wrzesień 8th, 2008Sposób, w jaki komputer radzi sobie z czasem, jest zupełnie inny niż ludzie, którzy go postrzegają. Organizujemy czas na sekundy, minuty, godziny, dni, tygodnie, miesiące i lata, podczas gdy komputery z drugiej strony ustalają czas jako pojedynczą liczbę reprezentującą sekundy, które przeszły z jednego punktu w czasie, znany jako pierwsza epoka.
Większość komputerów używa NTP (Network Time Protocol), aby poradzić sobie z czasem i wieloma sieciami, są synchronizowane za pomocą dedykowanego serwera czasu NTP. NTP nie wie nic o dniach, latach czy wiekach, tylko o sekundach od pierwszej epoki. Ta największa epoka jest ustawiona (dla większości systemów) o północy na przełomie XX i XX wieku, dla człowieka będzie zapisana jako coś takiego: 00: 00 - 01,01,1900.
Komputery jednak liczą czas jako liczbę sekund po tym punkcie. Jeśli komputer znajdował się w 1900, jego sygnatura czasowa na północy stycznia 1 byłaby 0, podczas gdy w 1972 w tym samym dniu znacznik czasu byłby 2,272,060,800, który reprezentuje liczbę sekund od 1900.
Znaczniki czasu uruchamiają się ponownie co 136 w następnym opakowaniu należnym w 2036, co wywołało niepokój u niektórych, którzy obawiają się scenariusza typu Millennium Bug, chociaż większość wątpliwości dotyczy takich zdarzeń, jednak w przypadku zawijania znacznika czasu zdarza się era zostanie dodana (+ 1), aby umożliwić komputerom radzenie sobie z przedziałami czasu obejmującymi więcej niż jedno zawijanie. Jeśli komputery i NTP muszą radzić sobie z czasem, który obejmuje przed epoką główną, używana jest ujemna liczba całkowita (dla roku 1500 a -3 będzie używany do reprezentowania trzech cykli 136 lat).
Znaczniki czasu są używane praktycznie we wszystkich transakcjach wykonywanych przez nowoczesne komputery, takich jak wysyłanie wiadomości e-mail, debugowanie i programowanie. Ponieważ czas jest liniowy, komputer wie, że każdy znacznik jest zawsze większy niż poprzedni, a zatem komputery i NTP mają trudności z radzeniem sobie z niedokładnościami w czasie, szczególnie gdy czas nagle wydaje się cofać.
Może się to zdarzyć, jeśli komputery nie są zsynchronizowane w tym samym czasie. Jeśli wiadomość e-mail zostanie wysłana na komputer z wolniejszym zegarem, komputer zostanie odebrany, zanim zostanie wysłany. Brak synchronizacji może mieć poważne problemy, a nawet może sprawić, że system będzie podatny na złośliwe ataki, a nawet oszustwa.
Z tego powodu większość sieci komputerowych jest zsynchronizowana z UTC (Coordinated Universal Time). UTC to globalna skala czasowa i taka sama dla wszystkich na całym świecie oparta jest na czasie, który charakteryzują zegary atomowe, które są bardzo dokładne, ani nie zyskują ani nie tracą sekundy w ciągu milionów lat.
Większość sieci komputerowych używa dedykowanego Serwer czasu NTP aby otrzymać czas UTC do synchronizacji również ich komputerów. UTC jest dostępny przez Internet (choć niezabezpieczony), za pośrednictwem sieci GPS (Global Positioning System) lub przez odbieranie krajowych transmisji czasu i częstotliwości za pośrednictwem fal długich.
NTP synchronizuje komputer, sprawdzając odebrany czas UTC i dodając lub zatrzymując znacznik czasu komputera, dopóki nie zostanie idealnie dopasowany do czasu UTC. Używając dedykowanego serwera czasu NTP, UTC może być utrzymywane w sieci przez kilka milisekund czasu UTC.