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.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
HTTP/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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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?
- Evet. Üç sürüm aynı start-line ve header byte’larını gönderir.
- 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
- Content anlamı eşleşir; H2/H3 wire capture yapılmış sayılmaz.
- 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