Foundationপ্রথম নীতি থেকে
LEVEL 7 · Computer Networking

Three-Way Handshake

থ্রি-ওয়ে হ্যান্ডশেক

TCP connection খোলার SYN, SYN-ACK, ACK — তিন ধাপের বিনিময়, যেখানে দুই পক্ষ initial sequence number sync করে।

Connection খোলার তিন ধাপ; আসল কাজ দুই পক্ষের initial sequence number (ISN) sync করা:

client                       server
  │ ─── SYN, seq=x ────────▶ │
  │ ◀── SYN+ACK, seq=y ───── │
  │     ack=x+1              │
  │ ─── ACK, ack=y+1 ──────▶ │
  │         ESTABLISHED      │

কেন দুই-ধাপ নয় — পুরনো duplicate SYN দেরিতে এলে server connection ধরে নেবে, অথচ client জানেই না; তৃতীয় ACK ছাড়া server ESTABLISHED হয় না। আর দুই দিকের ISN আলাদা — random, predictable ISN-এর পুরনো security hole বন্ধ করতে।

Handshake-এর সাথেই negotiate হয় — MSS, window scale, SACK-permitted। TLS-এর ClientHello এই ESTABLISHED connection- এই চলে।

SYN flood — attacker SYN পাঠিয়ে শেষ ACK বাদ দিলে server-এর half-open queue ভরে যায়; syncookies state-টা sequence number- এ encode করে queue-ই বাদ দেয়।

tcpdump -i any -nn 'tcp[tcpflags] & tcp-syn != 0'