Ders 11 / 20
Vekil Sunucular ve Sıçrama Sunucusu
On bağlantı sınıfı dört yerleşimde koşturulur: denetim noktası kurulunca dönemin kaç bağlantısı tek noktadan geçiyor, kaçı noktayı atlıyor, atlama yolları kural değişikliğiyle kapatılınca kaç sınıf kalıyor, noktanın kendi yükü ve düşmesinin kestiği yol ne kadar, hangi iddia noktada kanıtlanabilir hâle geliyor.
İçindekiler
Önceki ders yönetim bölgesini çözülmemiş bir kalem olarak bıraktı: altı bölgeye doğrudan yazılmış, bölütlemenin hiçbir yol kapatmadığı tek bölge. Bu dersin hamlesi o bölgeyi kaldırmak değil, oradan çıkan bağlantıları tek bir noktadan geçirmektir. Aynı hamlenin ters yönü de var: içeriden dışarıya giden bağlantılar da tek bir noktaya toplanabilir.
İkisi ayrı şeyler yapar. İçeriden dışarıya çıkanı toplayan nokta ileri vekildir; dışarıdan ya da yönetim bölgesinden içeriye girenleri toplayan nokta sıçrama sunucusudur. Ortak yanları ölçülebilir: her ikisi de bir bağlantıyı ikiye böler, ortada bir kayıt bırakır ve kendisi yeni bir kalem olur. Ters vekilin yapılandırması ve uygulamaya iletirken kaybettiği bilgi başka bir kursta ölçüldü; buradaki eksen tek bir soru üzerindedir — kaç bağlantı gerçekten o noktadan geçiyor.
- CS13. On bağlantı sınıfı ve dönem sayıları kurgusal bölgesel ölçüm ağına aittir. Gerçek
bağlantı kurulmuyor; ölçülen şey
nodeile kurulan modeldir. - CS14. Atlama nedenleri elle yazıldı ve ikisi kural değişikliğiyle kapatılamaz işaretlendi. Gerçekte hangi atlamanın kapatılabildiği ağın fiziksel düzenine bağlıdır.
- CS15. Nokta yükü, geçen bağlantının iki katı sayıldı: nokta ön ve arka olmak üzere iki bağlantı taşır. Eşzamanlılık ve süre modellenmedi.
- CS16. Noktanın kanıtladığı iddia, önceki derslerin iddia listesinden alındı. Kanıtın neye dayandığı bu kursun dışındadır.
- CS17. Sıçrama sunucusunun eriştiği bölge sayısı, önceki dersteki yönetim bölgesi kural sayısından okundu.
Bağlantı Sınıfları ve Yerleşimler
Model her bağlantı sınıfı için dört şey tutuyor: kaynağı, dönemdeki bağlantı sayısı, doğal olarak hangi denetim noktasına ait olduğu ve varsa noktayı atlama nedeni. Atlama nedeninin boş olmaması o sınıfın nokta kurulsa bile hedefe başka bir yoldan vardığı demektir.
// nokta.mjs — baglanti siniflari ve denetim noktasi yerlesimleri; model, gercek baglanti degil // [ad, kaynak, hedef, donem baglantisi, dogal denetim noktasi, atlama nedeni ('' ise atlamiyor)] export const BAGLANTI = [ ['sube -> dis arayuz', 'sube', 'dis', 184000, 'vekil', ''], ['uygulama -> paket deposu', 'uygulama', 'dis', 90, 'vekil', ''], ['uygulama -> dis olcum servisi', 'uygulama', 'dis', 26400, 'vekil', ''], ['saha terminali -> dis harita', 'saha', 'dis', 5100, 'vekil', 'ucler hucresel baglantidan cikiyor'], ['yedek -> dis depo', 'yedek', 'dis', 12, 'vekil', 'aktarim hacmi icin dogrudan yazildi'], ['her makine -> zaman kaynagi', 'hepsi', 'dis', 43200, 'vekil', 'vekil bu protokolu tasimiyor'], ['yonetim -> makine kabugu', 'yonetim', 'ic', 372, 'sicrama', ''], ['yonetim -> yonetim arayuzu', 'yonetim', 'ic', 860, 'sicrama', ''], ['dagitim otomasyonu -> kabuk', 'yonetim', 'ic', 1860, 'sicrama', 'otomasyon kendi anahtariyla dogrudan baglaniyor'], ['sube -> kabuk (acil yol)', 'sube', 'ic', 26, 'sicrama', 'acil durum kurali kaldirilmadi'], ]; export const YERLESIM = { // hangi denetim noktasi kurulu ve atlama yollari kapali mi yok: { nokta: [], kapali: false }, sicrama: { nokta: ['sicrama'], kapali: false }, ikisi: { nokta: ['vekil', 'sicrama'], kapali: false }, 'ikisi+kapali': { nokta: ['vekil', 'sicrama'], kapali: true }, }; // Kapatilamayan iki atlama: hucresel cikis ile tasinamayan protokol ag kuraliyla kapanmiyor const KAPANMAZ = ['ucler hucresel baglantidan cikiyor', 'vekil bu protokolu tasimiyor']; export const gecer = (b, y) => y.nokta.includes(b[4]) && (b[5] === '' || (y.kapali && !KAPANMAZ.includes(b[5]))); export const atlar = (b, y) => y.nokta.includes(b[4]) && !gecer(b, y); export const TOPLAM = BAGLANTI.reduce((a, b) => a + b[3], 0); export const topla = (l) => l.reduce((a, b) => a + b[3], 0); // Denetim noktasi baglantiyi kayda geciriyor ve ozneyi kendi dogruluyor export const KANITLANAN = ['ozne-kimligi', 'istek-yolu']; export const NOKTA_ERISIMI = { vekil: 1, sicrama: 6 }; // noktanin dogrudan erisebildigi bolge sayisi
Dört yerleşim iki eksende ayrılıyor: hangi noktalar kurulu ve atlama yolları kural değişikliğiyle kapatıldı mı. Kapatma her atlamayı çözmüyor; iki neden kapatılamaz olarak işaretlendi. Saha uçları kurumun ağına hiç girmeden hücresel bağlantı üzerinden dışarıya çıkıyor, dolayısıyla ağ üzerinde yazılacak bir kuralın onlara ulaşacağı bir nokta yok. Zaman kaynağı sorgusu ise vekilin taşıyabildiği bir protokol değil; kural yazılsa bağlantı kurulmaz, iş durur. Bu iki neden bir eksiklik değil, ölçüm girdisidir.
Kaç Bağlantı Gerçekten Geçiyor
// kosum1.mjs — dort yerlesimde noktadan gecen, atlayan ve hic denetlenmeyen baglanti import { BAGLANTI, YERLESIM, TOPLAM, topla, gecer, atlar } from './nokta.mjs'; console.log(`on baglanti sinifi, donemde ${TOPLAM} baglanti\n`); const yuzde = (n) => `%${(n * 100 / TOPLAM).toFixed(1)}`; console.log(`${'yerlesim'.padEnd(13)} ${'gecen sinif'.padStart(11)} ${'gecen baglanti'.padStart(14)} ${'pay'.padStart(6)} ` + `${'atlayan sinif'.padStart(13)} ${'atlayan baglanti'.padStart(16)} ${'denetimsiz'.padStart(10)}`); for (const [ad, y] of Object.entries(YERLESIM)) { const g = BAGLANTI.filter((b) => gecer(b, y)), a = BAGLANTI.filter((b) => atlar(b, y)); const d = BAGLANTI.filter((b) => !gecer(b, y)); console.log(`${ad.padEnd(13)} ${String(g.length).padStart(11)} ${String(topla(g)).padStart(14)} ${yuzde(topla(g)).padStart(6)} ` + `${String(a.length).padStart(13)} ${String(topla(a)).padStart(16)} ${String(topla(d)).padStart(10)}`); } const son = YERLESIM['ikisi+kapali']; console.log('\niki nokta kurulu ve atlama yollari kapatilmisken hala atlayan siniflar:'); for (const b of BAGLANTI.filter((x) => atlar(x, son))) console.log(` ${b[0].padEnd(30)} ${String(b[3]).padStart(6)} ${b[5]}`); console.log('\nkapatma bir kural degisikligiyle cozdugu siniflar:'); for (const b of BAGLANTI.filter((x) => atlar(x, YERLESIM.ikisi) && gecer(x, son))) console.log(` ${b[0].padEnd(30)} ${String(b[3]).padStart(6)} ${b[5]}`);
on baglanti sinifi, donemde 261920 baglanti yerlesim gecen sinif gecen baglanti pay atlayan sinif atlayan baglanti denetimsiz yok 0 0 %0.0 0 0 261920 sicrama 2 1232 %0.5 2 1886 260688 ikisi 5 211722 %80.8 5 50198 50198 ikisi+kapali 8 213620 %81.6 2 48300 48300 iki nokta kurulu ve atlama yollari kapatilmisken hala atlayan siniflar: saha terminali -> dis harita 5100 ucler hucresel baglantidan cikiyor her makine -> zaman kaynagi 43200 vekil bu protokolu tasimiyor kapatma bir kural degisikligiyle cozdugu siniflar: yedek -> dis depo 12 aktarim hacmi icin dogrudan yazildi dagitim otomasyonu -> kabuk 1860 otomasyon kendi anahtariyla dogrudan baglaniyor sube -> kabuk (acil yol) 26 acil durum kurali kaldirilmadi
İlk satır çıkış noktasıdır: hiçbir nokta kurulmadığında dönemin iki yüz altmış bir bin dokuz yüz yirmi bağlantısının tamamı denetimsizdir. Bu satırda atlayan sınıf sıfır yazıyor, çünkü atlanacak bir şey yok — denetim noktası olmayan bir ağda her yol doğrudan yoldur. Sonraki üç satırın hepsi bu sayıdan ne kadarını geri aldığını gösteriyor.
İkinci satır tek başına kurulan sıçrama sunucusunun ölçüsüdür ve şaşırtıcıdır: dönemin binde beşi geçiyor. Sınıf sayısına bakıldığında dördün ikisi geçiyor, hacme bakıldığında bin iki yüz otuz iki bağlantı. Atlayan iki sınıfın biri dağıtım otomasyonudur ve tek başına bin sekiz yüz altmış bağlantı taşır; sıçrama sunucusundan geçen bütün insan oturumlarından fazladır. Sıçrama sunucusu kurulduğunda kimse yalan söylemiyor — yönetim ekibi gerçekten oradan geçiyor. Geçmeyen şey otomasyondur ve otomasyon işin çoğunu yapar.
Üçüncü satır ileri vekili ekliyor ve pay yüzde seksen bire çıkıyor. Buradaki sıçrama, bir sınıfın tek başına dönemin yüzde yetmişini taşımasındandır: şube ağının dışarıya çıkan bağlantısı. Yüzde seksen bir kulağa yüksek geliyor; kalan yüzde on dokuz elli bin bağlantı demektir ve bunların hiçbiri hiçbir yerde kaydedilmiyor.
Bu satırın bir başka okuması daha var. Sınıf sayısına göre beşin beşi geçiyor, beşi atlıyor: yarı yarıya. Hacme göre yüzde seksen bir geçiyor. İki oran aynı kümeden çıkıyor ve birbirini yalanlamıyor; ölçünün hangi birimle alındığı sonucu belirliyor. Denetim kapsamı sınıf sayısıyla raporlandığında düşük, hacimle raporlandığında yüksek görünür. Karar için ikisi de tek başına yetmez: kapsamın dışında kalan sınıflardan biri seyrek çalışıp yönetim kabuğuna bağlanıyorsa, hacimdeki payı küçüklüğü onu önemsiz yapmaz.
Dördüncü satır atlama yollarını kural değişikliğiyle kapatıyor ve pay yüzde seksen bir buçuğa çıkıyor. Bütün emeğin karşılığı yarım puandır. Alttaki iki liste nedeni ayırıyor. Kapatılan üç sınıfın hacmi bin dokuz yüz bağlantıdır ve ikisi tek satırlık düzeltmedir — aylar önce açılmış bir acil durum kuralı, hacim gerekçesiyle doğrudan yazılmış bir yedek akışı. Kapatılamayan iki sınıf kırk sekiz bin üç yüz bağlantı taşıyor ve ikisi de bir kural sorunu değildir: saha uçları ağın üzerinden hiç geçmiyor, zaman kaynağı sorgusunu vekil taşıyamıyor. Denetim noktasının kapsamı, noktanın kendisiyle değil, ağın fiziksel düzeniyle ve protokolün taşınabilirliğiyle sınırlıdır.
Atlayan sınıfların ortak bir özelliği daha var: hiçbiri bir yanlış yapılandırma değildir. Beşi de bir gerekçeyle ve çoğu zaman yazılı bir onayla doğdu — aktarım hacmi, acil erişim ihtiyacı, otomasyonun kendi kimlik bilgisi, uçların bulunduğu yer, protokolün taşınamaması. Denetim noktasının kapsamı bu yüzden kurulum kararıyla belirlenmez; kurulumdan sonra biriken istisnalarla belirlenir ve her istisnanın kendi gerekçesi olduğu için tek tek bakıldığında hiçbiri fazla görünmez. Ölçülebilen tek şey toplamdır.
Noktanın Kendi Yükü
// kosum2.mjs — noktanin kendi yuku, dusmesinin kestigi yol ve kanitlanir hale gelen iddia import { BAGLANTI, YERLESIM, TOPLAM, topla, gecer, atlar, KANITLANAN, NOKTA_ERISIMI } from './nokta.mjs'; const son = YERLESIM['ikisi+kapali']; console.log(`${'nokta'.padEnd(8)} ${'gecen sinif'.padStart(11)} ${'gecen baglanti'.padStart(14)} ${'nokta yuku'.padStart(10)} ` + `${'dusunce kesilen'.padStart(15)} ${'eristigi bolge'.padStart(14)} kanitladigi iddia`); for (const n of ['vekil', 'sicrama']) { const g = BAGLANTI.filter((b) => b[4] === n && gecer(b, son)); console.log(`${n.padEnd(8)} ${String(g.length).padStart(11)} ${String(topla(g)).padStart(14)} ${String(topla(g) * 2).padStart(10)} ` + `${`${g.length} sinif`.padStart(15)} ${String(NOKTA_ERISIMI[n]).padStart(14)} ${KANITLANAN[n === 'vekil' ? 1 : 0]}`); } const kayitli = BAGLANTI.filter((b) => gecer(b, son)), disi = BAGLANTI.filter((b) => !gecer(b, son)); console.log(`\n${'olcu'.padEnd(34)} ${'nokta yokken'.padStart(12)} ${'iki nokta kuruluyken'.padStart(20)}`); for (const [ad, once, sonra] of [ ['kayda gecen baglanti', 0, topla(kayitli)], ['kayitsiz baglanti', TOPLAM, topla(disi)], ['ozne kimligi kanitlanan baglanti', 0, topla(kayitli.filter((b) => b[4] === 'sicrama'))], ['yonetimin dogrudan eristigi bolge', 6, 1], ['tek dususle kesilen baglanti', 0, Math.max(...['vekil', 'sicrama'].map((n) => topla(BAGLANTI.filter((b) => b[4] === n && gecer(b, son)))))], ]) console.log(`${ad.padEnd(34)} ${String(once).padStart(12)} ${String(sonra).padStart(20)}`); console.log(`\natlayan ${topla(BAGLANTI.filter((b) => atlar(b, son)))} baglantinin hicbiri kayda girmiyor; ` + `bu, donemin %${(topla(disi) * 100 / TOPLAM).toFixed(1)} payi`);
nokta gecen sinif gecen baglanti nokta yuku dusunce kesilen eristigi bolge kanitladigi iddia vekil 4 210502 421004 4 sinif 1 istek-yolu sicrama 4 3118 6236 4 sinif 6 ozne-kimligi olcu nokta yokken iki nokta kuruluyken kayda gecen baglanti 0 213620 kayitsiz baglanti 261920 48300 ozne kimligi kanitlanan baglanti 0 3118 yonetimin dogrudan eristigi bolge 6 1 tek dususle kesilen baglanti 0 210502 atlayan 48300 baglantinin hicbiri kayda girmiyor; bu, donemin %18.4 payi
Üst tablo iki noktayı yan yana koyuyor ve ikisinin ölçüsü zıt yönlerde büyük. Vekil iki yüz on bin bağlantı taşıyor ve dört yüz yirmi bir bin bağlantılık bir yük altındadır, ama eriştiği bölge birdir: dış bölge. Sıçrama sunucusu üç bin bağlantı taşıyor, yükü altı bin ikidir ve altı bölgeye erişir. Yük ile değer aynı yerde durmuyor. Bir önceki dersin yönetim bölgesi satırı şimdi tek bir makineye indi; o makine düştüğünde dört sınıf kesilir, ele geçtiğinde altı bölgeye ulaşılır. Yönetimin doğrudan eriştiği bölge altıdan bire indi — kazanç budur ve aynı hamle iki yüz beş kalemi tek bir makinenin arkasına dizdi.
Kanıtlanan iddia sütunu önceki iki dersi kapatıyor. Güvenlik duvarının hiçbir nesli özne kimliğini kanıtlayamıyordu; sıçrama sunucusu kanıtlıyor, çünkü oturumu kendisi açıyor ve özneyi kendi doğruluyor. Karşılığında kanıtın kapsamı üç bin yüz on sekiz bağlantıdır. Dönemin geri kalanında özne kimliği hâlâ kanıtsızdır.
Alt tablonun son iki satırı bedeli veriyor. Denetim noktası kurmadan önce kayıtsız bağlantı sayısı iki yüz altmış bir bindi ve tek düşüşle kesilecek bağlantı sıfırdı; sonra kayıtsız kırk sekiz bine indi ve tek düşüşle kesilecek bağlantı iki yüz on bine çıktı. İki sayı birlikte okunmalıdır: denetim noktası bir görünürlük kazancı ile bir kullanılabilirlik borcunun aynı hamlede alınmasıdır. İkinci bir nokta koymak borcu böler ama kanıtı da böler; artık iki makinede iki ayrı kayıt ve iki ayrı yetkili küme vardır.
Noktanın kendisi de yeni bir yüzeydir ve iki ayrı biçimde. Birincisi kaleme dönüşmesidir: sıçrama sunucusu altı bölgeye erişen bir makinedir ve bu erişimi kural olarak taşır; önceki dersteki yönetim bölgesi satırı şimdi tek bir makinenin yetkili anahtar listesidir. İkincisi bağlantının ikiye bölünmesidir. Nokta yükü sütunundaki dört yüz yirmi bir bin sayısı yalnız bir başarım kalemi değil: her bağlantı için ortada, iki ucu da açık gören bir yer vardır. Şifreli akışın bu noktada sonlandırılması ilk derste ölçülen kazancın koşuludur ve aynı hamle, akışın açık göründüğü tek yeri de yaratır.
Kırk sekiz bin bağlantının kayda hiç girmemesi bu dersin kapanmayan kalemidir. Bunlar hatalı yapılandırmadan değil, ağın kendisinden geçmemekten doğuyor. Denetim noktası ölçülürken sorulacak soru “kuruldu mu” değil, “dönemin yüzde kaçı gerçekten geçti” olmalıdır; ilk sorunun cevabı her iki yerleşimde de aynıdır.
Bu iki dersin kalemleri birlikte okunduğunda bir sıralama çıkıyor. Bölütleme yolu kapatır ve kapattığı yol sayılabilir; denetim noktası yolu kapatmaz, tek bir yere toplar ve topladığı yerde bir kayıt üretir. İkisi birbirinin yerine geçmez. Yönetim bölgesinin altı bölgeye yazılmış kuralı bölütlemeyle kapanmıyordu; sıçrama sunucusu o kuralı kapatmıyor, tek bir makinenin arkasına diziyor. Kapanan yol sayısı değişmedi, kanıtlanan iddia sayısı arttı ve yeni bir tek nokta doğdu. Ölçüm üç sütunu birden yazmadıkça bu hamlenin iyi mi kötü mü olduğu söylenemez.
Özet
- Tek başına sıçrama sunucusu dönemin yalnız %0,5’ini geçiriyor: 4 sınıfın 2’si geçiyor, atlayan dağıtım otomasyonu tek başına 1.860 bağlantı taşıyor — bütün insan oturumlarından fazla.
- İleri vekil eklenince pay %80,8’e çıkıyor; kalan %19,2 elli bin bağlantıdır ve hiçbiri kayda girmiyor.
- Atlama yollarını kural değişikliğiyle kapatmak payı yalnız %81,6’ya taşıyor: kapatılan 3 sınıf 1.898 bağlantı, kapatılamayan 2 sınıf 48.300 bağlantı. Kapatılamayanlar bir kural sorunu değil — saha uçları ağın üzerinden geçmiyor, zaman kaynağı sorgusunu vekil taşımıyor.
- Yük ile değer aynı yerde durmuyor: vekil 210.502 bağlantı taşıyıp 1 bölgeye erişiyor, sıçrama sunucusu 3.118 bağlantı taşıyıp 6 bölgeye erişiyor.
- Nokta özne kimliğini kanıtlanabilir kılıyor ama yalnız 3.118 bağlantı için. Bedeli iki sayıdır: yönetimin doğrudan eriştiği bölge 6’dan 1’e inerken tek düşüşle kesilecek bağlantı 0’dan 210.502’ye çıkıyor.
Sonraki Adım
Bu dersin bütün kazancı bir kayıtta toplandı: iki yüz on üç bin bağlantı artık bir yere yazılıyor. Yazılmak görmek değildir. Kayıt tutmak, kaydın içindeki bir bağlantının hangi sınıfa girdiğini söylemez; dönemin iki yüz altmış bin satırında hangisinin bakılmaya değer olduğu hâlâ sorulmadı. Sonraki dersin sorusu aynı olay kümesinde üç sayıyı çıkarır: kaç olay yakalanıyor, yakalananların kaçının aslında bir karşılığı yok ve tespitten önlemeye geçildiğinde — yani kayıt tutmak yerine bağlantı kesilmeye başlandığında — kaç meşru bağlantı kesiliyor.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.