NTP — was es ist, Zeitprotokoll und Synchronisation in Anwendungen

Autor: IT Sectr Veröffentlicht: 2026-07-14 Lesezeit: 9 Min.

NTP (Network Time Protocol) ist ein Netzwerk-Zeitsynchronisationsprotokoll, das in lokalen Netzwerken eine Genauigkeit von Millisekunden und im globalen Netzwerk von zig Millisekunden bietet. Das 1985 von David Mills entwickelte Protokoll wird in allen modernen Betriebssystemen, Mobilgeräten und Netzwerkgeräten verwendet, um interne Uhren mit der UTC-Referenzzeit zu synchronisieren. Laut dem NTP Pool Project (2026) führen täglich über 4 Milliarden Geräte NTP-Anfragen zur Synchronisation durch.

Wichtige Punkte

  • NTP — Zeitsynchronisationsprotokoll über Netzwerke, Genauigkeit von 1 ms (LAN) bis 50 ms (WAN)
  • Stratum-Hierarchie — ein Ebenensystem (Stratum 0–16), wobei Stratum 0 die Referenz-Atomuhr ist
  • Driftkorrektur — NTP stellt nicht nur die Uhrzeit ein, sondern passt die Taktfrequenz für dauerhafte Genauigkeit an
  • SNTP — eine vereinfachte Version von NTP für Geräte mit begrenzten Ressourcen, verwendet in IoT und Android
  • Sicherheit — NTPv4 unterstützt Authentifizierung über symmetrische Schlüssel und NTS (Network Time Security)

Was ist NTP?

NTP (Network Time Protocol) ist ein Netzwerkprotokoll zur genauen Synchronisation der internen Uhr eines Computers mit einer Referenzzeitquelle über ein paketvermitteltes Netzwerk. Beschrieben in RFC 5905 (NTPv4), verwendet das Protokoll ein hierarchisches System von Servern, wobei jede Ebene als Stratum bezeichnet wird. Ein NTP-Client sendet Anfragen an einen Server, misst die Paketumlaufzeit (RTT) und berechnet den Offset seiner eigenen Uhr relativ zur Referenzzeit. Der Korrekturalgorithmus berücksichtigt nicht nur einen einmaligen Offset, sondern auch die Drift des Taktgenerators, sodass die Genauigkeit über längere Zeiträume ohne wiederholte Anfragen aufrechterhalten werden kann.

Geschichte der NTP-Entwicklung

Das Protokoll wurde von David Mills 1985 für das ARPANET entwickelt. Die erste Spezifikation (RFC 958) beschrieb einen einfachen Synchronisationsalgorithmus mit einer Genauigkeit von bis zu 100 ms. NTPv3 (RFC 1305, 1992) fügte einen Filteralgorithmus und eine verbesserte Verarbeitung von Verzögerungen hinzu. NTPv4 (RFC 5905, 2010) — die aktuelle Version — enthält IPv6-Unterstützung, automatische Serverkonfiguration und Schutz vor Angriffen über Network Time Security (NTS). In 40 Jahren hat sich das Protokoll von einem Forschungsprojekt zu einem Infrastrukturstandard entwickelt, ohne den Finanztransaktionen, Telekommunikation und mobile Netzwerke unmöglich wären.

Wie NTP funktioniert

Das Funktionsprinzip von NTP basiert auf der Messung der Paketlaufzeit im Netzwerk. Der Client sendet eine Anfrage mit einem Zeitstempel T1 (lokale Sendezeit). Der Server empfängt die Anfrage zum Zeitpunkt T2 (Serverzeit), erzeugt eine Antwort mit Zeitstempel T3 und sendet sie. Der Client empfängt die Antwort zum Zeitpunkt T4. Mit allen vier Zeitstempeln berechnet der Client den Offset = ((T2 - T1) + (T3 - T4)) / 2 und die Verzögerung = (T4 - T1) - (T3 - T2). Wenn die Verzögerung 1 Sekunde überschreitet, gilt das Ergebnis als unzuverlässig — dies schützt vor überlasteten oder instabilen Kanälen.

Korrektur der Uhrendrift

Allein das Einstellen der genauen Uhrzeit reicht nicht aus — der Quarzoszillator eines Geräts driftet ständig (geht vor oder nach) aufgrund von Temperatur, Alterung und Spannung. NTP löst dieses Problem mithilfe des PLL (Phase-Locked Loop)-Algorithmus: Er stellt die Uhrzeit nicht zwangsweise ein, sondern passt die Taktgeschwindigkeit an. Wenn das Gerät 0,1 Sekunden pro Stunde vorgeht, verlangsamt NTP die Systemuhr, bis die Drift kompensiert ist. Dieser Ansatz ermöglicht in stabilen Netzwerken eine Synchronisation alle paar Stunden statt alle 30 Sekunden.

cpp
// Simplified NTP algorithm schema
struct NTPPacket {
    uint8_t flags;      // LI, VN, Mode
    uint8_t stratum;    // server stratum level
    uint32_t refTimestamp;  // reference timestamp
    uint32_t originTimestamp; // T1
    uint32_t recvTimestamp;   // T2
    uint32_t xmitTimestamp;   // T3
};

// Calculate offset and delay
double offset = ((t2 - t1) + (t3 - t4)) / 2.0;
double delay = (t4 - t1) - (t3 - t2);

Strata — NTP-Hierarchie

Das gesamte NTP-System ist in einer Hierarchie organisiert, wobei jede Ebene als Stratum bezeichnet wird. Stratum 0 ist die Referenzuhr: Atomuhren, GPS-Empfänger oder WWVB-Funksignale. Diese Geräte sind nicht direkt mit dem Netzwerk verbunden. Stratum 1 — Server, die direkt mit den Referenzuhren verbunden sind. Stratum 2 empfängt die Zeit von Stratum 1, Stratum 3 von Stratum 2 und so weiter bis Stratum 15. Je höher die Stratum-Nummer, desto geringer potenziell die Genauigkeit — jede Ebene fügt eine kleine Verzögerung und einen Fehler hinzu. Stratum 16 bedeutet, dass die Zeit nicht verfügbar (nicht synchronisiert) ist.

StratumBeschreibungGenauigkeit
Stratum 0Atomuhren, GPS, FunksignaleNanosekunden
Stratum 1Mit Referenz verbundene ServerMikrosekunden
Stratum 2Öffentliche NTP-Server1–10 ms
Stratum 3Lokale Server von Organisationen10–50 ms
Stratum 4+Client-Gerätebis 100 ms

Serverauswahl nach Stratum

Für Mobilgeräte sind Stratum-2-Server optimal — es gibt genug von ihnen und sie bieten eine gute Balance zwischen Genauigkeit und Verfügbarkeit. Beispielsweise ist pool.ntp.org ein Pool von Tausenden Servern weltweit, der die Last automatisch verteilt. Für Android-Anwendungen wird die direkte Verwendung von Stratum 1 nicht empfohlen: Erstens erzeugt es eine übermäßige Last auf den primären Servern, und zweitens benötigt ein mobiles Gerät nur eine Genauigkeit von 10–50 ms, die Stratum 2 bietet. In Unternehmensnetzwerken wird ein lokaler Stratum-3-4-Server eingerichtet, der mit einem externen Stratum 2 synchronisiert.

SNTP — vereinfachte Version von NTP

SNTP (Simple Network Time Protocol, RFC 4330) ist eine vereinfachte Implementierung von NTP für Geräte mit begrenzten Ressourcen: Mikrocontroller, IoT-Sensoren und mobile Anwendungen, die keine hohe Genauigkeit benötigen. Im Gegensatz zu vollständigem NTP führt SNTP keine Filterung mehrerer Server durch, analysiert keine Uhrendrift und verwendet keine komplexen PLL-Algorithmen. Ein SNTP-Client sendet eine Anfrage, empfängt eine Antwort und stellt die Uhrzeit einmalig ein. Die Genauigkeit von SNTP beträgt je nach Netzwerk 10–100 ms — dies ist für die überwiegende Mehrheit mobiler Szenarien ausreichend, mit Ausnahme von Finanztransaktionen.

Wann SNTP statt NTP verwendet werden sollte

SNTP eignet sich für Android-Anwendungen, die einfach die aktuelle Uhrzeit von einem Server abrufen müssen, ohne eine kontinuierliche Synchronisation aufrechtzuerhalten. Beispielsweise zeigt eine App die Serverzeit beim Login an oder synchronisiert einmal täglich. Vollständiges NTP ist für Serversysteme, Telekommunikationsausrüstung, Finanzplattformen und verteilte Datenbanken erforderlich, bei denen konstante Genauigkeit und Driftüberwachung kritisch sind. Für die mobile Entwicklung ist SNTP ausreichend — der integrierte Android-Zeitdienst verwendet es zur periodischen Synchronisation mit Google-Servern.

NTP-Implementierung in Android

In Android-Anwendungen ist das Abrufen der genauen Uhrzeit über NTP erforderlich, wenn die Systemzeit vom Benutzer geändert werden kann oder aufgrund fehlender Netzwerkverbindung von der tatsächlichen Zeit abweicht. Android verfügt über keinen integrierten öffentlichen NTP-Client — Entwickler verwenden die Bibliothek Apache Commons Net SntpClient oder Drittanbieterlösungen. Im Jahr 2022 fügte Google eine interne SntpClient-Klasse zur Android-API hinzu (über Google Play Services), die jedoch Konfiguration erfordert und nicht für die allgemeine Verwendung dokumentiert ist. Ein alternativer Ansatz ist die Zeitanfrage über eine REST-API, die den Server-Zeitstempel im Antwortkörper zurückgibt.

Beispiel einer SNTP-Client-Implementierung

Eine grundlegende SNTP-Implementierung auf Android besteht aus dem Senden eines UDP-Pakets an einen NTP-Server (z. B. pool.ntp.org), dem Parsen der Antwort und dem Extrahieren des Sendezeitstempels (T3). Der Code muss Netzwerk-Timeouts und Parse-Fehler behandeln — in einer realen Anwendung wird diese Operation in einem Hintergrundthread ausgeführt und das Ergebnis bis zur nächsten Synchronisation zwischengespeichert. Die Bibliothek Apache Commons Net bietet eine fertige NTPUDPClient-Klasse, die mit minimalen Änderungen in Android verwendet werden kann, indem die Abhängigkeit zu build.gradle hinzugefügt wird.

kotlin
// Get NTP time via Apache Commons Net
fun getNtpTime(server: String = "pool.ntp.org"): Date? {
    return try {
        val client = NTPUDPClient()
        client.setDefaultTimeout(5000)
        val info = client.getTime(InetAddress.getByName(server))
        client.close()
        Date(info.getMessage().getTransmitTimeStamp().getTime())
    } catch (e: Exception) {
        null
    }
}

NTP-Genauigkeit und Einflussfaktoren

Die Genauigkeit von NTP hängt von mehreren Faktoren ab: Netzwerkverzögerung (RTT), Kanalstabilität, Serverauslastung und Qualität des lokalen Taktgenerators. In einem lokalen Netzwerk mit einer Verzögerung von weniger als 1 ms erreicht NTP eine Genauigkeit von 0,1–1 ms. Über das Internet mit einer Verzögerung von 10–50 ms sinkt die Genauigkeit auf 10–50 ms. Wichtiger als die einmalige Genauigkeit ist die Stabilität: Wenn die Verzögerung schwankt (Jitter), benötigt NTP mehr Zeit zur Berechnung eines zuverlässigen Offsets. Für Mobilgeräte ist der Hauptfaktor für Instabilität der Wechsel zwischen WLAN und Mobilfunknetzen, bei dem sich die Verzögerung um Größenordnungen ändern kann.

Empfehlungen für die mobile Entwicklung

Für zeitkritische Android-Anwendungen wird empfohlen: mehrere NTP-Server verwenden und den mit der geringsten Verzögerung auswählen; Synchronisation während Netzwerkwechsel vermeiden; die zuletzt erhaltene Zeit zwischenspeichern und über System.currentTimeMillis anpassen. Für Spiele und Echtzeitanwendungen (NTP ist hier aufgrund der Netzwerklatenz nicht geeignet) verwenden Sie die Serverzeit, die in jeder Anfrage übermittelt wird. In Finanzanwendungen überprüfen Sie immer die Abweichung vom Server — wenn die Differenz 5 Sekunden überschreitet, blockieren Sie die Operation als potenziell unsicher.

Häufig gestellte Fragen

Was ist NTP und wozu wird es benötigt?

NTP (Network Time Protocol) ist ein Uhrensynchronisationsprotokoll über das Internet. Es wird benötigt, um die Zeit auf Geräten mit der UTC-Referenz abzugleichen. Ohne NTP weichen Computeruhren aufgrund der Quarzoszillator-Drift um Sekunden pro Tag ab, was für Finanztransaktionen, Protokollierung und Sicherheit kritisch ist.

Wie ist die NTP-Hierarchie aufgebaut?

Das NTP-System verwendet Ebenen — Strata: Stratum 0 (Atomuhren und GPS), Stratum 1 (mit Referenz verbundene Server), Stratum 2 (öffentliche NTP-Server), Stratum 3–4 (lokale Server), Stratum 5–15 (Clients). Je höher das Stratum, desto größer der potenzielle Fehler. Stratum 16 bedeutet, dass die Zeit nicht synchronisiert ist.

Was ist der Unterschied zwischen NTP und SNTP?

SNTP ist eine vereinfachte Version von NTP für Geräte mit begrenzten Ressourcen. Es filtert keine Server, analysiert keine Uhrendrift und verwendet kein PLL. SNTP eignet sich für mobile Anwendungen, bei denen eine Genauigkeit von 10–100 ms ausreicht. Vollständiges NTP wird für Server, Telekommunikationsausrüstung und Fintech-Systeme benötigt.

Wie erhalte ich die genaue Uhrzeit über NTP in Android?

Verwenden Sie die Bibliothek Apache Commons Net mit der Klasse NTPUDPClient. Senden Sie eine Anfrage an pool.ntp.org, erhalten Sie die Antwort und extrahieren Sie den Sendezeitstempel. Alternativ verwenden Sie die REST-API Ihres Servers, die die Serverzeit im Date-Header oder im Antwortkörper als Unix-Zeitstempel zurückgibt.

Warum ist Zeitsynchronisation auf mobilen Geräten wichtig?

Ohne NTP-Synchronisation kann die Systemzeit auf einem Gerät um Minuten oder Stunden abweichen. Dies beeinträchtigt Push-Benachrichtigungen, SSL-Zertifikatsprüfung, Protokolle, Aufgabenplaner und kryptografische Protokolle. In Finanzanwendungen gilt eine Abweichung von mehr als 5 Sekunden als Sicherheitsbedrohung.

Zusammenfassung

  • NTP — ein Netzwerk-Zeitsynchronisationsprotokoll, das über eine Strata-Hierarchie 0–16 eine Genauigkeit von 1 ms (LAN) bis 50 ms (WAN) bietet
  • Driftkorrektur — NTP stellt nicht nur die Uhrzeit ein, sondern passt die Taktfrequenz über PLL an und hält so die Genauigkeit stundenlang zwischen Synchronisationen
  • Stratum-Hierarchie — jede Ebene (Stratum) fügt potenziellen Fehler hinzu; für Mobilgeräte sind Stratum-2-Server wie pool.ntp.org optimal
  • SNTP — eine vereinfachte Version von NTP für IoT und Android ohne Filterung und PLL; 10–100 ms Genauigkeit reichen für die meisten Szenarien
  • Android-Implementierung — über Apache Commons Net (NTPUDPClient) oder REST-API mit Server-Zeitstempel; es gibt keinen integrierten öffentlichen NTP-Client auf der Plattform
  • Sicherheit — NTPv4 unterstützt Network Time Security (NTS) zum Schutz vor Antwortfälschung; kritisch für Finanz- und Unternehmensanwendungen
  • Genauigkeitsfaktoren — RTT, Jitter, Netzwerkwechsel; mobile Apps benötigen 10–50 ms Genauigkeit, aber kritische Operationen erfordern eine Überprüfung der Abweichung vom Server

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch