WEB / WEB-04.01
TCP connection nasıl kurulur?
Three-way handshake’i flags kadar iki peer’in ayrı state ve sequence bilgisi üzerinden oku.
1. Core · Mekanizma
Hareket olmadan bütün senaryoları oku
Three-way handshake
- Başlangıç: ayrı state’ler
Listener hazır seçilmiştir. Bu inert state trace’i gerçek socket açmaz.
- Client TCP
- CLOSED; client 192.0.2.10:51000
- Server TCP
- LISTEN; server 198.51.100.200:443
- Local active open
Client SYN-SENT oldu; server henüz SYN almadı. Local hazırlık transfer değildir.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- LISTEN; server 198.51.100.200:443
- SYN server’a ulaştı
SYN payload’sız olsa da bir sequence position kullanır. Server artık SYN-RECEIVED, client SYN-SENT.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- SYN-RECEIVED; client next=1001; server ISN=7000
- Local SYN+ACK hazırlığı
Server kendi SYN’i ile client SYN’inin ACK’ini birleştirir. Client state’i değişmedi.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
- SYN+ACK client’a ulaştı
ACK=1001 client SYN’ini kabul eder. Client ESTABLISHED olur; server final ACK’i henüz almadı.
- Client TCP
- ESTABLISHED; received SYN+ACK; server next=7001
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
- Local final ACK hazırlığı
Payload’sız ACK sequence space tüketmez; sonraki client data başlangıcı 1001 kalır.
- Client TCP
- ESTABLISHED; ACK prepared SEQ=1001 ACK=7001
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
- ACK server’a ulaştı
Server kendi SYN’inin ACK’ini aldı ve ESTABLISHED oldu. Bu yalnız transport synchronization’dır.
- Client TCP
- ESTABLISHED; ACK prepared SEQ=1001 ACK=7001
- Server TCP
- ESTABLISHED; received ACK=7001; client next=1001
Final ACK arrival yok
- Başlangıç: ayrı state’ler
Listener hazır seçilmiştir. Bu inert state trace’i gerçek socket açmaz.
- Client TCP
- CLOSED; client 192.0.2.10:51000
- Server TCP
- LISTEN; server 198.51.100.200:443
- Local active open
Client SYN-SENT oldu; server henüz SYN almadı. Local hazırlık transfer değildir.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- LISTEN; server 198.51.100.200:443
- SYN server’a ulaştı
SYN payload’sız olsa da bir sequence position kullanır. Server artık SYN-RECEIVED, client SYN-SENT.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- SYN-RECEIVED; client next=1001; server ISN=7000
- Local SYN+ACK hazırlığı
Server kendi SYN’i ile client SYN’inin ACK’ini birleştirir. Client state’i değişmedi.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
- SYN+ACK client’a ulaştı
ACK=1001 client SYN’ini kabul eder. Client ESTABLISHED olur; server final ACK’i henüz almadı.
- Client TCP
- ESTABLISHED; received SYN+ACK; server next=7001
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
- Local final ACK hazırlığı
Payload’sız ACK sequence space tüketmez; sonraki client data başlangıcı 1001 kalır.
- Client TCP
- ESTABLISHED; ACK prepared SEQ=1001 ACK=7001
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
- Eksik arrival sınırı
Final ACK server arrival’ı gösterilmedi. Server’ın son modellenmiş state’i SYN-RECEIVED; sonraki davranış bilinmiyor.
- Client TCP
- ESTABLISHED; final ACK arrival unobserved; cause unknown
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
SYN+ACK arrival yok
- Başlangıç: ayrı state’ler
Listener hazır seçilmiştir. Bu inert state trace’i gerçek socket açmaz.
- Client TCP
- CLOSED; client 192.0.2.10:51000
- Server TCP
- LISTEN; server 198.51.100.200:443
- Local active open
Client SYN-SENT oldu; server henüz SYN almadı. Local hazırlık transfer değildir.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- LISTEN; server 198.51.100.200:443
- SYN server’a ulaştı
SYN payload’sız olsa da bir sequence position kullanır. Server artık SYN-RECEIVED, client SYN-SENT.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- SYN-RECEIVED; client next=1001; server ISN=7000
- Local SYN+ACK hazırlığı
Server kendi SYN’i ile client SYN’inin ACK’ini birleştirir. Client state’i değişmedi.
- Client TCP
- SYN-SENT; SYN prepared SEQ=1000
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
- Trace burada durur
SYN+ACK arrival yok. State gözlemi gerçek timeout, filtering veya OS error teşhisi değildir.
- Client TCP
- SYN-SENT; SYN+ACK arrival unobserved; cause unknown
- Server TCP
- SYN-RECEIVED; SYN+ACK prepared SEQ=7000 ACK=1001
ROLLER · STATE · VERİ AKIŞI
Transport layer, host içindeki endpoint’i bulur
IP, adreslenmiş host’lar arasında packet taşımaya yardım eder. TCP/UDP ise port alanlarıyla host içindeki transport endpoint’lerini ayırır; protokol de kimliğin parçasıdır. Artifact client 192.0.2.10:51000 ile server 198.51.100.200:443 arasındaki TCP endpoint pair’ini seçer. Aynı sayısal port’taki UDP endpoint’i bu TCP connection değildir.
Port bir prosesin değişmez adı değildir; bir listening endpoint birden çok connection kabul edebilir. Her connection’ın local/remote address ve port bağlamı vardır. Burada DNS, route ve server listener hazır koşuldur; bunları handshake çizgisinden gerçekleşmiş ölçüm gibi çıkarmayız.
TCP connection, iki uçta tutulan durumdur
Connection fiziksel bir hat kurmaz. TCP uçları state, sequence number, acknowledgment ve buffer bilgilerini tutarak ordered reliable byte stream sağlar. Bağlantı yönleri aynı IP path’ını kullanmak zorunda değildir; bu ders aradaki router’ları tekrar çizmek yerine iki transport ucuna odaklanır.
Reliable, karşı uygulamanın veriyi işlediği veya iş kararını onayladığı anlamına gelmez. TCP delivery bilgisi uygulama cevabı, kalıcı kayıt ve authorization sonucundan farklıdır. Bir connection daha sonra hata verebilir; handshake’in tamamlanması sonsuz bağlantı veya sıfır kayıp sözü değildir.
Stream ile message sınırını ayır
TCP application write sınırlarını receiver’ın read çağrılarına aynı biçimde taşımaz. Örnekte NO ve TE01 yazımları N, OTE ve 01 okumalarıyla alınabilir; byte sırası birleştirildiğinde NOTE01’dir. Application protocol message framing’i kendisi tanımlar. Bir TCP segment veya read parçasını tam HTTP message sayma.
UDP datagram sınırını korur fakat kendi başına teslim, sıralama veya duplicate protection sağlamaz. Üst protokol bu özellikleri ekleyebilir: QUIC UDP datagram’ları üzerinde kendi connection ve ordered stream mekanizmasına sahiptir. Bu, QUIC’in TCP three-way handshake kullandığı anlamına gelmez; UDP/QUIC ayrıntıları sonraki konuların kapsamıdır.
Birinci arrival: SYN server’a ulaştı
Başlangıçta client CLOSED, server LISTEN durumundadır. Client local active open ile SYN-SENT’e geçer ve seçilmiş ISN=1000 ile SYN hazırlar. SYN server’a ulaştığında server SYN-RECEIVED olur; client henüz server’dan bir mesaj almamıştır ve SYN-SENT kalır. Tek bir arrival iki uçta eşzamanlı ESTABLISHED üretmez.
SYN, payload olmasa bile sequence space’te bir konum kullanır; server’ın sonraki beklediği client sequence 1001’dir. ISN=1000/7000 bu özgün örneğin sayılarıdır, gerçek ISN üretim algoritması veya güvenlik seçimi değildir. Artifact tam packet encoding’i değil flags/seq/ack özeti verir.
İkinci ve üçüncü arrival: iki uç farklı anda hazır
Server, SYN+ACK ile kendi ISN=7000 değerini ve ACK=1001’i bildirir. Bu geçerli cevap client’a ulaştığında client ESTABLISHED olur, server ise final ACK’i henüz almamışsa SYN-RECEIVED kalır. Client server SYN’ini 7001 ile acknowledge eden ACK hazırlar; bu ACK server’a ulaştığında server ESTABLISHED olur.
Payload’sız final ACK için SEQ=1001, ACK=7001’dir. ACK flag tek başına sequence space tüketmez; client’ın sonraki data byte’ı yine 1001’den başlayabilir. Burada bir active open ve bir passive open ile payload’sız handshake gösterilir. Simultaneous open, SYN içindeki data, options, windows, retransmission timer ve kapanış bu akışın dışında kalır.
Eksik gözlem bir hata nedenini kanıtlamaz
Final ACK arrival’ı bu örneğin trace’inde yoksa son modellenmiş durum client ESTABLISHED, server SYN-RECEIVED’dır. SYN+ACK arrival’ı yoksa client SYN-SENT kalır. Bunlar seçilmiş trace’in sınırlarıdır; packet loss, firewall policy, OS timeout veya server hatası teşhisi değildir. Gerçek TCP daha sonra retransmit, devam veya abort edebilir.
TCP handshake yalnız transport synchronization gösterir. Port 443 seçilmiş olsa bile TLS server identity kontrolü, HTTP request ve application authorization gerçekleşmiş sayılmaz. Animasyon sonunda iki ESTABLISHED etiketi görmek, Atlas Notları’nın başarıyla gösterildiği veya kullanıcının özel veriye yetkili olduğu anlamına gelmez.
2. Red · Güven ve etki
Hareket olmadan bütün senaryoları oku
ACK scope
- SYN state yalnız bir uçtadır
Active open client’ı SYN-SENT yapar; server LISTEN kalır. Yerel SYN hazırlığı server receipt’i değildir; iki state aynı anda güncellenmez.
- Transport evidence
- Client SYN-SENT / server LISTEN
- Completion gate
- Completion gate yok
- Application outcome
- Business sonucu yok
- SYN+ACK sonrasında asimetri var
SYN+ACK arrival client’ı ESTABLISHED yapar, server SYN-RECEIVED kalır. Final ACK server’a ulaşmadan server completion sonucu çıkarılamaz.
- Transport evidence
- Client SYN-SENT / server LISTEN
- Completion gate
- Client established / server pending
- Application outcome
- Business sonucu yok
- Yanlış success gate’i kapatıldı
TCP synchronization application receipt veya database commit değildir. TLS handshake ve HTTP request artifact evidenceBoundary’de not-modeled’dır.
- Transport evidence
- Client SYN-SENT / server LISTEN
- Completion gate
- Client established / server pending
- Application outcome
- Transport complete ≠ business complete
- Sequence ve payload ayrıldı
Client SYN’in sequence değeri 1000’dir. Payload olmasa da SYN bir sequence position tüketir ve sonraki beklenen değer 1001 olur. Server SYN 7000 için sonuç 7001’dir; payload’sız final ACK yeni space tüketmez.
- Transport evidence
- SYN consumes one / ACK zero
- Completion gate
- Client established / server pending
- Application outcome
- Transport complete ≠ business complete
- Application framing ayrı beklenir
NO+TE01 writes ile N+OTE+01 reads NOTE01 olarak birleşir. TCP message boundary korumaz; reconstructed bytes’ın varlığından tam application message çıkarılmaz.
- Transport evidence
- SYN consumes one / ACK zero
- Completion gate
- Stream NOTE01 / framing separate
- Application outcome
- Transport complete ≠ business complete
- Failure nedeni kanıtsız seçilmedi
Normal final ACK bütün synchronization state’lerini tamamlayabilir; business success yine ayrı application result ister. Port 443 veya ESTABLISHED identity vermez.
- Transport evidence
- SYN consumes one / ACK zero
- Completion gate
- Stream NOTE01 / framing separate
- Application outcome
- Transport ayrı / application bilinmiyor
Peer state farkı
- SYN state yalnız bir uçtadır
Active open client’ı SYN-SENT yapar; server LISTEN kalır. Yerel SYN hazırlığı server receipt’i değildir; iki state aynı anda güncellenmez.
- Transport evidence
- Client SYN-SENT / server LISTEN
- Completion gate
- Completion gate yok
- Application outcome
- Business sonucu yok
- SYN+ACK sonrasında asimetri var
SYN+ACK arrival client’ı ESTABLISHED yapar, server SYN-RECEIVED kalır. Final ACK server’a ulaşmadan server completion sonucu çıkarılamaz.
- Transport evidence
- Client SYN-SENT / server LISTEN
- Completion gate
- Client established / server pending
- Application outcome
- Business sonucu yok
- Yanlış success gate’i kapatıldı
final-ack-unobserved, iki mesajın tamamlanmış arrival’ını gösterir; cause değeri not-determined’dır. Bu case’te server handshake’i tamamlanmış olarak etiketlenmez.
- Transport evidence
- Client SYN-SENT / server LISTEN
- Completion gate
- Client established / server pending
- Application outcome
- UNKNOWN: final ACK arrival
- Sequence ve payload ayrıldı
Client SYN’in sequence değeri 1000’dir. Payload olmasa da SYN bir sequence position tüketir ve sonraki beklenen değer 1001 olur. Server SYN 7000 için sonuç 7001’dir; payload’sız final ACK yeni space tüketmez.
- Transport evidence
- SYN consumes one / ACK zero
- Completion gate
- Client established / server pending
- Application outcome
- UNKNOWN: final ACK arrival
- Beklenen ACK henüz varış değildir
Client’ın hazırlayacağı final ACK, seq 1001 ve ack 7001 taşır. Bu dalda server’a varışı gözlenmemiştir; doğru alanları hesaplamak server’ın SYN-RECEIVED state’ini ESTABLISHED yapmaz.
- Transport evidence
- SYN consumes one / ACK zero
- Completion gate
- Client ESTABLISHED / server SYN-RECEIVED
- Application outcome
- UNKNOWN: final ACK arrival
- Failure nedeni kanıtsız seçilmedi
Eksik arrival scan/filter/timer/OS error teşhisi değildir. Timeout veya permanent failure claimed=false kalır; gerekli gözlem final ACK receipt’idir.
- Transport evidence
- SYN consumes one / ACK zero
- Completion gate
- Client ESTABLISHED / server SYN-RECEIVED
- Application outcome
- UNKNOWN: server completion cause
VARSAYIM · SINIR · KONTROL
Kırılan varsayım: ACK işin bittiğini söyler
Transport ACK’i application receipt veya database commit yerine kullanan tasarım, iki farklı kabul aşamasını karıştırır. Gerekli koşul transport kanıtının iş sonucu diye yorumlanmasıdır. Etki yanıltıcı başarı bildirimi veya kaybolmuş işlem bilgisidir.
Kontrol, application protocol’ün kendi başarı/error sonucunu ve gerekirse persistence kanıtını tanımlamasıdır. Bu sahne bu üst katmanları üretmez.
Kırılan varsayım: her read bir message’dır
Write/read sınırlarını aynı kabul eden parser, meşru parçalanmış veya birleşmiş stream’i yanlış yorumlayabilir. Gerekli koşul application framing’in transport parçasına bağlanmasıdır. Sorun network saldırısı olmadan normal I/O davranışında da ortaya çıkar.
Kontrol parser’ın byte biriktirmesi ve protocol framing koşuluna göre message tamamlamasıdır. NOTE01 partition karşılaştırması yalnız inert anlam alıştırmasıdır; açık üreten payload veya reproduction workflow içermez.
Kırılan varsayım: bir uç hazırsa ikisi de hazır
Client’ın SYN+ACK almasını server’ın final ACK almasıyla aynı an saymak state ownership’i kaybettirir. Bunun sonucu eksik trace’ten sahte çift yönlü başarı çıkarılmasıdır. Snapshot’ların her endpoint için ayrı tutulması bu hatayı görünür yapar.
Kontrol arrival’a göre receiver state’ini değiştirmek ve gözlenmeyen adım için nedeni bilinmiyor bırakmaktır. Eksik trace’ten scan sonucu, filtering teşhisi veya gerçek OS hatası üretmeyiz.
3. Blue · Güvenli geliştirme ve savunma
Hareket olmadan bütün senaryoları oku
Sequence hesabı
- Tuple listener’dan ayrıldı
TCP client 192.0.2.10:51000 ↔ server 198.51.100.200:443 tuple’ıdır. serverListenerSelected=true verilmiş koşuldur; accept queue veya kernel socket gözlemi değildir.
- Tuple evidence
- TCP / client51000 / server443
- Sequence / arrival review
- Arithmetic yok
- Layer conclusion
- Review yok
- SYN arithmetic bağımsız hesaplandı
Client SYN 1000 bir position tükettiği için sonraki beklenen değer 1001’dir. Server SYN 7000 için aynı hesap 7001 verir. Bu küçük değerler öğretim içindir; gerçek ISN generation yöntemini sınamaz.
- Tuple evidence
- TCP / client51000 / server443
- Sequence / arrival review
- 1000+1=1001 / 7000+1=7001
- Layer conclusion
- Review yok
- Final ACK alanları okundu
Final ACK, seq 1001 ve ack 7001 taşır. Payload içermez ve sequence space tüketmez; bu yüzden sonraki client data’sı yine 1001’den başlar. ACK’in bulunması data payload’ın bulunduğu anlamına gelmez.
- Tuple evidence
- ACK: seq1001 / ack7001 / zero payload
- Sequence / arrival review
- 1000+1=1001 / 7000+1=7001
- Layer conclusion
- Review yok
- Arrival coverage ayrıca okundu
Üç verilmiş arrivals sonunda her iki endpoint ESTABLISHED olur. State güncellemesi her receiver arrival’ına aittir; bütün handshake tek local işlem değildir.
- Tuple evidence
- ACK: seq1001 / ack7001 / zero payload
- Sequence / arrival review
- Coverage: three supplied arrivals
- Layer conclusion
- Review yok
- Transport aileleri karıştırılmadı
UDP seçilmiş receives datagram boundaries korur ancak delivery/order guarantee vermez. QUIC UDP carrier üzerinde stream soyutlamasıdır; sameAsTCPHandshake=false ve modeled=false olarak kalır.
- Tuple evidence
- ACK: seq1001 / ack7001 / zero payload
- Sequence / arrival review
- Coverage: three supplied arrivals
- Layer conclusion
- TCP bytes / UDP datagrams / QUIC separate
- Completion evidence katmanında bitti
Sequence ve endpoint state hesapları bu inert transition model’inde uyumludur. Gerçek TCP implementation, TLS identity veya application commit kanıtı değildir.
- Tuple evidence
- ACK: seq1001 / ack7001 / zero payload
- Sequence / arrival review
- Coverage: three supplied arrivals
- Layer conclusion
- Sequence hesabı tutarlı / application bilinmiyor
ACK görülmedi
- Tuple listener’dan ayrıldı
TCP client 192.0.2.10:51000 ↔ server 198.51.100.200:443 tuple’ıdır. serverListenerSelected=true verilmiş koşuldur; accept queue veya kernel socket gözlemi değildir.
- Tuple evidence
- TCP / client51000 / server443
- Sequence / arrival review
- Arithmetic yok
- Layer conclusion
- Review yok
- SYN arithmetic bağımsız hesaplandı
Client SYN 1000 bir position tükettiği için sonraki beklenen değer 1001’dir. Server SYN 7000 için aynı hesap 7001 verir. Bu küçük değerler öğretim içindir; gerçek ISN generation yöntemini sınamaz.
- Tuple evidence
- TCP / client51000 / server443
- Sequence / arrival review
- 1000+1=1001 / 7000+1=7001
- Layer conclusion
- Review yok
- Beklenen final ACK alanları okundu
Normal handshake için beklenen final ACK, seq 1001 ve ack 7001 taşır; payload içermez. Bu alanlar karşılaştırma içindir. İki varışlı kayıtta final ACK’in server tarafından alındığına dair gözlem yoktur.
- Tuple evidence
- Beklenen ACK: seq 1001 / ack 7001
- Sequence / arrival review
- 1000+1=1001 / 7000+1=7001
- Layer conclusion
- Review yok
- Arrival coverage ayrıca okundu
Bu case yalnız iki mesajın tamamlanmış arrival’ını gösterir. Client ESTABLISHED, server ise SYN-RECEIVED olarak kalır. Final ACK’in beklenen alanlarını bilmek, o ACK’in server’a ulaştığını gözlemekle aynı şey değildir.
- Tuple evidence
- Beklenen ACK: seq 1001 / ack 7001
- Sequence / arrival review
- Coverage: two arrivals
- Layer conclusion
- Review yok
- Transport aileleri karıştırılmadı
UDP seçilmiş receives datagram boundaries korur ancak delivery/order guarantee vermez. QUIC UDP carrier üzerinde stream soyutlamasıdır; sameAsTCPHandshake=false ve modeled=false olarak kalır.
- Tuple evidence
- Beklenen ACK: seq 1001 / ack 7001
- Sequence / arrival review
- Coverage: two arrivals
- Layer conclusion
- TCP bytes / UDP datagrams / QUIC separate
- Completion evidence katmanında bitti
Server tarafında final ACK’in varışını gösteren endpoint kaydı veya uygun capture noktası gerekir. Eldeki iki varış server’ın son state’ini SYN-RECEIVED olarak bırakır; eksikliğin nedeni, TLS ve application sonucu bilinmiyor.
- Tuple evidence
- Beklenen ACK: seq 1001 / ack 7001
- Sequence / arrival review
- Coverage: two arrivals
- Layer conclusion
- UNKNOWN: final arrival
UYGULAMA · GÜVENLİK KONTROLÜ · DOĞRULAMA
Endpoint pair ve state ownership’i takip et
Başlamadan protocol, client/server address ve port alanlarını yaz. Local active open sadece client state’ini değiştirir. SYN, SYN+ACK ve ACK arrival’larında hangi peer’in yeni bilgi aldığını ve hangi peer’in önceki state’te kaldığını anlat.
Bu gözlem connection tuple’ını listener’dan ayırır. Sahnenin yalnız iki uçlu öğretim soyutlaması olduğunu ve router, socket API, accept queue veya kernel result ölçmediğini belirt.
Sequence arithmetic’i bağımsız hesapla
Client SYN için 1000+1=1001, server SYN için 7000+1=7001 hesapla. Final ACK payload’sız olduğu için SEQ sonraki data başlangıcını tüketmez. Sequence space’i payload byte sayısıyla aynı sanma; SYN bu farkı gösterir.
Artifact normal trace’inin iki son state’ini ve eksik arrival branch’lerinin kalan state’lerini karşılaştır. Seçilen küçük sayılar wraparound, window validation veya gerçek ISN üretimini sınamaz.
Başarı kanıtını katmanına bağla
Byte stream partition örneğinde read parçalarını birleştir; uygulama framing’i olmadan her parçaya message etiketi koyma. UDP karşılaştırmasındaki başarılı iki receive yalnız seçilmiş vaka; guaranteed delivery değildir.
TCP synchronization, TLS identity ve uygulama sonucu için ayrı expectation yaz. Yerel state hesabının doğru olması gerçek bir TCP implementation veya browser network davranışının çalıştırıldığı anlamına gelmez.
Örneğin Node.js ile bir TCP client yazarken connection girişimini başlatmak ile connect event’ini almak ayrı aşamalardır. UI, yalnız başlatma çağrısından sonra ‘bağlandı’ göstermesin; error ve close sonuçlarını da işlesin. connect, socket bağlantısının kurulduğunu bildirir; bu dersin ayrı tuttuğu TLS identity veya application yetkisini doğrulamaz. Normal bağlantı ile başarısız girişimde gösterilen durumları karşılaştırırken bu başarı sınırını koru.
ŞİMDİ VAKAYA UYGULA
ACK ve ESTABLISHED hangi başarı katmanına aittir?
Client SYN için 1000, server SYN için 7000 sequence değerleri seçilmiştir. Sonraki beklenen konumlar 1001 ve 7001 olur. Client ESTABLISHED olsa da final ACK server’da gözlenmediyse server’ın synchronization sonucu bilinmez.
Vakadaki response’u taşıyan bağlantı ile application sonucu hangi sınırlarda ayrılır? Network ve transport bilgisini body parsing veya DOM başarısı yerine kullanma.
Bağlı vaka dosyasını aç ↗ÖRNEĞİ BİRLİKTE OKUYALIM
İki endpoint, üç arrival: TCP state ledger
Bir alan seç; hangi sonucu desteklediğini ve nerede yetersiz kaldığını incele.
Ham kaydı ve alan açıklamalarını oku
{
"tuple": {
"protocol": "TCP",
"client": {
"address": "192.0.2.10",
"port": 51000
},
"server": {
"address": "198.51.100.200",
"port": 443
},
"serverListenerSelected": true
},
"initialSequenceNumbers": {
"client": 1000,
"server": 7000,
"kind": "selected-teaching-values-not-real-ISN-algorithm"
},
"initialStates": {
"client": "CLOSED",
"server": "LISTEN"
},
"activeOpen": {
"localProcess": "client-prepares-SYN",
"clientStateAfter": "SYN-SENT",
"serverStateAfter": "LISTEN"
},
"arrivals": [
{
"from": "client",
"to": "server",
"flags": [
"SYN"
],
"seq": 1000,
"ack": null,
"payloadBytes": 0,
"sequenceSpaceUsed": 1,
"clientStateAfter": "SYN-SENT",
"serverStateAfter": "SYN-RECEIVED",
"receiverNextExpected": 1001
},
{
"from": "server",
"to": "client",
"flags": [
"SYN",
"ACK"
],
"seq": 7000,
"ack": 1001,
"payloadBytes": 0,
"sequenceSpaceUsed": 1,
"clientStateAfter": "ESTABLISHED",
"serverStateAfter": "SYN-RECEIVED",
"receiverNextExpected": 7001
},
{
"from": "client",
"to": "server",
"flags": [
"ACK"
],
"seq": 1001,
"ack": 7001,
"payloadBytes": 0,
"sequenceSpaceUsed": 0,
"clientStateAfter": "ESTABLISHED",
"serverStateAfter": "ESTABLISHED",
"receiverNextExpected": 1001
}
],
"nextClientDataSeq": 1001,
"observationalBranches": [
{
"case": "final-ack-unobserved",
"completedArrivals": 2,
"clientLastModeledState": "ESTABLISHED",
"serverLastModeledState": "SYN-RECEIVED",
"cause": "not-determined",
"timeoutOrPermanentFailureClaimed": false
},
{
"case": "synack-unobserved",
"completedArrivals": 1,
"clientLastModeledState": "SYN-SENT",
"serverLastModeledState": "SYN-RECEIVED",
"cause": "not-determined",
"timeoutOrPermanentFailureClaimed": false
}
],
"framingComparison": {
"tcp": {
"applicationWrites": [
"NO",
"TE01"
],
"possibleApplicationReads": [
"N",
"OTE",
"01"
],
"reconstructedBytes": "NOTE01",
"messageBoundaryPreservedByTCP": false
},
"udp": {
"sentDatagrams": [
"NO",
"TE01"
],
"selectedSuccessfulReceives": [
"NO",
"TE01"
],
"datagramBoundaryPreserved": true,
"deliveryOrOrderingGuaranteedByUDP": false
},
"quic": {
"carrier": "UDP datagrams",
"streamAbstraction": "ordered bytes within a stream",
"sameAsTCPHandshake": false,
"modeled": false
}
},
"evidenceBoundary": {
"tcpSynchronization": "selected-inert-transition-model",
"tlsHandshake": "not-modeled",
"httpRequest": "not-modeled",
"applicationAuthorization": "not-modeled",
"packetChecksumsOptionsWindowsTimers": "omitted"
}
}- tuple
- Protocol dahil local/remote endpoint pair; listener farklı kavram.
- arrivals.flags/seq/ack
- Seçilmiş payload’sız handshake alanları; ACK flag yokken ack=null anlamsal boşluğu gösterir.
- arrivals.sequenceSpaceUsed
- SYN 1, payload’sız pure ACK 0 konum tüketir.
- observationalBranches
- Trace sonundaki ayrı peer state’leri; gerçek timeout/error teşhisi değil.
- framingComparison
- TCP write/read parçalarıyla UDP datagram sınırı arasındaki fark.
Tam packet, pcap veya kernel sonucu değildir. ISN’ler seçilmiş küçük sayılardır; checksum, options, window, timer, retransmission, simultaneous open, TLS, HTTP ve uygulama yetkisi modellenmez.
İki yanlış kanı
TCP her write’ı aynı sınırla receiver’a teslim eder.
TCP ordered byte stream sağlar. Read parçalarının sınırı değişebilir; application protocol message framing’i belirler.
SYN+ACK client’a gelince server da ESTABLISHED olur.
Seçilmiş ordinary handshake’te client ESTABLISHED olur; server final ACK arrival’ına kadar SYN-RECEIVED kalır.
SIRA SENDE
Bu hikâyeyi sen çöz.
Sonucu tahmin et, kanıtın sınırını bul ve nedenini kendi cümlenle anlat.
SYN+ACK client’a ulaştı; final ACK server’da henüz gözlenmedi. İki endpoint hangi state’te?
- Client ESTABLISHED; server SYN-RECEIVED.
- İkisi de ESTABLISHED; client state server’a otomatik geçer.
Gerekçeli cevabı oku
Client ESTABLISHED; server SYN-RECEIVED. — Client SYN+ACK aldıktan sonra ilerler. Server final ACK arrival’ını henüz işlememiştir.
Payload yokken ACK neden 1001?
Dersten seçilen artifact alanları; öğretim örneği
- arrivals[0].seq
- 1000
- arrivals[0].payloadBytes
- 0
- arrivals[0].sequenceSpaceUsed
- 1
- arrivals[1].ack
- 1001
- SYN bir sequence number tüketir: 1000+1.
- ACK 1001 bir byte application body alındığını kanıtlar.
Gerekçeli cevabı oku
SYN bir sequence number tüketir: 1000+1. — Payload yoktur, fakat SYN için sequenceSpaceUsed=1. Sonraki beklenen number 1001 olur.
Başlangıç state’leri CLOSED/LISTEN. Bu normal handshake’in ilerlemesi için adımları sırala.
- Client SYN’i hazırlar; SYN-SENT olur.
- SYN server’a ulaşır; server SYN-RECEIVED olur.
- SYN+ACK client’a ulaşır; client ESTABLISHED olur.
- Final ACK server’a ulaşır; server ESTABLISHED olur.
Gerekçeli cevabı oku
Client SYN’i hazırlar; SYN-SENT olur. → SYN server’a ulaşır; server SYN-RECEIVED olur. → SYN+ACK client’a ulaşır; client ESTABLISHED olur. → Final ACK server’a ulaşır; server ESTABLISHED olur. — Client’ın SYN hazırlaması remote server’ı değiştirmez. Her endpoint ilgili mesaj kendisine ulaştığında ilerler. Bu branch data, TFO veya simultaneous open içermez.
TCP handshake tamamlandı. Kitap endpoint’i için TLS ve authorization hakkında hangi kanıt hâlâ eksik?
Gerekçeli cevabı oku
Handshake iki TCP endpoint’in sequence state’ini senkronize eder. TLS handshake, certificate kontrolü, HTTP request ve application authorization bu artifact’te modellenmez. TCP ESTABLISHED, resource’un teslim edileceğini veya kullanıcının yetkili olduğunu kanıtlamaz.
□ TCP sonucu ile TLS identity kontrolünü ayırdım.
□ Authorization için ayrı application kararı gerektiğini belirttim.
Uygulama konsolunu aç · request / response / browser
Request, URL, cookie ve DOM örneklerini ayrıca aç
Kaynaklar ve kapsam
- RFC 9293 — Transmission Control Protocol (TCP)2.2 Key TCP Concepts · 3.1 Header Format; 3.3.2 State Machine Overview · 3.4 Sequence Numbers; 3.5 Establishing a Connection; Figure 6 · 3.7 Segmentation; application buffer boundaries
- RFC 768 — User Datagram ProtocolIntroduction; Format; Fields; User Interface
- RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport1 Overview; 2 Streams
- RFC 5737 — IPv4 Address Blocks Reserved for Documentation3 Documentation Address Blocks
- Node.js Net — socket connection eventsEvent: 'connect' · Event: 'error' · Event: 'close' · Event: 'lookup'