Die Zeitsynchronisation zwischen Client und Server funktioniert wie folgt:
- Der Client sendet eine NTP Nachricht an den Timeserver, welcher das Paket auswertet, die IP-Adressen und einige Felder austauscht und das Paket dann zurückschickt.
Nun hat man als Ergebnis vier Zeitstempel (timestamps):
Aus diesen vier Zeitstempeln kann das System zwei Werte berechnen:
- Den "Delay", die Zeit, die das NTP-Paket im Netzwerk unterwegs war, und
- den "Offset", die Zeitdifferenz der Rechneruhren.
Die zwei Werte werden nun folgendermassen errechnet:
| Offset = |
( t2 - t1 ) + ( t3 - t4 ) ----------------- 2 |
| Delay = |
( t4 - t1 ) - ( t2 - t3 ) |
Hier ist zu erkennen, dass NTP den Delay mittelt, da davon ausgegangen wird, das der Weg des NTP-Pakets in beide
Richtungen gleich lang ist d.h. Unterschiede fliessen hier als Fehler in den Offset ein.
Im lokalen Netzwerk ist der Roundtrip-Delay nur ein kleiner Teil des Offsets, d.h. die Offset-Berechnung ist hier schon
sehr genau.
Anders ist es in grossen Netzwerken, um die Laufzeitschwankungen zu minimieren, werden die Offset und Delays
weiter gefiltert. Aus den letzten acht empfangenen Zeit-Paketen wird aus dem Paket mit dem geringsten Delay der Offset
berechnet.
Zusätzlich wird aus denselben Paketen ein weitere Wert bestimmt:
Der "Dispersion Wert",
ein gewichteter Durchschnittswert der Offsetabweichungen der 8 letzten Datenpaketen vom aktuellen Offset in dem die
Offsets mit geringerem Delay mehr gewichtet werden.
Da die Laufzeiten im Internet häufig schwanken, werden mehrere Konzepte verfolgt um Störungen zwischen Timeserver
und Clients zu minimieren.