Zeitsynchronisation über das NTP-Protokoll
In diesem Artikel erfahren Sie, wie die Uhrzeit mit hilfe des NTP-Protokolls synchronisiert wird.
Struktur der Zeitquellen (Stratum)
Das NTP-Protokoll verwendet eine hierarchische Struktur von Zeitquellen. Die ursprüngliche Zeitquelle, die aus hochpräzisen Zeitmessgeräten wie Atomuhren besteht, wird als Stratum 0 bezeichnet. Die nächste Ebene (Stratum 1) sind Server, deren Systemzeit mit einer Stratum 0 Zeitquelle synchronisiert wird. Die nächste Ebene (Stratum 2) hat die Zeit mit Stratum 1 Servern synchronisiert. Das geht bis Stratum 15.
So funktioniert es
1. Die Client-Anwendung sendet ein Datenpaket an den Server, das hauptsächlich aus 4 Zeitstempeln besteht. Der erste Zeitstempel, in unserem Beispiel T1, wird von der Client-Anwendung mit der Uhrzeit der Client-Seite gesetzt.
2. Der Server empfängt dieses Datenpaket und setzt den zweiten Zeitstempel, in unserem Beispiel T2. Das Paket wird dann zur weiteren Verarbeitung in eine Warteschlange gestellt.
3. Der Server setzt den dritten Zeitstempel, in unserem Beispiel T3 und sendet das Datenpaket zurück zur Client-Anwendung.
4. Die Client-Anwendung empfängt dieses Datenpaket und setzt den vierten Zeitstempel, in unserem Beispiel T4.
Die Laufzeitverzögerung (Delay)
Die Laufzeitverzögerung, kurz Delay genannt, ist wichtig, um die Zeitdifferenz zwischen Server und Client zu berechnen. Das Delay besteht aus der Zeit zwischen T1 und T4 mit Ausnahme der Zeit zwischen T2 und T3. Die Formel sieht so aus:
(T4 - T1) - (T3 - T2)
Der Zeitunterschied (Offset)
Die Zeitdifferenz wird kurz als Offset bezeichnet. Da der Zeitstempel (T4) des Servers nicht mehr aktuell ist, muss beim Empfang des Datenpakets die Zeit hinzugefügt werden, die das Datenpaket benötigt hat, um vom Server zum Client zu gelangen. Angenommen, die Zeit zwischen Client und Server ist ungefähr dieselbe wie die vom Server zum Client, können wir die Verzögerung durch 2 teilen und erhalten die Zeit, die zu T4 addiert werden muss. Die ganze Formel sieht dann so aus:
((T2 - T1) + (T3 - T4)) / 2