Hacker DirectoryHacker Directory
Öğrenmeye devam et
ENHTML kaydet ↓

WEB / WEB-08.04

Aynı request’in üç transport görünümü

Aynı method, target ve content farklı version’larda nasıl taşınır? Semantics’i wire format’tan ayıran üç eşdeğer görünümü birlikte oku.

CORE · RED · BLUE · ARTIFACT · PRACTICE

1. Core · Mekanizma

Hareket olmadan bütün senaryoları oku

HTTP/1.1

  1. Ortak intent

    Duru aynı GET target ve Accept seçimini kullanır; bu branch ayrı bir exchange’dir.

    Client / Duru
    GET /tea?view=plain; #details local
    Atlas Application
    Request absent
    Local version mapping
    Format not selected
  2. Local mapping

    Client, GET /tea?view=plain request-line’ını, Host: library.atlas.example ve Accept: text/plain alanlarını hazırlar. Scheme verilen HTTPS connection context’inden gelir; #details request-line’a girmez.

    Client / Duru
    GET /tea?view=plain hazır; Accept text/plain; response bekleniyor
    Atlas Application
    Request absent
    Local version mapping
    request-line + Host; HTTPS context
  3. Request ulaştı

    Atlas tamamlanmış request’in ortak semantic alanlarını alır; response henüz hazırlanmamıştır.

    Client / Duru
    GET /tea?view=plain hazır; Accept text/plain; response bekleniyor
    Atlas Application
    GET received; target=/tea?view=plain
    Local version mapping
    request-line + Host; HTTPS context
  4. Representation seç

    Atlas aynı public text/plain representation’ı seçer; Çay dört UTF-8 byte olarak hazırdır.

    Client / Duru
    Waiting response
    Atlas Application
    200 ready; Çay=4 bytes
    Local version mapping
    request-line + Host; HTTPS context
  5. Response ulaştı

    Tamamlanmış response Duru’ya ulaşır; semantic status 200 ve content bütünlüğü birlikte gösterilir.

    Client / Duru
    200 received; Çay=4 bytes
    Atlas Application
    200 ready; Çay=4 bytes
    Local version mapping
    request-line + Host; HTTPS context
  6. Eşdeğerliği sınırla

    Duru ortak alanları karşılaştırır; compression bytes ve negotiation bu kartlardan ölçülmez.

    Client / Duru
    Semantic match; wire bytes unmeasured
    Atlas Application
    Exchange complete
    Local version mapping
    request-line + Host; HTTPS context

HTTP/2

  1. Ortak intent

    Duru aynı GET target ve Accept seçimini kullanır; bu branch ayrı bir exchange’dir.

    Client / Duru
    GET /tea?view=plain; #details local
    Atlas Application
    Request absent
    Local version mapping
    Format not selected
  2. Local mapping

    HTTP/2 için :method GET, :scheme https, :authority library.atlas.example, :path /tea?view=plain ve accept text/plain eşlenir. Stream 1 ve kullanılabilir HPACK context verilmiştir; bu kart encoded field bytes üretmez.

    Client / Duru
    GET /tea?view=plain hazır; Accept text/plain; response bekleniyor
    Atlas Application
    Request absent
    Local version mapping
    :method/:scheme/:authority/:path; stream1
  3. Request ulaştı

    Atlas tamamlanmış request’in ortak semantic alanlarını alır; response henüz hazırlanmamıştır.

    Client / Duru
    GET /tea?view=plain hazır; Accept text/plain; response bekleniyor
    Atlas Application
    GET received; target=/tea?view=plain
    Local version mapping
    :method/:scheme/:authority/:path; stream1
  4. Representation seç

    Atlas aynı public text/plain representation’ı seçer; Çay dört UTF-8 byte olarak hazırdır.

    Client / Duru
    Waiting response
    Atlas Application
    200 ready; Çay=4 bytes
    Local version mapping
    :method/:scheme/:authority/:path; stream1
  5. Response ulaştı

    Tamamlanmış response Duru’ya ulaşır; semantic status 200 ve content bütünlüğü birlikte gösterilir.

    Client / Duru
    200 received; Çay=4 bytes
    Atlas Application
    200 ready; Çay=4 bytes
    Local version mapping
    :method/:scheme/:authority/:path; stream1
  6. Eşdeğerliği sınırla

    Duru ortak alanları karşılaştırır; compression bytes ve negotiation bu kartlardan ölçülmez.

    Client / Duru
    Semantic match; wire bytes unmeasured
    Atlas Application
    Exchange complete
    Local version mapping
    :method/:scheme/:authority/:path; stream1

HTTP/3

  1. Ortak intent

    Duru aynı GET target ve Accept seçimini kullanır; bu branch ayrı bir exchange’dir.

    Client / Duru
    GET /tea?view=plain; #details local
    Atlas Application
    Request absent
    Local version mapping
    Format not selected
  2. Local mapping

    HTTP/3 için :method GET, :scheme https, :authority library.atlas.example, :path /tea?view=plain ve accept text/plain eşlenir. Stream 0 ve kullanılabilir QPACK context verilmiştir; bu kart encoded field bytes üretmez.

    Client / Duru
    GET /tea?view=plain hazır; Accept text/plain; response bekleniyor
    Atlas Application
    Request absent
    Local version mapping
    :method/:scheme/:authority/:path; stream0
  3. Request ulaştı

    Atlas tamamlanmış request’in ortak semantic alanlarını alır; response henüz hazırlanmamıştır.

    Client / Duru
    GET /tea?view=plain hazır; Accept text/plain; response bekleniyor
    Atlas Application
    GET received; target=/tea?view=plain
    Local version mapping
    :method/:scheme/:authority/:path; stream0
  4. Representation seç

    Atlas aynı public text/plain representation’ı seçer; Çay dört UTF-8 byte olarak hazırdır.

    Client / Duru
    Waiting response
    Atlas Application
    200 ready; Çay=4 bytes
    Local version mapping
    :method/:scheme/:authority/:path; stream0
  5. Response ulaştı

    Tamamlanmış response Duru’ya ulaşır; semantic status 200 ve content bütünlüğü birlikte gösterilir.

    Client / Duru
    200 received; Çay=4 bytes
    Atlas Application
    200 ready; Çay=4 bytes
    Local version mapping
    :method/:scheme/:authority/:path; stream0
  6. Eşdeğerliği sınırla

    Duru ortak alanları karşılaştırır; compression bytes ve negotiation bu kartlardan ölçülmez.

    Client / Duru
    Semantic match; wire bytes unmeasured
    Atlas Application
    Exchange complete
    Local version mapping
    :method/:scheme/:authority/:path; stream0

ROLLER · STATE · VERİ AKIŞI

Önce değişmeyen soruyu belirle

Duru library.atlas.example üzerindeki /tea?view=plain resource’unu GET ile ister. Öğretim örneğinde Atlas text/plain representation seçer ve Çay döndürür. HTTP version değişse de bu seçilmiş method, target, request preference, status ve representation data aynı kalabilir. Üç kart bu ortak exchange’in alternatif görünümüdür; bir request’in sırayla üç server’dan geçtiğini anlatmaz.

Browser URL’si https://library.atlas.example/tea?view=plain#details biçimindedir. Query target’a katılır; fragment client context’inde kalır. TLS/server authority ve permission değerlendirmesi taşıma seçiminin yanında ayrı sorulardır. Fixture permission gerektirmeyen bir public note kullanır. Version seçmek note’ye kullanıcı hakkı eklemez.

Satırları control data’ya eşle

HTTP/1.1 direct-origin görünümünde GET /tea?view=plain HTTP/1.1 request-line’ı ve Host field’ı vardır. Scheme bu örnekte HTTPS connection context’inden gelir. Header section CRLF CRLF ile biter. Response status-line 200’ü, Content-Type formatı, Content-Length ise content’in octet sayısını bildirir. Çay üç karakter ama UTF-8’de dört byte’tır; artifact bunu tek bir byte hesabıyla tutar.

HTTP/2 ve HTTP/3 kartlarında :method=GET, :scheme=https, :authority=library.atlas.example ve :path=/tea?view=plain aynı control data’yı taşır. Response :status=200 kullanır; OK reason phrase gönderilmez. Bunlar ordinary header değildir. Normal accept ve content-type alanları ayrıca gösterilir. HTTP/1.1 request-line’ını bir binary HEADERS frame’in içindeki literal satır sanmak yanlış eşlemedir.

Content-Length bu GET response projection’ında yine dört olabilir; HTTP/2–3 frame boundary’sini bu field belirlemez. Message content DATA üzerinden, completion stream/message kuralları üzerinden anlaşılır. Bu kartlar HEADERS veya DATA capture’ı değildir. Frame header, stream offset ve compressed field bytes’i gösterilmeyen bilgi olarak açık bırakılır.

Context eşitliği byte eşitliği değildir

HTTP/2 TCP stream’i üzerinde HTTP stream’leri kullanır ve field sections HPACK context’iyle işlenir. HTTP/3 aynı HTTP intent’i QUIC stream’lerine eşler; QPACK field compression’ın farklı state/dependency kuralları vardır. Aynı decoded field list bir context’te literal, başka context’te önceki entry reference’ı olarak kodlanabilir. Bu nedenle fields eşit diye compressed bytes’in veya total wire size’ın eşit olduğunu hesaplama.

Her version sahnesi ayrı başlar. H1 kartı tamamlanmış metin alışverişini, H2 kartı bir HTTP stream’ine, H3 kartı client-initiated bidirectional QUIC stream’ine eşlenen alışverişi anlatır. Compression state’in kullanılabilir olduğu başlangıç koşuludur. Bu karşılaştırma connection establishment, negotiation, loss veya QPACK beklemesini ölçmez; WEB-08.02–03 bu mekanizmaları ayrıca açıklar.

2. Red · Güven ve etki

Hareket olmadan bütün senaryoları oku

Authority scope

  1. Browser URL target component’lerinden ayrıldı

    Browser URL /tea?view=plain#details taşır. Common request path /tea?view=plain’dir; details fragment client context’inde kalır. Authority library.atlas.example seçilmiş routing context’idir, authenticated user değildir.

    Request projection
    GET /tea?view=plain / fragment excluded
    Trust boundary review
    Comparison bekliyor
    Application authority
    Hüküm yok
  2. Host ve pseudo-header aynı semantic soruya bağlandı

    H1 Host alanı, H2/H3 :authority alanıyla eşleştirilir. Bu projection’lar routing anlamını korur; client’ın seçtiği authority metnini trusted identity’ye çevirmez. Gerçek gateway conversion davranışı burada ölçülmez.

    Request projection
    GET /tea?view=plain / fragment excluded
    Trust boundary review
    Host↔:authority / routing only
    Application authority
    Hüküm yok
  3. Public content protected grant sayılmadı

    Üç projection normal public Çay content’i seçer. 200 status veya doğru header listesi user/resource permission kanıtı değildir. Protected note olsaydı subject, action ve object policy kararı application’a ait olurdu.

    Request projection
    GET /tea?view=plain / fragment excluded
    Trust boundary review
    Host↔:authority / routing only
    Application authority
    Public 200 / protected permission not inferred
  4. Body metadata completion’dan ayrıldı

    Common response status 200 ve contentOctets 4 bildirir. H2/H3 header projection’ının mevcut olması dört content byte’ın alındığını göstermez. Fixture tamamlanmış exchange’i gösterir; ara partial-frame state’lerini göstermez.

    Request projection
    Metadata 200/4 / intermediate states omitted
    Trust boundary review
    Host↔:authority / routing only
    Application authority
    Public 200 / protected permission not inferred
  5. Semantic ve delivery evidence katmanları korundu

    Decoded fields ile application decision ayrı kaydedilir. Aynı normalized fields, timing, omitted fields veya bütün proxy zincirinin eşit olduğunu kanıtlamaz. Transport observation ve completion context kendi evidence’ını ister.

    Request projection
    Metadata 200/4 / intermediate states omitted
    Trust boundary review
    Semantics equal / transport evidence separate
    Application authority
    Public 200 / protected permission not inferred
  6. Trust conclusion ortak alanların dışına taşmadı

    Bu üç authored alternatifte seçilmiş method, target ve content eşittir. Production service parity veya authorization sonucu doğrulanmaz. Format conversion doğru görünse bile request’in permission gate’i atlanamaz.

    Request projection
    Metadata 200/4 / intermediate states omitted
    Trust boundary review
    Semantics equal / transport evidence separate
    Application authority
    Selected semantics equal / authz separate

Codec context

  1. H2 ve H3 field listeleri wire bytes sayılmadı

    H2 requestFieldsProjection ile H3 listesi aynı pseudo-header adlarını taşır. wireCapture false’tur. Decoded field’in ekranda bulunması, onun compressed bytes’ının veya negotiated protocol’ün ölçüldüğünü göstermez.

    Request projection
    H2/H3 decoded fields / wireCapture=false
    Trust boundary review
    Comparison bekliyor
    Application authority
    Hüküm yok
  2. Codec seçimi protocol’e ait context’te kaldı

    HTTP/2 için HPACK, HTTP/3 için QPACK context usable olarak verilmiştir. Aynı :path text’i iki codec’in aynı bytes ürettiğini söylemez. Dynamic reference anlamı decoder’ın direction ve table state’ine bağlıdır.

    Request projection
    H2/H3 decoded fields / wireCapture=false
    Trust boundary review
    H2 HPACK / H3 QPACK / contexts supplied
    Application authority
    Hüküm yok
  3. Compression privacy kararının yerini almadı

    Header compression content encryption değildir. Decoded list’in normalize edilmesi field’ın sensitive olup olmadığını değiştirmez. Credential veya private content handling, transport görünümünden ayrı application koşuludur.

    Request projection
    H2/H3 decoded fields / wireCapture=false
    Trust boundary review
    H2 HPACK / H3 QPACK / contexts supplied
    Application authority
    Compression ≠ encryption or permission
  4. H1 syntax ile diğer field gösterimleri ayrıldı

    H1 request GET start-line, Host ve CRLF delimiters taşır; scheme HTTPS connection context’inden gelir. H2/H3 :scheme açık field’dır. H1 OK reason phrase’in diğer projection’larda olmaması status kaybı değildir.

    Request projection
    H1 text syntax / H2-H3 semantic fields
    Trust boundary review
    H2 HPACK / H3 QPACK / contexts supplied
    Application authority
    Compression ≠ encryption or permission
  5. Doğru decoder olmadan byte comparison yapılmadı

    Üç sürümün aynı meaning’i taşıması, birinin bytes’ını diğer parser’a verme izni değildir. Maintained protocol decoder ve doğru context gerekir. Bu kartlar compression ratio veya latency comparison’ı sağlamaz.

    Request projection
    H1 text syntax / H2-H3 semantic fields
    Trust boundary review
    Use version-specific decoder and context
    Application authority
    Compression ≠ encryption or permission
  6. Wire parity ölçülmeden ilan edilmedi

    Sonuç yalnız ortak semantic alanların eşitliğidir. Gerçek compressed bytes, TLS ve negotiation ölçülmemiştir. Gerçek parity claim’i aynı business girdisi ve policy ile gözlenmiş exchange’leri ayrıca karşılaştırmalıdır.

    Request projection
    H1 text syntax / H2-H3 semantic fields
    Trust boundary review
    Use version-specific decoder and context
    Application authority
    Semantic match / wire parity unmeasured

VARSAYIM · SINIR · KONTROL

Format değişince trust sınırını tekrar sor

Bir gateway decoded request’i farklı protocol’e çevirebilir. Bu dönüşümün görevi method, target ve field meaning’i korumaktır; client’ın kendi seçtiği authority metnini trusted identity’ye dönüştürmek değildir. Public tea örneğinde business karar basittir. Protected note eklendiğinde hangi kullanıcı hangi action’ı yapabilir sorusu hâlâ Application’a aittir.

Yanlış kabul koşulu displayed header list’i hem parser sonucu hem de izin kanıtı saymaktır. Etki bir yanlış routing açıklaması, hatalı audit correlation veya access control incelemesinin atlanması olabilir. Kontrol transport observation, decoded semantic message ve application decision katmanlarını ayrı kaydetmektir. Buradaki inert projection gerçek gateway davranışını kanıtlamaz.

Body completion ile header availability de farklıdır. Duru 200 alanını gördüğünde dört content byte’ın tamamını almış olmayabilir. Fixture response arrival adımında tamamlanmış exchange seçer; aradaki kısmi frame durumlarını çizmez. İnceleme bu sınırı koruyarak completion’ı ayrıca belgelemelidir.

Compression state’i taşınabilir credential sanma

Dynamic table reference’ının anlamı decoder’ın o connection/direction için tuttuğu state’e bağlıdır. Bir araç decoded accept değerini gösterebilir ama reference’ın hangi table’dan çözüldüğünü saklayabilir. HTTP/2 ile HTTP/3 aynı pseudo-header adlarını kullanırken aynı codec’i kullanmaz; birinin bytes’ını diğerinin parser girdisi yapmak bu dersin eşdeğerlik iddiası değildir.

Savunma kontrolü doğru protocol decoder, doğru context ve semantic comparison’dır. Header compression content encryption değildir; request’in sensitive olup olmadığını değiştirmez. İki normalized kayıt eşitse yalnız seçilen ortak alanların eşitliği kanıtlanır. Timing, dropped fields, privacy ve tüm proxy zinciri ayrı evidence gerektirir.

3. Blue · Güvenli geliştirme ve savunma

Hareket olmadan bütün senaryoları oku

Field mapping

  1. Common request field seti seçildi

    Common request GET, https, library.atlas.example, /tea?view=plain ve Accept text/plain taşır. Content boş string’dir. Review bu seçilmiş fields için comparison yapar; her possible header’ın eşitliği iddia edilmez.

    Version ledger
    GET / https / authority / path / accept
    Semantic comparison
    Comparison bekliyor
    Evidence verdict
    Hüküm yok
  2. Request-line ve pseudo-headers eşleştirildi

    H1 GET method’ü :method’e, target :path’e, Host :authority’ye eşleşir. H1 schemeFrom HTTPS context’i :scheme https ile karşılaştırılır. H1 start-line’ın H2/H3’de bulunmaması semantic eksik değildir.

    Version ledger
    GET / https / authority / path / accept
    Semantic comparison
    H1 fields map to H2/H3 pseudo-headers
    Evidence verdict
    Hüküm yok
  3. Status ve content ayrı comparison’a alındı

    Response status her projection’da 200’dür. Content-Type text/plain; charset=utf-8 ve Çay content’i eşleşir. Çay dört UTF-8 byte taşır; bu bütün message veya compressed frame boyutu değildir.

    Version ledger
    Status 200 / media equal / content 4
    Semantic comparison
    H1 fields map to H2/H3 pseudo-headers
    Evidence verdict
    Hüküm yok
  4. Reason phrase ve field meaning karıştırılmadı

    H1 response’taki OK metni H2/H3 :status 200 alanında yer almaz. Numeric status anlamı korunur. Display farkı ile message meaning kaybını ayırmak, normal version farkını failure diye sınıflandırmayı önler.

    Version ledger
    Status 200 / media equal / content 4
    Semantic comparison
    Numeric status equivalent / syntax differs
    Evidence verdict
    Hüküm yok
  5. Mapping hükmü yalnız seçilmiş alanları kapsadı

    Method, authority, target, status, media ve content bu defterde eşleşir. Stream ID H2 için 1, H3 için 0 verilmiştir; aynı protocol field değildir. Runtime selection veya servis parity bu semantic mapping’den çıkarılmaz.

    Version ledger
    Status 200 / media equal / content 4
    Semantic comparison
    Numeric status equivalent / syntax differs
    Evidence verdict
    Selected field mapping consistent
  6. Regression decoder scope’uyla ilişkilendirildi

    H1 parser’ı request-line/Host’u ve connection’ın HTTPS bağlamını; H2/H3 decoder’ı pseudo-fields ile content’i sağlayabilir. Bu kayıtlar aynı exchange ve response yönüyle ilişkilendirilmelidir. Buradaki projection’lar beklenen alanları verir; negotiated version, decoder state ve gerçek completion ölçülmüş değildir.

    Version ledger
    Status 200 / media equal / content 4
    Semantic comparison
    Numeric status equivalent / syntax differs
    Evidence verdict
    Semantic comparison only / wire capture absent

Fragment gap

  1. Fragment selector normal scope’uyla okundu

    Normal XML üç version için fragmentIncluded false bildirir; count sıfırdır. Browser URL’de details fragment’ı bulunur, fakat common path ve decoded :path bu fragment’ı taşımaz.

    Version ledger
    Three normal observations: fragmentIncluded=false
    Semantic comparison
    Comparison bekliyor
    Evidence verdict
    Hüküm yok
  2. Positive control yanlış inclusion’ı seçti

    Ayrı positive XML version 2 için fragmentIncluded true verir ve count bir olur. Bu oracle’ın field koşulunu sınar; gerçek browser’ın fragment gönderdiği iddiası değildir. Authored observation ile protocol ölçümü ayrılır.

    Version ledger
    Three normal observations: fragmentIncluded=false
    Semantic comparison
    Positive fixture: inclusion=true / count 1
    Evidence verdict
    Hüküm yok
  3. Eksik request observation normal row’a çevrilmedi

    Alternatif review’de bir version’ın normalized request observation’ı yoktur. Diğer iki false satırı üçüncü version’ın davranışını kanıtlamaz. Normal fixture’ın üç satırını bu eksik trace’e kopyalamak coverage boşluğunu gizler.

    Version ledger
    One version observation missing
    Semantic comparison
    Positive fixture: inclusion=true / count 1
    Evidence verdict
    Hüküm yok
  4. Zero matches için exact coverage soruldu

    Selector yalnız mevcut true rows’u sayar; missing row count’u artırmaz. Bu yüzden sıfır sonuç üç version’ın da incelendiği anlamına gelmez. Review gate, required versions ve observed fields envanterini ayrıca karşılaştırır.

    Version ledger
    One version observation missing
    Semantic comparison
    Zero count / required-version coverage incomplete
    Evidence verdict
    Hüküm yok
  5. Eksik version için verdict unknown kaldı

    Gözlenen rows kendi scope’unda değerlendirilebilir; eksik version için fragment handling UNKNOWN kalır. Protocol standard’ın beklentisi gerçek uygulamanın gözlemi yerine geçmez. Missing evidence tek başına compliance veya violation kanıtı değildir.

    Version ledger
    One version observation missing
    Semantic comparison
    Zero count / required-version coverage incomplete
    Evidence verdict
    UNKNOWN: missing-version fragment observation
  6. Yeni evidence için minimal kayıt seçildi

    Eksik version için client HTTP stack’inin oluşturduğu normalized target gözlemi ve aynı exchange’i kapsayan receiver kaydı gerekir. Browser URL’sindeki fragment ile gönderilen target’ı ayrı tut. Sensitive query değerleri maskelenebilir; projection’daki false değeri gözlenmemiş request’in yerine geçmez.

    Version ledger
    One version observation missing
    Semantic comparison
    Zero count / required-version coverage incomplete
    Evidence verdict
    Needed: version/target/field coverage

UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA

Eşleştirme defteriyle manual kontrol

Artifact’taki browserUrl, target ve fragment’i ayır. H1 request-line ile H2/H3 :method ve :path değerlerini eşle; Host’u :authority ile, HTTPS context’ini :scheme ile karşılaştır. Response için numeric status, media type ve content byte’larını ayrı işaretle. H1 OK metninin diğer kartlarda yokluğu semantic kayıp değildir.

Çay content’ini UTF-8’e çevirip dört byte olduğunu hesapla. H1 Content-Length değerini buna bağla; H2/H3 kartındaki aynı metadata’yı frame size sanma. Kartlarda HTTP/1.1 connection-specific fields’i H2/H3’e taşımıyoruz. Öğrenci burada geçerli örnekleri okuyarak protocol sınırını öğrenir; malformed input göndermesine gerek yoktur.

Selector normalized request’in fragmentIncluded=true satırını arar. Normal fixture 0, bilinçli inconsistent positive fixture 1 verir. Eksik observation da 0 verdiğinde “fragment hiç taşınmadı” sonucuna geçilmez. Bu alan authored observation’dır; standart access log field’ı değildir.

Kanıtı doğru büyüklükte tut

Manual sonuca “ortak semantic alanlar eşit; wire bytes gösterilmedi” yazmak yararlı ve doğrulanabilir bir ifadedir. Compression ratio, latency veya browser protocol selection’ı bu kartlardan çıkarılamaz. Bir gerçek capture değerlendirilecekse negotiated version, decoder context ve exchange completion beraber alınmalıdır.

Version farklılığı application davranışının her zaman aynı olacağını garanti etmez. Server route, negotiation ve policy implementasyonları ayrı olabilir. Burada üç projection aynı seçilmiş sonuçla authored edilmiştir; bunu servis parity testi gibi sunma. Gerçek parity için aynı business girdisi ve policy ile karşılaştırılmış normal exchange evidence gerekir.

ŞİMDİ VAKAYA UYGULA

Ortak request fields eşleşince hangi trust ve runtime soruları hâlâ açıktır?

Public /tea?view=plain request’i H1 metni ve H2/H3 decoded fields olarak gösterilir. Üçü de Çay content’ini seçer; details fragment target’a girmez. Aynı meaning, aynı compressed bytes veya production policy sonucu demek değildir.

Vakadaki response başka bir HTTP transport üzerinde gelseydi hangi application koşulları yine gerekli olurdu? Stream veya packet completion’ını başarılı note parsing’le eşitleme.

Bağlı vaka dosyasını aç ↗

ÖRNEĞİ BİRLİKTE OKUYALIM

Üç görünüm, tek benign exchange

Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.

Ham kaydı ve alan açıklamalarını oku
{
  "browserUrl": "https://library.atlas.example/tea?view=plain#details",
  "fragment": "details",
  "commonRequest": {
    "method": "GET",
    "scheme": "https",
    "authority": "library.atlas.example",
    "path": "/tea?view=plain",
    "headers": {
      "accept": "text/plain"
    },
    "content": ""
  },
  "commonResponse": {
    "status": 200,
    "contentType": "text/plain; charset=utf-8",
    "content": "Çay",
    "contentOctets": 4
  },
  "http11": {
    "request": "GET /tea?view=plain HTTP/1.1\r\nHost: library.atlas.example\r\nAccept: text/plain\r\n\r\n",
    "schemeFrom": "supplied HTTPS connection context",
    "response": "HTTP/1.1 200 OK\r\nDate: Thu, 08 Oct 2026 00:00:00 GMT\r\nContent-Type: text/plain; charset=utf-8\r\nContent-Length: 4\r\n\r\nÇay"
  },
  "http2": {
    "streamIdSupplied": 1,
    "requestFieldsProjection": {
      ":method": "GET",
      ":scheme": "https",
      ":authority": "library.atlas.example",
      ":path": "/tea?view=plain",
      "accept": "text/plain"
    },
    "responseFieldsProjection": {
      ":status": "200",
      "content-type": "text/plain; charset=utf-8",
      "content-length": "4"
    },
    "content": "Çay",
    "compression": "HPACK context supplied usable",
    "wireCapture": false
  },
  "http3": {
    "requestStreamIdSupplied": 0,
    "requestFieldsProjection": {
      ":method": "GET",
      ":scheme": "https",
      ":authority": "library.atlas.example",
      ":path": "/tea?view=plain",
      "accept": "text/plain"
    },
    "responseFieldsProjection": {
      ":status": "200",
      "content-type": "text/plain; charset=utf-8",
      "content-length": "4"
    },
    "content": "Çay",
    "compression": "QPACK context supplied usable",
    "wireCapture": false
  },
  "selector": {
    "language": "XPath",
    "xml": "<observations><request version=\"1.1\" fragmentIncluded=\"false\"/><request version=\"2\" fragmentIncluded=\"false\"/><request version=\"3\" fragmentIncluded=\"false\"/></observations>",
    "xpath": "count(/observations/request[@fragmentIncluded=\"true\"])",
    "expected": 0,
    "positiveFixtureXml": "<observations><request version=\"2\" fragmentIncluded=\"true\"/></observations>",
    "positiveExpected": 1,
    "scope": "Only authored protocol-decision observations, not product log field names or a live HTTP capture.",
    "missingFieldBehavior": "Missing observation is insufficient evidence; zero matches is not proof of correct runtime behavior."
  }
}
commonRequest
Karşılaştırılacak semantic alanlar; fragment target’a girmez.
http11
Geçerli CRLF metin syntax’ı; scheme connection context’inden supplied.
requestFieldsProjection
Decoded pseudo-header ve normal fields; compressed wire bytes değil.
contentOctets
Çay için dört UTF-8 byte; bütün message veya frame boyutu değil.

Üç authored alternatif exchange; H2/H3 fields semantic projection’dır. TLS, negotiation, gerçek compression bytes ve production permission ölçülmez.

İki yanlış kanı

H2/H3 panelinde GET ve headers görünüyorsa ağda H1 metni taşınır.

Araç binary protocol’ü okunur semantics’e çevirir; start-line ve compressed field bytes aynı şey değildir.

Aynı fields ve body varsa bütün wire bytes aynı olmalıdır.

Framing, stream mapping ve compression state farklıdır; yalnız seçilen semantic alanların eşitliği gösterilir.

SIRA SENDE

Bu hikâyeyi sen çöz.

Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.

HTTP/1.1 Host ile H2/H3 :authority aynı authority’yi taşıyor. Wire byte’ları da eşit mi?

  1. Evet. Üç sürüm aynı start-line ve header byte’larını gönderir.
  2. Hayır. Aynı authority farklı framing/compression ile taşınır.
Gerekçeli cevabı oku

Hayır. Aynı authority farklı framing/compression ile taşınır. — commonRequest authority korunur. H1 text ile H2/H3 alan gösterimleri aynı wire byte’ları değildir.

Çay content’i üç representation’da aynı. Hangi kanıt sınırı korunmalı?

Dersten seçilen artifact alanları; öğretim örneği

commonResponse
{"status":200,"contentType":"text/plain; charset=utf-8","content":"Çay","contentOctets":4}
http2.wireCapture
false
http3.wireCapture
false
  1. Content anlamı eşleşir; H2/H3 wire capture yapılmış sayılmaz.
  2. Eşleşen content bütün protocol implementation’larını doğrular.
Gerekçeli cevabı oku

Content anlamı eşleşir; H2/H3 wire capture yapılmış sayılmaz. — wireCapture=false. 4 octet body karşılaştırması gerçek HPACK, QPACK veya connection çalışması göstermez.

H1’de scheme connection context’inden geliyor; H2/H3’te :scheme alanı var. Request’in anlamı nasıl korunur?

Gerekçeli cevabı oku

H1 GET /tea?view=plain satırında scheme görünmez; verilen HTTPS connection context’inden gelir. H2/H3 gösteriminde :scheme=https aynı semantic context’i taşır. Fragment details hiçbir request path’ine eklenmez. Context’in eşlenmesi wire byte’larının veya security garantilerinin eşit olduğu anlamına gelmez.

□ H1 scheme’in connection context’inden geldiğini belirttim.

□ Fragment’i request path’ine eklemedim.

Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç

Kaynaklar ve kapsam

  • RFC 9110 — HTTP Semantics1.3 Core Semantics · 7.1 Determining the Target Resource · 8.6 Content-Length · 8.8.1 Weak versus Strong · 8.8.3 ETag · 8.8.3.2 Comparison · 8.8.3.3 Example: Entity Tags Varying on Content-Negotiated Resources · 13.1.1 If-Match · 13.1.2 If-None-Match · 13.2.1 When to Evaluate · 15.4.5 304 Not Modified · 15.5.13 412 Precondition Failed
  • RFC 9112 — HTTP/1.12.1 Message Format · 3.2.1 origin-form · 6.3 Message Body Length
  • RFC 9113 — HTTP/24.3 Field Section Compression and Decompression · 8.1 HTTP Message Framing · 8.2.2 Connection-Specific Header Fields · 8.3.1 Request Pseudo-Header Fields · 8.3.2 Response Pseudo-Header Fields
  • RFC 9114 — HTTP/33.1 Discovering an HTTP/3 Endpoint · 4.1 HTTP Message Framing · 4.2.1 Field Compression · 4.3.1 Request Pseudo-Header Fields · 4.3.2 Response Pseudo-Header Fields