---
title: 'Gecikme ve Verim'
source: 'https://academia.sh/tr/kurslar/ag-modelleri/gecikme-ve-verim'
course: 'Ağ Modelleri ve Protokoller'
language: tr
updated: '2026-08-17T18:07:12+00:00'
license: 'CC BY-SA 4.0'
---

# Gecikme ve Verim

Gecikmenin dört bileşeni, bant genişliği–gecikme çarpımı, pencere boyutlandırma ve bir aktarım süresinin bileşenlerine ayrılması.

Önceki iki ders taşıma protokollerinin verimi nasıl sınırladığını gösterdi: pencere, kayıp
oranı, tıkanıklık davranışı. Bu sınırların altında daha temel bir katman vardır — bir bitin
tel üzerine konması zaman alır ve sinyal sonlu hızda ilerler.

Bu dersin sorusu, "bağlantım 100 Mb/s" cümlesinin bir aktarımın süresi hakkında ne
söylediği ve ne söylemediğidir. Yanıt çoğu durumda beklenenden farklıdır: süreyi belirleyen
çoğunlukla bant genişliği değildir.

## Gecikmenin Dört Bileşeni

Bir paketin bir bağlantıyı geçmesi dört bileşenden oluşur.

**İletim süresi (transmission delay)**, paketin tüm bitlerinin tel üzerine konması için
geçen süredir. Paket boyu ile bağlantı hızının oranıdır:

$$
d_{\text{iletim}} = \frac{L}{R}
$$

```python
for hiz in (10e6, 100e6, 1e9, 10e9):
    print(f"{hiz/1e6:8.0f} Mb/s -> {1500*8/hiz*1e6:8.2f} us")
```

```
      10 Mb/s ->  1200.00 us
     100 Mb/s ->   120.00 us
    1000 Mb/s ->    12.00 us
   10000 Mb/s ->     1.20 us
```

**Yayılım süresi (propagation delay)**, sinyalin mesafeyi kat etmesi için geçen süredir.
Mesafe ile ortamdaki yayılım hızının oranıdır ve paket boyundan **bağımsızdır**. Fiber
içinde hız yaklaşık $2 \times 10^8$ m/s'dir.

```python
for km in (1, 100, 1000, 10000):
    print(f"{km:6d} km -> {km*1000/2e8*1000:8.3f} ms")
```

```
     1 km ->    0.005 ms
   100 km ->    0.500 ms
  1000 km ->    5.000 ms
 10000 km ->   50.000 ms
```

**Kuyruk gecikmesi (queuing delay)**, paketin yönlendiricide sırasını beklemesidir. Tek
değişken bileşendir: yük arttıkça büyür ve kapasiteye yaklaşıldığında hızla artar. Arabellek
şişkinliğinin gecikme üzerindeki etkisi bu bileşende görülür.

**İşleme gecikmesi (processing delay)**, başlığın okunması ve yönlendirme kararının
verilmesi için geçen süredir; diğerlerinin yanında küçük kalır.

İki bileşenin ölçek farkı belirleyicidir. 1 Gb/s'lik bir bağlantıda 1500 baytlık bir paketin
iletimi 12 mikrosaniye sürerken, aynı paketin bin kilometre gitmesi 5 milisaniye sürer —
dört yüz katı. **Uzun mesafede süreyi belirleyen bant genişliği değil, ışığın hızıdır.**
Bant genişliğini artırmak iletim süresini kısaltır; yayılım süresine dokunamaz.

## Gidiş–Dönüş Süresi

**Gidiş–dönüş süresi (round-trip time, RTT)**, bir paketin hedefe gidip yanıtın dönmesi
için geçen toplam süredir. İki yöndeki tüm bileşenlerin toplamıdır.

Ölçülen değer, iki uç arasındaki coğrafi mesafenin altına inemez. Bin kilometrelik bir yol,
gidiş–dönüşte en az 10 ms yayılım süresi gerektirir; ara yönlendiriciler ve kuyruklar bunu
artırır. Bir ölçümde bu alt sınırın altına düşen değer, hedefin sanılan yerde olmadığını
gösterir.

RTT, taşıma katmanının her düzeneğinin ölçü birimidir: el sıkışma bir RTT, pencere
güncellemesi bir RTT, tıkanıklık penceresinin her artışı bir RTT alır.

## Bant Genişliği–Gecikme Çarpımı

**Bant genişliği–gecikme çarpımı (bandwidth-delay product, BDP)**, yol üzerinde aynı anda
"uçuşta" olabilecek veri miktarıdır:

$$
\text{BDP} = R \times \text{RTT}
$$

Ölçü, yolun bir boru gibi düşünülmesinden gelir: bant genişliği borunun kesiti, gidiş–dönüş
süresi uzunluğudur; çarpım borunun hacmidir.

```python
for mbps, rtt in ((100, 0.040), (100, 0.100), (1000, 0.040), (1000, 0.100)):
    bdp = mbps*1e6*rtt/8
    print(f"{mbps:5d} Mb/s x {rtt*1000:5.0f} ms = {bdp:12.0f} bayt = "
          f"{bdp/1024:9.2f} KiB = {bdp/1460:8.1f} MSS")
```

```
  100 Mb/s x    40 ms =       500000 bayt =    488.28 KiB =    342.5 MSS
  100 Mb/s x   100 ms =      1250000 bayt =   1220.70 KiB =    856.2 MSS
 1000 Mb/s x    40 ms =      5000000 bayt =   4882.81 KiB =   3424.7 MSS
 1000 Mb/s x   100 ms =     12500000 bayt =  12207.03 KiB =   8561.6 MSS
```

BDP'nin doğrudan bir sonucu vardır: **pencere BDP'den küçükse bağlantı boş kalır.** Gönderen
pencereyi doldurur, onay bekler, bu süre boyunca hiçbir şey göndermez. Verim, TCP dersinde
kurulan bağıntıyla sınırlanır.

Gereken pencere boyutu ve pencere ölçeği doğrudan hesaplanır:

| Hedef verim | RTT | Gereken pencere | Gereken ölçek |
|---|---|---|---|
| 100 Mb/s | 40 ms | 488,3 KiB | 3 |
| 500 Mb/s | 100 ms | 6103,5 KiB | 7 |

Ölçeksiz en büyük pencere 65 535 bayttır; her iki satır da onu aşar. Yüksek kapasiteli
yollarda pencere ölçeği seçeneği bir eniyileme değil, zorunluluktur.

## Bir Aktarımın Bileşenleri

Örnek ağdaki istemcinin `198.51.100.20` adresinden 2 MiB'lik bir kaynak aldığını
varsayalım. Dış bağlantı 100 Mb/s, sunucuya gidiş–dönüş süresi 40 ms, MSS 1460 bayt,
başlangıç tıkanıklık penceresi 10 MSS.

```python
MSS = 1460
BOYUT = 2 * 1024 * 1024
HIZ = 100e6
RTT = 0.040
bdp_mss = HIZ * RTT / 8 / MSS

cwnd = 10
gonderilen = 0
tur = 0
while gonderilen < BOYUT and cwnd < bdp_mss:
    tur += 1
    bu_tur = cwnd * MSS
    gonderilen += bu_tur
    print(f"tur {tur}: cwnd={cwnd:4d} MSS, bu turda {bu_tur:7d} bayt, "
          f"toplam {gonderilen:8d} bayt")
    cwnd *= 2

kalan = BOYUT - gonderilen
toplam = RTT + tur * RTT + kalan * 8 / HIZ
print(f"el sıkışma {RTT*1000:.0f} ms + yavaş başlangıç {tur*RTT*1000:.0f} ms + "
      f"kalan {kalan*8/HIZ*1000:.1f} ms = {toplam*1000:.0f} ms")
print(f"salt iletim süresi olsaydı: {BOYUT*8/HIZ*1000:.0f} ms")
print(f"gerçekleşen ortalama verim: {BOYUT*8/toplam/1e6:.1f} Mb/s")
```

```
tur 1: cwnd=  10 MSS, bu turda   14600 bayt, toplam    14600 bayt
tur 2: cwnd=  20 MSS, bu turda   29200 bayt, toplam    43800 bayt
tur 3: cwnd=  40 MSS, bu turda   58400 bayt, toplam   102200 bayt
tur 4: cwnd=  80 MSS, bu turda  116800 bayt, toplam   219000 bayt
tur 5: cwnd= 160 MSS, bu turda  233600 bayt, toplam   452600 bayt
tur 6: cwnd= 320 MSS, bu turda  467200 bayt, toplam   919800 bayt
el sıkışma 40 ms + yavaş başlangıç 240 ms + kalan 94.2 ms = 374 ms
salt iletim süresi olsaydı: 168 ms
gerçekleşen ortalama verim: 44.8 Mb/s
```

Sonuç okunmaya değer. Salt iletim 168 ms sürerdi; gerçekleşen süre 374 ms'dir. Aradaki
farkın tamamı gecikme kaynaklıdır: bir tur el sıkışma, altı tur pencere büyütme. Ortalama
verim, bağlantı kapasitesinin yarısının altında kalmıştır.

Bu bir model hesabıdır; kayıp, ad çözümleme ve güvenli taşıma el sıkışması hesaba
katılmamıştır. Her biri en az bir tur daha ekler. Modelin gösterdiği şey mutlak süre değil,
**bileşenlerin oranıdır**.

## Küçük Aktarımlarda Belirleyici Olan

Aktarım küçüldükçe gecikmenin payı büyür.

```python
HIZ = 100e6            # önceki örnekle aynı bağlantı
RTT = 0.040

kucuk = 20 * 1024
print(f"salt iletim: {kucuk*8/HIZ*1000:.2f} ms; "
      f"el sıkışma+ilk yanıt: {2*RTT*1000:.0f} ms")
print(f"gecikmenin payı: {2*RTT/(2*RTT + kucuk*8/HIZ)*100:.1f} %")
```

```
salt iletim: 1.64 ms; el sıkışma+ilk yanıt: 80 ms
gecikmenin payı: 98.0 %
```

20 KiB'lik bir kaynak için sürenin %98'i beklemeyle geçer. Bant genişliğini ikiye katlamak
1,64 ms'yi 0,82 ms'ye indirir ve toplamda fark edilmez; gidiş–dönüş süresini yarıya indirmek
ise toplam süreyi neredeyse yarıya indirir.

Bu asimetri, birçok tasarım kararının gerekçesidir: içeriği kullanıcıya coğrafi olarak
yakın tutmak, tur sayısını azaltmak, bağlantıları yeniden kullanmak. Hepsi gecikmeye
yöneliktir, bant genişliğine değil.

## Verim ile Bant Genişliği Aynı Şey Değildir

Üç terim ayrılmalıdır.

| Terim | Tanımı | Ölçülür mü |
|---|---|---|
| Bant genişliği | Bağlantının kuramsal üst sınırı | Genellikle bildirilir |
| Verim (throughput) | Belirli bir akışta gerçekleşen hız | Ölçülür |
| İyi verim (goodput) | Uygulamaya ulaşan yararlı veri hızı | Başlık ve yeniden iletim düşülür |

Üçü arasındaki fark, bu kurs boyunca kurulan her düzenekten pay alır: başlık yükü, yeniden
iletim, pencere sınırı, tıkanıklık davranışı, parçalama.

Bir aktarımın yavaş olduğu söylendiğinde sorulacak sorular sırayla şunlardır. Darboğaz alma
penceresi mi, tıkanıklık penceresi mi? Kayıp oranı nedir? Gidiş–dönüş süresi beklenenin
üstünde mi? Yol MTU keşfi çalışıyor mu? Her sorunun yanıtı, bu kursun bir dersinde
kurulmuştur.

## Özet

- Gecikme dört bileşenden oluşur: iletim, yayılım, kuyruk ve işleme. Yalnızca iletim süresi
  bant genişliğine bağlıdır.
- Uzun mesafede süreyi yayılım belirler: 1 Gb/s'de 1500 baytlık paketin iletimi 12 µs,
  bin kilometrelik yayılımı 5 ms sürer.
- Bant genişliği–gecikme çarpımı, yolda aynı anda uçuşta olabilecek veri miktarıdır; pencere
  bundan küçükse bağlantı boş kalır.
- 100 Mb/s ve 40 ms için BDP 488 KiB'dir; ölçeksiz en büyük pencere 64 KiB olduğundan
  pencere ölçeği zorunludur.
- 2 MiB'lik bir aktarımda salt iletim 168 ms, el sıkışma ve yavaş başlangıçla birlikte
  374 ms sürer; ortalama verim kapasitenin yarısının altında kalır.
- Küçük aktarımlarda sürenin neredeyse tamamı beklemedir; bant genişliğini artırmak fark
  yaratmaz, gidiş–dönüş süresini kısaltmak yaratır.

## Kurs Kapanışı

Bu kurs tek bir örnek üzerinden yürüdü: `192.168.10.0/24` bloğuna sahip bir kurumun ağı ve o
ağdaki `192.168.10.196` adresli istemcinin dış dünyaya gönderdiği bir paket.

Katmanlı modeller, paketin hangi sorunları hangi sırayla çözdüğünü tanımladı ve bir arızayı
doğru katmana yerleştirmenin yolunu verdi. Kapsülleme, verinin katman katman sarmalanmasını
ve bu sarmalamanın maliyetini gösterdi.

Bağlantı ve ağ katmanı konusu adres planını kurdu. Eşit bölmenin 640 adres istediği yerde
değişken uzunluklu bölme aynı işi 244 adresle yaptı; plan, kiralama havuzlarına ve dış
çıkış için çevrim tablosuna dönüştü. Aynı ağ IPv6 ile yeniden adreslendiğinde adres sayımı
hiç yapılmadı — kıtlığın ortadan kalkması, planlama işini de değiştirmişti.

Taşıma katmanı konusu, bu paketin bir akışın parçası olduğunu gösterdi. Dörtlü akışı
adlandırdı; TCP güvenilirlik sözünü sıra numaraları, yeniden iletim ve pencerelerle tuttu;
tıkanıklık denetimi görünmeyen bir kapasiteyi ölçüm ve uyumla tahmin etti; UDP bu sözlerin
hangi durumlarda gereksiz olduğunu gösterdi. Son ders, tüm bu düzeneklerin altındaki fiziksel
sınırları ayırdı.

Kursun kazanımları buluşur: bir sorunu doğru katmana yerleştirmek, bir adres planı tasarlayıp
sınamak ve bir uygulamanın gereksinimine göre taşıma protokolü seçmek. Üçü de aynı alışkanlığa
dayanır — bir davranışı, onu üreten düzeneğe kadar izlemek.

Bir sonraki kurs olan Uygulama Katmanı Protokolleri, buradaki taşıma soyutlamasının üstünde
çalışan protokolleri ele alır: HTTP sürümlerinin tasarım farkları ve bunların sıra başı
engellemesiyle ilişkisi, güvenli taşıma el sıkışmasının ek turları ve sertifika zincirinin
doğrulanması, gerçek zamanlı iletişim için protokol seçimi. Bu kursta hesaplanan gecikme
bütçesi, oradaki her tasarım kararının ölçütü olacaktır.
