Ders 04 / 18
Bağlantı Noktası Tarama
Tarama türlerini iz ekseninde karşılaştırmak: 96 noktalık uzayda 23 açık noktanın türlere göre %78,3 ile %0 arasında kesinlikle ayrılması, tek yönlü sondanın 21 belirsiz aday ve 3 yanlış pozitif üretmesi, kanıt başına izin 3,13 ile 8,00 kayıt arasında değişmesi, aynı türün yavaşlatıldığında aynı 18 kanıtı aynı 72 kayıtla ama 2 yerine 0 uyarıyla üretmesi ve %91,3 kapsamanın iki türün birleşimini gerektirmesi.
İçindekiler
Üç ders sonunda dışarıdan görünen ad listesi hazırdır, ama bir ad bir varlık değildir. Bir kayıt bir hedefe çözümlenir; o hedefte hiçbir bağlantı kabul edilmiyor da olabilir, üç servis birden sunuluyor da. İkisi kayıt düzeyinde aynı görünür. Bu ders farkı sınayan adımı ele alır ve önceki üçünden ayrıldığı nokta şudur: hedefe doğrudan ve çok sayıda istek gider.
Bu yüzden ölçünün ağırlığı da değişir. Buraya kadar biriken iz 136 kayıt ve 5 uyarıydı. Bu derste tek bir tarama türü tek başına o sayının yarısını aşabilir. Karşılaştırma bu eksende yapılır: her tür kaç açık noktayı kesin ayırıyor, kaçını belirsiz bırakıyor, kaçını kaçırıyor ve savunmada kaç kayıt ile kaç uyarı üretiyor. Bu adım yalnız yazılı yetkinin ve kapsam tanımının kapsadığı uçlarda yapılabilir; kapsam dışı bir uca gönderilen tek bir istek bile yetkiyi geçersiz kılar.
Türü Tanımlayan Şey Ayırdığı Durumdur
Tarama türleri burada araç, komut ya da seçenek olarak değil, ayırma gücü olarak anılır. Bir türü belirleyen şey hangi nokta durumunu kesin ayırdığı, hangisini belirsiz bıraktığıdır.
KS10: tarama uzayı uç başına 9 bağlantılı ve 3 bağlantısız noktadır; yaygın nokta listesi uç
başına 4 noktadır. Bir nokta acik, suzulmus ya da kapali durumundadır. KS11: bir tür,
uzayının hangi durumunu kesin ayırdığı ve hangisini belirsiz bıraktığıyla tanımlanır;
belirsiz kalan noktalardan gerçekte açık olmayanlar yanlış pozitiftir. KS12: iz üç kalemdir —
her deneme bir ağ kaydı, bağlantısı tamamlanan her açık nokta bir uygulama kaydı, uyarı ise hız
eşiğinden ve uygulama kaydının varlığından çıkar.
// kesif/nokta.mjs — kurgu sekiz ucun baglanti noktasi durumu ve bes tarama turu (model): gercek // ana makine, gercek adres ve gercek servis yok. Arac adi, komut ve bayrak dizisi de yok: // tarama turleri yalniz "hangi durumu kesin ayirir, hangisini belirsiz birakir" ile tanimlanir. // KS10: tarama uzayi uc basina 9 baglantili (bl) ve 3 baglantisiz (bz) noktadir; yaygin nokta // listesi uc basina 4 noktadir. Asagida yalniz kapali olmayan noktalar yazilir, gerisi kapalidir. // "yanit", baglantisiz noktanin sondaya karsilik verip vermedigini soyler. export const UC = ["abone", "saha", "vpn", "toplayici", "rapor", "ortak", "izleme", "gunluk"]; export const UZAY = { bl: UC.length * 9, bz: UC.length * 3, yaygin: UC.length * 4 }; export const NOKTA = ` abone n1 bl acik 1 - abone n2 bl acik 1 - abone n3 bl acik 0 - abone n4 bl suzulmus 1 - saha n1 bl acik 1 - saha n5 bl acik 0 - saha n6 bl acik 1 - saha b1 bz acik 1 evet vpn n1 bl suzulmus 1 - vpn n6 bl acik 1 - vpn b2 bz acik 0 hayir toplayici n6 bl acik 1 - toplayici n7 bl acik 0 - toplayici n8 bl acik 0 - toplayici b1 bz acik 1 evet rapor n1 bl acik 1 - rapor n6 bl acik 1 - rapor n9 bl suzulmus 0 - ortak n1 bl acik 1 - ortak n3 bl acik 0 - izleme n1 bl acik 1 - izleme n7 bl acik 0 - izleme b1 bz acik 1 evet gunluk n1 bl acik 1 - gunluk n5 bl acik 0 - gunluk b3 bz acik 1 hayir` .trim().split("\n").map((r) => { const [uc, no, prot, durum, yaygin, yanit] = r.trim().split(/\s+/); return { uc, no, prot, durum, yaygin: +yaygin, yanit }; }); export const ACIK = NOKTA.filter((n) => n.durum === "acik"); const acik = (n) => n.durum === "acik"; const yanitli = (n) => n.durum === "acik" && n.yanit === "evet"; // KS11: bir tarama turu, uzayinin hangi durumunu kesin ayirdigi ve hangisini belirsiz biraktigi // ile tanimlanir. "birim" bir denemenin kurgu sure birimi, "uyg" ise baglantinin tamamlanip // uygulama katmaninda kayit birakip birakmadigidir. export const TUR = [ { ad: "tam baglanti", uzay: "bl", birim: 3, uyg: 1, kesin: acik, belirsiz: () => false }, { ad: "yarim baglanti", uzay: "bl", birim: 1, uyg: 0, kesin: acik, belirsiz: () => false }, { ad: "tek yonlu sonda", uzay: "bl", birim: 1, uyg: 0, kesin: () => false, belirsiz: (n) => n.durum !== "kapali" }, { ad: "baglantisiz protokol", uzay: "bz", birim: 5, uyg: 0, kesin: yanitli, belirsiz: (n) => acik(n) && !yanitli(n) }, { ad: "sinirli liste", uzay: "yaygin", birim: 3, uyg: 1, kesin: acik, belirsiz: () => false }, { ad: "yarim baglanti (yavas)", uzay: "bl", birim: 10, uyg: 0, kesin: acik, belirsiz: () => false }, ]; export const kapsamda = (t, n) => t.uzay === "yaygin" ? n.yaygin === 1 : n.prot === t.uzay; // KS12: iz uc kalemdir — her deneme bir ag kaydi, baglantisi tamamlanan her acik nokta bir // uygulama kaydi, uyari ise hiz esiginden ve uygulama kaydinin varligindan cikar. export const olc = (t) => { const gorulen = NOKTA.filter((n) => kapsamda(t, n)); const kesin = gorulen.filter((n) => t.kesin(n)); const belirsiz = gorulen.filter((n) => t.belirsiz(n)); const deneme = UZAY[t.uzay]; const sure = deneme * t.birim; const hiz = deneme / sure; const agKayit = deneme; const uygKayit = t.uyg * kesin.length; const uyari = (hiz > 0.5 ? 2 : hiz > 0.25 ? 1 : 0) + (uygKayit > 0 ? 1 : 0); return { t, deneme, kesin, belirsiz, sure, hiz, agKayit, uygKayit, kayit: agKayit + uygKayit, uyari, yanlisP: belirsiz.filter((n) => n.durum !== "acik").length, kacirilan: ACIK.length - kesin.length - belirsiz.filter(acik).length }; };
// kesif/tarama.mjs — tarama turleri iz ekseninde: kac aday, kac kacan, kac kayit, kac uyari. import { NOKTA, ACIK, TUR, UZAY, olc } from "./nokta.mjs"; const yaz = (g, ...s) => console.log(s.map((v, i) => (g[i] < 0 ? String(v).padEnd(-g[i]) : String(v).padStart(g[i]))).join("")); const O = TUR.map(olc); console.log(`${UZAY.bl} baglantili + ${UZAY.bz} baglantisiz nokta uzayi, ` + `${NOKTA.length} kapali olmayan nokta: ${ACIK.length} acik, ` + `${NOKTA.filter((n) => n.durum === "suzulmus").length} suzulmus`); const A = [-23, 8, 8, 10, 9, 11, 10]; console.log("\n1. tur basina bulunan ve kacan"); yaz(A, "tarama turu", "deneme", "kesin", "belirsiz", "yanlisP", "kacirilan", "kapsama %"); for (const o of O) yaz(A, o.t.ad, o.deneme, o.kesin.length, o.belirsiz.length, o.yanlisP, o.kacirilan, ((o.kesin.length / ACIK.length) * 100).toFixed(1)); const B = [-23, 9, 10, 8, 8, 8, 7]; console.log("\n2. savunmada biraktigi iz"); yaz(B, "tarama turu", "ag kaydi", "uyg kaydi", "kayit", "sure", "hiz", "uyari"); for (const o of O) yaz(B, o.t.ad, o.agKayit, o.uygKayit, o.kayit, o.sure, o.hiz.toFixed(2), o.uyari); const C = [-23, 12, 12, 12]; console.log("\n3. kanit basina bedel"); yaz(C, "tarama turu", "kayit/kesin", "sure/kesin", "uyari/kesin"); for (const o of O) { const k = o.kesin.length; yaz(C, o.t.ad, k ? (o.kayit / k).toFixed(2) : "-", k ? (o.sure / k).toFixed(2) : "-", k ? (o.uyari / k).toFixed(3) : "-"); } const D = [-45, 8, 10, 8, 8, 8]; console.log("\n4. iki turun birlesimi"); yaz(D, "birlesim", "kesin", "kapsama %", "kayit", "sure", "uyari"); const cift = [[1, 3], [4, 3], [5, 3], [0, 3]]; for (const [i, j] of cift) { const k = new Set([...O[i].kesin, ...O[j].kesin]).size; yaz(D, `${O[i].t.ad} + ${O[j].t.ad}`, k, ((k / ACIK.length) * 100).toFixed(1), O[i].kayit + O[j].kayit, O[i].sure + O[j].sure, O[i].uyari + O[j].uyari); } const y = O[5], h = O[1]; console.log(`ayni tur yavaslatildiginda: kesin ${h.kesin.length} -> ${y.kesin.length}, ` + `kayit ${h.kayit} -> ${y.kayit}, sure ${h.sure} -> ${y.sure}, ` + `uyari ${h.uyari} -> ${y.uyari}`);
72 baglantili + 24 baglantisiz nokta uzayi, 26 kapali olmayan nokta: 23 acik, 3 suzulmus 1. tur basina bulunan ve kacan tarama turu deneme kesin belirsiz yanlisP kacirilan kapsama % tam baglanti 72 18 0 0 5 78.3 yarim baglanti 72 18 0 0 5 78.3 tek yonlu sonda 72 0 21 3 5 0.0 baglantisiz protokol 24 3 2 0 18 13.0 sinirli liste 32 15 0 0 8 65.2 yarim baglanti (yavas) 72 18 0 0 5 78.3 2. savunmada biraktigi iz tarama turu ag kaydi uyg kaydi kayit sure hiz uyari tam baglanti 72 18 90 216 0.33 2 yarim baglanti 72 0 72 72 1.00 2 tek yonlu sonda 72 0 72 72 1.00 2 baglantisiz protokol 24 0 24 120 0.20 0 sinirli liste 32 15 47 96 0.33 2 yarim baglanti (yavas) 72 0 72 720 0.10 0 3. kanit basina bedel tarama turu kayit/kesin sure/kesin uyari/kesin tam baglanti 5.00 12.00 0.111 yarim baglanti 4.00 4.00 0.111 tek yonlu sonda - - - baglantisiz protokol 8.00 40.00 0.000 sinirli liste 3.13 6.40 0.133 yarim baglanti (yavas) 4.00 40.00 0.000 4. iki turun birlesimi birlesim kesin kapsama % kayit sure uyari yarim baglanti + baglantisiz protokol 21 91.3 96 192 2 sinirli liste + baglantisiz protokol 15 65.2 71 216 2 yarim baglanti (yavas) + baglantisiz protokol 21 91.3 96 840 0 tam baglanti + baglantisiz protokol 21 91.3 114 336 2 ayni tur yavaslatildiginda: kesin 18 -> 18, kayit 72 -> 72, sure 72 -> 720, uyari 2 -> 0
Sayılar ölçüm sınıfındadır; girdileri KS10–KS12’dir.
Sıfır Kesin, Yirmi Bir Belirsiz
Birinci tablonun en dikkat çekici satırı üçüncüsüdür. Tek yönlü sonda 72 deneme yapar ve hiçbir noktayı kesin ayıramaz: kapsaması %0’dır. Bunun yerine 21 belirsiz aday üretir. Nedeni türün tanımındadır — bu türde yanıt gelmemesi hem açık hem süzülmüş nokta için aynı sonuçtur, ikisi ayrılamaz. Üretilen 21 adayın 3’ü yanlış pozitiftir; süzülmüş üç nokta açık olanlarla aynı listede durur.
Bu satır bu kursun ölçü biriminin en yalın örneğidir. “Tarama yirmi bir açık nokta buldu” cümlesi bu türde yanlıştır: yirmi bir aday bulunmuştur, sıfır kanıt. Aradaki farkı kapatmak için her adayın ayrı bir adımla doğrulanması gerekir ve o adımların izi bu tabloda hiç yoktur.
Öteki uçta tam ve yarım bağlantı türleri 18 noktayı kesin ayırır, hiç belirsiz bırakmaz ve kapsamaları %78,3’tür. Kaçırdıkları beş nokta bağlantısız protokoldedir: bağlantılı uzayı tarayan bir tür, bağlantısız uzaydaki hiçbir noktayı göremez. Sınırlı liste 32 denemeyle 15 nokta bulur (%65,2) ve 8 nokta kaçırır — kaçırdıkları yaygın liste dışındaki noktalardır ve tam olarak onlar bir değerlendirmede en ilgi çekici olanlardır.
Aynı Kanıt, Farklı İz
İkinci tablo iz sütununu açar. Tam ve yarım bağlantı aynı 18 kanıtı üretir, ama tam bağlantı 90 kayıt, yarım bağlantı 72 kayıt bırakır. Fark uygulama kaydındadır: tam bağlantı her açık noktada bağlantıyı tamamlar ve o noktadaki uygulama bir satır yazar. Yarım bağlantı bağlantıyı tamamlamaz; ağ katmanında 72 satır kalır, uygulama katmanında hiç.
Bu ayrım mavi takım açısından iki kaydın değerini de belirler. Ağ kaydı yalnız bir denemenin yapıldığını söyler; uygulama kaydı hangi uçta hangi noktaya kimin bağlandığını, çoğu zaman bir kimlik ya da bir istek satırıyla birlikte söyler. Tarama tarafında “daha az iz” diye seçilen tür, savunma tarafında daha az bilgi taşıyan iz anlamına gelir.
Üçüncü tablo bedeli kanıt başına verir. Sınırlı liste kanıt başına 3,13 kayıt ile en ucuz türdür, ama sekiz noktayı hiç görmez. Bağlantısız protokol taraması kanıt başına 8,00 kayıt ve 40,00 süre birimi harcar; en pahalı türdür ve karşılığında yalnız 3 kanıt verir. Ucuzluk sıralaması ile kapsama sıralaması bu tabloda birbirinin tersidir.
Hız ile İz Arasındaki Denge
İkinci tablonun son satırı bu dersin ana sonucudur. Yarım bağlantı türü on kat yavaşlatıldığında kesin bulunan 18’de kalır, kayıt 72’de kalır, uyarı 2’den 0’a düşer. Süre 72’den 720’ye çıkar.
Yani hız ile iz arasındaki ilişki doğrudan değildir. Yavaşlatmak savunmanın gördüğü kayıt sayısını hiç azaltmaz; azalttığı şey o kayıtların bir eşiği aşıp uyarıya dönüşmesidir. Aynı 72 satır iki koşumda da günlüğe yazılır; birinde bir dakikaya sığdığı için hız kuralını tetikler, ötekinde on kat geniş bir aralığa yayıldığı için tetiklemez.
Savunma tarafının çıkarımı buradan doğrudan okunur: hız eşiğine dayanan bir tespit, yavaş taramayı hiçbir zaman görmez. Yavaş taramayı görmenin yolu, aynı kaynaktan gelen denemelerin geniş bir pencerede biriktirilmesi ve eşiğin hıza değil yayılıma — kaç ayrı uca ve kaç ayrı noktaya dokunulduğuna — bağlanmasıdır. Bu koşumda her iki tür de 8 uca ve 72 noktaya dokunur; yayılım her iki koşumda da aynıdır.
Üçüncü tablonun uyari/kesin sütunu aynı şeyi ters yönden yazar. Yavaş yarım bağlantı ile
bağlantısız protokol taraması 0,000 uyarı üretir; tam ve yarım bağlantı 0,111, sınırlı liste
0,133. En çok uyarı üreten tür, en az deneme yapan türdür — çünkü uyarı deneme sayısına değil,
denemenin yoğunluğuna ve katmanına bağlıdır.
Yirmi Üç Noktanın Yirmi Biri
Dördüncü tablo tek türle yetinilemeyeceğini gösterir. Yirmi üç açık noktanın en yüksek tek tür kapsaması %78,3’tür; %91,3’e çıkmak bağlantılı ve bağlantısız uzayı ayrı ayrı tarayan iki türün birleşimini gerektirir. Kalan iki nokta hiçbir birleşimle bulunmaz: bağlantısız uzayda sondaya karşılık vermeyen iki açık nokta, bu türlerin hiçbirinde kesin sonuca bağlanamaz.
Birleşimlerin bedeli farklıdır. Yarım bağlantı ile bağlantısız protokol 21 kanıt için 96 kayıt, 192 süre ve 2 uyarı harcar. Aynı kanıt tam bağlantıyla alındığında kayıt 114’e, süre 336’ya çıkar; uyarı yine 2’dir. Yavaş yarım bağlantıyla alındığında kayıt yine 96, süre 840 ve uyarı 0’dır. Üç seçenek aynı 21 kanıtı verir; aralarındaki fark yalnız bedelde ve izdedir.
Özet
- Tarama türünü belirleyen şey ayırdığı durumdur: 96 noktalık uzayda 23 açık nokta için kapsamalar %78,3, %78,3, %0, %13,0 ve %65,2’dir.
- Tek yönlü sonda hiçbir noktayı kesin ayıramaz; 21 belirsiz aday üretir ve bunların 3’ü yanlış pozitiftir — bu tür aday üretir, kanıt üretmez.
- Aynı 18 kanıt tam bağlantıyla 90, yarım bağlantıyla 72 kayıt bırakır; fark uygulama katmanındadır ve uygulama kaydı savunma tarafında daha çok bilgi taşır.
- Kanıt başına bedel 3,13 ile 8,00 kayıt arasında değişir; en ucuz tür 8 noktayı hiç görmez, en pahalı tür yalnız 3 kanıt verir.
- Aynı tür on kat yavaşlatıldığında kanıt 18’de, kayıt 72’de kalır ve uyarı 2’den 0’a düşer: yavaşlamak izi silmez, izin eşiği aşmasını engeller.
- Yirmi üç açık noktanın 21’ine (%91,3) ancak iki türün birleşimiyle ulaşılır; iki nokta hiçbir birleşimde kesin sonuca bağlanamaz.
Sonraki Adım
Bu ders bir noktanın açık olduğunu kesin olarak ayırdı: 21 nokta kanıt düzeyinde işaretlendi. Ne var ki bir noktanın açık olması, orada ne çalıştığını söylemez. Yirmi bir açık noktanın her biri şu an yalnız bir sayıdır; arkasındaki yazılımın ne olduğu, hangi sürümü taşıdığı ve o sürümün bilinen bir açıkla ilişkili olup olmadığı hiç sorulmadı.
Bu soruyu soran adım parmak izi çıkarmadır ve yeni bir ölçü getirir: kesinlik. Bir uçtan toplanan imzalar bir sürüm kümesine işaret eder; küme bazen tek elemanlıdır, bazen onlarca sürüm içerir, bazen de hedefin kasten yanıltıcı bıraktığı bir tanıtım dizesi yüzünden yanlış kümedir. Sonraki ders kaç adayın tek bir sürüme indirgenebildiğini, ek sondaların kesinliği ne kadar artırıp izi ne kadar büyüttüğünü ve yanlış sürüm bilgisinin bulgu listesine kaç yanlış pozitif taşıdığını sayar. Konunun kapanışıdır.
İlerlemeni kaydetmek ve not almak için Giriş yap
Notlarım
Not almak için giriş yapmalısın.