TCP Handshakes
🤝 52. What is a 3-way handshake in TCP?
3-Way Handshake হলো TCP প্রোটোকলে এমন একটি প্রক্রিয়া, যার মাধ্যমে ক্লায়েন্ট এবং সার্ভার একে অপরের সাথে ডেটা আদান-প্রদানের আগে একটি লজিক্যাল কানেকশন তৈরি করে।
- ডেটা ট্রান্সফার শুরু করার আগে ক্লায়েন্ট এবং সার্ভারকে অবশ্যই কিছু নিয়ম (যেমন ইনিশিয়াল সিকোয়েন্স নাম্বার, উইন্ডো সাইজ) বিনিময় করতে হয়, আর এ কাজগুলো এই হ্যান্ডশেকের মাধ্যমে করা হয়।
🤔 Why does TCP need exactly 3 steps (not 2 or 4) to establish a connection?
TCP একটি বাই-ডিরেকশনাল (Bidirectional) বা দ্বিমুখী কানেকশন। অর্থাৎ ক্লায়েন্ট টু সার্ভার একটি দিক এবং সার্ভার টু ক্লায়েন্ট আরেকটি দিক।
- ২টি স্টেপ কেন নয়? ২ স্টেপে ক্লায়েন্ট শুধু বলতে পারে "আমি রেডি (SYN)" এবং সার্ভার বলতে পারে "আমিও রেডি (SYN-ACK)"। কিন্তু ক্লায়েন্ট যে সার্ভারের মেসেজটি পেয়েছে এবং ডেটা পাঠাতে প্রস্তুত, তা সার্ভারের কনফার্ম হওয়া দরকার।
- ৪টি স্টেপ কেন নয়? সার্ভার চাইলে তার ডাবল কনফার্মেশন দুটি আলাদা মেসেজে (ACK একটিতে, নিজের SYN আরেকটিতে) পাঠাতে পারতো। কিন্তু পারফরম্যান্স বাড়ানোর জন্য TCP এই দুটি মেসেজকে একসাথে জোড়া দিয়ে একটি প্যাকেট বানিয়ে দেয় (
SYN-ACK), ফলে স্টেপ ৪ থেকে কমে ৩-এ নেমে আসে।
🚨 What is a SYN flood attack and how is it mitigated?
Client Server
│──── SYN ────▶│ "connection করতে চাই"
│◀── SYN-ACK ──│ "ঠিক আছে, ready"
│──── ACK ────▶│ "connected!"
Server প্রতিটা half-open connection এর জন্য memory তে state রাখে — ACK আসার অপেক্ষায়।
🔴 SYN Flood Attack কী?
Attacker হাজার হাজার SYN packet পাঠায়, কিন্তু কখনো ACK পাঠায় না।
PreviewClick to view details
Attacker Server
│──── SYN ────▶│ Server memory তে entry!
│──── SYN ────▶│ আরেকটা entry!
│──── SYN ────▶│ আরেকটা!
│──── SYN ────▶│ আরেকটা!
│ (no ACK) │
│
┌────┴────┐
│ backlog │
│ queue │
│ FULL! │
└────┬────┘
│
Real Client ──── SYN ────▶ ❌ REJECTED!
"Sorry, no room!"
Server এর SYN backlog queue ভরে যায় → legitimate user connect করতে পারে না → DoS (Denial of Service)!
⚠️ Attack আরো Dangerous কেন? — Spoofed IPs
PreviewClick to view details
Attacker সব SYN এ fake source IP দেয়:
SYN (from 1.2.3.4) ─▶ Server
SYN (from 5.6.7.8) ─▶ Server
SYN (from 9.10.11.12)─▶ Server
↑
সব fake! Attacker এর real IP লুকানো।
Server SYN-ACK পাঠায় fake IPs এ →
কেউ ACK দেয় না →
Queue ভরতেই থাকে!
💻 Server এ কী হয়?
PreviewClick to view details
Normal state:
┌─────────────────────────┐
│ SYN Queue │
│ [conn1][conn2][ ][ ] │ ← খালি জায়গা আছে
└─────────────────────────┘
During SYN Flood:
┌─────────────────────────┐
│ SYN Queue │
│[syn][syn][syn][syn][syn]│ ← FULL!
│[syn][syn][syn][syn][syn]│
└─────────────────────────┘
↓
New connection? ❌ DROP!
CPU usage? 📈 HIGH!
Memory? 📈 EXHAUSTED!