---
title: 'Sınır Ağ Geçidi Protokolü'
source: 'https://academia.sh/tr/kurslar/anahtarlama-ve-yonlendirme/sinir-ag-gecidi-protokolu'
course: 'Anahtarlama ve Yönlendirme'
language: tr
updated: '2026-08-17T18:07:19+00:00'
license: 'CC BY-SA 4.0'
---

# Sınır Ağ Geçidi Protokolü

Otonom sistem sınırında karar en kısa yola değil politikaya bakar: transit yasağı kırk paketin kırkını da hedefine ulaştırır ama toplam adımı 83'ten 92'ye çıkarır, sınır duyurusu kapandığında 14 paket kara deliğe düşer, tek bir düğümün yol sızıntısı ise adımı 83'e geri indirip 7 paketi sözleşme dışı yoldan geçirir.

Önceki iki ders iki yönlendirme ailesini yan yana koydu. Uzaklık vektörü komşusunun
uzaklık dizisini öğreniyordu, bağlantı durumu topolojinin kendisini taşıyordu; turları
farklıydı, ama ikisi de aynı şeyi arıyordu ve sonunda **aynı tabloya** varıyordu: her
hedefe giden **en kısa yolun** ilk adımı.

Bu dersin sorusu tam buradan başlar. Ya en kısa yol **istenmiyorsa**? Bir ağ, komşusunun
trafiğini taşımak zorunda değildir; taşıdığında bunun bir bedeli ve bir sözleşmesi vardır.
Sınır ağ geçidi protokolünün ölçüsü bu yüzden en kısa yol değil **izin verilen yoldur** ve
izin verilen yol çoğu zaman daha uzundur.

## Sınır Bir Karar Sınırıdır

Otonom sistem kavramı **İnternet Nasıl Çalışır** kursunda kuruldu; tanımı burada
tekrarlanmaz. Burada önemli olan şu ayrımdır: bir otonom sistemin **içinde** tablo bir
**ölçüye** göre kurulur — adım sayısı, bağ maliyeti, gecikme. Sınırın **ötesinde** ölçünün
yerini **sözleşme** alır.

Sınırdan geçen şey bir uzaklık değil bir **duyurudur**. Duyuru üç şey söyler: hangi hedefe
gidildiği, o hedefe hangi otonom sistemler üzerinden gidildiği, ve **bir sonraki düğümün**
kim olduğu. Komşu bu duyuruyu kabul edebilir, değiştirebilir ya da atabilir. Kabul ederse
kendi tablosuna bir satır yazar; atarsa o hedefe giden bir yolu hiç öğrenmemiş olur.

Ve duyuruyu **doğrulayan hiçbir şey yoktur**. Uygulama Katmanı Protokolleri kursu bunu
iletide yazan için söylemişti; sınırda aynı boşluk duyuru için geçerlidir. Komşu ne
bildirirse tablo onu yazar.

Duyurunun **yolu** taşıması iki işi birden görür. Birincisi politikadır: alan taraf yolun
ara konumuna bakarak duyuruyu kabul eder ya da atar; bu dersin ölçtüğü şey budur. İkincisi
döngü saptamasıdır ve kursun üçüncü iddiasıyla doğrudan ilgilidir. Kurs boyunca döngü
**en az iki tablonun anlaşmazlığı** olarak sayıldı; hiçbir cihaz tek başına bir paketi
döngüye sokamıyordu, çünkü hiçbir cihaz kendi tablosundan öteye bakamıyordu. Sınırda durum
değişir: duyuru yolun kendisini taşıdığı için bir otonom sistem, gelen duyurunun yolunda
**kendi adını** görebilir. Gördüğü an duyuruyu atar. Döngünün tek bir tabloya bakılarak
saptanabildiği yer burasıdır ve içeride karşılığı yoktur — uzaklık vektörü ailesinin
sonsuza sayma kusuru tam olarak bu bilginin eksikliğinden doğar.

## Kurgu: Üç Otonom Sistem

Kursun sekiz düğümlü ağı üç otonom sisteme bölünür. Bölünme fiziksel bağları değiştirmez;
yalnızca hangi bağın **sınır bağı** olduğunu belirler.

```text
# ogretilen dokum, calistirilmamistir

otonom sistem   düğümler    iç bağlar        sınır bağları
  kuzey         a b c d     a-b b-c c-d      d-e (orta), b-f (orta), h-a (güney)
  orta          e f         e-f              d-e (kuzey), b-f (kuzey), f-g (güney)
  güney         g h         g-h              f-g (orta), h-a (kuzey)

güney -> kuzey duyurusu           kuzey -> güney duyurusu
  hedef              g              hedef              c
  yol                güney          yol                kuzey
  bir sonraki düğüm  h              bir sonraki düğüm  a

orta -> kuzey duyurusu (güney'den öğrenilmiş, transit yasağıyla iletilmez)
  hedef              g
  yol                orta güney
  bir sonraki düğüm  f
```

Üçüncü duyuru dersin çekirdeğidir. Orta otonom sistemi güney'e giden bir yolu biliyor ve
kuzey'e duyurabilir. Duyurursa kuzey ile güney arasındaki trafiği **taşımayı** üstlenmiş
olur. Taşımayacaksa duyuruyu iletmez ve kuzey o yolu hiç öğrenmez.

## İzin Verilen Yol

Bir yolun otonom sistem dizisi, düğüm dizisinin otonom sistemlere çevrilip yinelemelerin
sıkıştırılmış hâlidir. `g-f-b-c` yolunun dizisi `güney orta kuzey`, `g-h-a-b-c` yolununki
`güney kuzey`'dir.

**Kural tek satırdır:** bir otonom sistem transit taşımayacağını bildirdiğinde, dizinin
**ara konumunda** onun bulunduğu her yol elenir. Baştaki ve sondaki otonom sistem ara
konumda sayılmaz — kendi trafiğini taşımak transit değildir.

Sonuç `g`'den `c`'ye giden pakette görünür. En kısa yol `g-f-b-c`, üç adımdır ve ortadan
geçer. Orta transit taşımıyorsa bu yol elenir; geriye kalan en kısa **izin verilen** yol
`g-h-a-b-c`, dört adımdır. **Yol bir adım uzadı, paket yine ulaştı.** Ölçülen şey budur.

Ölçümün varsayımları:

- **YL61** — Sekiz düğüm, dokuz bağ: yedisi `a–b–c–d–e–f–g–h–a` halkasını kurar, sekizincisi
  halkayı kesen `b–f` kirişidir. Topoloji kurs boyunca aynıdır.
- **YL62** — Düğümler üç otonom sisteme bölünür: kuzey `a b c d`, orta `e f`, güney `g h`.
  Otonom sistemler numarayla değil kurgu adlarla anılır.
- **YL63** — Politika tek kuraldan ibarettir: **transit yasağı**. Kaynağın ve hedefin kendi
  otonom sistemi ara konumda sayılmaz.
- **YL64** — Kâhin değişmez; gerçek her zaman **en kısa yolun** ilk adımıdır. Politika
  tablosu ayrı bir tablodur ve ölçülen şey ikisinin farkıdır.
- **YL65** — Kırk kaynak–hedef çifti kurs çekirdeğinin üretecinden gelir. Aynı çift birden
  çok kez çıkabilir ve her çıkışı **ayrı bir pakettir**. Atlama sınırı 12.
- **YL66** — Sızıntı **tek bir düğümün** yasağı tutmamasıdır: `f`, orta otonom sisteminin
  transit taşımama sözüne karşın duyuruyu iletir. Öteki orta düğümü `e` sözü tutar.
- **YL67** — Kırk paketlik kümede ölçülebilen en küçük fark `1/40 = 0,025`'tir; bundan
  küçük bir fark iddia edilmez.

## Ölçüm

```python
"""Politika tabanli yonlendirme: en kisa yol degil izin verilen yol."""
TOHUM = 20260810
DUGUMLER = "abcdefgh"
BAGLAR = [("a", "b"), ("b", "c"), ("c", "d"), ("d", "e"), ("e", "f"),
          ("f", "g"), ("g", "h"), ("h", "a"), ("b", "f")]
OS = {"a": "kuzey", "b": "kuzey", "c": "kuzey", "d": "kuzey",
      "e": "orta", "f": "orta", "g": "guney", "h": "guney"}
ATLAMA_SINIRI = 12


def uretec(tohum):
    d = tohum % 2147483646 + 1

    def r(n):
        nonlocal d
        d = (d * 48271) % 2147483647
        return d % n
    return r


def ciftler(sayi=40):
    r, liste = uretec(TOHUM), []
    while len(liste) < sayi:
        x, y = DUGUMLER[r(8)], DUGUMLER[r(8)]
        if x != y:
            liste.append((x, y))
    return liste


def komsuluk(baglar):
    k = {u: set() for u in DUGUMLER}
    for x, y in baglar:
        k[x].add(y)
        k[y].add(x)
    return k


def tablo(tasimayan=(), kapali=(), sizdiran=()):
    """Her dugum icin her hedefe giden en kisa IZIN VERILEN yolun ilk adimi."""
    kom, t = komsuluk(BAGLAR), {}
    for u in DUGUMLER:
        for h in DUGUMLER:
            if u == h:
                continue
            yasak = {v for v in DUGUMLER if OS[v] in tasimayan
                     and OS[v] not in (OS[u], OS[h]) and v not in sizdiran}
            onceki, sira, gorulen = {}, [u], {u}
            while sira:
                yeni = []
                for x in sira:
                    for v in sorted(kom[x]):
                        if tuple(sorted((x, v))) in kapali or v in gorulen:
                            continue
                        if v in yasak and v != h:
                            continue
                        gorulen.add(v)
                        onceki[v] = x
                        yeni.append(v)
                sira = yeni
            if h not in onceki:
                continue
            adim = h
            while onceki[adim] != u:
                adim = onceki[adim]
            t[(u, h)] = adim
    return t


def ilet(kaynak, hedef, t):
    kom, u, yol, gecilen = komsuluk(BAGLAR), kaynak, [kaynak], []
    while u != hedef:
        if len(yol) > ATLAMA_SINIRI:
            return "dongu", yol
        s = t.get((u, hedef))
        if s is None or s not in kom[u]:
            return "kara delik", yol
        if (u, s) in gecilen:
            return "dongu", yol
        gecilen.append((u, s))
        u = s
        yol.append(u)
    return "ulasti", yol


def olc(t, tasimayan):
    sayim, adim, disi = {"ulasti": 0, "dongu": 0, "kara delik": 0}, 0, 0
    for x, y in ciftler():
        kader, yol = ilet(x, y, t)
        sayim[kader] += 1
        adim += len(yol) - 1
        if {OS[v] for v in yol[1:-1]} & (set(tasimayan) - {OS[x], OS[y]}):
            disi += 1
    return sayim, adim, disi


REJIM = (("politikasız", (), (), ()),
         ("orta taşımaz", ("orta",), (), ()),
         ("orta taşımaz, sınır kapalı", ("orta",), (("a", "h"),), ()),
         ("orta taşımaz, f sızdırıyor", ("orta",), (), ("f",)))
print(f"{'rejim':<28s} {'satır':>5s} {'ulaştı':>7s} {'döngü':>6s} "
      f"{'kara delik':>11s} {'adım':>5s} {'politika dışı':>14s}")
for ad, tas, kap, siz in REJIM:
    t = tablo(tas, kap, siz)
    s, a, d = olc(t, tas)
    print(f"{ad:<28s} {len(t):5d} {s['ulasti']:7d} {s['dongu']:6d} "
          f"{s['kara delik']:11d} {a:5d} {d:14d}")

temel, dar, sizan = tablo(), tablo(("orta",)), tablo(("orta",), (), ("f",))
print()
print(f"56 satırın politikayla ayrışanı "
      f"{sum(1 for k in temel if temel[k] != dar.get(k))}, "
      f"sızıntıyla ayrışanı {sum(1 for k in temel if temel[k] != sizan.get(k))}")
print(f"{'çift':>7s} {'paket':>6s} {'politikasız':>12s} {'politikalı':>11s}"
      f" {'sızıntıda':>10s}")
for x, y in sorted(set(ciftler())):
    y0, y1, y2 = (''.join(ilet(x, y, t)[1]) for t in (temel, dar, sizan))
    if y0 == y1 == y2:
        continue
    n = sum(1 for c in ciftler() if c == (x, y))
    print(f"{x+'->'+y:>7s} {n:6d} {y0:>12s} {y1:>11s} {y2:>10s}")
```

```
rejim                        satır  ulaştı  döngü  kara delik  adım  politika dışı
politikasız                     56      40      0           0    83              0
orta taşımaz                    56      40      0           0    92              0
orta taşımaz, sınır kapalı      40      26      0          14    48              0
orta taşımaz, f sızdırıyor      56      40      0           0    83              7

56 satırın politikayla ayrışanı 5, sızıntıyla ayrışanı 1
   çift  paket  politikasız  politikalı  sızıntıda
   b->g      2          bfg        bahg        bfg
   g->b      1          gfb        ghab        gfb
   g->c      2         gfbc       ghabc       gfbc
   g->d      2         gfed      ghabcd       gfed
```

## Uzayan Yol Bir Kusur Değildir

İkinci satır dersin ana ölçüsüdür. Transit yasağı yürürlüğe girdiğinde tablo yine **56
satırdır**, kırk paketin **kırkı da ulaşır**, döngü **0**, kara delik **0**. Değişen tek
şey toplam adımdır: **83'ten 92'ye**, dokuz adım.

Alt tablo dokuz adımın nereden geldiğini gösteriyor. Elli altı satırın yalnız **5**'i
ayrışıyor ve ölçülen kırk pakette bu ayrışma **dört çifte**, toplam **yedi pakete**
dokunuyor. `g->d` yolu üç adımdan beşe çıkıyor, `g->c` üçten dörde, `b->g` ve `g->b` ikiden
üçe. Öteki otuz üç paket politikayı hiç görmüyor, çünkü yolları zaten ara konumda ortadan
geçmiyordu.

Bu ders kursun ölçü ekseniyle birlikte okunmalıdır. Ekseni belirleyen şey **paketin
kaderidir**: ulaştı, döngü, kara delik. Politika bu üç sayının hiçbirini değiştirmedi.
Kırk paketlik kümede ölçülebilen en küçük fark `0,025`'tir ve buradaki kader farkı tam
olarak **sıfırdır**. Adım, kaderin değil bedelin ölçüsüdür.

Bunun tersini söylemek de doğrudur: **en kısa yol bir hedef değildir.** Kiriş üzerinden
geçen yol iki adım kısaydı, ama o kirişin iki ucu iki ayrı otonom sisteme aitti ve aradaki
trafiği taşımanın bir bedeli vardı. Dokuz adım, o bedeli ödememenin karşılığıdır.

## Politika Fazla Dar Kurulursa

Üçüncü satır ayrımı keskinleştiriyor. Bu rejimde transit yasağı duruyor ve buna ek olarak
kuzey ile güney arasındaki `h–a` sınır bağı duyurulmuyor — iki komşu birbirine hiçbir
hedef bildirmiyor.

Tablo **56 satırdan 40 satıra** iniyor. Eksik kalan on altı satır için **izin verilen yol
yoktur**: kuzey'den güney'e giden her yol ya ortadan geçer (yasak) ya da `h–a`'dan geçer
(duyurulmuyor). Ölçümde bu **14 kara delik** olarak görünüyor; kırk paketten yalnız **26**'sı
ulaşıyor.

Adım sayısının 92'den **48**'e inmesi bir iyileşme değildir. Ölen paket adım harcamayı
bırakır; düşük adım burada tam olarak **kaybın** göstergesidir. Aynı sayının iki rejimde
iki ayrı şey söylemesi, tek bir sayaca bakmanın neden yetmediğinin de yanıtıdır.

Ayrım şudur: **yolu uzatan politika bir kusur değildir; hedefi ulaşılamaz kılan politika
kusurdur.** İkisi de aynı dille yazılır, ikisinin de sözdizimi doğrudur, ikisi de hatasız
yürürlüğe girer. Farkı yalnız ölçüm gösterir.

## Yol Sızıntısı ve Daraltmalar

Dördüncü satır bir yapılandırma kusurunu ölçüyor. **Yol sızıntısı**, bir otonom sistemin
bir komşusundan öğrendiği duyuruyu, sözleşmesi gereği iletmemesi gerekirken başka bir
komşusuna iletmesidir. Burada `f` düğümü orta otonom sisteminin transit yasağını tutmuyor;
`e` tutuyor. Yasağı bozan **tek bir düğümdür**.

Sonuç şaşırtıcı biçimde temiz görünüyor: **56 satır, 40 ulaştı, 0 döngü, 0 kara delik.**
Toplam adım **92'den 83'e** iniyor. Elli altı satırın yalnız **1**'i politikasız tablodan
ayrılıyor — yani sızıntı, tabloyu bir satır kala **politikasız hâline geri döndürüyor**.
Ve **7 paket** ara konumda ortadan geçiyor: alt tablonun sağ sütunu bu yolları veriyor,
`bfg`, `gfb`, `gfbc`, `gfed`.

Bu bir saldırı değil bir **yapılandırma kusurudur**: kural yazılmış, sözdizimi doğru,
oturum ayakta, hiçbir alarm çalmıyor. Saldırı tarafı **Ağ Güvenliği** kursunun konusudur ve
buraya taşınmaz. Sayılan yüzeyler ve her birini kapatan daraltma şunlardır.

**Birinci yüzey — sözleşme dışı taşınan trafik.** Yedi paket, taşınmayacağı bildirilmiş bir
otonom sistemden geçiyor. **Daraltma:** bir komşudan öğrenilen duyurunun başka bir komşuya
iletilmesi, komşu başına yazılmış bir **önek süzgeciyle** sınırlanır; süzgeçte olmayan önek
duyurulmaz. İkinci daraltma, komşu başına **duyuru sayısı üst sınırıdır** — sızıntı çoğu kez
duyuru sayısında ani bir artışla gelir ve sınır aşıldığında oturum kendiliğinden kapanır.

**İkinci yüzey — sızıntının iyileşme gibi görünmesi.** Adım 92'den 83'e indi, kaybolan paket
yok, tablo satırı 56'da kaldı. Gecikmeye bakan bir sayaç **iyileşme** bildirir. **Daraltma:**
izlenen şey adım değil **otonom sistem dizisi** olmalıdır; `g->c` yolunun dizisi
`güney kuzey` beklenirken `güney orta kuzey` çıkıyor. Bu fark tabloda görünür, sayaçta
görünmez.

**Üçüncü yüzey — duyurunun doğrulanmaması.** Duyuru "şu hedefe benden gidilir" der ve bunu
doğrulayan bir şey yoktur. **Daraltma:** önekin sahibi ile duyurmaya yetkili otonom sistemi
eşleştiren **imzalı bir kayıt düzeni** ve duyuruyu bu kayda karşı sınayan süzgeç. İkinci
daraltma, **kendi otonom sistemini yolunda taşıyan duyuruların reddedilmesidir** — geri
dönen duyuru bir döngü belirtisidir.

**Dördüncü yüzey — fazla dar politika.** Üçüncü rejimin 14 kara deliği bir yapılandırma
kusurudur ve sızıntının tersidir. **Daraltma:** politika değişikliği yürürlüğe alınmadan
önce her hedef için **izin verilen yol sayısının sayılması**; sayı sıfıra düşen hedef
varsa değişiklik yayına alınmaz.

## Özet

- Otonom sistem sınırında karar ölçüden politikaya geçer; sınırdan geçen şey uzaklık değil
  **duyurudur** ve duyuruyu doğrulayan hiçbir şey yoktur.
- Bir yol, otonom sistem dizisinin **ara konumunda** transit taşımayan bir otonom sistem
  bulunduğunda elenir; kaynağın ve hedefin kendi otonom sistemi ara konumda sayılmaz.
- Transit yasağı kırk paketin kırkını da ulaştırır ve toplam adımı **83'ten 92'ye** çıkarır;
  56 satırın **5**'i ayrışır, ayrışma **dört çifte** ve **yedi pakete** dokunur. **Uzayan
  yol bir kusur değildir.**
- Sınır duyurusu kapandığında tablo **40 satıra** iner ve **14 paket** kara deliğe düşer;
  adımın 48'e inmesi kayıp göstergesidir, iyileşme değil.
- Tek bir düğümün yol sızıntısı tabloyu politikasız hâline **bir satır kala** geri döndürür:
  adım 83'e iner, **7 paket** sözleşme dışı yoldan geçer ve hiçbir sayaç bunu bildirmez.

## Sonraki Adım

Bu derste politika **tek bir tablonun** içinde uygulandı: her düğümün bir tablosu vardı ve
bir hedefin o tabloda tek bir satırı. Politika, o satırın hangi bir sonraki düğümü
göstereceğini değiştirdi. Peki aynı cihazın **birden çok tablosu** olsaydı? Sonraki ders
aynı adresin aynı cihazda iki ayrı karara gitmesini ölçer: tablo ayrıştırıldığında hangi
paket hangi tabloya düşer, ayrı tablolar aynı bağları paylaştığında ne olur, ve örnek sayısı
tutulan satır sayısını nasıl büyütür.
