---
title: 'Adres Çözümleme Saldırıları'
source: 'https://academia.sh/tr/kurslar/ag-guvenligi/adres-cozumleme-saldirilari'
course: 'Ağ Güvenliği'
language: tr
updated: '2026-08-17T18:08:39+00:00'
license: 'CC BY-SA 4.0'
---

# Adres Çözümleme Saldırıları

Adres çözümleme önbelleğinin doğrulanmayan yanıtla bozulmasının ölçülmesi: 26 yanıtlık kümede 18 kaydın 6'sının bozulması, sabit kaydın 4'ünü kurtarıp 2'sini bırakması, tutarlılık denetiminin 5'ini kurtarıp en değerli kaydı bırakması, yalnız istenen yanıtı kabul etmenin altısını da kurtarıp 3 meşru duyuruyu kesmesi ve üç savunmanın birlikte 4 meşru yanıt reddedip 2 kaydı hiç oluşturmaması.

Önceki ders bir servise erişilebildiğini varsaydı: envanterdeki her satır, bir bölgeden bir
konağa paketin ulaşabildiğini kabul ederek yazıldı. Oysa aynı bölütteki iki makinenin birbirine
ulaşması bile bir iddiaya dayanır. Bir uç hedefin ağ adresini bilir, ama çerçeveyi hangi
donanım adresine göndereceğini bilmez. Bunu sorar ve gelen yanıtı önbelleğine yazar.

Yazma kuralı bu dersin çıkış noktasıdır. Önbellek gelen yanıtın doğru olup olmadığını sınamaz;
yanıtın istenmiş olup olmadığını bile sormaz. Bu kabulün yanlış bir eşleme üretmesine **adres
çözümleme zehirlenmesi (ARP poisoning)**, gönderenin kendini başka bir adresin sahibi olarak
sunmasına **adres çözümleme sahteciliği (ARP spoofing)** denir. Birinci dersteki on sekiz
iddiadan üçü bağlantı katmanındaydı ve üçü de bu tek kurala bağlıdır. Bu ders o kuralı bir veri
yapısı üzerinde koşturur ve doğrulanmayan bir yanıtın kaç kaydı bozduğunu sayar.

## Önbellek Neyi Sınayabilir

**PG7:** adres çözümleme önbelleğinin kabul kuralı "son yanıt kazanır"dır; yanıtın istenmiş
olması ve doğru olması kurala girmez. **PG8:** bir kaydın bozulması, o ağ adresinin gerçekte
ait olmadığı bir donanım adresine bağlanmasıdır; bozulan her kayıt o adrese giden bütün
çerçeveleri yönlendirir. **PG9:** bir savunma yanıtı yalnız önbelleğin kendi verisinden
sınayabilir; yanıtın doğru olup olmadığını bilmez.

PG9 bu dersin sınırıdır ve üç savunmanın üçünü birden belirler. Önbellekte "doğru eşleme" diye
bir kaynak yoktur; sınanabilecek tek şey, gelen yanıtın önbellekteki verilerle **tutarlı** olup
olmadığıdır. Protokol mekaniği — istek ve yanıtın taşınması, önbellek yaşam süresi, vekil ve
istenmeden gönderilen kullanım biçimleri — **Ağ Modelleri ve Protokoller** kursunda ölçüldü;
burada tekrarlanmaz.

Aşağıdaki yanıt kümesi bir **modeldir**: kurgu bölgesel ölçüm ağının bir bölütünde önbelleğe
ulaşan yanıtlar veri olarak yazılır, gerçek bir ağ ya da gerçek bir donanım adresi yoktur.
Kümede hiçbir sahte yanıt üretim adımı yer almaz; yalnız önbelleğin kabul kuralı ve denetimi
koşar. Böyle bir yanıt kümesinin gerçek bir ağa gönderilmesi **yazılı yetki ve tanımlı kapsam
olmadan hem yasadışı hem meslek dışıdır**.

```js
// aglar/cozumleme.mjs — kurgu bolgesel olcum agindaki bir bolutun adres cozumleme
// onbellegi (model): gercek bir ag, gercek bir donanim adresi yok. Donanim adresleri
// d01..d17 diye etiketlenmistir. Rastgelelik yok.

// PG7: adres cozumleme onbelleginin kabul kurali "son yanit kazanir"dir; yanitin
// istenmis olmasi ve dogru olmasi kurala girmez.
// PG8: bir kaydin bozulmasi, o ag adresinin gercekte ait olmadigi bir donanim adresine
// baglanmasidir; bozulan her kayit o adrese giden butun cerceveleri yonlendirir.
// Sutunlar: ag adresi, iddia eden donanim adresi, bekleyen bir istege yanit mi (e/h),
// iddia dogru mu (e/h). Son sutun yalnizca puanlama icindir; hicbir savunma onu gormez.
export const YANIT = `
  10.20.0.1   d01  e e     10.20.0.5   d02  e e     10.20.0.6   d03  e e
  10.20.0.7   d04  e e     10.20.0.8   d05  e e     10.20.0.9   d06  e e
  10.20.0.10  d07  e e     10.20.1.11  d08  e e     10.20.1.12  d09  e e
  10.20.1.13  d10  e e     10.20.2.21  d11  e e     10.20.2.22  d12  e e
  10.20.0.11  d13  e e     10.20.0.12  d14  e e     10.20.0.30  d17  e e
  10.20.0.31  d17  e e     10.20.0.2   d01  h e     10.20.0.32  d17  e e
  10.20.0.7   d15  h e     10.20.2.22  d16  h e     10.20.0.1   d09  h h
  10.20.0.5   d09  h h     10.20.0.6   d09  h h     10.20.0.8   d09  h h
  10.20.0.10  d09  h h     10.20.0.9   d09  h h`
  .trim().split(/\s+/).reduce((l, _, i, a) => (i % 4 ? l : [...l,
    { ag: a[i], don: a[i + 1], ist: a[i + 2] === "e", dog: a[i + 3] === "e" }]), []);

// PG9: bir savunma yaniti yalnizca onbellegin kendi verisinden sinayabilir; dogrulugu
// bilmez. Uc savunma da bu sinirla calisir.
export const SABIT = ["10.20.0.1", "10.20.0.5", "10.20.0.6", "10.20.0.7", "10.20.0.10"];
export const ESIK = 2;

// Onbellek, yanitlari sirayla isler; secilen savunmalar her yaniti kabul etmeden once sinar.
export function onbellek(savunma = []) {
  const tablo = new Map(), red = [];
  for (const y of YANIT) {
    if (savunma.includes("sabit") && SABIT.includes(y.ag) && tablo.has(y.ag)) {
      red.push(y); continue;
    }
    if (savunma.includes("istendi") && !y.ist) { red.push(y); continue; }
    if (savunma.includes("tutarlilik")) {
      const sonra = [...tablo].filter(([a, d]) => d === y.don && a !== y.ag).length + 1;
      if (sonra > ESIK) { red.push(y); continue; }
    }
    tablo.set(y.ag, y.don);
  }
  const bozuk = [...tablo].filter(([a, d]) =>
    !YANIT.some((y) => y.ag === a && y.don === d && y.dog));
  return { tablo, bozuk, redMesru: red.filter((y) => y.dog), redYanlis: red.filter((y) => !y.dog) };
}
```

```js
// aglar/onbellek-denetimi.mjs — dogrulanmayan yanit kac kaydi bozuyor, hangi savunma
// kacini kurtariyor, kaci kaliyor ve bedeli ne.
import { YANIT, SABIT, ESIK, onbellek } from "./cozumleme.mjs";

const yaz = (g, ...s) => console.log(s.map((v, i) =>
  (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join(""));
const taban = onbellek();

console.log(`${YANIT.length} yanit, ${taban.tablo.size} kayit; ` +
  `bozulan kayit ${taban.bozuk.length}, dogru olmayan yanit ` +
  `${YANIT.filter((y) => !y.dog).length}, istenmeden gelen yanit ` +
  `${YANIT.filter((y) => !y.ist).length}`);

const A = [-14, 10, 13, 9];
console.log("\n1. yanit kumesi: istenmis olmak ile dogru olmak ayri iki ozelliktir");
yaz(A, "yanit", "dogru", "dogru degil", "toplam");
for (const [ad, f] of [["istenmis", (y) => y.ist], ["istenmemis", (y) => !y.ist]]) {
  const l = YANIT.filter(f);
  yaz(A, ad, l.filter((y) => y.dog).length, l.filter((y) => !y.dog).length, l.length);
}

const B = [-10, 8, 15, 12];
console.log("\n2. belirti: bir donanim adresi kac ag adresi ustlendi");
yaz(B, "donanim", "iddia", "kabul edilen", "esik ustu");
const don = [...new Set(YANIT.map((y) => y.don))];
for (const d of don.filter((d) => YANIT.filter((y) => y.don === d).length > 1)) {
  const l = [...new Set(YANIT.filter((y) => y.don === d).map((y) => y.ag))];
  const k = [...taban.tablo].filter(([, v]) => v === d).length;
  yaz(B, d, l.length, k, l.length > ESIK ? "evet" : "hayir");
}

const C = [-28, 8, 8, 12, 11, 8, 8];
console.log("\n3. savunmalar: kurtarilan kayit ve bedeli");
yaz(C, "savunma", "kayit", "bozuk", "kurtarilan", "red mesru", "elle", "ek tur");
for (const s of [[], ["sabit"], ["tutarlilik"], ["istendi"], ["sabit", "tutarlilik"],
  ["sabit", "tutarlilik", "istendi"]]) {
  const r = onbellek(s);
  yaz(C, s.join(" + ") || "hicbiri", r.tablo.size, r.bozuk.length,
    taban.bozuk.length - r.bozuk.length, r.redMesru.length,
    s.includes("sabit") ? SABIT.length : 0, s.includes("istendi") ? r.tablo.size : 0);
}

const D = [-28, -34, -1];
console.log("\n4. hangi kayit bozuk kaliyor, hangi mesru yanit reddediliyor");
yaz(D, "savunma", "bozuk kalan kayit", "reddedilen mesru yanit");
for (const s of [["sabit"], ["tutarlilik"], ["istendi"], ["sabit", "tutarlilik"]]) {
  const r = onbellek(s);
  yaz(D, s.join(" + "), r.bozuk.map(([a]) => a).join(" ") || "yok",
    r.redMesru.map((y) => `${y.ag}=${y.don}`).join(" ") || "yok");
}
```

```
26 yanit, 18 kayit; bozulan kayit 6, dogru olmayan yanit 6, istenmeden gelen yanit 9

1. yanit kumesi: istenmis olmak ile dogru olmak ayri iki ozelliktir
yanit              dogru  dogru degil   toplam
istenmis              17            0       17
istenmemis             3            6        9

2. belirti: bir donanim adresi kac ag adresi ustlendi
donanim      iddia   kabul edilen   esik ustu
d01              2              1       hayir
d09              7              7        evet
d17              3              3        evet

3. savunmalar: kurtarilan kayit ve bedeli
savunma                        kayit   bozuk  kurtarilan  red mesru    elle  ek tur
hicbiri                           18       6           0          0       0       0
sabit                             18       2           4          1       5       0
tutarlilik                        17       1           5          1       0       0
istendi                           17       0           6          3       0      17
sabit + tutarlilik                17       1           5          2       5       0
sabit + tutarlilik + istendi      16       0           6          4       5      16

4. hangi kayit bozuk kaliyor, hangi mesru yanit reddediliyor
savunma                     bozuk kalan kayit                 reddedilen mesru yanit
sabit                       10.20.0.8 10.20.0.9               10.20.0.7=d15
tutarlilik                  10.20.0.1                         10.20.0.32=d17
istendi                     yok                               10.20.0.2=d01 10.20.0.7=d15 10.20.2.22=d16
sabit + tutarlilik          10.20.0.8                         10.20.0.32=d17 10.20.0.7=d15
```
Sayılar **ölçüm** sınıfındadır; girdileri PG7–PG9'dur.

## Altı Kayıt

Yirmi altı yanıt on sekiz kayıt üretir ve savunma yokken bu kayıtların **altısı** bozuktur.
Bozulma oranı üçte birdir, ama asıl belirleyici olan hangi kayıtların bozulduğudur: ağ geçidi,
toplayıcı, doğrulayıcı, ad sunucusu, dizin ucu ve ölçüm deposu. Altısı da bölütün dışına ya da
merkezî hizmetlere giden trafiği taşıyan adreslerdir; sahadaki terminaller ile yazıcının
kayıtları bozulmamıştır.

Bozulan kayıt sayısı ile etkilenen trafik aynı sayı değildir. Önceki dersin envanterinde
toplayıcı üzerindeki dört servis otuz günde 141.652, ad sunucusu üzerindeki iki servis 163.000
istek almıştı. Bu bölütteki bir uç, bozulan altı kaydın altısı için hedefine giden çerçeveleri
yanlış donanım adresine teslim eder; kayıt başına düşen etki, o adresin taşıdığı istek hacmi
kadardır. **Bozulan kayıt sayısı yüzeyi ölçer, taşınan istek hacmi ise etkiyi ölçer ve ikisi
aynı sırayı vermez.**

Birinci tablo iki özelliği ayırır. On yedi yanıtın hepsi bekleyen bir isteğe karşılıktır ve
hepsi doğrudur. Dokuz yanıt istenmeden gelmiştir; bunların **üçü doğru, altısı değildir**.
İstenmemiş olmak yanlış olmak anlamına gelmez: sanal geçit adresinin duyurulması, faturalama
adresinin yedeğe devri ve bir arayüz değişimi istenmeden duyurulur ve üçü de meşrudur. Bir
savunmanın istenmemiş yanıtları toptan reddetmesi, altı yanlış yanıtla birlikte bu üçünü de
keser.

İkinci tablo denetimin gördüğü **belirtiyi** verir. Birden fazla ağ adresi üstlenen üç donanım
adresi vardır: biri iki, biri üç, biri **yedi** ağ adresi iddia eder ve yedisinin yedisi de
kabul edilmiştir. Yedili satır, aynı bölütteki bir uçtan gelen ve kendi adresi dışında altı
adres daha üstlenen yanıtları toplar. İki ve üç adres üstlenen satırlar ise meşrudur: biri ağ
geçidinin sanal adresi, öteki üç konuk sistem çalıştıran bir konaktır. **Belirti bir sayıdır,
bir karar değildir**; eşiğin nereye konduğu doğru ile yanlışı birlikte keser.

## Üç Savunma, Üç Ayrı Boşluk

Üçüncü tablo üç savunmayı ayrı ayrı ve birlikte koşturur. Sabit kayıt beş adresi listeye alır
ve listedekiler için gelen sonraki yanıtları yok sayar: dört bozuk kaydı kurtarır, **ikisini
bırakır**. Bırakılanlar listede olmayan ad sunucusu ile dizin ucudur. Sabit kaydın koruması tam
olarak listenin uzunluğu kadardır ve listede olmayan hiçbir kaydı kurtarmaz.

Tutarlılık denetimi bir donanım adresinin en çok iki ağ adresi üstlenmesine izin verir ve altı
bozuk kaydın **beşini** kurtarır. Kurtaramadığı tek kayıt ağ geçididir. Nedeni sıradır: yedi
adres üstlenen donanım adresi kendi adresine ek olarak **önce** ağ geçidini iddia eder ve o
anda eşik henüz aşılmamıştır. Eşik ancak ikinci iddiada aşılır ve o noktadan sonrası
reddedilir. **Eşik tabanlı bir denetim, eşiğe kadar olan iddiaları kabul eder; kaçırdığı iddia
her zaman ilk iddiadır ve ilk iddia genellikle en değerli hedeftir.**

Yalnız istenen yanıtın kabul edilmesi altı bozuk kaydın altısını da kurtarır ve bozuk kayıt
sayısını sıfıra indirir. Üç savunma içinde tek eksiksiz olan budur, çünkü altı yanlış yanıtın
altısı da istenmeden gelmiştir. Bu eksiksizlik yanıt kümesinin bir özelliğidir, savunmanın
gücünün değil: bekleyen bir isteğe karşılık olarak gelen bir yanıt aynı denetimden geçerdi.

Üçüncü tablonun beşinci satırı bir savunma birleşiminin her zaman toplanmadığını gösterir.
Sabit kayıt ile tutarlılık denetimi birlikte açıldığında bozuk kayıt **bir** kalır — tutarlılık
denetiminin tek başına verdiği sayının aynısı. Buna karşılık reddedilen meşru yanıt bire değil
**ikiye** çıkar ve beş elle kalem de eklenir. Dördüncü tablo bozuk kalan kaydın **değiştiğini**
gösterir: tutarlılık tek başınayken ağ geçidi kaydı bozuk kalıyordu, birleşimde ad sunucusu
kaydı bozuk kalır. Sabit liste ilk üç iddiayı keser, dolayısıyla eşiği aşan ilk iddia artık
dördüncü sıradaki ad sunucusudur ve o kabul edilir. **Eşik tabanlı denetimin kaçırdığı kayıt,
önündeki savunma değiştiğinde yer değiştirir; kaçırılan kayıt sayısı sabit kalır.**

## Bedelin Üç Biçimi

Dördüncü tablo her savunmanın kestiği meşru yanıtı adıyla verir ve üç bedelin biçimi
birbirinden tümüyle farklıdır.

Sabit kaydın bedeli **elle yönetimdir**: beş kalem listede tutulur, her adres değişikliğinde
elle güncellenir ve listedeki bir adres meşru olarak yer değiştirdiğinde değişiklik reddedilir.
Tabloda tam olarak bu görülür: faturalama adresinin yedeğe devri kesilir. Beş kalem küçük bir
sayıdır, ama ağdaki her yeni kritik adres bu sayıyı büyütür ve unutulan bir kalem sessizce
korumasız kalır.

Tutarlılık denetiminin bedeli **yanlış yakalamadır**: üç konuk sistem çalıştıran konağın üçüncü
adresi reddedilir. Eşiği üçe çıkarmak bu meşru kaydı kurtarır, ama aynı hareketle yedi adres
üstlenen satırın ikinci iddiasını da kabul eder. Eşik hem doğruyu hem yanlışı aynı yönde
kaydırır.

Yalnız istenen yanıtı kabul etmenin bedeli **tur sayısı ve kesilen duyurudur**: on yedi kaydın
her biri için bir istek turu gerekir ve istenmeden gelen üç meşru duyurunun üçü de reddedilir.
Bir yedeğe devir duyurusunun kesilmesi, önbelleğin eski kaydı yaşam süresi dolana kadar tutması
demektir; devir anında trafiğin bir bölümü eski donanım adresine gitmeye devam eder.

Üçü birlikte açıldığında bozuk kayıt sıfırdır, ama reddedilen meşru yanıt sayısı dörde çıkar ve
kayıt sayısı on sekizden **on altıya** iner. Eksik iki kayıt, hiçbir zaman oluşmayan iki
eşlemedir: sanal geçit adresi ve üçüncü konuk sistemin adresi. O iki adrese giden trafik, kayıt
oluşana kadar hiç gitmez. **Bozuk kaydı sıfırlamanın bedeli yalnız reddedilen yanıt değil,
oluşmayan kayıttır.** Reddedilen bir yanıt denetimde bir kayıt bırakır ve aranabilir; oluşmayan
bir eşleme hiçbir iz bırakmaz ve yalnız o adrese ulaşılamadığı görüldüğünde fark edilir.

## Özet

- Adres çözümleme önbelleğinin kabul kuralı "son yanıt kazanır"dır; 26 yanıtlık kümede 18
  kaydın **6'sı** bozulur ve altısı da bölüt dışına giden trafiği taşıyan adreslerdir.
- İstenmiş olmak ile doğru olmak ayrı özelliklerdir: 17 istenmiş yanıtın 17'si doğrudur, 9
  istenmemiş yanıtın 3'ü doğru 6'sı değildir.
- Sabit kayıt listedeki 5 adres için 4 kaydı kurtarır ve listede olmayan 2'sini bırakır;
  tutarlılık denetimi 5 kaydı kurtarır ve sırası ilk olan ağ geçidi kaydını kaçırır.
- Yalnız istenen yanıtın kabul edilmesi 6 kaydın 6'sını kurtarır, ama istenmeden gelen 3 meşru
  duyuruyu keser ve 17 kayıt için ek istek turu getirir.
- Üç savunma birlikte bozuk kaydı sıfırlar; bedeli 4 reddedilen meşru yanıt, 5 elle kalem, 16
  ek tur ve hiç oluşmayan 2 kayıttır.

## Sonraki Adım

Bu ders bir bölütün içinde kaldı: sorulan soru "şu ağ adresi hangi donanım adresine ait" idi ve
yanıt aynı bölütten geldi. Bölütün dışına çıkan her istek ise daha önce bir başka soru sorar —
bir adın hangi adrese karşılık geldiği. Bu sorunun yanıtı da bir önbelleğe yazılır, ama bu kez
önbellek yerel bir bölütte değil, ağın her katmanında bulunur ve tek bir yanlış kayıt tek bir
makineyi değil, o kaydı okuyan bütün istemcileri yönlendirir. Sonraki ders ad çözümleme
önbelleğini aynı biçimde kurar ve sayar: doğrulanmayan bir yanıt kaç kaydı ve kaç bağımlı
servisi bozuyor, imzalı doğrulama kaçını kurtarıyor, imzalanmamış bölge kaç kalemi dışarıda
bırakıyor.
