İçeriğe geç
academia.sh

Ders 02 / 18

Alan Adı ve Kayıt Sorgulama

Kaydın kanıt gücünü ölçmek: 20 adayda dört kayıt ölçütünün isabetinin %100 ile %25 arasında değişmesi, güçlü üç ölçütün 10 adayı ayırıp 8 kanıtı sıfır yanlış pozitifle yakalaması, zayıf dördüncü ölçütün 0 yeni kanıt getirip isabeti %80'den %62'ye düşürmesi, sessiz kalan 10 adayın %60'ının yanlış pozitif ama birinin gerçek varlık olması ve önbellek yolunun 0 kayıt bırakıp 1 kanıt kaçırarak 2 yanlış pozitif eklemesi.

İçindekiler

Önceki ders yirmi adayı dokuz kanıt, beş ipucu ve altı yanlış pozitife ayırdı — ama bu ayrımı yapan şey dışarıdan gelen bir hakemdi: kapsam sahibinin onayladığı envanter. Gerçek bir değerlendirmede o envanter çıktıdır, girdi değil. Bu ders hakemsiz bir ayrım dener: adayların adları sorgulanır ve dönen kayıtların kanıt gücü ölçülür.

Kayıt türlerinin ne işe yaradığı ve nasıl yönetildiği Sunucu, Ağ ve Sertleştirme kursunda ele alındı. Burada ölçülen şey farklıdır: bir kayıt bir iddia taşır ve iddianın değeri, o kaydı kimin yazabildiğine bağlıdır. Bazı kayıtları yalnız adı denetleyen taraf oluşturabilir; bazıları adı barındıran üçüncü tarafın işidir ve sahiplik hakkında hiçbir şey söylemez.

Kayıt Bir İddiadır, Kanıt Değildir

KS4: her aday için dört bilgi tutulur — hakemin verdiği gerçek sınıf, tescil kaydında kurum adının görünüp görünmediği, yalnız adı denetleyen tarafın yazabileceği doğrulama kaydının var olup olmadığı ve adın çözümlendiği adres bloğu. KS5: bir ölçüt, adayı kanıt sayan bir kuraldır; iki sayıyla anılır — isabet (tetiklediği adayların kaçı gerçekten kanıt) ve kapsama (bütün kanıtların kaçını yakalıyor). KS6: önbellekten gelen yanıt hedefte hiçbir kayıt bırakmaz ama eskimiş olabilir; yetkili sunucuya doğrudan sorulan yanıt tazedir ve her sorgu bir kayıt bırakır.

Bu sorgulama yetkilendirilmiş bir değerlendirmenin parçasıdır ve yalnız kapsam tanımındaki adlarla sınırlıdır.

// kesif/kayit.mjs — 01'in yirmi adayi icin kurgu kayit sorgulama sonucu (model): gercek alan
// adi, gercek adres ve gercek tescil kaydi yok. Rastgelelik yok.

// KS4: her satir bir aday icin dort seyi tasir — kapsam sahibinin envanterine gore gercek sinif
// (hakem), tescil kaydinda kurum adinin gorunup gorunmedigi, yalniz adi denetleyen tarafin
// yazabilecegi dogrulama kaydinin var olup olmadigi ve adin cozumlendigi adres blogu.
// Blok A kuruma ayrilmis, B ortak barindirma, C ucuncu taraf, "-" cozumlenmiyor demektir.
// "bolge" adin yanitini kimin verdigini, "eski" ise onbellekteki eskimis blok degerini soyler.
export const ADAY = `
  abone-portali          kanit    1 1 A kurum -
  saha-uygulamasi        kanit    1 1 A kurum -
  sube-vpn-ucu           kanit    1 0 A kurum -
  toplayici-ag-gecidi    kanit    0 0 A kurum C
  rapor-ucu              kanit    1 1 A kurum -
  test-portali           kanit    0 0 C kurum -
  ortak-arayuzu          kanit    1 0 B kurum -
  is-emri-ucu            kanit    1 1 A kurum -
  sayac-guncelleme-ucu   kanit    0 1 A kurum -
  eski-abone-portali     ipucu    1 0 C kurum -
  pazarlama-sayfasi      ipucu    0 0 C kurum -
  bulut-depolama-kovasi  ipucu    0 0 C dis   -
  kimlik-saglayici-ucu   ipucu    0 1 C dis   -
  egitim-ortami          ipucu    0 0 B kurum -
  odeme-saglayici-ucu    yanlisP  0 0 C dis   -
  eski-saha-uygulamasi   yanlisP  0 0 B dis   -
  yedek-alan-adi         yanlisP  0 0 - dis   -
  bayi-portali           yanlisP  0 0 B dis   -
  destek-portali         yanlisP  0 0 C dis   A
  eski-rapor-ucu         yanlisP  0 0 - kurum A`
  .trim().split("\n").map((r) => {
    const [ad, sinif, tescil, sahiplik, blok, bolge, eski] = r.trim().split(/\s+/);
    return { ad, sinif, tescil: +tescil, sahiplik: +sahiplik, blok, bolge, eski };
  });

// KS5: bir kural, adayi kanit sayan bir olcuttur. Isabet = tetiklenen adaylarin kaci gercekten
// kanit; kapsama = butun kanitlarin kaci bu kuralla bulunuyor.
export const KURAL = [
  { ad: "sahiplik kaydi", f: (a, b) => a.sahiplik === 1 },
  { ad: "tescil kaydi", f: (a, b) => a.tescil === 1 },
  { ad: "kuruma ayrilmis blok", f: (a, b) => b === "A" },
  { ad: "ortak barindirma blogu", f: (a, b) => b === "B" },
];

// KS6: onbellekten gelen yanit hedefte kayit birakmaz ama eskimis olabilir; yetkili sunucuya
// dogrudan sorulan yanit tazedir ve kurum bolgesindeki her ad icin iki kayit birakir.
export const blokOf = (a, yol) => (yol === "onbellek" && a.eski !== "-" ? a.eski : a.blok);
export const KANIT = ADAY.filter((a) => a.sinif === "kanit").length;
// kesif/sahiplik.mjs — hangi kayit sahipligi kanitliyor, hangisi yalniz ipucu birakiyor.
import { ADAY, KURAL, KANIT, blokOf } from "./kayit.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 say = (l, s) => l.filter((a) => a.sinif === s).length;
const oran = (l) => l.length ? ((say(l, "kanit") / l.length) * 100).toFixed(0) : "-";

console.log(`${ADAY.length} aday, ${KANIT} kanit, ${say(ADAY, "ipucu")} ipucu, ` +
  `${say(ADAY, "yanlisP")} yanlis pozitif; ${KURAL.length} kayit olcutu, aday basina 3 sorgu`);

const A = [-24, 7, 7, 7, 9, 9, 10];
console.log("\n1. kayit olcutu basina isabet ve kapsama");
yaz(A, "olcut", "aday", "kanit", "ipucu", "yanlisP", "isabet %", "kapsama %");
for (const k of KURAL) {
  const l = ADAY.filter((a) => k.f(a, a.blok));
  yaz(A, k.ad, l.length, say(l, "kanit"), say(l, "ipucu"), say(l, "yanlisP"), oran(l),
    ((say(l, "kanit") / KANIT) * 100).toFixed(1));
}

const B = [-32, 7, 7, 7, 9, 9, 10];
console.log("\n2. olcutler birlestikce (guclu olcutten zayifa)");
yaz(B, "kume", "aday", "kanit", "ipucu", "yanlisP", "isabet %", "kapsama %");
const kume = [];
for (const k of KURAL) {
  kume.push(k);
  const l = ADAY.filter((a) => kume.some((x) => x.f(a, a.blok)));
  yaz(B, `+ ${k.ad}`, l.length, say(l, "kanit"), say(l, "ipucu"), say(l, "yanlisP"), oran(l),
    ((say(l, "kanit") / KANIT) * 100).toFixed(1));
}

const guclu = KURAL.slice(0, 3);
const tetiklenen = ADAY.filter((a) => guclu.some((k) => k.f(a, a.blok)));
const sessiz = ADAY.filter((a) => !guclu.some((k) => k.f(a, a.blok)));
const C = [-32, 7, 7, 7, 9, 10];
console.log("\n3. ilk uc olcutun ayirdigi iki liste");
yaz(C, "liste", "aday", "kanit", "ipucu", "yanlisP", "yanlisP %");
for (const [ad, l] of [["tetiklenen", tetiklenen], ["hicbir olcut tetiklenmeyen", sessiz]])
  yaz(C, ad, l.length, say(l, "kanit"), say(l, "ipucu"), say(l, "yanlisP"),
    ((say(l, "yanlisP") / l.length) * 100).toFixed(1));
console.log("tetiklenmeyen kanit: " +
  sessiz.filter((a) => a.sinif === "kanit").map((a) => a.ad).join(", "));

const D = [-26, 9, 7, 9, 8, 8, 10];
console.log("\n4. iki sorgulama yolu: iz ile kesinlik");
yaz(D, "yol", "hedefte", "uyari", "eskimis", "kanit", "yanlisP", "isabet %");
for (const yol of ["onbellek", "dogrudan"]) {
  const l = ADAY.filter((a) => guclu.some((k) => k.f(a, blokOf(a, yol))));
  const kayit = yol === "dogrudan"
    ? ADAY.filter((a) => a.bolge === "kurum").length * 2 : 0;
  const eskimis = yol === "onbellek" ? ADAY.filter((a) => a.eski !== "-").length : 0;
  yaz(D, yol, kayit, 0, eskimis, say(l, "kanit"), say(l, "yanlisP"), oran(l));
}
const oy = ADAY.filter((a) => guclu.some((k) => k.f(a, blokOf(a, "onbellek"))));
console.log(`onbellek yolunda kacan kanit: ` +
  tetiklenen.filter((a) => !oy.includes(a)).map((a) => a.ad).join(", ") +
  `; eklenen yanlis pozitif: ` +
  oy.filter((a) => !tetiklenen.includes(a)).map((a) => a.ad).join(", "));
20 aday, 9 kanit, 5 ipucu, 6 yanlis pozitif; 4 kayit olcutu, aday basina 3 sorgu

1. kayit olcutu basina isabet ve kapsama
olcut                      aday  kanit  ipucu  yanlisP isabet % kapsama %
sahiplik kaydi                6      5      1        0       83      55.6
tescil kaydi                  7      6      1        0       86      66.7
kuruma ayrilmis blok          7      7      0        0      100      77.8
ortak barindirma blogu        4      1      1        2       25      11.1

2. olcutler birlestikce (guclu olcutten zayifa)
kume                               aday  kanit  ipucu  yanlisP isabet % kapsama %
+ sahiplik kaydi                      6      5      1        0       83      55.6
+ tescil kaydi                        9      7      2        0       78      77.8
+ kuruma ayrilmis blok               10      8      2        0       80      88.9
+ ortak barindirma blogu             13      8      3        2       62      88.9

3. ilk uc olcutun ayirdigi iki liste
liste                              aday  kanit  ipucu  yanlisP yanlisP %
tetiklenen                           10      8      2        0       0.0
hicbir olcut tetiklenmeyen           10      1      3        6      60.0
tetiklenmeyen kanit: test-portali

4. iki sorgulama yolu: iz ile kesinlik
yol                         hedefte  uyari  eskimis   kanit yanlisP  isabet %
onbellek                          0      0        3       7       2        64
dogrudan                         26      0        0       8       0        80
onbellek yolunda kacan kanit: toplayici-ag-gecidi; eklenen yanlis pozitif: destek-portali, eski-rapor-ucu

Sayılar ölçüm sınıfındadır; girdileri KS4–KS6’dır.

Dört Ölçüt, Dört Ayrı İsabet

Birinci tablo dört ölçütü aynı yirmi aday üzerinde koşturur ve isabetleri %100 ile %25 arasında dağılır. Bu aralık dersin ana bulgusudur: “kayıt sorgulaması yapıldı” cümlesi hiçbir şey söylemez, çünkü hangi kaydın hangi iddiayı taşıdığı ölçütten ölçüte değişir.

Kuruma ayrılmış adres bloğu ölçütü yedi adayı tetikler ve yedisi de kanıttır — %100 isabet. Nedeni yapısaldır: bir adres bloğu bir kuruma tahsis edilmişse, o bloğa çözümlenen adın başka bir kuruma ait olması için bloğun sahibinin işbirliği gerekir. Tescil kaydı %86, sahiplik kaydı %83 isabetle onu izler; ikisi de kanıt üretir ama ikisinin de kapsaması yarıdan biraz fazladır.

Dördüncü ölçüt tersini gösterir. Ortak barındırma bloğu dört adayı tetikler; biri kanıt, biri ipucu, ikisi yanlış pozitiftir — %25 isabet. Ortak bir barındırma bloğunda yüzlerce kurumun adı aynı adrese çözümlenir; “aynı adrese çözümleniyor” bilgisi orada sahiplik hakkında neredeyse hiçbir şey söylemez. Aynı biçimdeki iki gözlem — bir ad bir adrese çözümlenir — bloğun cinsine göre kanıt ile gürültü arasında dört kat fark taşır.

Sahiplik kaydı ölçütünün tetiklediği tek ipucu kalemi ayrıca öğreticidir. kimlik-saglayici-ucu üzerinde geçerli bir sahiplik kaydı vardır; kurum o adı denetlediğini kanıtlamıştır. Kalem yine de kanıt değildir, çünkü kayıt adın denetimini kanıtlar, varlığın kime ait olduğunu değil. Ad kurumun, üzerinde çalışan hizmet üçüncü tarafındır.

Birleştirmenin Getirisi Nerede Duruyor

İkinci tablo ölçütleri güçlüden zayıfa doğru birleştirir. İlk üç ölçütün birleşimi 10 adayı tetikler ve içinde 8 kanıt, 2 ipucu, 0 yanlış pozitif vardır: isabet %80, kapsama %88,9. Dördüncü ölçüt eklendiğinde aday 13’e çıkar, kanıt 8’de kalır, yanlış pozitif 0’dan 2’ye yükselir ve isabet %62’ye düşer.

Bu, önceki dersteki eğrinin aynısıdır ve buradaki biçimi daha katıdır: zayıf ölçüt hiçbir yeni kanıt getirmez, yalnız eleme yükü ekler. Kapsama sütunu iki satırda da %88,9’dur. Bir ölçüt kümesine yeni kural eklerken sorulacak soru “daha çok aday buluyor mu” değil, “kapsamayı artırıyor mu” olmalıdır; bu tabloda dördüncü ölçütün kapsamaya katkısı sıfırdır.

Sessiz Kalan On Aday

Üçüncü tablo listenin öteki yarısını gösterir. Güçlü üç ölçütten hiçbiri 10 aday için tetiklenmez ve bu on adayın 6’sı yanlış pozitiftir — %60. Yani kayıt sorgulaması bir eleme aracı olarak gerçekten çalışır: altı yanlış pozitifin altısı da bu sessiz listededir, hiçbiri kanıt listesine sızmamıştır.

Karşılığında bir gerçek varlık kaybedilir. test-portali kuruma aittir, envanterde durur ve hiçbir ölçüt onu tetiklemez: üçüncü tarafta barındırıldığı için özel blokta değildir, tescil kaydında görünmez ve üzerinde sahiplik kaydı yoktur. Kayıt sorgulaması bu adaya “hakkında bir şey söyleyemem” der ve ikili bir eleme kuralı bunu “kuruma ait değil” diye okur.

Sayısal özet şudur: dokuz kanıtın sekizi kayıtla doğrulanabilir (%88,9), biri doğrulanamaz ve sessiz listeye düşer. Sessiz liste atılacak bir liste değil, ayrı bir listedir; içinde oranı %60 olan gürültünün yanında oranı %10 olan gerçek varlık durur.

İz ile Tazelik Arasındaki Takas

Dördüncü tablo bu kursun iz sütununu ikinci kez açar ve ilk kez bir takas gösterir. Sorgular bir ara çözümleyicinin önbelleğinden karşılanırsa hedefte 0 kayıt kalır; hedefin yetkili sunucusuna doğrudan sorulursa kurum bölgesindeki on üç ad için ikişer sorgu, yani 26 kayıt oluşur.

Bedava görünen yol bedava değildir. Önbellekte üç eskimiş yanıt vardır ve sonuç üç yerde bozulur: toplayici-ag-gecidi kanıt olmaktan çıkar (eski yanıt onu üçüncü taraf bloğunda gösterir), destek-portali ile eski-rapor-ucu ise eskimiş kayıtları yüzünden kuruma ayrılmış blokta görünür ve yanlış pozitif olarak kanıt listesine girer. İsabet %80’den %64’e düşer.

İki yol arasındaki seçim bu kursta tekrar tekrar karşılaşılacak biçimi taşır: iz bırakmamak kesinlikten vazgeçmektir. Mavi takım açısından okunuşu da simetriktir — yetkili sunucudaki 26 kayıt hiçbir uyarı üretmez, çünkü ad sorgusu ağın en sıradan olayıdır. Bu adım savunma tarafında görünür ama fark edilmez; fark edilmesi, sorguların hangi adları ve hangi sırayla hedeflediğinin sonradan ilişkilendirilmesine bağlıdır.

Altmış Sorgunun Bedeli

Yirmi adayın her biri üç sorgu gerektirdi: tescil kaydı, adres ve sahiplik kaydı. Toplam 60 sorgu sekiz kanıt üretti — kanıt başına 7,5 sorgu. Önceki dersin doğrulama bedeli kanıt başına 5,00 adımdı; bu ders o bedelin üstüne çıkar ve karşılığında bir şey kazandırır: önceki dersin dokuz kanıtı hakemden okunuyordu, bu dersin sekizi kendi kendini doğruluyor.

Bedelin dağılımı da eşit değildir. Kayıt vermeyen on aday da üç sorguluk payını harcar; sessiz listenin toplam bedeli 30 sorgudur ve karşılığında sıfır kanıt üretir. Doğrulama bütçesinin yarısı, sonucu “bilinmiyor” olan bir listeye gider — ve bu harcama gereksiz değildir, çünkü altı yanlış pozitifi listeden düşüren şey odur.

Kapsam açısından ayrıca ayırt edilmesi gereken bir sınır vardır: yirmi addan yedisi kurumun bölgesi dışındadır. Bu adları sorgulamak halka açık veriyi okumaktır ve kapsam sorunu üretmez; o adlar üzerinde işlem yapmak ise kapsamın dışına çıkmaktır. Sorgulamanın serbest olduğu bir kalem, üzerinde çalışılmasının serbest olduğu bir kalem değildir.

Özet

  • Kayıt bir iddia taşır ve iddianın gücü kaydı kimin yazabildiğine bağlıdır: dört ölçütün isabeti %100, %86, %83 ve %25’tir.
  • Kuruma ayrılmış adres bloğu ölçütü 7 adayın 7’sinde doğrudur; ortak barındırma bloğu 4 adayın yalnız 1’inde — aynı biçimdeki gözlem bloğun cinsine göre dört kat farklı değer taşır.
  • Sahiplik kaydı adın denetimini kanıtlar, varlığın sahipliğini değil: geçerli sahiplik kaydı taşıyan bir aday üçüncü tarafın hizmetidir ve kanıt sayılmaz.
  • Güçlü üç ölçütün birleşimi 10 adayı tetikler, 8 kanıt yakalar ve 0 yanlış pozitif üretir; dördüncü ölçüt 3 aday ve 2 yanlış pozitif ekler, 0 yeni kanıt getirir, isabeti %80’den %62’ye düşürür.
  • Hiçbir ölçütün tetiklenmediği 10 adayın 6’sı yanlış pozitiftir (%60) ama biri gerçek varlıktır; sessiz liste atılacak liste değil, ayrı bir listedir.
  • Önbellek yolu hedefte 0 kayıt bırakır, 3 eskimiş yanıt yüzünden 1 kanıt kaçırır ve 2 yanlış pozitif ekler; doğrudan yol 26 kayıt bırakır, 0 uyarı üretir ve isabeti %80’de tutar.

Sonraki Adım

Buraya kadar aday listesi hazır geldi: yirmi ad önceki dersin halka açık kalemlerinden çıkmıştı ve bu ders yalnız onları sınıflandırdı. Oysa liste kapalı bir küme değildir. Bir kurumun alan adının altında, hiçbir halka açık belgede geçmeyen ve hiçbir sayfada bağlantısı bulunmayan adlar olabilir; onları bulmanın yolu belgeleri okumak değil, ad uzayını taramaktır.

Bu tarama iki yeni sayı üretir. Birincisi kapsamadır: farklı keşif yöntemleri aynı ad uzayında kaç aday çıkarır, kaçında örtüşür, hangisi tek başına yeterlidir. İkincisi bu kursun en dikkat çeken kalemidir: bulunan adların bir kısmı artık var olmayan bir hedefe işaret eder — kaydı duran, karşılığı düşmüş, sahibi belirsiz kalemler. Sonraki ders alt alan ve varlık keşfini bu iki eksende ölçer ve her yöntemin savunmada kaç kayıt bıraktığını sayar.

İ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