TCP এবং UDP
নির্ভরযোগ্যতা vs গতি — দুটি আলাদা ফিলোসফির প্রোটোকল।
ভাবুন আপনি দুজন বন্ধুকে চিঠি পাঠাবেন। একজন বন্ধু চান চিঠি অবশ্যই পৌঁছাক, পৌঁছালে কনফার্মেশন দিন — তার জন্য আপনি Registered Post ব্যবহার করবেন। আরেকজন বন্ধু চান শুধু দ্রুত পাঠাতে — তার জন্য সাধারণ পোস্ট চলবে।
ইন্টারনেটেও দুটি দর্শন আছে — TCP (নির্ভরযোগ্য কিন্তু একটু ধীর) এবং UDP (দ্রুত কিন্তু গ্যারান্টি নেই)।
TCP — Transmission Control Protocol
TCP হলো একটি connection-oriented ও reliable প্রোটোকল। এটি নিশ্চিত করে ডেটা সঠিক ক্রমে এবং সম্পূর্ণভাবে গন্তব্যে পৌঁছায়।
TCP-এর বৈশিষ্ট্য
- Connection-oriented: ডেটা পাঠানোর আগে handshake করে connection স্থাপন করে।
- Reliable: প্রতিটি প্যাকেট পৌঁছানো নিশ্চিত করে।
- Ordered delivery: ডেটা সঠিক ক্রমে পৌঁছায়।
- Error checking: ভুল ডেটা ধরা পড়লে আবার পাঠানো হয়।
- Flow control: sender ও receiver-এর গতি সমন্বয় করে।
- Congestion control: নেটওয়ার্কে ভিড় হলে ডেটার গতি কমায়।
3-Way Handshake
TCP connection শুরু হয় ৩ ধাপের একটি handshake দিয়ে:
Client Server
| |
|---- SYN -------------->| (১) "যোগাযোগ করতে চাই")
| |
|<---- SYN-ACK ----------| (২) "ঠিক আছে, আমিও প্রস্তুত")
| |
|---- ACK -------------->| (৩) "শুরু করি!")
| |
|==== Data Transfer ====|
TCP কোথায় ব্যবহৃত হয়?
- Web browsing (HTTP, HTTPS)
- ইমেইল (SMTP, IMAP)
- File transfer (FTP)
- Remote access (SSH)
UDP — User Datagram Protocol
UDP হলো একটি connectionless ও fast প্রোটোকল। এটি ডেটা পাঠায় কিন্তু পৌঁছানোর গ্যারান্টি দেয় না।
UDP-এর বৈশিষ্ট্য
- Connectionless: handshake নেই, সরাসরি ডেটা পাঠায়।
- Fast: অনেক কম overhead — দ্রুত।
- No guarantee: ডেটা হারিয়ে যেতে পারে।
- No ordering: ডেটা যেকোনো ক্রমে পৌঁছাতে পারে।
- Lightweight header: মাত্র ৮ বাইট header।
UDP কোথায় ব্যবহৃত হয়?
- Live streaming: YouTube Live, Twitch — কিছু frame missed হলেও সমস্যা নেই।
- Video calls: Zoom, WhatsApp call — দ্রুততা সবচেয়ে গুরুত্বপূর্ণ।
- Online gaming: latency কমানো জরুরি।
- DNS queries: ছোট, দ্রুত প্রশ্ন-উত্তর।
- VoIP: voice call।
TCP বনাম UDP — তুলনা
TCP
- ✓ Reliable — গ্যারান্টিযুক্ত ডেলিভারি
- ✓ Ordered — সঠিক ক্রম
- ✓ Error correction
- ✗ ধীর (handshake + acknowledgement)
- ✗ বেশি bandwidth লাগে
- 📌 Use: HTTP, Email, FTP
UDP
- ✓ দ্রুত — কম overhead
- ✓ Real-time অ্যাপের জন্য আদর্শ
- ✓ Low latency
- ✗ Reliability নেই
- ✗ ডেটা হারাতে পারে
- 📌 Use: Video call, Gaming, DNS
বাস্তব উদাহরণ
- WhatsApp চ্যাট মেসেজ: TCP — মেসেজ অবশ্যই পৌঁছাতে হবে।
- WhatsApp ভিডিও কল: UDP — কিছু frame হারালেও সমস্যা নেই, latency জরুরি।
- YouTube ভিডিও: ফাইল ডাউনলোড অংশে TCP, লাইভ স্ট্রিমে UDP।
- Online গেম: UDP — দ্রুততা সবচেয়ে জরুরি।
সাধারণ ভুল ধারণা
- "UDP সবসময় খারাপ": না, real-time কাজে UDP-ই সেরা।
- "TCP সবসময় ভালো": না, ভিডিও কলে TCP ব্যবহার করলে অভিজ্ঞতা খারাপ হবে।
- "UDP-তে কোনো error checking নেই": আছে (checksum), কিন্তু ভুল ধরা পড়লে retransmit হয় না।
সিস্টেম ডিজাইনে কখন কোনটা ব্যবহার করবেন
- Reliability জরুরি: TCP (পেমেন্ট, ফাইল ট্রান্সফার)
- Latency জরুরি: UDP (গেমিং, ভিডিও কল)
- Broadcast/Multicast: UDP
- একসাথে অনেক ছোট রিকোয়েস্ট: UDP (DNS)
📌 চ্যাপ্টার সারমর্ম
- TCP connection-oriented, reliable, ordered — কিন্তু ধীর।
- UDP connectionless, fast — কিন্তু গ্যারান্টি নেই।
- TCP 3-way handshake দিয়ে connection শুরু করে।
- HTTP/HTTPS, Email, FTP → TCP।
- Video call, Gaming, DNS, Live streaming → UDP।
- সঠিক প্রোটোকল নির্বাচন application-এর প্রয়োজন অনুযায়ী।