TTL
Kısaca: “Time To Live” (yaşam süresi) — bir değerin (örn. bir DNS kaydı veya bir ağ paketi) atılması veya yeniden sorgulanması gerekmeden önce ne kadar süre geçerli kaldığını belirtir.
Biraz daha ayrıntılı: DNS kayıtlarında TTL, bir çözümleyicinin yetkili ad sunucusuna yeniden sormadan önce sonucu ne kadar süre önbellekte tutabileceğini belirleyen saniye cinsinden bir süredir. IP paketlerinde ise TTL, geçtiği her yönlendiricide 1 azaltılan bir sayaçtır ve 0’a ulaşınca paket atılır — bu, paketlerin ağda sonsuza dek dolaşmasını önler.
Ayrıntılı
Aynı adı taşımalarına rağmen TTL’nin iki anlamı teknik olarak temelde farklıdır — ancak ikisi de aynı üst amaca hizmet eder: eskimiş veya yanlış yönlenmiş verinin sistemde sonsuza dek dolaşmasını önlemek.
DNS TTL: bir süre
DNS kayıtlarında TTL, saniye cinsinden gerçek bir süredir, örn. 3600 (bir saat) veya 86400 (bir gün). Bir çözümleyicinin, yetkili ad sunucusuna yeniden sormak zorunda kalmadan önce bir sorgunun sonucunu ne kadar süre önbellekte tutabileceğini belirler. TTL seçimi klasik bir ödünleşimdir:
- Düşük TTL (örn. 300 saniye): değişiklikler her yere hızla ulaşır, ama çözümleyicilerin daha sık sorması gerekir — ad sunucularında daha fazla yük, kullanıcılar için biraz daha yüksek gecikme, çünkü “soğuk” bir sorgu daha sık gerekir.
- Yüksek TTL (örn. 86400 saniye): ad sunucularını belirgin biçimde rahatlatır ve geri dönen kullanıcılar için algılanan hızı artırır, ancak değişikliklerin yayılmasını buna göre geciktirir.
Planlı DNS taşımalarından (örn. barındırma sağlayıcısı değişikliği) önce bu yüzden TTL’yi genellikle günler öncesinden düşük bir değere indirirsiniz — asıl değişiklik yürürlüğe girdiğinde, çoğu çözümleyici eski TTL’nin dolması nedeniyle zaten yeniden sormak zorunda olduğundan, saatler yerine dakikalar içinde yayılır.
IP paketi TTL’si: bir sayaç
IP paketlerinde ise TTL bir zaman değeri değil, geçilen her yönlendiricide tam olarak 1 azaltılan salt bir sayaçtır (IPv4 için değer aralığı 0–255, IPv6’da “Hop Limit” olarak adlandırılır). Sayaç 0’a ulaştığında paket hemen atılır ve asıl göndericiye bir ICMP hata iletisi (“Time Exceeded”) geri gönderilir. Bu mekanizma olmasaydı, bir yönlendirme döngüsüne yakalanmış (iki yönlendiricinin bir paketi sonsuza dek birbirine ilettiği) yanlış yönlenmiş bir paket, kuramsal olarak sürekli bant genişliği harcayarak ağda sonsuza dek dolaşabilirdi.
TTL’nin başlangıç değerini gönderen işletim sistemi belirler ve geleneksel olarak sisteme göre değişir (Linux/macOS çoğunlukla 64’ten, eski Windows sürümleri 128’den başlar) — bu fark, alıcıya gerçekten ulaşan TTL’yi olağan başlangıç değerleriyle karşılaştırıp geçilen atlama sayısını geriye doğru hesaplayarak bazen kaba bir işletim sistemi tespiti (“OS fingerprinting”) için bile kullanılır.
Pratik kullanım: traceroute
Sayaç mekanizması, bir hedefe giden tüm yolu görünür kılmak için traceroute (Windows: tracert) gibi tanı araçlarınca bilinçli olarak kullanılır:
$ 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
Araç, aynı hedefe kasıtlı olarak düşük ve kademeli artan TTL ile (önce 1, sonra 2, sonra 3, …) paketler gönderir. TTL=1 olan paket yol üzerindeki ilk yönlendiricide zaten ölür ve orada göndericiye bir “Time Exceeded” iletisi doğurur — traceroute bu ilk atlamanın adresini böyle öğrenir. TTL=2 olan sonraki paket ölmeden önce bir atlama daha ilerler ve ikinci yönlendiriciyi ortaya çıkarır; ve böyle sürer — paket nihayet asıl hedefe ulaşana dek.
Ayrıca bak: Önbellekleme, DNS kayıtları