---
title: 'Paket Çözümleme Araçları'
source: 'https://academia.sh/tr/kurslar/ag-isletimi/paket-cozumleme-araclari'
course: 'Ağ İşletimi ve Otomasyon'
language: tr
updated: '2026-08-17T18:07:15+00:00'
license: 'CC BY-SA 4.0'
---

# Paket Çözümleme Araçları

Yakalama filtresi tek bir kaldıraçtır ve iki ucundan da kaybettirir: doksan sekiz akışlık bir pencerede en dar filtre 91 akışı hiç görmez ve 22 ağır olayın 21'ini kaçırır, süzgeçsiz yakalama ise 776 196 baytı tampona sığmadığı için düşürür.

Önceki iki ders de aygıtın **kendi anlattığına** dayanıyordu. Akış kaydını aygıt üretiyor,
sorguya aygıt yanıt veriyor, bildirimi aygıt gönderiyordu. Aygıtın hiç raporlamadığı bir
davranış varsa onu aygıta sorarak öğrenmenin yolu yoktur.

Bu ders kaynağı değiştirir ve hattan geçen baytın kendisine bakar. Bir noktaya konan
çözümleyici, oradan geçen paketleri kopyalar ve kaydeder. Kopyalama sınırsız değildir:
hangi paketlerin kopyalanacağını bir **yakalama filtresi (capture filter)** seçer ve
kopyalar sınırlı bir tampona yazılır. Filtre bir kaldıraçtır — tek bir kural, kırk öznenin
bütün trafiğine birden uygulanır. Bu dersin ölçtüğü şey filtrenin gördüğü değil, **göremediğidir.**

Çözümleyici araçlarının kullanımı ve yakalama yordamı **Güvenlik Araçları ve Sızma Testi**
kursunun konusudur ve burada tekrarlanmaz; araç adı da yazılmaz. Burada ölçülen şey aracın
değil, **kuralın** kendisidir.

## Yakalamanın İki Sınırı

Yakalama iki ayrı yerde kaybeder ve ikisi ters yönde çalışır.

**Birinci sınır filtredir.** Filtreden geçmeyen paket hiç kopyalanmaz. Bu bir kayıp değil,
bir seçimdir — ta ki aranan davranış filtrenin dışında kalana kadar. Dar bir filtre, ilgisiz
trafiği eleyerek tamponu korur; karşılığında elediği şeyi bir daha geri getiremez, çünkü
kopyalanmamış paket yoktur.

**İkinci sınır tampondur.** Filtreden geçen paketler bir tampona yazılır ve tampon
dolduğunda gelen paket düşer. Bu düşme **sessizdir**: kaydın içinde "burada bir paket
düştü" diyen bir satır yoktur, yalnız olmayan paketler vardır. Geniş bir filtre tamponu
hızla doldurur ve düşme, filtrenin ilgilendiği trafiğin tam ortasında gerçekleşir.

İki sınır aynı kaldıraca bağlıdır. Filtre daraltıldığında birinci sınır büyür, ikinci sınır
küçülür; genişletildiğinde tersi olur. Ortada kayıpsız bir ayar yoktur, yalnız kaybın
**nereye** düşeceğine dair bir seçim vardır.

## Filtre Sözdizimi

Yakalama filtreleri paketin başlık alanları üzerinde yazılır. Aşağıdaki döküm öğretilen
sözdizimini gösterir; çalıştırılmamıştır ve hiçbir sayı iddiası taşımaz.

```text
# ogretilen filtre sozdizimi , calistirilmamistir

tek alan
  tcp                        protokol alanina bakar
  port 443                   kaynak ya da hedef kapi
  src port 443               yalnizca kaynak kapi
  host istasyon.ornek        kaynak ya da hedef konak

bilesik
  tcp and port 443
  tcp and (port 80 or port 443 or port 8080)
  not port 22

paket ici konum
  tcp[13] & 2 != 0           SYN bayragi kurulmus segmentler
  ip[6:2] & 0x1fff = 0       bolunmemis ilk parca
```

İki şey dikkat ister. Birincisi, filtre **başlık alanlarına** bakar; yükün içeriğine
bakamaz, çünkü karar paket kopyalanmadan önce verilmek zorundadır. İkincisi, `not port 22`
gibi bir olumsuzlama filtreyi genişletir — dar görünen bir kural, dışarıda bıraktığı şey
küçükse aslında geniş bir kuraldır. Filtrenin genişliğinin ölçüsü sözdiziminin uzunluğu
değil, **eşleşen akış sayısıdır.**

## Kesme Uzunluğu ve Akış Yeniden Kurma

Her paketten ne kadar saklanacağını **kesme uzunluğu** belirler. Yalnız başlıklar
saklanacaksa paket başına birkaç düzine bayt yeter; yükün tamamı isteniyorsa paketin tamamı
yazılır ve tampon aynı sürede on kat daha hızlı dolar.

Kesme uzunluğu, **akış yeniden kurmayı** doğrudan sınırlar. Yeniden kurma, aynı akışa ait
paketlerin sıra numaralarına göre birleştirilip özgün bayt akışının geri elde edilmesidir.
Başlıklar yeterlidir eğer soru "bu akış ne zaman başladı, kaç bayt taşıdı, nasıl kapandı"
ise. Soru "bu akışta ne taşındı" ise başlık yetmez ve kesilmiş bir kayıt bu soruyu hiçbir
zaman yanıtlayamaz.

Yeniden kurmanın ikinci koşulu **sürekliliktir**: akışın paketlerinden biri düşmüşse akış
tam olarak kurulamaz. Bu yüzden ölçümde bir akış üç ayrı sonuca düşebilir — tam yakalanmış,
yarım kalmış ya da tampona hiç sığmamış.

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

- **GB14** — Kırk özne kursun sabit topluluğudur; her özne pencerede bir ile dört arası
  akış üretir ve akışlar başlangıç zamanına göre sıralanır.
- **GB15** — Yakalama tamponu **1 200 000 bayttır** ve pencere boyunca boşaltılmaz. Gerçek
  bir yakalamada tampon diske boşaltılır; burada sabit tutulması, düşmenin filtre genişliğine
  bağımlılığını yalıtmak içindir.
- **GB16** — Kesme uzunluğu **96 bayt/paket** olarak sabittir ve bu derste kaldıraç değildir.
  Yalnız filtre değiştirilir.
- **GB17** — Tampon zaman sırasına göre dolar. Dolduğu ana kadar biten akış tam yakalanır,
  o anı bölen akış yarım kalır, sonra başlayan akış hiç yazılmaz.
- **GB18** — Düşen paket iz bırakmaz; ölçüm düşen baytı kâhinden okur, kayıttan değil.
  Gerçek bir yakalamada bu sayı ancak sayaçla kestirilebilir.
- **GB19** — Ağır olay kâhinin bilgisidir. Bir öznenin tek bir akışı bile yakalanmışsa o
  öznenin ağır olayları görünür sayılır; hiçbir akışı yakalanmamışsa hepsi kaçar.
- **GB20** — Filtreler iç içedir: her filtre bir öncekinin eşleştirdiği akışların tümünü
  eşleştirir. Genişlik böylece tek yönlü bir eksende ölçülür.
- **GB21** — Gözlem noktası kırk öznenin bütün akışlarını görür. Bu bir kolaylıktır ve
  sahada karşılığı yoktur; ölçüm bu yüzden yalnız filtre ile tamponun kaybını sayar,
  konumun kaybını saymaz.

## Ölçüm

```python
"""Paket cozumleme: yakalama filtresi tek kaldirac, olculen sey filtrenin goremedigi.

Bolum 1 - kirk oznenin akislari, zaman sirasina dizilmis.
Bolum 2 - bes filtre genisligi: dar filtre kac akis, genis filtre kac bayt kaciriyor.
"""
TOHUM = 20260812
TAMPON = 1_200_000   # bayt, yakalama tamponu
KESME = 96           # bayt, paket basina saklanan en cok bayt


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

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


def ozneler(sayi=40, tohum=TOHUM):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        liste.append({"no": i + 1, "kapasite": 20 + r(81), "gecikme": 5 + r(45),
                      "sinif": ("etkilesim", "toplu", "yedek")[r(3)],
                      "ozel": r(9) == 0})
    return liste


def olaylar(oz, sayi=400, tohum=TOHUM + 3):
    r, liste = uretec(tohum), []
    for i in range(sayi):
        o = oz[r(len(oz))]
        liste.append({"no": i + 1, "ozne": o["no"], "agir": r(25) == 0})
    return liste


def akislar(oz, tohum=TOHUM + 7):
    """Her ozne bir ile dort arasinda akis uretir; liste zaman sirasina dizilir."""
    r, liste = uretec(tohum), []
    for o in oz:
        for _ in range(1 + r(4)):
            liste.append({"ozne": o["no"], "protokol": ("TCP", "UDP", "ICMP")[r(3)],
                          "kapi": (22, 53, 80, 123, 443, 8080)[r(6)],
                          "paket": 20 + r(400), "boy": 64 + r(1400),
                          "baslangic": r(1000)})
    return sorted(liste, key=lambda a: (a["baslangic"], a["ozne"]))


def yakala(ak, filtre, tampon=TAMPON, kesme=KESME):
    """Filtreden gecen akis tampona yazilir; tampon dolunca kalan bayt duser."""
    dolu = eslesen = tam = yarim = sigmayan = dusen = 0
    gorulen = set()
    for a in ak:
        if not filtre(a):
            continue
        eslesen += 1
        boyut = a["paket"] * min(a["boy"], kesme)
        if dolu + boyut <= tampon:
            dolu, tam = dolu + boyut, tam + 1
            gorulen.add(a["ozne"])
        elif dolu < tampon:
            yarim += 1
            dusen += dolu + boyut - tampon
            dolu = tampon
            gorulen.add(a["ozne"])
        else:
            sigmayan += 1
            dusen += boyut
    return eslesen, tam, yarim, sigmayan, dusen, gorulen


FILTRELER = {
    "TCP kapı 443": lambda a: a["protokol"] == "TCP" and a["kapi"] == 443,
    "TCP üç kapı": lambda a: a["protokol"] == "TCP" and a["kapi"] in (80, 443, 8080),
    "yalnız TCP": lambda a: a["protokol"] == "TCP",
    "TCP ve UDP": lambda a: a["protokol"] in ("TCP", "UDP"),
    "süzgeçsiz": lambda a: True,
}

oz = ozneler()
ol = olaylar(oz)
ak = akislar(oz)
print(f"özne {len(oz)} | akış {len(ak)} | paket {sum(a['paket'] for a in ak)}"
      f" | ağır olay {sum(o['agir'] for o in ol)}")
print(f"tampon {TAMPON} bayt | kesme {KESME} bayt/paket"
      f" | kesmeli toplam {sum(a['paket'] * min(a['boy'], KESME) for a in ak)} bayt"
      f" | kesmesiz {sum(a['paket'] * a['boy'] for a in ak)} bayt")
print()
print(f"{'filtre':<13s} {'eşleşen':>8s} {'dışarıda':>9s} {'tam':>4s} {'yarım':>6s} "
      f"{'sığmayan':>9s} {'düşen bayt':>11s} {'görünmeyen':>11s} {'kaçan ağır':>11s}")
for ad, f in FILTRELER.items():
    e, tam, yarim, sig, dusen, gor = yakala(ak, f)
    kacan = sum(1 for x in ol if x["agir"] and x["ozne"] not in gor)
    print(f"{ad:<13s} {e:8d} {len(ak) - e:9d} {tam:4d} {yarim:6d} {sig:9d} "
          f"{dusen:11d} {len(oz) - len(gor):11d} {kacan:11d}")
```

```
özne 40 | akış 98 | paket 20631 | ağır olay 22
tampon 1200000 bayt | kesme 96 bayt/paket | kesmeli toplam 1976196 bayt | kesmesiz 15032397 bayt

filtre         eşleşen  dışarıda  tam  yarım  sığmayan  düşen bayt  görünmeyen  kaçan ağır
TCP kapı 443         7        91    7      0         0           0          33          21
TCP üç kapı         17        81   17      0         0           0          23          13
yalnız TCP          38        60   38      0         0           0          15           6
TCP ve UDP          65        33   58      1         6      188868          11           4
süzgeçsiz           98         0   65      1        32      776196           5           2
```

## Dar Filtrenin Kaçırdığı

İlk satır en dar kuraldır ve tam olarak istendiği gibi çalışır: eşleşen **7** akışın
yedisi de eksiksiz yakalanır, tampondan tek bayt düşmez, kayıt küçüktür ve okunması kolaydır.
Bu satırda hiçbir şey bozulmamıştır.

Bozulan şey satırın sağındadır. Doksan sekiz akışın **91**'i filtrenin dışında kalmıştır ve
kırk öznenin **33**'ü kayıtta hiç görünmez. Yirmi iki ağır olayın **21**'i kaçar. Kayıt
temizdir, çünkü içine yalnız bakılması istenen şey girmiştir; sorun da tam budur — kayıt,
kendisine ne sorulacağı bilindiği varsayımıyla kurulmuştur.

Filtre genişledikçe bu taraf iyileşir. `TCP üç kapı` ile görünmeyen özne **23**'e,
`yalnız TCP` ile **15**'e iner; kaçan ağır olay **13** ve **6** olur. Üçüncü satıra kadar tampon hiç
zorlanmaz: düşen bayt **0**'dır. Kaldıraç bu aralıkta bedelsiz görünür.

## Geniş Filtrenin Kaçırdığı

Dördüncü satırda ikinci sınır devreye girer. `TCP ve UDP` filtresi **65** akış eşleştirir ama
bunların yalnız **58**'i tam yakalanır: **1** akış yarım kalır ve **6** akış tampona hiç
sığmaz. Düşen bayt **188 868**'dir.

Süzgeçsiz yakalamada tablo tersine döner. Filtre artık hiçbir şeyi dışarıda bırakmaz —
`dışarıda` sütunu **0**. Buna karşılık doksan sekiz akışın yalnız **65**'i tam yakalanır,
**32**'si tampona hiç sığmaz ve **776 196** bayt düşer. Kesmeli toplam **1 976 196** bayttır;
yani yakalanmak istenen verinin yaklaşık beşte ikisi kayda hiç girmez.

En çarpıcı sütun görünmeyen öznedir: süzgeçsiz yakalamada bu sayı **5**'tir ve sıfır değildir.
Filtre hiçbir özneyi elemediği hâlde beş özne kayıtta yoktur, çünkü onların akışları tamponun
dolduğu andan sonra başlamıştır. **Filtreyi genişletmek görünürlüğü artırmadı, kaybı
filtreden tampona taşıdı.**

İki kayıp arasındaki nitelik farkı önemlidir. Filtrenin elediği akış **bilinerek** elenmiştir;
kuralı okuyan kişi neyin dışarıda kaldığını söyleyebilir. Tampondan düşen akış ise bilinmeden
düşmüştür ve kaydın kendisinde bunu gösteren hiçbir alan yoktur. İkinci kayıp, birinciden
daha az bayt götürse bile daha tehlikelidir, çünkü kaydı okuyan kişi eksikliği fark etmez.

## Sayılmayan Üçüncü Kayıp

Ölçüm, gözlem noktasının kırk öznenin bütün akışlarını gördüğünü varsayar. Bu varsayım
sahada tutmaz ve tutmadığı yerde üçüncü bir kayıp doğar.

Çözümleyici bir noktaya konur ve yalnız o noktadan **geçen** paketi görür. İki özne
birbiriyle o noktanın berisinde konuşuyorsa aralarındaki trafik hiçbir zaman kopyalanmaz —
filtre ne kadar geniş olursa olsun, tampon ne kadar büyük olursa olsun. Aynı biçimde, bir
anahtarın bir bağlantı noktasına konan çözümleyici öteki bağlantı noktalarının kendi
aralarındaki trafiği görmez; bunun için trafiğin ayrıca yansıtılması gerekir ve yansıtma da
kendi sınırını taşır: yansıtılan bağlantı noktasının hızı, kaynakların toplam hızından
düşükse yansıtma sırasında da paket düşer.

Bu kaybın diğer ikisinden farkı, **filtre kuralına bakarak kestirilememesidir.** Dar filtrenin
neyi elediği kuralın kendisinde yazılıdır; tampondan düşenin miktarı bir sayaçtan okunabilir.
Konumun görmediği ise ancak topolojiden çıkarılabilir ve yakalama kaydında hiçbir izi yoktur.
Üç kaybın ortak sonucu şudur: **kaydın boş olması, orada bir şey olmadığı anlamına gelmez.**

## Kayıpları Daraltmak

Kaldıracın kuyruğu kaldırılamaz; üç daraltma onu ölçülebilir kılar.

**Birinci daraltma — düşmeyi saymak.** Yakalama arayüzü, düşen paket için bir sayaç tutar.
Sayaç örneklenmez ve filtreden etkilenmez; kayıt eksikse bunu söyleyen tek alan odur. Kayıt
her açıldığında sayacın da okunması, `sığmayan` sütununun sahadaki karşılığını verir.

**İkinci daraltma — kesme uzunluğunu soruya göre seçmek.** Ölçümdeki pencerede paketlerin
tamamı saklansaydı toplam **15 032 397** bayt olurdu; 96 baytlık kesmeyle **1 976 196** bayta
iner, yani yaklaşık yedide bire. Aynı tampon, aynı filtreyle yedi kat uzun bir pencereyi
kapsar. Soru akışın varlığı ve zamanlaması ise bu takas bedavaya yakındır. Soru içerikse
kesme kaldırılmalıdır, ama o zaman pencere kısaltılmalıdır; iki ayarın çarpımı sabittir.

**Üçüncü daraltma — filtreyi soruya değil, kâhine göre yazmak.** Yukarıdaki ölçümde en dar
filtre yirmi iki ağır olayın yirmi birini kaçırıyordu. Ağır olayların hangi kapılarda
geçtiği bilinmediği için dar filtre kumar oynamaktadır. Uygulanabilir kural şudur: yakalama
filtresi, telemetride **görünmeyen özneleri** kapsayacak biçimde yazılır. Önceki iki ders
kimin görünmediğini sayıyordu; bu ders o listenin nereye yazılacağını söyler.

## Özet

- Yakalama iki yerde kaybeder: filtreden geçmeyen paket hiç kopyalanmaz, tampona sığmayan
  paket sessizce düşer; iki kayıp aynı kaldıracın ters yönleridir.
- En dar filtre **7** akış yakalar ve hiç bayt düşürmez, ama **91** akışı dışarıda bırakır,
  **33** özneyi hiç göstermez ve 22 ağır olayın **21**'ini kaçırır.
- Süzgeçsiz yakalama hiçbir akışı dışarıda bırakmaz ama **32** akış tampona sığmaz ve
  **776 196** bayt düşer; kesmeli toplamın yaklaşık beşte ikisi kayda girmez.
- Süzgeçsiz yakalamada bile **5** özne görünmez: filtre elemediği hâlde tamponun dolduğu
  andan sonra başlayan akışlar kayda hiç girmez.
- Filtrenin elediği akış bilinerek elenmiştir, tampondan düşen akış bilinmeden düşer; ikinci
  kayıp daha küçük olduğunda bile daha tehlikelidir çünkü kayıtta hiçbir iz bırakmaz.
- Üçüncü bir kayıp ölçümün dışındadır ve gözlem noktasından gelir: o noktadan geçmeyen
  trafik hiçbir filtre genişliğiyle görünmez, ve bu eksiklik ne kuraldan ne sayaçtan
  okunabilir — yalnız topolojiden çıkarılabilir.

## Sonraki Adım

Buraya kadarki üç ölçüm de ağın **içinden** bakıyordu: aygıtın kaydı, aygıtın yanıtı, hattan
geçen paket. Üçünün de öznesi tek tek aygıtlardı. İşletmede sorulan asıl soru ise uçtan uca
sorulur — bir uçtan öbür uca erişilebiliyor mu, ve ne kadar sürede? Sonraki ders bu tek
göstergeyi kurar ve tersinden sorar: uçtan uca ölçülen bir sağlık değeri kırk öznenin
**hangisini temsil etmiyor**, ve gösterge yeşilken kaç özne kuyrukta kalıyor?
