İçeriğe geç
academia.sh

Ders 05 / 12

Alan Adı Nedir

Ad ile adres arasındaki dolaylılık, etiketlerden oluşan ad hiyerarşisi, yetkinin devri ve kayıt sürecindeki roller.

İçindekiler

Önceki konu, sunucuya ulaşmak için bir adres gerektiğini kurdu. Buna karşın adres satırına 192.0.2.10 yazmadınız; ornek.test yazdınız. İki gösterim aynı sunucuyu gösterir, ancak aralarında yalnızca okunabilirlik farkı yoktur.

Bu ders adın kendisini inceler: nasıl yapılandığını, kime ait olduğunu ve neden adresin üzerine ayrı bir katman konduğunu ele alır. Adın adrese çevrilmesi bir sonraki dersin konusudur.

Dolaylılığın Gerekçesi

Adı adresten ayırmak, iki ayrı sorunu çözer.

Anımsanabilirlik bunlardan yalnızca birincisidir ve daha az önemli olanıdır. İnsanlar sayı dizilerini güçlükle anımsar; adlar anlam taşır.

Bağın koparılabilmesi asıl gerekçedir. Önceki derste kurulduğu üzere adres bir konum bildirimidir: bir kuruluş sunucusunu başka bir sağlayıcıya taşıdığında adresi değişmek zorundadır. Adres doğrudan kullanılsaydı, taşınma her kullanıcıyı etkilerdi — herkesin bildiği değer geçersizleşirdi.

Araya bir ad katmanı konduğunda taşınma tek bir kaydın güncellenmesine iner. Ad sabit kalır, gösterdiği adres değişir. Kullanıcı hiçbir şey yapmaz.

Aynı dolaylılık ters yönde de çalışır. Bir ad birden çok adrese bağlanabilir; istekler bu adresler arasında dağıtılır. Aynı adres birden çok adı barındırabilir; bu konunun son dersinin konusudur. Ad ile adres arasındaki ilişki bire bir değildir.

Bu, bilgisayar biliminde tekrarlanan bir kalıptır: değişebilen bir değerin üzerine kararlı bir ad koymak. Programlama Temelleri kursundaki değişken bağlaması ile aynı fikirdir; adın işaret ettiği şey değişse de ada başvuran kod değişmez.

Adın Yapısı

Alan adı (domain name), noktalarla ayrılmış etiketlerden (label) oluşan bir dizidir. Hiyerarşi soldan sağa değil, sağdan sola okunur: en sağdaki etiket en genel düzeyi gösterir.

def etiketleri_ayir(alan_adi: str) -> list[str]:
    """Alan adini etiketlerine ayirir; kok en sagdadir."""
    return alan_adi.rstrip(".").split(".")


for ad in ["ornek.test", "www.ornek.test", "dosya.arsiv.ornek.test"]:
    etiketler = etiketleri_ayir(ad)
    print(f"{ad:<24} {len(etiketler)} etiket  saglama sira: {etiketler[::-1]}")
ornek.test               2 etiket  saglama sira: ['test', 'ornek']
www.ornek.test           3 etiket  saglama sira: ['test', 'ornek', 'www']
dosya.arsiv.ornek.test   4 etiket  saglama sira: ['test', 'ornek', 'arsiv', 'dosya']

Bu diziyi bir ağaç üzerinde okumak doğru sezgiyi verir. Veri Yapıları kursundaki ağaç terminolojisi burada olduğu gibi geçerlidir: adın her etiketi bir düğüm, tam ad ise kökten o düğüme giden yoldur.

  • Kök, adın en sağındaki noktadır ve genellikle yazılmaz. ornek.test yazımı ornek.test. yazımının kısaltmasıdır. Sondaki noktanın açıkça yazıldığı biçime tam nitelikli alan adı (fully qualified domain name) denir.
  • Üst düzey alan adı (top-level domain), kökün hemen altındaki etikettir: örnekteki test.
  • Onun altındaki etiket, kaydedilen addır: ornek.
  • Daha soldaki etiketler, ad sahibinin kendi kararıyla oluşturduğu alt alanlardır: arsiv, dosya.

www etiketinin ayrıcalıklı bir anlamı yoktur. Yerleşmiş bir gelenektir; teknik olarak diğer alt alanlardan farksızdır. ornek.test ile www.ornek.test iki ayrı addır ve farklı yerleri gösterebilirler.

Etiket Kuralları

Etiketler serbest metin değildir. Uzunluk sınırlıdır ve karşılaştırma kuralları tanımlanmıştır.

def etiketleri_ayir(alan_adi: str) -> list[str]:
    return alan_adi.rstrip(".").split(".")


print(len("a" * 63))
print(all(len(e) <= 63 for e in etiketleri_ayir("dosya.arsiv.ornek.test")))
63
True

Bir etiket en çok 63 karakter, tam ad ise en çok 255 karakter uzunluğunda olabilir. Bu sınırlar, adın ağ üzerinde taşındığı biçimin alan genişliklerinden gelir.

Adlar büyük–küçük harf ayrımı gözetmez: ORNEK.TEST ile ornek.test aynı adı gösterir. Buna karşılık bu kural yalnızca ada uygulanır; adres satırındaki yol bölümü için geçerli değildir ve bu ayrım Web İsteğinin Yolculuğu konusunda ele alınır.

Adların özgün karakter kümesi harf, rakam ve kısa çizgiyle sınırlıdır. Türkçe harfler dahil olmak üzere bu kümenin dışındaki karakterleri içeren adlar, sınırlı kümeye geri çevrilebilen bir kodlamayla temsil edilir. Bilgisayarlar Nasıl Çalışır kursundaki karakter kodlamaları dersinde kurulan ayrım burada da geçerlidir: kullanıcıya gösterilen biçim ile ağ üzerinde taşınan biçim aynı olmak zorunda değildir.

Yetkinin Devri

Ad hiyerarşisinin asıl işlevi düzenli görünmek değil, sorumluluğu bölmektir.

Kök düzeyinde hangi üst düzey adların var olacağına karar veren bir otorite bulunur. Bu otorite, her üst düzey adın altındaki adları kimin yöneteceğini o adın işletmecisine devreder. İşletmeci ornek adını bir sahibe verdiğinde, ornek.test altındaki her şeyin yetkisi o sahibe geçer.

Devrin sonucu şudur: arsiv.ornek.test alt alanını oluşturmak için kimseden izin alınmaz. Ad sahibi kendi alt ağacında sınırsız yetkilidir. Kök otoritesinin bu adlardan haberi bile olmaz.

Bu, önceki dersteki otonom sistem yapısıyla aynı ilkedir: üst düzeyde tekillik, alt düzeyde özerklik. Tekil olması gereken tek şey, hiyerarşinin her düzeyinde kimin yetkili olduğudur.

Kayıt Süreci ve Roller

Bir adın “satın alınması” yaygın ama yanıltıcı bir ifadedir. Ad satın alınmaz; belirli bir süre için kullanım hakkı kiralanır. Süre dolduğunda yenilenmezse ad serbest kalır.

Süreçte üç rol ayrılır ve bunların karıştırılması yaygın bir karışıklıktır.

Rol İşlevi
Kayıt kuruluşu (registry) Bir üst düzey adın altındaki kayıtların tek yetkili veritabanını tutar
Kayıt operatörü (registrar) Ad sahibiyle kayıt kuruluşu arasında aracılık eder, kaydı iletir
Ad sahibi (registrant) Adın kullanım hakkını elinde tutan kişi veya kuruluş

Kayıt kuruluşu her üst düzey ad için tektir; kayıt operatörü ise çok sayıdadır ve ad sahibi bunlar arasından seçim yapar. Bir adın operatörü değiştirilebilir; kayıt kuruluşu değiştirilemez, çünkü o üst düzey adın tanımının parçasıdır.

Kaydın teknik olarak anlamlı bölümü, adın hangi sunucuların yetkisinde olduğunun bildirilmesidir. Kayıt kuruluşu, adın kendisinin hangi adrese karşılık geldiğini tutmaz; yalnızca “bu adın yanıtlarını şu sunuculara sorun” bilgisini tutar. Yanıtın içeriği ad sahibinin denetimindedir. Bu ayrım, sonraki dersteki çözümleme zincirinin temelidir.

Ayrılmış Adlar

Bazı üst düzey adlar, hiçbir zaman gerçek bir kayda açılmamak üzere ayrılmıştır. test, example, invalid ve localhost bunlar arasındadır.

Bu kursun örneklerinde ornek.test adının kullanılması bu nedenledir. Ayrılmış bir ad kimseye ait değildir, çözümlendiğinde gerçek bir sunucuya ulaşmaz ve ileride birinin mülkiyetine geçmez. Örneklerde gerçek bir ad kullanmak, o adın sahibi değiştiğinde ya da içeriği farklılaştığında örneği yanlış kılardı.

Aynı gerekçe önceki derste kullanılan 192.0.2.0/24 adres bloğu için de geçerlidir: belgeleme için ayrılmış olan, örnekte güvenle kullanılabilir.

Özet

  • Ad katmanı, adresin değişebilmesine karşın kullanıcının bildiği değerin sabit kalmasını sağlar; asıl gerekçe anımsanabilirlik değil bu bağın koparılabilmesidir.
  • Alan adı etiketlerden oluşur ve sağdan sola, kökten yapraklara okunur; sondaki nokta kökü gösterir ve genellikle yazılmaz.
  • www etiketinin teknik bir ayrıcalığı yoktur; diğer alt alanlarla aynı düzeydedir.
  • Etiketler en çok 63, tam ad en çok 255 karakterdir; adlar büyük–küçük harf ayrımı gözetmez.
  • Hiyerarşinin işlevi yetkiyi devretmektir: ad sahibi kendi alt ağacında izin almadan yeni adlar oluşturur.
  • Kayıt kuruluşu üst düzey ad başına tektir ve yalnızca yetkili sunucuların kimliğini tutar; yanıtın içeriği ad sahibinin denetimindedir.

Sonraki Adım

Adın yapısı ve kime ait olduğu kuruldu, ancak adres satırına ornek.test yazıldığında makinenin bu addan bir adrese nasıl vardığı henüz söylenmedi. Yanıt tek bir yerde saklanmaz: sorgu, kökten başlayıp yetkinin devredildiği her düzeyde bir adım ilerleyen bir zincir izler. Sonraki ders bu zinciri ve zincirin her isteği baştan yürütmesini önleyen önbellekleme düzenini ele alacak.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat