İçeriğe geç
academia.sh

Ders 13 / 13

Adres Dönüştürme

Bağlantı noktası yönlendirmenin dışarıya açtığı yüzey kalem kalem sayılır: dört kural on üç nokta açıp bugün sekiz çifte ulaştırıyor, dönüştürmeli günlük satırı on iki aday kaynağın sıfırını eliyor ve altı yüzüncü saniyede çevrim kaydının yalnız kırkta on biri çözülebiliyor.

İçindekiler

Önceki ders bir makinenin kendi kapısını nasıl kapattığını saydı: beş adımın yüz yirmi sırasından kırkı yöneticiyi dışarıda bırakıyordu. Bu ders ters yöne bakar. Aynı makine bir ağın çıkışında durduğunda yalnız kapı tutmaz; arkasındaki makineler adına konuşur ve dışarıdan gelen bazı bağlantıları içeri taşır.

Her taşıma kuralı, kapatılan kapının yanında bir pencere açar. Kursun son dersi o pencereleri sayar ve tanıya verdikleri zararı ölçer. Bu ders “şunu açın” biçiminde bir yönerge vermez; açmanın kaç çift demek olduğunu yazar.

Ağ Geçidinin İki İşi

Adres dönüştürme (NAT), bir paketin başlığındaki adres ya da bağlantı noktası alanlarının geçit üzerinde değiştirilmesidir. İki yönü vardır. Kaynak dönüştürme içeriden dışarı giden paketlerde uygulanır: iç konağın adresi geçidin adresiyle değiştirilir ve geçit bir çevrim kaydı tutarak dönen paketi doğru iç konağa geri gönderir. Hedef dönüştürme dışarıdan gelen paketlerde uygulanır: geçidin bir bağlantı noktasına gelen paket, bir iç konağın bir noktasına yönlendirilir. İkincisine bağlantı noktası yönlendirme denir.

Dönüştürmenin türleri, çevrim tablosunun beş bileşenli anahtarı, kapasite sınırı ve uçtan uca bağlantının bozulması Bilgisayar Ağları kursunda kuruldu ve burada tekrarlanmaz. Bu ders iki şey sorar: bu kuralın açtığı yüzey ne kadar, bu kuralın sildiği bilgi ne.

Konum da bu kursun konusudur. Kaynak dönüştürme yönlendirme kararından sonraki, hedef dönüştürme önceki durakta yapılır. Hedef dönüştürme önce çalıştığı için süzme kuralları paketi dönüştürülmüş hâliyle görür; kuralı dış adrese göre yazan operatör hiçbir şey eşleştiremez ve ortada bir hata iletisi olmaz.

Yüzey, Kimlik ve Kayıt

Kurgu şudur: bir geçidin arkasında bir iç ağ vardır ve dört yönlendirme kuralı yazılmıştır.

  • EF41 — İç ağda 12 konak ve konak başına 5 servis vardır; iç (konak, servis) çifti 60’tır.
  • EF42 — Dönüştürme yokken dışarıdan doğrudan erişilebilen iç çift 0’dır.
  • EF43 — Dört kural yazılıdır: üçü tek bir noktayı, biri 10 noktalık bir aralığı açar.
  • EF44 — Aralık kuralının hedefindeki konakta bugün 5 servis dinlemektedir; kalan beş nokta bugün kapalıdır ve kural onları da kapsamaktadır.
  • EF45 — Kâhin gerçek kaynak konaktır ve ic-konak-07 seçilmiştir.
  • EF46 — Hedef sunucunun günlüğü tek bir kaynak alanı yazar; dönüştürme varken bu alan geçidin adresidir.
  • EF47 — Çevrim kaydı bağlantı kapandıktan 120 saniye sonra düşer.
  • EF48 — Pencere 600 saniyedir ve 40 bağlantı vardır; bağlantı i on beşinci saniyenin katlarında başlar ve süresi 30 + (i mod 7) * 10 saniyedir.
  • EF49 — Aday kümesi süpürmesi iç konak sayısı 8, 12 ve 16 iken yapılır.
  • EF50 — Bütün sayılar tam sayımdır; rastgelelik ve tohum yoktur.
"""Adres donusturme: acilan yuzey , kaynak kimliginin kaybi , kaydin omru."""
IC_KONAK, SERVIS = 12, 5
ZAMAN_ASIMI, PENCERE, BAGLANTI = 120, 600, 40
KURAL = (("tekil-a", 1, 1), ("tekil-b", 1, 1), ("tekil-c", 1, 1),
         ("aralik-d", 10, 5))

print("ic ag:", IC_KONAK, "konak x", SERVIS, "servis =",
      IC_KONAK * SERVIS, "ic (konak , servis) cifti")
print("disaridan dogrudan erisilebilen cift (donusturme yok):", 0)
print()
print("kural       actigi nokta  dinleyen servis  ulasilan cift  acik nokta")
acik = dinleyen = 0
for ad, nokta, dinler in KURAL:
    acik += nokta
    dinleyen += dinler
    print(f"  {ad:10s} {nokta:12d} {dinler:16d} {dinleyen:14d} {acik:11d}")
print(f"  {'toplam':10s} {acik:12d} {dinleyen:16d} {dinleyen:14d} {acik:11d}")
print("  kural degismeden buyuyebilecek yuzey:", acik - dinleyen, "cift")
print()
KAHIN = "ic-konak-07"
ADAY = tuple(f"ic-konak-{i:02d}" for i in range(1, IC_KONAK + 1))


def gunluk_satiri(kaynak, donusturme):
    return "ag-gecidi" if donusturme else kaynak


def cevrim_tablosu(kaynak, okunabilir):
    return kaynak if okunabilir else "kayit-yok"


print("okuma                          ayri yanit  elenen  kalan")
for ad, f in (("hedefin gunlugu (donusturmeli)",
               lambda k: gunluk_satiri(k, True)),
              ("hedefin gunlugu (donusturmesiz)",
               lambda k: gunluk_satiri(k, False)),
              ("cevrim tablosu (kayit yasarken)",
               lambda k: cevrim_tablosu(k, True)),
              ("cevrim tablosu (kayit dustukten sonra)",
               lambda k: cevrim_tablosu(k, False))):
    yanit = f(KAHIN)
    kalan = sum(1 for a in ADAY if f(a) == yanit)
    print(f"  {ad:38s} {len({f(a) for a in ADAY}):5d} {len(ADAY) - kalan:7d}"
          f" {kalan:6d}")
print()
BAGLANTILAR = [(15 * i, 30 + (i % 7) * 10) for i in range(BAGLANTI)]
print(f"cevrim kaydi: {BAGLANTI} baglanti , {PENCERE} sn pencere ,"
      f" kayit kapanistan {ZAMAN_ASIMI} sn sonra dusuyor")
print("  bakis ani  baslamis  hala cozulebilir  oran")
for T in (0, 100, 300, 600):
    baslamis = [(b, s) for b, s in BAGLANTILAR if b <= T]
    cozulur = [1 for b, s in baslamis if b + s + ZAMAN_ASIMI > T]
    oran = round(len(cozulur) / len(baslamis), 4) if baslamis else 0.0
    print(f"  {T:9d} {len(baslamis):9d} {len(cozulur):17d} {oran:9.4f}")
print()
print("aday kumesi supurmesi: ic konak sayisi degisiyor")
for n in (8, 12, 16):
    a = tuple(f"ic-konak-{i:02d}" for i in range(1, n + 1))
    kalan = sum(1 for x in a if gunluk_satiri(x, True) == "ag-gecidi")
    print(f"  {n:2d} ic konak -> donusturmeli gunluk elenen {len(a) - kalan:2d}"
          f" kalan {kalan:2d} | donusturmesiz gunluk elenen {len(a) - 1:2d}"
          f" kalan {1:2d}")
ic ag: 12 konak x 5 servis = 60 ic (konak , servis) cifti
disaridan dogrudan erisilebilen cift (donusturme yok): 0

kural       actigi nokta  dinleyen servis  ulasilan cift  acik nokta
  tekil-a               1                1              1           1
  tekil-b               1                1              2           2
  tekil-c               1                1              3           3
  aralik-d             10                5              8          13
  toplam               13                8              8          13
  kural degismeden buyuyebilecek yuzey: 5 cift

okuma                          ayri yanit  elenen  kalan
  hedefin gunlugu (donusturmeli)             1       0     12
  hedefin gunlugu (donusturmesiz)           12      11      1
  cevrim tablosu (kayit yasarken)           12      11      1
  cevrim tablosu (kayit dustukten sonra)     1       0     12

cevrim kaydi: 40 baglanti , 600 sn pencere , kayit kapanistan 120 sn sonra dusuyor
  bakis ani  baslamis  hala cozulebilir  oran
          0         1                 1    1.0000
        100         7                 7    1.0000
        300        21                12    0.5714
        600        40                11    0.2750

aday kumesi supurmesi: ic konak sayisi degisiyor
   8 ic konak -> donusturmeli gunluk elenen  0 kalan  8 | donusturmesiz gunluk elenen  7 kalan  1
  12 ic konak -> donusturmeli gunluk elenen  0 kalan 12 | donusturmesiz gunluk elenen 11 kalan  1
  16 ic konak -> donusturmeli gunluk elenen  0 kalan 16 | donusturmesiz gunluk elenen 15 kalan  1

Açılan Yüzey

Üst tablo dört kuralın açtığı yüzeyi kalem kalem sayıyor. Dönüştürme yokken dışarıdan erişilebilen iç çift 0’dır; iç ağdaki altmış çiftin hiçbirine ulaşılamaz. Üç tekil kural üçe çıkarıyor, dördüncü kural on noktalık bir aralık açıyor ve bugün ulaşılan çift 8 oluyor.

İki sayı arasındaki fark bu bölümün asıl konusudur. Açık nokta 13, ulaşılan çift 8. Aradaki 5 çift bugün kapalı, çünkü o noktalarda dinleyen servis yok; yarın o konakta bir servis başlatıldığında kural değişmeden erişilebilir olacak. Aralık biçiminde yazılmış bir kural, bugünkü yüzeyi değil gelecekteki en büyük yüzeyi tanımlar. Ölçülmesi gereken sayı sekiz değil, on üçtür.

Bu, tekil kuralla aralık kuralı arasındaki tercihi bir sayıya bağlar. Aynı iş, tek bir aralık kuralı yerine beş tekil kuralla yazıldığında açık nokta sayısı on üçten sekize iner ve bugünkü işlev değişmez.

Üç Sayı

Kâhin: gerçek kaynak ic-konak-07 — on iki iç konaktan biri. Sınama: hedef sunucunun günlüğü tek bir kaynak alanı yazıyor ve dönüştürme varken orada geçidin adresi duruyor; on iki konak için tek bir yanıt. Elenen aday: dönüştürmeli günlük 0, dönüştürmesiz günlük 11, çevrim tablosu kayıt yaşarken 11, kayıt düştükten sonra 0.

Bu sıfır kursun kuralının en kısa örneğidir. Günlük satırı vardır, okunabilir, doğrudur ve hiçbir adayı elemez. Kaynak dönüştürme on iki ayrı kimliği tek bir kimliğe indirgiyor; hedef tarafındaki her satır aynı şeyi söylüyor. Kaydın var olması ölçmeye yetmiyor; tanısı sınanmayan çıktı ölçülmemiş sayılır.

En alttaki tablo süpürmeyi gösteriyor. İç konak sayısı sekizden on altıya çıkarıldığında dönüştürmeli günlüğün elediği aday 0’da sabit kalıyor, kalan sekizden on altıya çıkıyor. Eleme gücü sıfır olan bir okuma, aday kümesi büyüdükçe daha da değersizleşir.

Kaydın Ömrü

Kimliği geri getirebilecek tek yer çevrim tablosudur ve o tablo bir bellek yapısıdır, bir günlük değil. Kayıt bağlantı açıkken yaşar, kapandıktan yüz yirmi saniye sonra düşer.

Yüzüncü saniyede bakıldığında başlamış yedi bağlantının yedisi çözülebiliyor; oran 1,0000. Üç yüzüncü saniyede yirmi bir bağlantının on ikisi, oran 0,5714; altı yüzüncü saniyede kırk bağlantının yalnız on biri, oran 0,2750. Yarım saatlik gecikmeyle bakan operatör, bağlantıların dörtte üçünün kaynağını hiçbir yerden çıkaramaz.

Kanıt beklemez. Kaynağı kalıcı olarak saklamanın tek yolu, çevrim anında bir günlük satırı yazmaktır ve bu bir ayardır; arızadan önce açılmış olmalıdır. Açık olmadığında geriye kalan şey hedefin günlüğüdür ve o günlük on iki adaydan sıfırını eler.

Özet

  • Kaynak dönüştürme yönlendirme kararından sonraki, hedef dönüştürme önceki durakta çalışır; süzme kuralları paketi dönüştürülmüş hâliyle görür ve dış adrese yazılan kural eşleşmez.
  • Dört yönlendirme kuralı 13 nokta açıyor ve bugün 8 çifte ulaşılıyor; aradaki 5 çift kural değişmeden ileride açılabilir. Aralık kuralı bugünkü değil, gelecekteki en büyük yüzeyi tanımlar.
  • Dönüştürmeli günlük satırı on iki aday kaynağın 0’ını eler; dönüştürmesiz günlük ve yaşayan çevrim kaydı 11 eler.
  • Çevrim kaydı kapanıştan 120 saniye sonra düşer: 100. saniyede çözülebilirlik 1,0000, 300’de 0,5714, 600’de 0,2750.
  • İç konak sayısı sekizden on altıya çıktığında dönüştürmeli günlüğün elediği aday 0’da sabit kalır, kalan sekizden on altıya çıkar.

Kurs Kapanışı

Bu kurs bir soruyu on üç kez sordu: bir sınama kaç aday nedeni eliyor. Her derste üç sayı yan yana durdu — kâhin, sınamanın verdiği yanıt ve elenen aday neden sayısı. Kursun kuralı buydu: bir sınamanın sayısı verdiği yanıt değil, elediği aday nedendir; kaç adayı elediği yazılmayan sınama ölçülmemiş sayılır.

Aşağıdaki tablo on üç dersin ölçüsünü tek yerde toplar. Boş bırakılan satırlar uydurulmamıştır: her satır yalnız kendi kaynak dersinden yazılır ve o dersler bu payda üretilmedi.

Ders Kâhin Sınama Elenen aday / bedel
Arayüzler ve Adresler 8 aday neden, 8 sınama arayüz sınaması 3 ayrı yanıt en kötü durumda 6 aday kalıyor
Yönlendirme Tablosu aynı 8 aday rota sınaması 3 yanıt en kötü 5 aday; ag-gecidi-yanlis ile rota-eksik ayrılmıyor
Ad Çözümleme aynı 8 aday ad çözümleme 2 yanıt cozulemedi 7 eler, cozuldu yalnız 1 — kursun en büyük yanıt farkı
Bağlantı Noktaları ve Dinleyen Servisler aynı 8 aday dinleyen listesi 2 yanıt beklenen yanıtta yalnız 1 aday; bağlantı denemesi aynı anda 7
Katmanlı Tanı Yöntemi guvenlik-duvari-dusuruyor bağlantı denemesi zaman-asimi 7 elenen, 1 kalan; katmanlı 33, ters 38, açgözlü 10 (ulaşılamaz alt sınır)
Erişilebilirlik Testleri ag-gecidi-yanlis uzak yankı yanit-yok 4 elenen, 4 kalan; yankının yanıt vermesi de 4 adayı ayakta bırakıyor
Paket Yakalama guvenlik-duvari-dusuruyor süzgeçsiz yakalama 14400 satır 6 elenen, 2 kalan; satır başına eleme 0,0004’e karşı bağlantı denemesinde 7,0000
Yaygın Arıza Kalıpları cozumleyici-sessiz ad çözümleme cozulemedi 7 elenen, 1 kalan; aralıklı arıza 84 sn, kayıt 300’de 42/84, 500’de 13/84
Güvenli Kabuk 9 adayda acik-anahtar-yetkisiz ayrıntılı istemci 46 satır, ayrıntılı sunucu günlüğü 3 satır 5 / 7; dinleyen listesi 12 satırda 1; yedi sınamada 2 ayrılamayan öbek
Tünelleme ve Sıçrama Sunucusu 10 adayda hedef-duvar-dusuruyor uçtan uca 7 ayrı yanıt, duraktan hedefe 5 8 / 9; katmanlı sıra 34, uçtan uca önce 28 adım; tünel ağzı 0 ve 72 dolaylı çift
Paket Filtreleme Çerçevesi karar giris-suzme durağında politikayla veriliyor kural listesi 34 satır, açık iz sürme 12 satır 0 / 8; yüklü sayaç 0, sessiz sayaç 6; ulaşılmayan durak 20
Güvenlik Duvarı Kuralları 120 sıradan 40’ı kilitliyor, son küme hepsinde aynı kuru çalışma 6 yanıt, uçtan deneme 4 yanıt 5 / 5, birlikte öbek 0; kuru çalışma 0 kilitlenme önlüyor, atomik yükleme 40
Adres Dönüştürme gerçek kaynak ic-konak-07 dönüştürmeli günlük 1 ayrı yanıt 0, kalan 12; 600. saniyede çözülebilirlik 0,2750

Beş dersin ortak sonucu tek bir örüntüdür. Erişim katmanında çıktının hacmi ile eleme gücü arasında bağ yoktur: kırk altı satırlık ayrıntılı istemci çıktısı beş aday eledi, üç satırlık sunucu günlüğü yedi eledi, otuz dört satırlık kural listesi hiçbirini elemedi ve tek satırlık dönüştürmeli günlük de hiçbirini elemedi. Eleme gücü satırda değil, çıktının kaç ayrı yanıt üretebildiğindedir.

İkinci örüntü aday kümesiyle ilgiliydi. Her derste liste bir aday büyütülüp küçültüldü ve sonuç her seferinde aynı yöne baktı: eleme sayısı sabit kalırken kalan belirsizlik büyüdü. Bu yüzden bu konu boyunca ölçü olarak eleme değil, kalan ve ayrılamayan öbek kullanıldı.

Üçüncü örüntü zamanla ilgiliydi ve en sert biçimini burada aldı. İz sürme kapalıyken düşürülen paketin izi sıfır satırdı; kilitlenmiş yöneticinin okuyacağı günlük makinenin içindeydi; çevrim kaydı altı yüzüncü saniyede kırkta on bire inmişti. Üçünde de kanıt bir ayara bağlıydı ve o ayar arızadan önce açılmış olmalıydı. Kanıt beklemez.

Bu konu boyunca yıkıcı ve kilitleyen komutlar tam biçimde yazılmadı, gerçek anahtar ve parmak izi yazılmadı, adres dönüştürme “şunu açın” biçiminde değil kaç çift açıldığı biçiminde anlatıldı. Bu bir öğretim kısıtı değil, ölçümün kendisiydi: açık yüzey sayılabilir bir niceliktir.

Bir sonraki kurs, Çekirdek Arayüzleri ve İzolasyon, bu kursun bilerek dışında bıraktığı yere girer. Burada bir makinenin tek bir ağ yığını vardı; orada ad alanlarıyla aynı makinede birden çok ağ yığını kurulur ve bu dersteki her arayüz, her yönlendirme tablosu ve her kural zinciri çoğalır. Konteyner ağı, ad alanı ve denetim grubu bu kursta anlatılmadı ve oraya bırakıldı. Aynı soru orada da sorulacak: bir sınama kaç aday nedeni eliyor. Yanıtı zorlaştıran şey, aday kümesinin artık tek bir makinenin içinde bile birden çok kopyaya bölünmüş olmasıdır.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat