---
title: 'Alan Adı Sistemi'
source: 'https://academia.sh/tr/kurslar/internet-nasil-calisir/alan-adi-sistemi'
course: 'İnternet Nasıl Çalışır'
language: tr
updated: '2026-08-17T18:07:03+00:00'
license: 'CC BY-SA 4.0'
---

# Alan Adı Sistemi

Adın adrese çevrilmesini yürüten dağıtık veritabanı, kökten yetkiliye uzanan çözümleme zinciri ve yaşam süresine dayalı önbellekleme.

Önceki ders adın yapısını ve yetkinin nasıl devredildiğini kurdu. Kayıt kuruluşunun adın
adresini değil, yalnızca "bu adı şu sunuculara sorun" bilgisini tuttuğu söylenmişti.

Bu ders o sormayı yürüten düzeni ele alır: **alan adı sistemi (domain name system)**.
Sorulacak soru, `ornek.test` adının bir adrese nasıl çevrildiği ve bu çevirinin her istekte
neden baştan yapılmadığıdır.

## Neden Tek Bir Dosya Değil

Adları adreslere eşleyen bir dosya tutmak, ağdaki makine sayısı azken yapılan şeydi. Her
makine bu dosyanın bir kopyasını taşırdı; bir ad eklendiğinde dosya güncellenir ve
herkese dağıtılırdı.

Bu düzenin üç ayrı sınırı vardır ve üçü de ölçekle ilgilidir. Dosya, ad sayısıyla orantılı
olarak büyür. Her değişiklik tüm kopyaların yenilenmesini gerektirir; değişiklik sıklığı
makine sayısıyla artar. Ve tek bir dosya, tek bir yetkili demektir: her ad talebinin aynı
noktadan geçmesi gerekir.

Alan adı sistemi bu üç sınırı da hiyerarşiyi kullanarak aşar. Veritabanı bölünür, her
bölümün yetkisi ayrı bir tarafa devredilir ve hiç kimse bütünü tutmaz.

## Zincirdeki Roller

Çözümlemede dört ayrı rol bulunur.

**Sağlayıcı (stub resolver)**, isteği yapan makinenin içindedir. Uygulamanın bir adı
adrese çevirme çağrısı, işletim sistemindeki bu bileşene gider. Kendisi çözümleme yapmaz;
soruyu bir çözümleyiciye iletir ve yanıtı bekler.

**Çözümleyici (recursive resolver)**, işi üstlenen sunucudur. Genellikle erişim
sağlayıcının ya da kuruluşun işlettiği bir sunucudur. Yanıtı bulmak için gereken tüm
adımları o yürütür ve önbelleği o tutar.

**Kök sunucular**, hiyerarşinin tepesindedir. Adreslerin kendisini bilmezler; yalnızca her
üst düzey adın hangi sunuculara devredildiğini bilirler.

**Yetkili sunucular (authoritative server)**, bir adın yanıtlarını asıl olarak tutan
sunuculardır. `ornek.test` için yetkili sunucu, ad sahibinin belirlediği sunucudur ve
önceki derste anlatılan kayıt sırasında bildirilen de budur.

## Çözümleme Zinciri

`ornek.test` adı önbellekte hiç bulunmadığı varsayımıyla, sorgu şu adımları izler:

1. Uygulama, işletim sistemindeki sağlayıcıdan `ornek.test` adresini ister.
2. Sağlayıcı soruyu çözümleyiciye iletir ve yanıtı bekler.
3. Çözümleyici bir kök sunucuya sorar. Kök, adresi bilmez; `test` üst düzey adının
   yetkisinin hangi sunuculara devredildiğini söyler.
4. Çözümleyici o sunuculardan birine sorar. O da adresi bilmez; `ornek.test` adının
   yetkisinin hangi sunuculara devredildiğini söyler.
5. Çözümleyici yetkili sunucuya sorar ve adresi alır.
6. Yanıt sağlayıcıya, oradan uygulamaya döner.

İş bölümü, iki farklı sorgu biçimini ayırır. Sağlayıcının çözümleyiciye sorduğu soru
**özyinelemelidir (recursive)**: "bu adın yanıtını bul ve bana getir." Çözümleyicinin kök
ve ara sunuculara sorduğu sorular **yinelemelidir (iterative)**: "bunu biliyorsan söyle,
bilmiyorsan kime soracağımı söyle."

Bu ayrım tesadüfi değildir. Kök ve üst düzey sunucular, gelen her soru için başkasına sorup
yanıtı derlemek zorunda olsaydı, yükleri taşınamaz olurdu. Ara sunucuların yaptığı iş tek
bir adımdır ve sabit maliyetlidir; derleme işi tek bir çözümleyicide toplanır.

Her adımda alınan yanıtın "adresi bilmiyorum, şuna sor" biçiminde olması, önceki dersteki
yetki devrinin doğrudan yansımasıdır. Zincirin uzunluğu, adın etiket sayısıyla değil,
yetkinin kaç kez devredildiğiyle belirlenir.

## Bir Kaydın Biçimi

Sorgulama araçlarıyla bu yanıtlar doğrudan görülebilir. Aşağıdaki komut, makinenin
kendisini gösteren adı sorgular; yanıt yerel olarak üretildiği için her yerde aynıdır.

```sh
dig +noall +answer localhost A
```

```
localhost.		0	IN	A	127.0.0.1
```

Bu tek satır, bir kaydın beş alanını gösterir:

| Alan | Örnekteki değer | Anlamı |
|---|---|---|
| Ad | `localhost.` | Kaydın ait olduğu ad; sondaki nokta kökü belirtir |
| Yaşam süresi | `0` | Yanıtın saniye cinsinden önbellekte tutulabileceği süre |
| Sınıf | `IN` | Adres ailesi; internet için her zaman bu değer |
| Tür | `A` | Kaydın türü; `A` bir IPv4 adresi taşır |
| Veri | `127.0.0.1` | Kaydın içeriği |

Aynı komut gerçek bir alan adı için çalıştırıldığında biçim aynı kalır, değerler değişir.
Bu kursta gerçek bir adın çıktısı verilmemiştir: yaşam süresi sorgunun ne zaman yapıldığına,
dönen adres ise sorgunun nereden yapıldığına bağlıdır. İkisi de sayfaya yazıldığı anda
eskimeye başlar. Komutu kendiniz çalıştırdığınızda göreceğiniz beş alan yukarıdakilerle
aynı olacaktır.

Kayıt türlerinin ayrıntısı sonraki dersin konusudur.

## Önbellekleme ve Yaşam Süresi

Yukarıdaki zincir her istekte baştan yürütülseydi, tek bir sayfa açmak birden çok ağ
gidiş–dönüşü gerektirirdi ve kök sunucular dünyadaki her sorguyu görürdü. Sistemi
işletilebilir kılan, yanıtların saklanmasıdır.

Her kayıt, kendisiyle birlikte bir **yaşam süresi (time to live)** taşır: yanıtın kaç
saniye boyunca yeniden sorulmadan kullanılabileceği. Çözümleyici yanıtı bu süre boyunca
önbelleğinde tutar ve aynı soru geldiğinde zinciri yürütmeden yanıtlar.

Süreyi belirleyen, yanıtı veren yetkili sunucudur; yani ad sahibidir. Bu, ad sahibine
doğrudan bir denetim verir ve bir ödünleşimi yönetmesini gerektirir.

Aşağıdaki program bu davranışı gösterir. Saat dışarıdan verildiği için çıktı her
çalıştırmada aynıdır.

```python
class AdOnbellegi:
    """TTL ile sinirli ad->adres onbellegi. Saat disaridan verilir."""

    def __init__(self) -> None:
        self.kayitlar: dict[str, tuple[str, int]] = {}
        self.yukari_sorgu_sayisi = 0

    def cozumle(self, ad: str, simdi: int, ttl: int, adres: str) -> str:
        kayit = self.kayitlar.get(ad)
        if kayit is not None and kayit[1] > simdi:
            return f"onbellekten  (kalan TTL: {kayit[1] - simdi})"
        self.yukari_sorgu_sayisi += 1
        self.kayitlar[ad] = (adres, simdi + ttl)
        return f"yukari sorgu (yeni TTL: {ttl})"


onbellek = AdOnbellegi()
for saniye in [0, 100, 250, 300, 400]:
    sonuc = onbellek.cozumle("ornek.test", simdi=saniye, ttl=300, adres="192.0.2.10")
    print(f"t={saniye:>3}s  {sonuc}")

print(f"toplam yukari sorgu: {onbellek.yukari_sorgu_sayisi}")
```

```
t=  0s  yukari sorgu (yeni TTL: 300)
t=100s  onbellekten  (kalan TTL: 200)
t=250s  onbellekten  (kalan TTL: 50)
t=300s  yukari sorgu (yeni TTL: 300)
t=400s  onbellekten  (kalan TTL: 200)
toplam yukari sorgu: 2
```

Beş çözümleme isteği, yalnızca iki yukarı sorguya yol açtı. Gerçek bir çözümleyicide aynı
kaydı çok sayıda kullanıcı paylaştığı için oran çok daha keskindir.

Ödünleşim şudur:

- **Uzun yaşam süresi**, yukarı sorguları azaltır ve yanıtları hızlandırır. Buna karşılık
  bir değişiklik yapıldığında eski yanıt, süre dolana kadar kullanımda kalır.
- **Kısa yaşam süresi**, değişikliğin çabuk yayılmasını sağlar. Buna karşılık sorgu yükünü
  ve ortalama yanıt süresini artırır.

Bunun işletme pratiğindeki karşılığı doğrudandır: bir sunucu taşınacaksa, taşınmadan önce
yaşam süresi düşürülür, taşınma yapılır, yayılma tamamlandıktan sonra süre geri yükseltilir.
Süre önceden düşürülmezse, eski adres önbelleklerde eski sürenin uzunluğu kadar yaşamaya
devam eder.

Bu, ders boyunca dikkat edilmesi gereken bir sonucu doğurur: **bir alan adı değişikliği
aynı anda her yerde görünmez.** Farklı kullanıcılar, önbelleklerinin durumuna göre bir
süre farklı yanıtlar alır. Bu bir arıza değil, önbelleklemenin tanımı gereğidir.

Yanıtı olumsuz olan sorgular da saklanır. Var olmayan bir ad sorulduğunda "böyle bir ad
yok" yanıtı da bir süre önbellekte tutulur; yeni oluşturulan bir adın hemen görünmemesinin
nedeni budur.

Önbellek tek bir yerde değildir. İşletim sistemindeki sağlayıcı, çözümleyici ve isteği
yapan uygulamanın kendisi ayrı ayrı önbellek tutabilir. Bir adın çözümlenmesindeki
gecikmenin ya da eskimiş bir yanıtın hangi katmandan geldiğini saptamak, bu yüzden
katmanları ayrı ayrı incelemeyi gerektirir.

## Özet

- Adları tek bir dosyada tutmak ölçeklenmez; alan adı sistemi veritabanını hiyerarşiye
  göre böler ve her bölümün yetkisini devreder.
- Çözümleme zinciri kökten başlar, üst düzey ad sunucusuna, oradan yetkili sunucuya iner;
  her adımda alınan yanıt bir sonraki adresi değil, bir sonraki yetkiliyi gösterir.
- Sağlayıcı çözümleyiciye özyinelemeli sorar; çözümleyici ara sunuculara yinelemeli sorar.
  Bu iş bölümü kök ve üst düzey sunucuların yükünü sabit tutar.
- Bir kayıt ad, yaşam süresi, sınıf, tür ve veri alanlarından oluşur.
- Yaşam süresi ad sahibince belirlenir ve sorgu yükü ile değişikliğin yayılma hızı
  arasındaki ödünleşimi yönetir.
- Önbellekleme çok katmanlıdır ve olumsuz yanıtları da kapsar; bir değişiklik her yerde
  aynı anda görünmez.

## Sonraki Adım

Bu ders bir kaydın beş alanını gösterdi ve tür alanını `A` örneğiyle geçti. Oysa bir adın
altında yalnızca adres tutulmaz: başka bir ada yönlendirme, posta yönlendirmesi, doğrulama
metinleri ve yetki bildirimleri de aynı düzende saklanır. Sonraki ders bu türleri, hangi
soruna yanıt verdiklerini ve aralarındaki birleşim kurallarını ele alacak.
