TCP আর UDP
রেজিস্ট্রি চিঠি বনাম মাইকিং
বেশিরভাগ নেটওয়ার্কিং প্রোটোকল এই দুইটা জিনিসের ওপর ভিত্তি করেই দাঁড়িয়ে আছে। এদের তফাৎটা বুঝলেই কেল্লাফতে।
বল্টু ভাই মন্টুর দিকে তাকিয়ে প্রশ্ন করলেন, "ধর তুই তোর প্রেমিকাকে চিঠি পাঠাবি। তুই চাস চিঠিটা যেন নিশ্চিতভাবে তার হাতে পৌঁছায় এবং সে সেটা পড়ে রিপ্লাই দেয়। তখন তুই কী করবি?" মন্টু বলল, "রেজিস্ট্রি ডাকযোগে পাঠাব, যাতে রিসিভ কপি পাই।"
— "গুড! এটাই হলো TCP।"
— "আর যদি এমন হয়, তুই বাজারে দাঁড়িয়ে লিফলেট বিলি করছিস বা মাইকিং করছিস? কে পেল আর কে পেল না, সেটা কি তুই চেক করিস?" মন্টু মাথা নাড়ল, "না।"
— "ওটা হলো UDP।"

চল এবার একটু গভীরে যাই...
১. TCP (Transmission Control Protocol)
দ্য জেন্টলম্যান
বল্টু ভাই বললেন, "টিসিপি হলো নেটওয়ার্কিং জগতের 'ভদ্রলোক'। সে হুট করে কথা বলে না, আবার কথা বলা শেষ না করে হুট করে চলে যায় না।"
এর প্রধান বৈশিষ্ট্য হলো নির্ভরযোগ্যতা (Reliability)। তুই যখন কাউকে হোয়াটসঅ্যাপে মেসেজ দেস এবং ডাবল টিক (Delivered) দেখিস, তখন শান্তি লাগে না? TCP ঠিক সেই কাজটাই করে। সে নিশ্চিত করে যে তোর পাঠানো ডাটা প্যাকেট ঠিকঠাক গন্তব্যে পৌঁছেছে। যদি পথের মধ্যে কোনো প্যাকেট হারিয়ে যায়, TCP সেটা খুঁজে বের করে এবং সার্ভারকে বলে, “বস, ওই প্যাকেটটা মিসিং, ওটা আবার পাঠান!"
কীভাবে কাজ করে? (দ্য ফেমাস ৩-ওয়ে হ্যান্ডশেক)
TCP হুট করেই ডাটা পাঠানো শুরু করে না। সে প্রথমে কানেকশন তৈরি করে। একে বলে 'Three-way Handshake'। ব্যাপারটা অনেকটা মোবাইলে কাউকে কল করার মতো:
- SYN (হ্যালো, আছেন?): মন্টু (ক্লায়েন্ট) সার্ভারকে রিকোয়েস্ট পাঠায়, “ভাই, আমি আপনার সাথে কানেক্ট হতে চাই।"
- SYN-ACK (হ্যাঁ, আছি তো!): সার্ভার রিপ্লাই দেয়, “আমি রেডি! আপনি কি শুনতে পাচ্ছেন?"
- ACK (ওকে, শুরু করলাম): মন্টু কনফার্ম করে, “হ্যাঁ পাচ্ছি! এবার ডাটা পাঠানো শুরু করলাম।"
এই তিনবার হাত মেলানোর পরেই আসল ডাটা আদান-প্রদান শুরু হয়। শুধু কানেকশন তৈরিই শেষ নয়, পুরো সময় ধরে TCP 'ফ্লো কন্ট্রোল' (Flow Control) করে যাতে মন্টু দ্রুত কথা বললে সার্ভার তাল মেলাতে পারে, আবার নেটওয়ার্ক স্লো হলে স্পিড কমিয়ে দেয়।
সহজ কথায় TCP-র গুণাবলী:
- কানেকশন ওরিয়েন্টেড: কথা বলার আগে লাইন ক্লিয়ার করে নেয় (Connection Establishment)।
- গ্যারান্টিযুক্ত ডেলিভারি: ডাটা পৌঁছালো কি না, তার রিসিভ কপি (Acknowledgement) রাখে। না পৌঁছালে আবার পাঠায় (Retransmission)।
- অর্ডার মেনে চলে: ১, ২, ৩ নম্বর প্যাকেট পাঠালে গ্রাহক সেটা ১, ২, ৩ সিরিয়ালেই পাবে। উল্টাপাল্টা হবে না।
- ট্রাফিক সচেতন: নেটওয়ার্ক স্লো থাকলে সে নিজেও ধীরে ডাটা পাঠায় (Congestion Control), যাতে জ্যাম না বাধে।
কোথায় ব্যবহার হয়?
যেসব জায়গায় ডাটা মিসিং হলে মহা বিপদ, সেখানে TCP মাস্ট!
- ওয়েব ব্রাউজিং (HTTP/HTTPS) - যাতে পেইজ লোড হওয়ার সময় অর্ধেক লেখা গায়েব না হয়ে যায়।
- ইমেইল (SMTP/IMAP) - যাতে হ্যালো লিখতে গিয়ে 'ও' হারিয়ে 'হেল' (Hell) না হয়ে যায়! 😅
- ফাইল ট্রান্সফার (FTP)।
কুইক নোট: বল্টু ভাই বললেন, আজকালকার নতুন HTTP/3 কিন্তু আবার উল্টো পথে হাঁটছে। সে TCP বাদ দিয়ে UDP ব্যবহার করে! কেন? সেটা আমরা পরে জানব। আপাতত জেন্টলম্যান TCP-কেই চিনে রাখি।
২. UDP (User Datagram Protocol)
দ্য কেয়ারলেস স্পিডস্টার
TCP-র কথা শুনে মন্টু যখন মুগ্ধ, বল্টু ভাই তখন বললেন, "দাঁড়া, অত ইমপ্রেসড হস না। সব জায়গায় ভদ্রতা চলে না। মাঝেমধ্যে আমাদের এমন লোক লাগে যে কোনো নিয়ম মানে না, শুধু কাজের কাজটা চোখের পলকে করে দেয়। সেই হলো UDP।"
TCP যদি হয় স্যুটেড-বুটেড অফিসার, তবে UDP হলো বাইক নিয়ে রেস করা ডেলিভারি বয়। তার নীতি একটাই, “Fire and Forget" (মারো আর ভুলে যাও)।
কীভাবে কাজ করে?
UDP-র হাতে এত সময় নেই যে সে আগে কানেকশন তৈরি করবে (Handshake) বা তুই মেসেজ পেলি কি না সেটার খোঁজ নেবে (Acknowledgement)।
সে সার্ভার থেকে ডাটা প্যাকেটগুলোকে কামানের গোলার মতো ছুঁড়তে থাকে। তুই ক্যাচ ধরতে পারলি? ভালো। হাত ফসকে দুই-একটা প্যাকেট নিচে পড়ে গেল? তার দেখার টাইম নাই। সে পরের প্যাকেট ছোঁড়া শুরু করে দেবে।
সহজ কথায় UDP-র স্বভাব:
- কানেকশনলেস (Connectionless): "হ্যালো, আছেন?" বলার সময় নেই। সরাসরি মেইন কথায় চলে যায়।
- আন-রিলায়েবল (Unreliable): ডাটা হারাল কি না, বা উল্টাপাল্টা অর্ডারে পৌঁছাল কি না, এসব নিয়ে সে বিন্দুমাত্র চিন্তিত না।
- সুপার ফাস্ট: যেহেতু কোনো চেকিং বা হ্যান্ডশেকিং-এর বালাই নেই, তাই এটি TCP-র চেয়ে অনেক দ্রুত।
- লাইটওয়েট: এর হেডার সাইজ অনেক ছোট, তাই নেটওয়ার্কের ওপর চাপ কম পড়ে।
মজার ব্যাপার হলো, গুগলের মতো কোম্পানিরা দেখল যে UDP-র এই স্পিডটাকে কাজে লাগিয়ে যদি ওপরে একটা সিকিউরিটি লেয়ার বসানো যায়, তবে তো সোনায় সোহাগা! সেখান থেকেই জন্ম নিচ্ছে ইন্টারনেটের ভবিষ্যৎ- QUIC এবং HTTP/3।
তাহলে এই "বেয়াদব" প্রোটোকল দিয়ে লাভ কী?
মন্টু অবাক হয়ে বলল, "ভাই, যে ডাটা হারায় ফেলে, তাকে দিয়ে আমার কাজ কী?"
বল্টু ভাই হাসলেন, "আরে বোকা! তুই যখন ভিডিও কল করিস বা অনলাইন গেম (PUBG/Valorant) খেলিস, তখন কী হয়? ধর, ভিডিওর একটা ফ্রেম আটকে গেল। তুই কি চাস ভিডিওটা ওখানেই পজ হয়ে সেই হারানো ফ্রেমের জন্য অপেক্ষা করুক? নাকি চাস ভিডিওটা চলতে থাকুক, একটু ঝিরঝির করলেও সমস্যা নেই?"
মন্টু বলল, "চলতে থাকুক! লাইভ খেলা দেখার সময় আটকে গেলে তো মেজাজ খারাপ হয়।"
— "এক্সাক্টলি! এইসব রিয়েল-টাইম কাজের জন্য UDP সেরা। এখানে ১০০% ডাটা পাওয়ার চেয়ে দেরি না হওয়াটা (Low Latency) বেশি জরুরি।"

কোথায় ব্যবহার হয়?
- ভিডিও স্ট্রিমিং ও লাইভ ব্রডকাস্ট (তোর বিড়ালটিউবের লাইভ ফিচারের জন্য এটা লাগতে পারে!)।
- অনলাইন গেমিং (যেখানে ১ সেকেন্ড দেরি মানেই হেডশট খেয়ে মরে যাওয়া)।
- ভয়েস কল (VoIP)।
- DNS (Domain Name System) - কারণ আমরা চাই ওয়েবসাইটের নাম লিখলে যেন সাথে সাথে আইপি পাই, দেরি যেন না হয়।