Bir web adresi yazıp Enter’a bastığınızda, sayfa yüklenmeye başlamadan önce gizli bir sorgulama koşuyor. Bilgisayarınız, web sitesinin nerede yaşadığını bilmiyor. Sadece adını biliyor.
Bu yazı, DNS’in o adı bilgisayarınızın bağlanabileceği bir sayıya nasıl çevirdiğini adım adım anlatıyor.
Problem: İsimler ve Sayılar
İnternetteki her cihaza bir IP adresi üzerinden ulaşılıyor; 142.250.72.196 gibi bir sayı. Yönlendiriciler (router’lar) trafiği kelimelerle değil, bu sayılarla taşıyor.
Ama ham sayıları kullanmayı zorlaştıran iki şey var:
- Hiç kimse her web sitesi için rakamları ezberlemek istemiyor.
- Bu sayılar değişiyor. Sunucular taşındıkça adres de değişiyor.
Bu yüzden bir rehbere ihtiyacımız var. Okunabilir isimleri güncel sayılara eşleyecek, her yerde aynı anda çalışacak ve hızlıca güncellenecek bir rehber. O rehberin adı Domain Name System (DNS).
DNS Bir Ağaç, Liste Değil
DNS, tek bir bilgisayardaki dev bir liste değil. Bu, tüm internete asla ölçeklenemezdi. DNS bir ağaç yapısında.
Bir alan adını sağdan sola okuyun:
.: en tepedeki kök (root)..com: bir üst düzey alan adı (TLD). Diğerleri.org,.net.example: alan adının kendisi, domain.www: bir alt alan adı (subdomain).
Her seviye, sadece bir şeyi bilmesi gerekiyor: bir altındaki seviyeyi nerede bulacağını. Tüm interneti tutan tek bir sunucu yok. İş, milyonlarca sunucuya bölünmüş durumda.
Aramayı Resolver Yapıyor
Bilgisayarınız ağacı kendisi dolaşmıyor. Bir resolver‘a soruyor.
Bir resolver genellikle internet sağlayıcınız tarafından işletiliyor. 1.1.1.1 (Cloudflare) ya da 8.8.8.8 (Google) gibi genel bir resolver da kullanabilirsiniz.
Resolver, sizin için aramayı şöyle yapıyor:
- Bir kök sunucuya soruyor:
.comsunucuları nerede? - Kök sunucu bir yönlendirmeyle cevap veriyor.
.comsunucularına soruyor:example.comnerede?- Onlar da domain’in yetkili nameserver’ına (authoritative nameserver) işaret ediyor; gerçek cevabı tutan sunucu.
- Yetkili sunucu IP adresini döndürüyor.
Üç dört hızlı soru sonunda resolver sayıyı elde etmiş oluyor.
Önbellekleme ve TTL
Her arama tüm ağacı dolaşsaydı, internet çok yavaş olurdu. Bu yüzden mümkünse hiçbir şey aynı taramayı iki kez yapmıyor.
Her cevap bir TTL (time to live, yaşam süresi) ile geliyor. Bu, cevabın tekrar kontrol edilmeden ne kadar süre kullanılabileceğini belirtiyor.
Cevap her seviyede önbelleğe alınıyor:
- Tarayıcınız onu önbelleğe alıyor.
- İşletim sisteminiz önbelleğe alıyor.
- Resolver önbelleğe alıyor.
Bir sonraki ziyaretinizde IP, önbellekten anında geliyor. Küresel bir arama olmadan.
TTL bir dengeleme:
- Kısa bir TTL, değişikliklerin hızlı yayılması ama daha fazla sorgu anlamına geliyor.
- Uzun bir TTL, daha az trafik ama güncellemelerin etkili olması daha uzun sürüyor.
Adım Adım Tam Arama
Hepsini birleştirelim:
- Önbelleği kontrol et: tarayıcınız ve işletim sisteminiz önce kontrol ediyor. Cevap oradaysa mikrosaniyeler içinde bitiyorsunuz.
- Resolver’a sor: önbellekte yoksa.
- Ağacı dolaş: resolver önce köke, sonra TLD’ye, sonra yetkili nameserver’a soruyor.
- Döndür ve önbelleğe al: IP döndürülüyor ve bir sonraki sefer için her seviyede önbelleğe alınıyor.
Ancak bundan sonra tarayıcınızın bağlanacağı bir adresi oluyor.
Aramadan Sonra
Adres çubuğundaki o küçük duraklama, sayfa görünmeden önce? Çoğu zaman bu, DNS’in işini bitirmesidir.
Burada bir sonraki adıma bağlanıyor. DNS, IP adresini döndürdüğü anda tarayıcınız o sayıya bir bağlantı açıyor ve TLS handshake‘i başlatıyor. (Bkz. HTTPS Nasıl Çalışır?)
DNS kapıyı buluyor. HTTPS, doğru kapı olduğunu kanıtlıyor ve arkanızdan kilitliyor. İsim → sayı → güvenli bağlantı, hepsi sayfanın ilk pikseli görünmeden önce.
Kendiniz Deneyin
Terminalinizden gerçek bir DNS sorgusu çalıştırabilirsiniz.
Cevabı ve TTL’sini görmek için dig kullanın:
# +noall +answer sadece cevap bölümünü gösterir
dig example.com +noall +answer
Çıktı, IP’yi ve TTL’yi gösteriyor (IN A‘dan önceki sayı).
Ağacı adım adım aşağı inerek izlemek için: kök, sonra TLD, sonra yetkili sunucu:
# +trace hiyerarşiyi seviye seviye dolaşır
dig example.com +trace
Ya da çoğu sistemde aynı şekilde çalışan nslookup kullanın:
# Belirli bir resolver'a sor (burada: Cloudflare'in 1.1.1.1'i)
nslookup example.com 1.1.1.1
İlk komutu iki kez çalıştırın. İkinci seferinde TTL daha düşük olacak; bu, cevabın önbelleğe alındığının ve geri sayıldığının kanıtı.
Türkiye’de Domain Kaydı: .tr Uzantıları ve Nic.tr
Yukarıdaki hiyerarşi, .com ya da .net gibi genel uzantılar için geçerli, ama Türkiye’ye özgü bir katman daha var. .tr ile biten alan adları (.com.tr, .web.tr, .org.tr gibi) Nic.tr tarafından yönetiliyor; ODTÜ bünyesindeki bu kurum, Türkiye’nin ülke kodu üst düzey alan adının (ccTLD) yetkili kayıt otoritesi. .com.tr gibi bazı uzantılar, kayıt sırasında bir şirketin vergi levhası ya da şahıs için T.C. kimlik numarası gibi belgeler istiyor; bu, .com gibi genel uzantılarda olmayan bir doğrulama adımı. .web.tr ise bireysel kullanıcılar için daha az belge gerektiren, daha esnek bir seçenek olarak öne çıkıyor.
Pratik açıdan önemli olan nokta şu: bir .tr domaini satın aldığınızda, DNS kayıtlarınızı (A, CNAME, MX gibi) yönetmek için genelde kayıt firmanızın (registrar) ya da tercih ettiğiniz DNS sağlayıcının (Cloudflare gibi) panelini kullanırsınız; Nic.tr’nin kendisi günlük DNS yönetimiyle uğraşmaz, sadece domainin kim tarafından kayıtlı olduğunu ve hangi nameserver’lara işaret ettiğini tutar. Yani yukarıdaki resolver → root → TLD → yetkili nameserver zinciri .tr domainleri için de birebir aynı şekilde işliyor; tek fark, .tr seviyesindeki kayıt otoritesinin Nic.tr olması.
Öğrendikleriniz
- Bilgisayarlar isimlerle değil, IP sayılarıyla yönlendirme yapıyor.
- DNS bir ağaç: kök → TLD → domain, sağdan sola okunuyor.
- Bir resolver ağacı sizin için dolaşıyor ve IP’yi döndürüyor.
- Cevaplar bir TTL ile önbelleğe alınıyor, bu yüzden ikinci ziyaret anında oluyor.
- Tüm arama, sayfa yüklenmeden önce koşuyor; sonra HTTPS devralıyor.