---
title: 'Hizmet Engelleme Saldırıları'
source: 'https://academia.sh/tr/kurslar/ag-guvenligi/hizmet-engelleme-saldirilari'
course: 'Ağ Güvenliği'
language: tr
updated: '2026-08-17T18:08:39+00:00'
license: 'CC BY-SA 4.0'
---

# Hizmet Engelleme Saldırıları

Hizmet engellemenin kapasite aritmetiğiyle ölçülmesi: aynı 4.000 istek/sn'lik yükün dört farklı kaynak dağılımında aynı sonucu vermesi, 4.096 yuvalık durum tablosunun 1,02 saniyede dolması, kaynak başına hız sınırının tek kaynakta yükü 5'e indirip 4.000 kaynakta hiçbir şey değiştirmemesi, el sıkışma kanıtının yuva tükenmesini bitirip istek hızını hiç düşürmemesi ve yük boşaltmanın meşru trafiği %22'ye indirmesi.

Şimdiye kadarki dört ders bir iddianın **yanlış** kabul edilmesini ölçtü: bozulan kayıt, yanlış
adres, yanlış kaynak. Bütün bu ölçümlerde hedef servis ayaktaydı ve isteklere yanıt veriyordu.
Oysa bir iddianın doğrulanmaması yalnız yanlış yanıt üretmez.

Bir bağlantı açma isteği kaynağını kanıtlamaz. Hedef, isteği tutmak için ayırdığı yeri kime
ayırdığını bilmez ve isteğin karşılığı hiç gelmeyebilir. Yer sınırlıdır; bittiğinde meşru istek
de dışarıda kalır. Bir hizmetin isteklere yanıt veremez hâle getirilmesine **hizmet engelleme
(denial of service)**, aynı yükün çok sayıda kaynağa dağıtılmasına **dağıtık hizmet engelleme
(distributed denial of service)** denir. Birinci derste ağ katmanında sayılan üç doğrulanamayan
iddia — kaynak adresi, parçalanmış bir bütünün parçası olma, denetim iletisinin ağdan geldiği —
bu dersin girdisidir. Bu ders bunları kapasite aritmetiğine çevirir.

## İki Ayrı Kaynak Tükenir

**PG16:** bir bağlantı açma isteği kaynağını kanıtlamaz; hedef, isteği tutmak için ayırdığı
yeri kime ayırdığını bilmez. **PG17:** hizmet engelleme iki ayrı kaynağı tüketir — saniyedeki
istek kapasitesi ve durum tablosundaki yuva — ve ikisi ayrı sayılır. **PG18:** bir savunma
kaynağı değil, yalnız isteğin biçimini ve hızını görür; aynı ölçüt meşru isteğe de uygulanır.

PG17 bu dersin ölçüyü tek bir sayıdan kurtaran maddesidir. "Servis çöktü" bir karar taşımaz;
karar taşıyan iki ayrı hesap vardır. Birincisi hız hesabıdır: gelen istek hızı kapasiteyi kaç
kat aşıyor. İkincisi yuva hesabıdır: tamamlanmayan her istek bir yuvayı belirli bir süre
tuttuğuna göre, tablo kaç saniyede doluyor. İki hesap ayrı savunmalara yanıt verir ve bir
savunmanın birini düşürüp ötekini hiç değiştirmemesi olağandır.

Aşağıdaki hesap bir **modeldir**: kurgu ölçüm ağındaki bir alım ucunun kapasitesi, yuva sayısı
ve meşru akışı veri olarak yazılır; gerçek bir hizmet ya da gerçek bir adres yoktur. Kod hiçbir
istek üretmez, yalnız savunma tarafının aritmetiğini koşturur. Bir hizmete kendi yönetimin
dışında yük bindirmek — ölçüm amaçlı olsa bile — **yazılı yetki ve tanımlı kapsam olmadan hem
yasadışı hem meslek dışıdır**.

```js
// aglar/kapasite.mjs — kurgu bolgesel olcum agindaki bir alim ucunun kapasite modeli:
// gercek bir hizmet, gercek bir adres ya da gercek bir olcum yok. Rastgelelik yok.
// Kod yalnizca savunma tarafinin aritmetigini kosturur; hicbir istek uretilmez.

// PG16: bir baglanti acma istegi kaynagini kanitlamaz; hedef, istegi tutmak icin ayirdigi
// yeri kime ayirdigini bilmez.
// PG17: hizmet engelleme iki ayri kaynagi tuketir: saniyedeki istek kapasitesi ve durum
// tablosundaki yuva. Ikisi ayri sayilir.
export const KAPASITE = 900;   // istek/sn
export const YUVA = 4096;      // durum tablosundaki yuva sayisi
export const TUTMA = 30;       // tamamlanmayan bir istegin yuvayi tuttugu sure (sn)
export const MESRU = { kaynak: 60, hiz: 2 };   // 60 kaynak, kaynak basina 2 istek/sn

// PG18: bir savunma kaynagi degil, yalnizca istegin bicimini ve hizini gorur; ayni olcut
// mesru istege de uygulanir.
export const PROFIL = [
  { ad: "tek kaynak", kaynak: 1, hiz: 4000 },
  { ad: "yirmi kaynak", kaynak: 20, hiz: 200 },
  { ad: "bes yuz kaynak", kaynak: 500, hiz: 8 },
  { ad: "dort bin kaynak", kaynak: 4000, hiz: 1 },
];

export const HIZ_SINIRI = 5;   // kaynak basina izin verilen istek/sn
export const SUZME_YUK = 0.90; // kaba oruntuyle elenen yuk orani
export const SUZME_MESRU = 0.15; // ayni oruntuye takilan mesru istek orani

// Bir profili ve mesru akisi verilen savunmalarla suzer; sonuc istek/sn cinsindendir.
export function olc(p, savunma = []) {
  let yuk = p.kaynak * p.hiz, mesru = MESRU.kaynak * MESRU.hiz;
  if (savunma.includes("hiz")) {
    yuk = p.kaynak * Math.min(p.hiz, HIZ_SINIRI);
    mesru = MESRU.kaynak * Math.min(MESRU.hiz, HIZ_SINIRI);
  }
  if (savunma.includes("suzme")) {
    yuk *= 1 - SUZME_YUK;
    mesru *= 1 - SUZME_MESRU;
  }
  // Tamamlanmayan istek yuva tutar; el sikisma kaniti acikken yuva ayrilmaz.
  const yarimAcik = savunma.includes("kanit") ? 0 : yuk;
  if (savunma.includes("bosaltma") && yuk + mesru > KAPASITE) {
    const oran = KAPASITE / (yuk + mesru);
    yuk *= oran; mesru *= oran;
  }
  const doluluk = Math.min(YUVA, yarimAcik * TUTMA);
  return {
    yuk, mesru, toplam: yuk + mesru,
    kat: (yuk + mesru) / KAPASITE,
    doluluk: (doluluk / YUVA) * 100,
    dolmaSn: yarimAcik * TUTMA > YUVA ? YUVA / yarimAcik : null,
    mesruPay: (mesru / (MESRU.kaynak * MESRU.hiz)) * 100,
  };
}
```

```js
// aglar/kapasite-denetimi.mjs — kac kaynaktan gelen istek esigi asiyor, durum tablosu kac
// saniyede doluyor, hangi savunma hangi orani dusuruyor ve mesru trafigin kaci dusuyor.
import { KAPASITE, YUVA, TUTMA, MESRU, PROFIL, HIZ_SINIRI, SUZME_YUK, SUZME_MESRU, olc }
  from "./kapasite.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 sn = (x) => (x === null ? "dolmaz" : x.toFixed(2));
const n = (x) => Math.round(x);

console.log(`kapasite ${KAPASITE} istek/sn, yuva ${YUVA}, tutma ${TUTMA} sn, ` +
  `mesru akis ${MESRU.kaynak} kaynak x ${MESRU.hiz} = ${MESRU.kaynak * MESRU.hiz} istek/sn; ` +
  `esik ${n(KAPASITE - MESRU.kaynak * MESRU.hiz)} istek/sn`);
console.log(`yuva esigi ${(YUVA / TUTMA).toFixed(1)} istek/sn: tamamlanmayan istek bu hizi ` +
  `asarsa tablo dolar; kapasiteye orani %${((YUVA / TUTMA / KAPASITE) * 100).toFixed(1)}. ` +
  `Hiz esigini ${HIZ_SINIRI} istek/sn tavani altinda asmak icin ` +
  `${Math.ceil((KAPASITE - MESRU.kaynak * MESRU.hiz) / HIZ_SINIRI)} kaynak yeter.`);

const A = [-18, 9, 8, 9, 9, 9, 10];
console.log("\n1. ayni toplam hiz, dort farkli kaynak dagilimi (savunma yok)");
yaz(A, "profil", "kaynak", "hiz/knk", "toplam", "kapasite", "yuva %", "dolma sn");
for (const p of PROFIL) {
  const r = olc(p);
  yaz(A, p.ad, p.kaynak, p.hiz, n(r.toplam), r.kat.toFixed(2) + "x",
    r.doluluk.toFixed(0), sn(r.dolmaSn));
}

const B = [-18, 10, 10, 10, 14];
console.log(`\n2. kaynak basina hiz siniri ${HIZ_SINIRI} istek/sn`);
yaz(B, "profil", "gecen yuk", "kapasite", "dolma sn", "mesru gecen");
for (const p of PROFIL) {
  const r = olc(p, ["hiz"]);
  yaz(B, p.ad, n(r.yuk), r.kat.toFixed(2) + "x", sn(r.dolmaSn),
    r.mesruPay.toFixed(0) + "%");
}

const C = [-26, 10, 10, 8, 10, 14];
console.log("\n3. en dagitik profilde savunmalar (4000 kaynak x 1 istek/sn)");
yaz(C, "savunma", "gecen yuk", "kapasite", "yuva %", "dolma sn", "mesru gecen");
const zor = PROFIL[3];
for (const s of [[], ["hiz"], ["kanit"], ["suzme"], ["bosaltma"],
  ["kanit", "suzme"], ["kanit", "suzme", "bosaltma"]]) {
  const r = olc(zor, s);
  yaz(C, s.join(" + ") || "hicbiri", n(r.yuk), r.kat.toFixed(2) + "x",
    r.doluluk.toFixed(0), sn(r.dolmaSn), r.mesruPay.toFixed(0) + "%");
}

const D = [-26, -40, 12];
console.log("\n4. savunmalarin mesru trafige bedeli");
yaz(D, "savunma", "bedel", "mesru gecen");
const bedel = [
  [["hiz"], `kaynak basina ${HIZ_SINIRI} istek/sn tavani`],
  [["kanit"], "her baglanti icin 1 ek tur"],
  [["suzme"], `oruntuye takilan mesru istegin %${SUZME_MESRU * 100}'i`],
  [["bosaltma"], "kapasite ustu istek oransal reddedilir"],
];
for (const [s, ad] of bedel)
  yaz(D, s.join(" + "), ad, olc(zor, s).mesruPay.toFixed(0) + "%");
console.log(`suzme oruntusu yukun %${SUZME_YUK * 100}'ini eler; ayni oruntu mesru ` +
  `istegin %${SUZME_MESRU * 100}'ini de eler`);
```

```
kapasite 900 istek/sn, yuva 4096, tutma 30 sn, mesru akis 60 kaynak x 2 = 120 istek/sn; esik 780 istek/sn
yuva esigi 136.5 istek/sn: tamamlanmayan istek bu hizi asarsa tablo dolar; kapasiteye orani %15.2. Hiz esigini 5 istek/sn tavani altinda asmak icin 156 kaynak yeter.

1. ayni toplam hiz, dort farkli kaynak dagilimi (savunma yok)
profil               kaynak hiz/knk   toplam kapasite   yuva %  dolma sn
tek kaynak                1    4000     4120    4.58x      100      1.02
yirmi kaynak             20     200     4120    4.58x      100      1.02
bes yuz kaynak          500       8     4120    4.58x      100      1.02
dort bin kaynak        4000       1     4120    4.58x      100      1.02

2. kaynak basina hiz siniri 5 istek/sn
profil             gecen yuk  kapasite  dolma sn   mesru gecen
tek kaynak                 5     0.14x    dolmaz          100%
yirmi kaynak             100     0.24x    dolmaz          100%
bes yuz kaynak          2500     2.91x      1.64          100%
dort bin kaynak         4000     4.58x      1.02          100%

3. en dagitik profilde savunmalar (4000 kaynak x 1 istek/sn)
savunma                    gecen yuk  kapasite  yuva %  dolma sn   mesru gecen
hicbiri                         4000     4.58x     100      1.02          100%
hiz                             4000     4.58x     100      1.02          100%
kanit                           4000     4.58x       0    dolmaz          100%
suzme                            400     0.56x     100     10.24           85%
bosaltma                         874     1.00x     100      1.02           22%
kanit + suzme                    400     0.56x       0    dolmaz           85%
kanit + suzme + bosaltma         400     0.56x       0    dolmaz           85%

4. savunmalarin mesru trafige bedeli
savunma                   bedel                                    mesru gecen
hiz                       kaynak basina 5 istek/sn tavani                 100%
kanit                     her baglanti icin 1 ek tur                      100%
suzme                     oruntuye takilan mesru istegin %15'i             85%
bosaltma                  kapasite ustu istek oransal reddedilir           22%
suzme oruntusu yukun %90'ini eler; ayni oruntu mesru istegin %15'ini de eler
```
Sayılar **ölçüm** sınıfındadır; girdileri PG16–PG18'dir.

## Dört Dağılım, Aynı Sonuç

Birinci tablo dört profili yan yana koyar ve dördü de aynı toplam hızı üretir: 4.000 istek/sn.
Bir kaynaktan 4.000, yirmi kaynaktan 200'er, beş yüz kaynaktan 8'er, dört bin kaynaktan 1'er.
Savunma yokken **dört satır da aynıdır**: 4.120 istek/sn, kapasitenin 4,58 katı, yuvaların
%100'ü dolu, dolma süresi 1,02 saniye.

Bu eşitlik dersin çıkış noktasıdır. Hedefin gördüğü şey kaynak sayısı değil, saniyedeki istek
sayısıdır; kaynak dağılımı hedefin hesabına hiç girmez. Yuva hesabı da aynı yerden çıkar: 4.000
tamamlanmayan istek saniyede geliyor ve her biri yuvayı otuz saniye tutuyorsa, 4.096 yuvalık
tablo **1,02 saniyede** dolar. Bir kaynaktan gelen dört bin istek ile dört bin kaynaktan gelen
birer istek arasında hedef için hiçbir fark yoktur.

Başlık satırındaki iki eşik, dört profilin neden aynı sonucu verdiğini de açıklar. Hız eşiği
780 istek/sn'dir: kapasiteden meşru akışın payı düşüldüğünde kalan. Yuva eşiği ise yalnız
**136,5 istek/sn**'dir — kapasitenin **%15,2'si**. Tamamlanmayan istek hızı bu sayıyı aştığı
anda tablo dolar, hız hesabı hâlâ rahatken. İki eşiğin arasındaki altı buçuk kat fark, iki
hesabın neden ayrı sayıldığının niceliksel karşılığıdır: bir hizmet, kapasitesinin altıda
birinde durum tablosunu kaybedebilir ve yük ölçüsüne bakan bir gözlem bunu göremez.

İkinci eşik hesabı savunma tarafının hazırlığını da doğrudan verir. Kaynak başına 5 istek/sn
tavanı konmuş bir hizmette hız eşiğini aşmak için **156 kaynak** yeterlidir ve bu kaynakların
hiçbiri tavanı aşmaz. Tavanı düşürmek gereken kaynak sayısını artırır, ama aynı hareketle meşru
uçların da tavanını düşürür.

Fark savunma açıldığında ortaya çıkar. İkinci tablo kaynak başına 5 istek/sn tavanı koyar ve
dört satır birbirinden tümüyle ayrılır. Tek kaynak profilinde geçen yük 4.000'den **5'e** iner
— %99,9 düşüş. Yirmi kaynakta 100'e iner. Beş yüz kaynakta 2.500'de kalır ve tablo 1,64
saniyede dolar. Dört bin kaynakta **hiçbir şey değişmez**: her kaynak zaten tavanın altındadır.

**Kaynak başına hız sınırının etkisi, kaynak başına düşen hızın tavana oranıdır; kaynak sayısı
tavana ulaştığında sınır tümüyle etkisiz hâle gelir.** Aynı savunmanın aynı toplam yüke karşı
etkisi %99,9 ile %0 arasında değişir ve bunu belirleyen tek şey saldıran tarafın kaynak
sayısıdır.

## Hızı Düşüren ve Yuvayı Kurtaran

Üçüncü tablo en dağıtık profilde dört savunmayı ayrı ayrı koşturur ve PG17'nin iki hesabını
birbirinden ayırır.

El sıkışma kanıtı — yer ayırmadan önce karşı tarafın erişilebilir olduğunu göstermesini istemek
— yuva doluluğunu %100'den **%0'a** indirir ve tablo hiç dolmaz. Geçen yük ise 4.000'de kalır
ve kapasitenin 4,58 katı olmayı sürdürür. Bu savunma yuva hesabını tümüyle çözer ve hız
hesabına hiç dokunmaz. Meşru trafiğin %100'ü geçer; bedeli her bağlantı için bir ek turdur.

Yukarı akış süzmesi tersini yapar. Kaba bir örüntüyle yükün %90'ını eler: geçen yük 4.000'den
**400'e**, kapasite oranı 4,58 katından **0,56 katına** iner. Yuva hesabı ise çözülmez; tablo
yine dolar, yalnız 1,02 saniye yerine 10,24 saniyede. Bedeli aynı örüntüye takılan meşru
isteklerdir: meşru trafiğin **%15'i** de elenir.

İki savunma birlikte açıldığında her iki hesap da çözülür: geçen yük 0,56 kat, yuva doluluğu
%0, meşru geçen %85. Bu, tablodaki en iyi satırdır ve iki savunmanın **farklı kaynakları**
koruduğu için toplandığını gösterir. Üçüncü dersteki aynı kaydı koruyan iki savunma
toplanmıyordu; burada biri yuvayı, öteki hızı düşürdüğü için toplanır.

## Yük Boşaltmanın Oranı

Dördüncü satır yük boşaltmayı ölçer: kapasitenin üstündeki isteği hiç kabul etmemek. Geçen
toplam tam olarak kapasiteye oturur — 1,00 kat — ve bu, tablodaki tek "hedef ayakta" satırıdır.
Bedeli son sütundadır: meşru trafiğin yalnız **%22'si** geçer.

Nedeni oranlamadır. Yük boşaltma isteğin kaynağını ayıramaz, yalnız toplamı keser; kapasite
4.120 isteklik bir akışa oranlandığında her kaynağa aynı pay düşer. Meşru akış toplamın
%2,9'unu oluşturduğu için kapasitenin de %2,9'unu alır. **Ayrım yapmadan kesen bir savunma,
meşru trafiği onun toplam içindeki payı oranında korur; payı küçükse koruma da küçüktür.**

Son satır bunu tamamlar: el sıkışma kanıtı ve süzme birlikte açıkken yük boşaltma **hiçbir şey
değiştirmez**, çünkü geçen toplam zaten kapasitenin altındadır. Yük boşaltma son çare olarak
kalır ve ancak öteki iki savunma yetmediğinde devreye girer. Bu tabloda savunmanın yetmediği
yer açıktır: dört savunmanın hiçbiri doğrulanmayan iddiayı doğrulanabilir kılmaz. Kaynak
adresinin iddiası hâlâ kanıtsızdır; ölçülen tek şey o kanıtsız iddianın kaç isteği ve kaç
yuvayı tüketmeye yettiğidir.

## Özet

- Hizmet engelleme iki ayrı kaynağı tüketir: 900 istek/sn'lik kapasite ve 4.096 yuvalık durum
  tablosu; 4.000 istek/sn'lik yük kapasiteyi 4,58 kat aşar ve tabloyu **1,02 saniyede**
  doldurur.
- Aynı toplam hız dört farklı kaynak dağılımında savunmasız hedefe **aynı** sonucu verir;
  kaynak sayısı hedefin hesabına girmez.
- Kaynak başına 5 istek/sn tavanı tek kaynakta yükü 4.000'den 5'e indirir, dört bin kaynakta
  hiçbir şey değiştirmez; etkisi kaynak başına hızın tavana oranıdır.
- El sıkışma kanıtı yuva doluluğunu %100'den %0'a indirir ve istek hızını hiç düşürmez; yukarı
  akış süzmesi hızı 0,56 kata indirir, yuvayı kurtarmaz ve meşru trafiğin %15'ini eler. İkisi
  birlikte her iki hesabı da çözer ve meşru trafiğin %85'ini geçirir.
- Yük boşaltma toplamı kapasiteye oturtur ama ayrım yapmadığı için meşru trafiği payı oranında
  korur: **%22**. Dört savunmanın hiçbiri kaynak adresi iddiasını doğrulanabilir kılmaz.

## Sonraki Adım

Bu ders bir iddianın kanıtsız olmasının **niceliğini** ölçtü: kaç istek, kaç yuva, kaç saniye.
Yük düştüğünde ya da savunma yeterli olduğunda hizmet ayakta kalır ve ölçüm biter. Oysa aynı
kanıtsız iddia, hiçbir kapasite tüketmeden ve hiçbir sayacı sapıtmadan da kullanılabilir. Bir
bağlantının iki ucu birbirini kanıtla tanımıyorsa, aralarındaki her adım kendini karşı taraf
olarak sunabilir ve bağlantı olağan hızında, olağan hacminde sürer. Sonraki ders bunu bir
**kanıt zinciri** eksikliği olarak ölçer: bir yolun kaç adımı var, kaç adımda kanıt zinciri
kopuyor, uç doğrulama kaçını bağlıyor ve zinciri kuranın kendisi doğrulanmadığında kaç adım
açık kalıyor.
