---
title: 'Ad Çözümleme'
source: 'https://academia.sh/tr/kurslar/linux-ag-yonetimi/ad-cozumleme'
course: 'Linux Ağ Yönetimi ve Sorun Giderme'
language: tr
updated: '2026-08-17T18:09:59+00:00'
license: 'CC BY-SA 4.0'
---

# Ad Çözümleme

Ad çözümleme sınaması beklenen yanıtı verdiğinde sekiz adaydan yalnız birini eliyor; başarısız olduğunda yedisini eliyor ve bu asimetri, kursun en zayıf sınamasının neden yine de yapıldığını açıklıyor.

Yönlendirme tablosu beklenen yanıtı verdiğinde — `tam` — geriye beş aday kalıyordu. Bunların
dördü artık paketin yoluyla değil, **ne istendiğiyle** ilgili: hedefin adı çözülemiyor olabilir,
servis dinlemiyor olabilir, güvenlik duvarı düşürüyor olabilir ya da büyük paket yolda
kayboluyor olabilir. Bu ders dörtlünün ilkine bakar.

Ölçülecek sayı kursun en küçük sayılarından biridir ve dersin asıl sorusu bu küçüklüğün ne
anlama geldiğidir: bir sınama beklenen yanıtı verdiğinde sekiz adaydan **yalnız birini**
eliyorsa, o sınama neden yine de yapılır.

## Çözücü Neyi Yapılandırır

Ad çözümleme, bir adın bir adrese dönüştürülmesidir ve bu iş tek bir yerde yapılmaz. Sorgu
önce **ad hizmeti sırasına** çarpar: sistem, hangi kaynağın hangi sırayla deneneceğini bir
yapılandırma dosyasından okur. Sıradaki ilk kaynak genellikle yerel bir konak dosyasıdır;
ondan sonra yerel bir önbellek ya da saplama çözücü gelir; en sonda ağdaki çözücüye
gönderilen sorgu vardır. Bir ad yerel dosyada bulunduğunda ağa hiç çıkılmaz ve ağdaki
çözücünün verdiği yanıt hiç görülmez.

```text
# örnek döküm — çalıştırılmamıştır
$ cat /etc/resolv.conf
nameserver 192.0.2.53
search ornek
options timeout:2 attempts:2
```

Yapılandırmanın üç alanı üç ayrı davranış belirler. **Çözücü adresi** sorgunun nereye
gideceğini söyler; birden çok yazıldığında ilki denenir ve yalnız yanıt gelmediğinde sıradaki
denenir. **Arama alanı**, nokta içermeyen bir ada eklenecek son eki verir; kısa adla yapılan
sorgu ile tam adla yapılan sorgu bu yüzden farklı sonuçlar üretebilir. **Zaman aşımı ve deneme
sayısı** ise arızanın ne kadar sürede görüneceğini belirler: iki saniyelik zaman aşımı ve iki
deneme, sessiz bir çözücüde her sorguyu dört saniye bekletir ve uygulama katmanında bu,
ad çözümleme arızası olarak değil **yavaşlık** olarak görünür.

```text
# örnek döküm — çalıştırılmamıştır
$ getent ahosts kayit-deposu.ornek
198.51.100.42  STREAM kayit-deposu.ornek
198.51.100.42  DGRAM
```

Sorgu aracı seçimi de sonucu değiştirir. Doğrudan çözücüye soru soran araçlar ad hizmeti
sırasını **atlar** ve yalnız ağdaki çözücüyü sınar; sistemin gerçekte kullandığı yolu
sınamak için sıranın tamamından geçen bir araç gerekir. Bu ayrım tanıda somut bir sonuç
üretir: bir sorgu aracıyla ad çözülüyor, uygulama çözemiyor olabilir ya da tersi.

Adların ağ üzerinde nasıl çözüldüğü, sorgu ile yanıtın hangi kayıt türlerini taşıdığı ve
yetkili sunucu hiyerarşisinin nasıl işlediği Bilgisayar Ağları müfredatının konusudur; burada
protokol kurulmaz, yalnız **bu makinenin çözücü yapılandırması** okunur.

- **AY19** — Kurgu sunucuda ad hizmeti sırası iki kaynaktan oluşur: yerel konak dosyası ve
  ağdaki tek bir çözücü. Konak dosyasında aranan ad bulunmadığı varsayılır.
- **AY20** — `cozumleyici-sessiz` adayı, çözücünün sorguya hiç yanıt vermemesidir. Yanlış
  yanıt veren çözücü ayrı bir adaydır ve temel listede yoktur; süpürmede eklenir.
  Çözücünin kendisine giden yolun sağlam olduğu, tek arıza varsayımının gereği olarak
  kabul edilir.

## Sıranın Kendisi Bir Arıza Kaynağıdır

Ad hizmeti sırası tanıda iki ayrı tuzak üretir ve ikisi de sık görülür.

Birincisi **yerel girdinin üstünlüğüdür**. Konak dosyasına yazılmış bir satır, ağdaki
çözücünün ne söylediğinden bağımsız olarak kazanır. Bir taşıma sırasında geçici olarak
eklenen bir satır yerinde unutulduğunda, sistem aylarca eski adrese bağlanır ve ağdaki kayıt
düzeltilmiş olduğu için hiçbir sorgu aracı arızayı göstermez — sorgu aracı sırayı atlıyorsa
doğru adresi döndürür, uygulama ise yanlış adrese gider. Ayrımı yapan tek okuma, sıradan geçen
bir sorgudur.

İkincisi **arama alanının sessiz genişlemesidir**. Nokta içermeyen bir ad sorulduğunda sisteme
tanımlı son ek eklenir ve sorgu farklı bir ada dönüşür. Aynı kısa ad iki makinede iki farklı
tam ada açılabilir, çünkü arama alanları farklıdır. Bu yüzden bir sınama sonucunun başka bir
makineye taşınması güvenilir değildir: sınanan ad, yazılan ad değildir. Yapılandırma
dosyalarında tam adın yazılması bu belirsizliği kaynağında kapatır.

Üçüncü bir davranış arıza değildir ama arızayı gizler: sıradaki bir kaynak yanıt vermediğinde
sorgu bir sonrakine düşer. Düşme sessizdir ve yalnız **süre** olarak görünür. Zaman aşımı iki
saniye, deneme sayısı iki olan bir yapılandırmada sessiz bir çözücü her sorguya dört
saniye ekler; uygulama günlüğünde bunun karşılığı bir hata değil, gecikmedir. Sistem Yönetimi
kursundaki kalıp burada da geçerli: **görünen belirti ile gerçek arıza farklı katmanlarda
durur.**

## Sınamanın Ölçüsü: Bir Aday

```python
"""Ad cozumleme sinamasi: ayni sekiz aday nedene karsi kac aday eleniyor
ve onceki derslerin sinama kumesine eklendiginde kac aday AYRILIYOR."""
SAGLAM = {"arayuz_acik": True, "adres_var": True, "ag_gecidi_dogru": True,
          "rota_var": True, "cozumleyici_yanit": True, "servis_dinliyor": True,
          "guvenlik_duvari_gecirir": True, "yol_bozulmadan": True}
ARIZA = {
    "arayuz-kapali":      {"arayuz_acik": False, "adres_var": False},
    "adres-yok":          {"adres_var": False},
    "ag-gecidi-yanlis":   {"ag_gecidi_dogru": False},
    "rota-eksik":         {"rota_var": False},
    "cozumleyici-sessiz": {"cozumleyici_yanit": False},
    "servis-dinlemiyor":  {"servis_dinliyor": False},
    "guvenlik-duvari-dusuruyor": {"guvenlik_duvari_gecirir": False},
    "buyuk-paket-dusuyor": {"yol_bozulmadan": False},
}


def durum(ariza, tablo):
    d = dict(SAGLAM)
    d.update(tablo[ariza])
    return d


def s_rota(d):
    if not d["adres_var"]:
        return "tablo-bos"
    return "tam" if d["rota_var"] else "varsayilan-yok"


def s_gecit_yankisi(d):
    return "yanit" if d["arayuz_acik"] and d["adres_var"] else "yanit-yok"


def s_uzak_yanki(d):
    return "yanit" if (d["arayuz_acik"] and d["adres_var"]
                       and d["ag_gecidi_dogru"] and d["rota_var"]) else "yanit-yok"


def s_ad_cozumleme(d):
    return "cozuldu" if d["cozumleyici_yanit"] else "cozulemedi"


SINAMA = {"rota": s_rota, "gecit-yankisi": s_gecit_yankisi,
          "uzak-yanki": s_uzak_yanki, "ad-cozumleme": s_ad_cozumleme}


def obekle(sinamalar, tablo=ARIZA):
    o = {}
    for a in tablo:
        anahtar = tuple(SINAMA[s](durum(a, tablo)) for s in sinamalar)
        o.setdefault(anahtar, []).append(a)
    return o


print("ad cozumleme sinamasi: yanit basina aday")
for yanit, kume in obekle(["ad-cozumleme"]).items():
    print(f"  {yanit[0]:11s} kalan {len(kume):2d}  elenen {len(ARIZA) - len(kume):2d}"
          f"  {', '.join(kume)}")
print()
ONCEKI = ["gecit-yankisi", "uzak-yanki", "rota"]
print("onceki derslerin kumesine eklenince")
for kume in (ONCEKI, ONCEKI + ["ad-cozumleme"]):
    ayrilmayan = [sorted(v) for v in obekle(kume).values() if len(v) > 1]
    kapsanan = sum(len(o) for o in ayrilmayan)
    print(f"  {len(kume)} sinama  obek {len(ayrilmayan)}  ayrilmayan aday {kapsanan}")
    for o in ayrilmayan:
        print(f"      {', '.join(o)}")
print()
print("aday kumesi supurmesi (ad cozumleme sinamasi)")
EK = dict(ARIZA, **{"cozumleyici-yanlis-kayit": {"cozumleyici_yanit": False}})
EKSIK = {k: v for k, v in ARIZA.items() if k != "cozumleyici-sessiz"}
for ad, tablo in (("temel               8", ARIZA),
                  ("+yanlis-kayit       9", EK),
                  ("-cozumleyici-sessiz 7", EKSIK)):
    o = obekle(["ad-cozumleme"], tablo)
    satir = "  ".join(f"{y[0]}: elenen {len(tablo) - len(k):2d} kalan {len(k):2d}"
                      for y, k in sorted(o.items()))
    print(f"  {ad:21s} ayri yanit {len(o)}   {satir}")
```

```
ad cozumleme sinamasi: yanit basina aday
  cozuldu     kalan  7  elenen  1  arayuz-kapali, adres-yok, ag-gecidi-yanlis, rota-eksik, servis-dinlemiyor, guvenlik-duvari-dusuruyor, buyuk-paket-dusuyor
  cozulemedi  kalan  1  elenen  7  cozumleyici-sessiz

onceki derslerin kumesine eklenince
  3 sinama  obek 2  ayrilmayan aday 6
      adres-yok, arayuz-kapali
      buyuk-paket-dusuyor, cozumleyici-sessiz, guvenlik-duvari-dusuruyor, servis-dinlemiyor
  4 sinama  obek 2  ayrilmayan aday 5
      adres-yok, arayuz-kapali
      buyuk-paket-dusuyor, guvenlik-duvari-dusuruyor, servis-dinlemiyor

aday kumesi supurmesi (ad cozumleme sinamasi)
  temel               8 ayri yanit 2   cozuldu: elenen  1 kalan  7  cozulemedi: elenen  7 kalan  1
  +yanlis-kayit       9 ayri yanit 2   cozuldu: elenen  2 kalan  7  cozulemedi: elenen  7 kalan  2
  -cozumleyici-sessiz 7 ayri yanit 1   cozuldu: elenen  0 kalan  7
```

Üç sayı yan yana. **Kâhin:** bu turda gerçek arıza `cozumleyici-sessiz` değil; kurgu sunucuda
başka bir alan bozuk ve çözücü çalışıyor. **Sınama:** ad sorgusu yapılıyor ve yanıtı
`cozuldu`. **Elenen aday:** **bir**; geriye **yedi aday** kalıyor. Bu, kursun ölçtüğü sekiz
sınama içindeki en düşük değerlerden biridir; yalnız dinleyen soket listesi aynı
sayıyı verir.

## Zayıf Sınamanın Değeri

Ad çözümleme sınaması iki yanıt üretir ve iki yanıt arasındaki uçurum kursun en büyüğüdür:
`cozuldu` bir aday eler, `cozulemedi` yedi aday eler. Aynı komut, aynı süre, aynı çaba; taşıdığı
bilgi yedi katı fark ediyor. Sınamanın değeri sınamada değil, **hangi yanıtı verdiğindedir.**

Bu asimetrinin pratik okuması iki maddedir. Birincisi: ad çözümleme başarısız olduğunda tanı
biter. Yedi aday elenir, tek aday kalır ve düzeltilecek şey bellidir. İkincisi: ad çözümleme
başarılı olduğunda hiçbir şey öğrenilmemiş gibi durur, oysa öğrenilen bir şey vardır — bir
**karıştırıcı** ortadan kalkmıştır. Ad üzerinden yapılan her sınama iki soruyu birden sorar:
ad çözülüyor mu ve hedef erişilebilir mi. Çözümleme ayrı olarak doğrulanmadan yapılan bir
bağlantı denemesinin başarısızlığı bu iki sorunun hangisine ait olduğunu göstermez. Ad
çözümleme sınaması, sonraki bütün sınamaların **anlamını sabitler**.

İkinci tablo bu katkıyı sayıya çeviriyor. Önceki iki dersin sınama kümesi — yerel yankı, uzak
yankı ve tablo okuması — sekiz adayı iki öbekte ayrılamaz bırakıyordu ve bu öbeklerde toplam
**altı aday** vardı. Ad çözümleme eklendiğinde öbek sayısı ikide kalıyor, ayrılamayan aday
sayısı **beşe** iniyor. Yani sınamanın katkısı tam olarak **bir adaydır** ve o bir aday,
kendisinden başka hiçbir sınamanın ayıramadığı adaydır. Dört sınamanın hiçbiri
`cozumleyici-sessiz` adayını dokunmadan ayıramaz, çünkü çözücü sessizken paketler yolda
sorunsuz akmaya devam eder.

Bu, sınamaları eleme gücüne göre sıralamanın neden yeterli olmadığını gösteriyor. Bir sınamanın
tek başına kaç aday elediği ile bir kümeye eklendiğinde kaç aday **ayırdığı** ayrı ölçülerdir
ve ikisi aynı yönde hareket etmez. Güçlü bir sınama, kendisinden önce yapılan sınamaların
zaten ayırdığı adayları elediğinde hiçbir katkı üretmez; zayıf bir sınama, başka hiçbir aracın
göremediği tek alana baktığında yeri doldurulamaz olur. Ad çözümleme ikinci türdendir. Tanı
sırası kurulurken sorulacak soru "bu sınama kaç aday eler" değil, "bu sınama **başkasının
göremediği** kaç adayı ayırır" olmalıdır.

## Adın Çözülmesi Erişilebilirlik Değildir

Çözümleme başarılı olduğunda dönen şey bir adrestir ve adresin doğru olduğu bilgisi değildir.
Kayıt eski olabilir, hedef başka bir adrese taşınmış olabilir, yanıt bir önbellekten geliyor
olabilir. Önbellek burada ikili bir rol oynar. Olumlu yanıt, kayda yazılmış yaşam süresi
boyunca saklanır ve o süre dolana kadar değişiklik görülmez; olumsuz yanıt da saklanabilir ve
düzeltilmiş bir kayıt beklenenden geç görünür. İki durumda da sınamanın gördüğü şey ağın
şimdiki durumu değil, **geçmişte bir anın** durumudur.

Bir ad birden çok adrese de çözülebilir ve dönen liste birden çok adres ailesi taşıyabilir.
Bu durumda hangi adrese bağlanılacağını seçen, çözücü değil bağlantıyı kuran taraftır ve
seçim sırası sistemin yapılandırmasına bağlıdır. Ortaya çıkan arıza kalıbı tanıda yanıltıcıdır:
ad doğru çözülür, listedeki ilk adrese giden yol bozuktur, ikinci adrese giden yol çalışır ve
sonuç denemeden denemeye değişir. Aynı komut arka arkaya iki kez çalıştırıldığında iki farklı
sonuç veriyorsa, ilk bakılacak yer çözümlemenin döndürdüğü **liste**dir; tek satırlık bir yanıt
gösteren araç bu listeyi gizler.

- **AY21** — Ortak tanımda önbellek yoktur; çözücü ya yanıt verir ya vermez. Yaşam süresi
  ve olumsuz önbellek modelin dışındadır ve buradaki uyarı ölçümün değil, okumanın parçasıdır.
- **AY22** — Ad çözümleme sınaması, sonucu adresle yapılan sınamalardan bağımsız kabul edilir;
  çözücüye giden yolun kendisinin bozulduğu birleşik durum tek arıza varsayımı gereği
  dışarıdadır.

Buradan çıkan çalışma alışkanlığı tek cümledir: **önce adresle, sonra adla sınanır.** Adresle
yapılan bir deneme başarılı, adla yapılan aynı deneme başarısızsa arıza çözümlemededir ve
başka hiçbir sınamaya gerek yoktur. İkisi de başarısızsa çözümleme aday olmaktan çıkar ve
sorun aşağıdaki katmanlardadır. Sıra tersine çevrildiğinde — önce adla denenip başarısızlık
görüldüğünde — elde edilen yanıt iki adayı birden kapsar ve ayrım için ikinci bir sınama
gerekir. Aynı iki komut, farklı sırayla, farklı sayıda aday eliyor.

## Aday Kümesi Süpürmesi

Üçüncü tablo aday listesini yine iki yönde sarsıyor ve bu derste sonuçlardan biri kursun en
keskinidir.

- **AY23** — Eklenen aday `cozumleyici-yanlis-kayit`, çözücünün yanıt verdiği ama yanlış
  adres döndürdüğü durumdur. Modelde bu, çözümlemenin beklenen sonucu vermemesi olarak temsil
  edilir ve `cozumleyici-sessiz` ile aynı yanıtı üretir.
- **AY24** — Çıkarılan aday `cozumleyici-sessiz`, sınamanın olumsuz yanıtını tek başına dolduran
  adaydır.

Aday eklendiğinde `cozuldu` yanıtının elediği aday birden **ikiye** çıkıyor; sınama iki katı iş
görüyor ve bunu kendi tanımında hiçbir şey değişmeden yapıyor. `cozulemedi` yanıtı ise yine
yedi aday eliyor ama artık geriye bir değil **iki** aday bırakıyor: sessiz çözücü ile
yanlış yanıt veren çözücü bu sınamayla ayrılamaz. Ayrımı yapan şey yanıtın **içeriğine**
bakmaktır, varlığına değil.

Aday çıkarıldığında sonuç daha sert. Yedi adaylık listede sınamanın verebileceği yanıt
sayısı **bire** düşüyor ve elenen aday **sıfır** oluyor. Sınama hâlâ çalışıyor, hâlâ bir yanıt
üretiyor, hâlâ zaman harcıyor — ve hiçbir aday elemiyor. Bu, kursun kuralının en açık
gösterimidir: **bir sınamanın ürettiği çıktı ile taşıdığı bilgi ayrı şeylerdir.** Aday
listesinde karşılığı bulunmayan bir sınama, çıktısı ne kadar zengin olursa olsun ölçülmemiş
değil, **değersizdir**. Bunun tanıdaki karşılığı, alışkanlıkla yapılan sınamaların düzenli
olarak gözden geçirilmesidir: bir sınama listeye hangi adayı ayırmak için girdiyse, o aday
listeden düştüğünde sınama da düşmelidir.

## Özet

- Ad çözümleme tek bir yerde yapılmaz: sorgu ad hizmeti sırasından geçer, yerel konak dosyası
  ve önbellek ağa çıkmadan yanıt üretebilir; doğrudan çözücüye soran araçlar bu sırayı
  atlar ve sistemin gerçekte kullandığı yolu sınamaz.
- Ad çözümleme sınaması **iki yanıt** verir ve aralarındaki fark kursun en büyüğüdür:
  `cozuldu` yalnız **bir** aday eler ve geriye **yedi aday** bırakır, `cozulemedi` **yedi**
  aday eler ve tanıyı bitirir.
- Sınamanın beklenen yanıttaki katkısı bir karıştırıcı değişkeni kaldırmaktır: önceki üç sınamanın
  ayıramadığı altı adaydan tam **birini** ayırır ve ayrılamayan aday sayısını altıdan beşe
  indirir. O adayı başka hiçbir sınama ayıramaz.
- Adın çözülmesi hedefin erişilebilir olması demek değildir; önbellek ve yaşam süresi
  nedeniyle dönen yanıt geçmişte bir anın durumu olabilir. Çalışma kuralı önce adresle, sonra
  adla sınamaktır.
- Süpürme iki sonuç veriyor: yanlış yanıt veren çözücü eklendiğinde `cozuldu` yanıtı iki
  aday elemeye başlıyor; `cozumleyici-sessiz` çıkarıldığında sınamanın yanıt sayısı bire ve
  elediği aday **sıfıra** düşüyor. Aday listesinde karşılığı olmayan sınama değersizdir.

## Sonraki Adım

Ad çözümleme de doğrulandığında geriye üç aday kalıyor: servis dinlemiyor olabilir, güvenlik
duvarı paketi düşürüyor olabilir ya da büyük paket yolda kayboluyor olabilir. Üçü de sunucunun
kendi üzerinde bakılabilecek bir yer bırakıyor gibi görünür — dinleyen soketlernın
listesi. Bir sonraki ders bu listeyi çıkarır ve iki sayıyı yan yana koyar: yerel envanter
sekiz adaydan **bir** tanesini eler, dışarıdan yapılan tek bir bağlantı denemesi **yedi**
tanesini. Aynı arıza, aynı an, iki sınama arasında yedi katı fark. O dersin sorusu bu farkın
nereden geldiğidir: dinleyen listesi tek bir alanı görürken bağlantı denemesi dört ayrı sonucu
birbirinden ayırır.
