EMZETT.
Login

TTL

Kurz: “Time To Live” — gibt an, wie lange ein Wert (z. B. ein DNS-Eintrag oder ein Netzwerkpaket) gültig bleibt, bevor er verworfen oder neu abgefragt werden muss.

Genauer: Bei DNS-Einträgen ist die TTL eine Zeitspanne in Sekunden, die bestimmt, wie lange ein Resolver das Ergebnis cachen darf, bevor er erneut beim autoritativen Nameserver nachfragt. Bei IP-Paketen ist die TTL stattdessen ein Zähler, der bei jedem durchlaufenen Router um 1 verringert wird und das Paket bei Erreichen von 0 verwirft — das verhindert, dass Pakete endlos im Netz kreisen.

Im Detail

Die beiden Bedeutungen von TTL sind trotz gleichen Namens technisch grundverschieden — beide dienen aber demselben übergeordneten Zweck: verhindern, dass veraltete oder fehlgeleitete Daten unbegrenzt im System herumgeistern.

DNS-TTL: eine Zeitspanne

Bei DNS-Einträgen ist die TTL eine echte Zeitspanne in Sekunden, z. B. 3600 (eine Stunde) oder 86400 (ein Tag). Sie bestimmt, wie lange ein Resolver das Ergebnis einer Abfrage cachen darf, bevor er erneut beim autoritativen Nameserver nachfragen muss. Die Wahl der TTL ist ein klassischer Trade-off:

  • Niedrige TTL (z. B. 300 Sekunden): Änderungen kommen schnell überall an, aber Resolver müssen häufiger nachfragen — mehr Last auf den Nameservern, minimal höhere Latenz für Nutzer, da öfter ein “kalter” Lookup nötig ist.
  • Hohe TTL (z. B. 86400 Sekunden): entlastet die Nameserver spürbar und verbessert die gefühlte Geschwindigkeit für wiederkehrende Nutzer, verzögert aber die Verbreitung von Änderungen entsprechend lange.

Vor geplanten DNS-Umzügen (z. B. Wechsel des Hosting-Providers) senkt man die TTL deshalb typischerweise Tage vorher vorab auf einen niedrigen Wert — sobald die eigentliche Änderung dann live geht, verbreitet sie sich innerhalb von Minuten statt Stunden, weil die meisten Resolver ohnehin schon wegen der abgelaufenen alten TTL neu nachfragen müssen.

IP-Paket-TTL: ein Zähler

Bei IP-Paketen ist die TTL dagegen kein Zeitwert, sondern ein reiner Zähler (Wertebereich 0–255 bei IPv4, bei IPv6 “Hop Limit” genannt), der bei jedem durchlaufenen Router um genau 1 verringert wird. Erreicht der Zähler 0, wird das Paket sofort verworfen und eine ICMP-Fehlermeldung (“Time Exceeded”) an den ursprünglichen Absender zurückgeschickt. Ohne diesen Mechanismus könnte ein fehlgeleitetes Paket bei einer Routing-Schleife (zwei Router leiten sich gegenseitig ein Paket unendlich weiter) theoretisch für immer im Netz kreisen und dabei kontinuierlich Bandbreite verschwenden.

Der Startwert der TTL wird vom sendenden Betriebssystem festgelegt und unterscheidet sich traditionell je nach System (Linux/macOS starten häufig bei 64, ältere Windows-Versionen bei 128) — dieser Unterschied wird gelegentlich sogar zur groben Betriebssystem-Erkennung (“OS-Fingerprinting”) genutzt, indem man die beim Empfänger tatsächlich ankommende TTL mit den üblichen Startwerten vergleicht und die Anzahl der durchlaufenen Hops zurückrechnet.

Praktische Nutzung: traceroute

Der Zähler-Mechanismus wird gezielt von Diagnosewerkzeugen wie traceroute (Windows: tracert) ausgenutzt, um die komplette Route zu einem Ziel sichtbar zu machen:

$ traceroute emzett-digital.com
 1  router.local (192.168.1.1)  1.2 ms
 2  10.0.0.1 (10.0.0.1)  8.4 ms
 3  core-router.isp.net (203.0.113.1)  12.1 ms
 4  emzett-digital.com (198.51.100.42)  24.7 ms

Das Tool sendet Pakete mit absichtlich niedriger, schrittweise steigender TTL (zuerst 1, dann 2, dann 3, …) an dasselbe Ziel. Das Paket mit TTL=1 stirbt bereits beim ersten Router unterwegs und provoziert dort eine “Time Exceeded”-Meldung zurück an den Absender — dadurch erfährt traceroute die Adresse dieses ersten Hops. Das nächste Paket mit TTL=2 schafft es einen Hop weiter, bevor es stirbt, und offenbart so den zweiten Router, und so weiter — bis das Paket irgendwann das eigentliche Ziel erreicht.

Siehe auch: Caching, DNS-Einträge