1.5
Network Layer ও Encapsulation (OSI ও TCP/IP)
Networking কেন Layer-এ তৈরি, এবং তোমার Data কীভাবে একের পর এক Header-এ মোড়ানো হয়।
35 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই Lesson শেষে তুমি পারবে
- Networking কেন Layer-এ ভাগ করা হয়েছে, আর প্রতিটি Layer তার ওপরের Layer-কে কী প্রতিশ্রুতি দেয় তা ব্যাখ্যা করতে।
- OSI-এর সাতটি Layer-এর নাম, কাজ, একটি উদাহরণ Protocol ও Data-র একক (Bit, Frame, Packet, Segment, Datagram) বলতে, এবং সেগুলো TCP/IP-এর চারটি Layer-এর সঙ্গে মেলাতে।
- Physical Layer কীভাবে Bit-কে তামার তার, Fibre আর Radio-তে Signal বানায় তা বোঝাতে, আর Switch আসার পর Ethernet-এর Collision (CSMA/CD) কেন ইতিহাস হয়ে গেল তা বলতে।
- আজকের Internet-এ Session আর Presentation Layer আসলে কী করে তা বলতে: Session, Character Encoding (ASCII, UTF-8), Compression আর TLS আসলে কোথায় ঘটে, আর লেখা কেন Mojibake হয়ে যায়।
- একটি TCP/IP Packet-এর ভেতরে ঠিক কী থাকে তা বর্ণনা করতে: Ethernet Frame, IP Header, TCP বা UDP Header ও TLS Record, Field ধরে ধরে।
- Sender-এ Encapsulation, Receiver-এ Decapsulation, এবং প্রতিটি Hop-এ Switch ও Router কী খোলে ও কী বদলায় তা অনুসরণ করতে।
- Header Overhead হিসাব করতে, MTU, MSS ও Fragmentation ব্যাখ্যা করতে, আর FCS Error, TTL শেষ হওয়া ও MTU Black Hole-এর মতো ব্যর্থতা চিনতে।
#Networking কেন Layer-এ তৈরি
একটি Server থেকে তোমার ফোনে একটি Web Page পাঠাতে ডজনখানেক আলাদা সমস্যার সমাধান করতে হয়: Bit-কে Radio Wave-এ রূপান্তর, Wi-Fi-এর কোন ডিভাইস Frame পাবে তা ঠিক করা, ভিন্ন ভিন্ন কোম্পানির চালানো ১৫টি Network পেরিয়ে পথ খোঁজা, হারানো Data উদ্ধার, Encryption, আর শেষে HTTP-তে কথা বলা। কোনো একটি Program একা এসব সামলাতে পারত না, আর নতুন ধরনের Cable আবিষ্কার হলেই কেউ Browser নতুন করে লিখতে চাইত না।
যেকোনো Network-এর কথোপকথন ভেঙে দেখো, Messenger-এ এক শব্দের একটা “Hello” হলেও, সবসময় পাঁচটা জিনিস পাবে: একজন Sender (তোমার ফোন), একজন Receiver (বন্ধুর ফোন), Message (“Hello”), একটা Medium যা বার্তাটা বয়ে নেয় (প্রথমে Wi-Fi-এর Radio, তারপর Internet জুড়ে Fibre আর তামার তার), আর একটা Protocol: দুই পক্ষের মেনে নেওয়া নিয়ম, অনেকটা একই ভাষায় কথা বলার মতো, যাতে Receiver যা পায় তার মানে বুঝতে পারে। আসল Network-এ ওপরের প্রতিটা সমস্যার জন্য আলাদা Protocol লাগে, সব মিলিয়ে ডজন ডজন। এই Protocol-গুলোকে গুছিয়ে রাখার উপায়ই হলো Layer।
তাই কাজটা Layer-এ ভাগ করা হয়েছে। প্রতিটি Layer:
- একটি কাজ করে এবং সেটা ওপরের Layer-কে সেবা হিসেবে দেয় (“আমাকে Byte আর একটি Port দাও, আমি ক্রমমতো পৌঁছে দেব”);
- শুধু ঠিক নিচের Layer ব্যবহার করে, সেই Layer ভেতরে কীভাবে কাজ করে তা না জেনেই;
- অন্য মেশিনের সমকক্ষ Layer-এর সঙ্গে কথা বলে একটি Header-এর মাধ্যমে, যা শুধু ওই সমকক্ষ Layer পড়ে।
এর বাস্তব সুবিধা:
- অন্যগুলো না ছুঁয়ে একটি Layer বদলানো যায়। তোমার Browser Wi-Fi, Ethernet বা 5G-তে একইভাবে চলে; HTTP/3 চালু হয়েছে UDP-এর ওপর QUIC বানিয়ে, একটি Router-ও না বদলে।
- স্বাধীন দল ও Standard। Cable নির্মাতা, Router কোম্পানি, অপারেটিং সিস্টেম ডেভেলপার আর Web ডেভেলপার যার যার Layer নিয়ে কাজ করে।
- সহজে সমস্যা খোঁজা। “সমস্যা কি Cable-এ (L1), Wi-Fi-তে (L2), Routing-এ (L3), বন্ধ Port-এ (L4), নাকি App-এ (L7)?” এভাবেই Engineer-রা সমস্যার জায়গা ছোট করে আনে।
এর খরচ কিছু Overhead: প্রতিটি Layer একটি Header যোগ করে, আর কিছু কাজ (যেমন Checksum) কয়েকটি Layer-এ বারবার হয়।
#OSI Model: সাতটি Layer
OSI (Open Systems Interconnection) Model হলো ISO-র ১৯৮৪ সালে প্রকাশিত একটি ৭-Layer Reference Model। Internet আসলে OSI-এর Protocol চালায় না, কিন্তু সবাই এর Layer নম্বরকে সাধারণ ভাষা হিসেবে ব্যবহার করে: “এটা L2 সমস্যা”, “একটি L7 Load Balancer”।
OSI Model ও TCP/IP Model
প্রতিটি বাক্স তার ভেতরের বাক্সগুলোকে মুড়ে রাখে: Application-এর Data মাঝখানে, Physical Signal সবচেয়ে বাইরের খোলস।
পরিস্থিতি
Data শুরু হয় ওপরে (Layer 7), আর নিচের প্রতিটি Layer নিজের মোড়ক যোগ করে।
Layer 7, Application: তোমার Program যে Protocol-এ কথা বলে। Browser একটি HTTP Request লেখে: “GET /index.html”। Byte-গুলো কীভাবে যাবে, তা নিয়ে তার মাথাব্যথা নেই।
| # | Layer | কাজ | উদাহরণ Protocol / ডিভাইস | Data-র একক (PDU) |
|---|---|---|---|---|
| 7 | Application | Program যে Protocol-এ কথা বলে | HTTP, DNS, SMTP, SSH | Data / Message |
| 6 | Presentation | Data-র ধরন: Encoding, Compression, Encryption | Unicode Text, Image Format, gzip, TLS (তাত্ত্বিকভাবে) | Data |
| 5 | Session | কথোপকথন খোলা, ধরে রাখা ও বন্ধ করা | Session Resumption, Login Session | Data |
| 4 | Transport | Process থেকে Process: Port, নির্ভরযোগ্যতা, ক্রম | TCP, UDP (QUIC চলে UDP-এর ওপর) | Segment (TCP) / Datagram (UDP) |
| 3 | Network | Network পেরিয়ে Host থেকে Host: Addressing, Routing | IP, ICMP, IPsec · Router | Packet |
| 2 | Data Link | একটি Local Link-এ এক Hop: MAC Address, ভুল শনাক্তকরণ | Ethernet, Wi-Fi (802.11) · Switch | Frame |
| 1 | Physical | মাধ্যমের ওপর Signal হিসেবে Bit | তামা, Fibre, Radio, Connector · Hub, Repeater | Bit |
PDU (Protocol Data Unit) মানে “এই Layer-এ Header-সহ Data-র টুকরো”। সঠিক শব্দ ব্যবহার করলে বোঝা যায় তুমি কোন Layer-এর কথা বলছ: Router Packet পাঠায়, Switch পাঠায় Frame।
মনে রাখার কৌশল: ওপর থেকে নিচে, “All People Seem To Need Data Processing”; নিচ থেকে ওপরে, “Please Do Not Throw Sausage Pizza Away”।
#Layer 1 কাছ থেকে: Bit যখন Signal হয়
ওপরের সব Layer-এর সবকিছু শেষ পর্যন্ত 1 আর 0-এর একটা স্রোত হয়ে যায়। সেই Bit-গুলো আসল তার বা বাতাস পার হবে কীভাবে, সেটা ঠিক করে Physical Layer। Frame বা Address সে চেনে না; তার একটাই প্রতিশ্রুতি: “তুমি যে Bit পাঠিয়েছ, আমি প্রায় সবসময় ঠিক সেগুলোই পৌঁছে দেব।”
| Medium | একটা Bit সেখানে হয়… | কোথায় দেখবে | Connector |
|---|---|---|---|
| তামার Twisted Pair (Shield ছাড়া UTP, বা Shield-ওয়ালা) | পেঁচানো এক জোড়া তারে Voltage-এর একটা মাত্রা বা বদল (পেঁচানোর ফলে বাইরের গোলমাল কাটা যায়) | বাসা আর অফিসের Ethernet, এক Cable-এ সর্বোচ্চ ১০০ মিটার | RJ45 (RJ11 হলো টেলিফোনের ছোট Plug) |
| Optical Fibre (Single-mode, Multimode) | কাচের সরু Core-এ আলোর একটা ঝলক | দূরের পথ, Internet Backbone, Data Centre, বাসা পর্যন্ত Fibre। কিলোমিটারের জন্য Single-mode, বিল্ডিংয়ের ভেতরের ছোট দূরত্বে Multimode | LC, SC, ST |
| Coaxial Cable | Shield-ঘেরা মাঝের তারে বৈদ্যুতিক Signal | ক্যাবল টিভি আর Cable Broadband; খুব পুরনো Ethernet | F-type, BNC |
| Radio | Radio Wave-এর Amplitude, Phase বা Frequency-তে বদল | Wi-Fi, Bluetooth, 4G/5G | Antenna |
Physical Layer-কে যা যা ঠিক করে দিতে হয়:
- Signal Encoding। তারের ওপর 1 আর 0 দেখতে কেমন হবে। সবচেয়ে সহজ পদ্ধতি NRZ (Non-return-to-zero): 1-এর জন্য এক মাত্রা, 0-এর জন্য আরেক মাত্রা। সমস্যা হলো, একই Bit অনেকগুলো পরপর এলে Signal একটা সমান রেখা হয়ে যায়, আর Receiver গুনতে গুনতে হিসাব হারিয়ে ফেলে কয়টা Bit গেল। প্রথম দিকের 10 Mbps Ethernet-এ ব্যবহৃত Manchester Encoding প্রতিটা Bit-এর ঠিক মাঝখানে একটা বদল রাখে (1 হলে নিচ থেকে ওপরে, 0 হলে ওপর থেকে নিচে), ফলে তাল মেলানোর জন্য সবসময় একটা ধার পাওয়া যায়; দাম হলো দ্বিগুণ Signalling Rate। দ্রুততর Ethernet আর Wi-Fi আরও চালাক Code ব্যবহার করে (প্রতি Symbol-এ কয়েকটা Voltage মাত্রা বা Phase), কিন্তু সমস্যা দুটো একই: প্রতি Symbol-এ বেশি Bit ঢোকানো, আর দুই পক্ষকে একই তালে রাখা।
- Bit Synchronization। Receiver-কে জানতে হবে প্রতিটা Bit কোথায় শুরু। নিচের Frame Table-এ যে Ethernet Preamble দেখবে, সেটা ঠিক এই কাজের জন্যই।
- Data Rate। 100 Mbps, 1 Gbps, 10 Gbps: Standard ঠিক করে দেয় (Ethernet-এর জন্য IEEE 802.3, Wi-Fi-এর জন্য IEEE 802.11), আর Link চালু হওয়ার সময় দুই প্রান্ত আলোচনা করে মিলিয়ে নেয়।
- Transmission Mode। Simplex: শুধু একদিকে (টিভি সম্প্রচার)। Half-duplex: দুইদিকেই, কিন্তু একবারে একজন (Walkie-talkie, একটা Wi-Fi Channel, পুরনো Hub)। Full-duplex: দুইদিকে একসঙ্গে (ফোনকল, আর আজকের প্রতিটা Switch-এর Ethernet Link, যেখানে পাঠানো আর পাওয়ার পথ আলাদা)।
- Topology আর Line Configuration। যন্ত্রগুলো শারীরিকভাবে কীভাবে জোড়া: Bus (সবাই একটা Cable-এ লাগানো, শুরুর দিকের Ethernet), Star (প্রত্যেকের নিজের Cable মাঝের একটা যন্ত্রে, আজকের Ethernet আর Wi-Fi), Ring (প্রত্যেকে দুই প্রতিবেশীর সঙ্গে, পুরনো Token Ring আর কিছু Fibre Ring), Mesh (অনেকগুলো বাড়তি পথ, Internet Backbone আর Data Centre), Tree (Star-এর ভেতরে Star, একটা বিল্ডিংয়ের Network)। একটা Link-এ ঠিক দুটো যন্ত্র থাকলে Point-to-Point (Switch-এর একটা Port আর একটা PC), অনেকে ভাগ করে নিলে Multipoint (Bus, একটা Wi-Fi Channel)।
- Physical বৈশিষ্ট্য। Voltage, আলোর Wavelength, Radio Frequency, Pin-এর বিন্যাস, সর্বোচ্চ দৈর্ঘ্য। আরও কিছু Physical Standard যা চোখে পড়বে: Bluetooth, USB আর
RS-232(পুরনো Serial Port, যা এখনো Router আর Switch-এর Console Cable-এ চলে)।
শুধু এই Layer-এই থাকে Repeater (দুর্বল Signal নতুন করে তৈরি করে) আর Hub (প্রতিটা Bit সব Port দিয়ে বের করে দেয়)। Network Card, Antenna আর Cable-ও Physical Layer-এর Hardware। Switch-এর Physical Port আছে ঠিকই, কিন্তু তার আসল কাজ Layer 2-এ।
#ভাগ করা Medium, Collision আর CSMA/CD
Bus বা Hub-এ সব যন্ত্র একটাই Medium ভাগ করে নেয়। দুজন একই মুহূর্তে পাঠালে দুটো Signal মিশে আবর্জনা হয়ে যায়, দুটো Frame-ই হারায়: এটাই Collision। পুরনো Ethernet এটা সামলাত CSMA/CD (Carrier Sense Multiple Access with Collision Detection) দিয়ে:
- Carrier Sense: আগে শোনো; কেউ পাঠাচ্ছে তো অপেক্ষা করো।
- Multiple Access: লাইন চুপচাপ হলে যে কেউ শুরু করতে পারে।
- Collision Detection: পাঠানোর সময়ও শুনতে থাকো। তারে যা আছে তা যদি তোমার পাঠানোটার সঙ্গে না মেলে, তাহলে দুটো Signal ধাক্কা খেয়েছে; ছোট একটা Jam Signal পাঠাও যাতে সবাই টের পায়।
- Backoff: এলোমেলো কয়েকটা Slot অপেক্ষা করে আবার চেষ্টা করো। পরপর n নম্বর Collision-এর পর ০ থেকে 2ⁿ − 1 Slot-এর মধ্যে একটা সংখ্যা বাছা হয় (সর্বোচ্চ ১০২৩), আর ১৬ বার ব্যর্থ হলে Frame-টা বাদ।
দুটো Station দুজনেই নীরবতা শুনে একসঙ্গে শুরু করে ফেলতে পারে, কারণ Signal-এর Cable বেয়ে যেতে সময় লাগে। তাই Collision এড়ানো যায় না, শুধু ধরা যায়। একটা Hub-এ ব্যস্ত যন্ত্র যত বাড়ে, Collision আর অপেক্ষায় তত সময় নষ্ট হয়, আর কাজের Throughput Link-এর গতির অনেক নিচে নেমে যায়।
Switch এসে CSMA/CD-কে ইতিহাস বানিয়ে দিল। Switch-এর প্রতিটা Port নিজেই একটা আলাদা Point-to-Point, Full-duplex Link, পাঠানো আর পাওয়ার পথ আলাদা; ধাক্কা খাওয়ার মতো আর কেউ নেই। Full-duplex Ethernet-এ CSMA/CD পুরোপুরি বন্ধ থাকে, আর 10 Gbps থেকে ওপরের Ethernet-এ Half-duplex-ই নেই। Wi-Fi-এর Radio Channel অবশ্য এখনো ভাগাভাগির, তাই Wi-Fi চালায় এর এক আত্মীয়, CSMA/CA (Collision Avoidance); Hub আর Switch-এর সঙ্গে সেটা আছে Network Devices Lesson-এ।
Layer 1: তারে Bit, Hub-এ Collision, Switch-এ নেই
তিনটা PC, প্রথমে একটা ভাগ করা Hub-এ, তারপর একটা Switch-এ। দেখো Bit কীভাবে Signal হয়, Hub-এ Frame কেন ধাক্কা খায়, আর Switch-এ কেন খায় না।
পরিস্থিতি
একটা Frame-এর এক Byte কীভাবে Signal হয়, আবার Bit-এ ফেরে।
Layer 1 যা দেখে
Bit
1 0 1 1 0 0 0 1
PC A-র Network Card-এর কাছে PC B-র জন্য একটা Frame আছে। Physical Layer-এর কাছে এটা শুধু এক সারি Bit; প্রথম আটটা: 1 0 1 1 0 0 0 1। এই Layer-এ Frame, MAC বা IP-এর কোনো মানে নেই।
#Layer 1 নষ্ট হলে
Physical সমস্যা দেখতে এমন: Link Light জ্বলে না, “Network Cable Unplugged”, Interface Down হয়ে আছে, 1 Gbps-এর বদলে Link উঠছে 100 Mbps-এ (প্রায়ই একটা তারের জোড়া নষ্ট), খারাপ FCS-ওয়ালা Frame-এর সংখ্যা বাড়ছে (Noise, বাঁকানো Cable, ময়লা Fibre Connector), বা Wi-Fi Signal দুর্বল। যন্ত্রপাতি: Port-এর Link Light, Linux-এ ip link আর ethtool eth0 (Speed, Duplex আর Error Counter), Cable Tester, Multimeter, Fibre-এর জন্য OTDR (ভাঙা জায়গা থেকে ফিরে আসা আলোর সময় মেপে বলে দেয় সমস্যা কত মিটার দূরে), আর Wi-Fi Analyser App। Cloud-এ Layer 1 তুমি কখনো দেখো না: Provider সেটা চালায়।
#Layer 5 আর 6: আজকে আসলে কী করে
OSI Table-এ Session আর Presentation-কে দেখে মনে হয় এরা নিজস্ব Protocol-ওয়ালা দুটো Layer। Internet-এ কিন্তু এরা আলাদা Layer-ই না: TCP/IP Model দুটোকেই Application-এর ভেতরে ঢুকিয়ে দিয়েছে। তবে কাজগুলো সত্যি, প্রতিটা Web Request-এ লাগে; শুধু সেগুলো করে তোমার Program-এর ভেতরের Protocol আর Library (আর TLS)। কোন কাজ আসলে কোথায় হয়, এটা জানলেই তুমি এলোমেলো লেখা, বারবার মেয়াদ ফুরানো Login আর শূন্য থেকে আবার শুরু হওয়া Download-এর সমস্যা ধরতে পারবে।
#Session (L5): কথোপকথন চালু রাখা
Session মানে এমন একটা কথোপকথন যা এক বার্তার চেয়ে লম্বা: অফিসের PC-তে Remote Desktop দিয়ে ঢোকা, বা অনেকগুলো পাতা জুড়ে Banking Site-এ তোমার Login। OSI Session Layer-কে এই কাজগুলো দেয়:
- Session তৈরি করা, চালু রাখা আর বন্ধ করা।
- Dialog Control: কে কখন কথা বলবে, পালা করে (Half-duplex Dialog) না একসঙ্গে (Full-duplex Dialog)।
- Synchronization: লম্বা Transfer-এর মাঝে মাঝে Checkpoint বসানো।
- Recovery: মাঝপথে থেমে গেলে আবার শুরু থেকে না করে শেষ Checkpoint থেকে চালানো।
- Token Management: যার হাতে Token, শুধু সে-ই পাঠাতে পারবে বা জরুরি কোনো কাজ করতে পারবে।
বইয়ে Session Layer-এর Protocol হিসেবে NetBIOS Session Service, RPC, SMB Session আর PPTP-র (পুরনো একটা VPN Protocol, এখন অনিরাপদ আর বাতিল) নাম থাকে। আধুনিক TCP/IP-এ Session Layer নেই, তাই প্রতিটা কাজ আজ কোথায় থাকে দেখো:
| Session-এর কাজ | আজকের Internet-এ কে করে |
|---|---|
| কথোপকথন খোলা আর বন্ধ করা | TCP Handshake আর FIN (L4), তারপর TLS Handshake |
| Request-এর পর Request তুমি কে তা মনে রাখা | Application-এর Cookie, Session ID আর Token (Lesson 1.3) |
| বিরতির পর দ্রুত আবার শুরু | TLS Session Resumption (Ticket), HTTP Keep-alive, QUIC Connection Migration |
| লম্বা Transfer-এ Checkpoint আর Recovery | Resumable Upload, HTTP Range Request, rsync, Download Manager-এর “Resume” |
| Dialog Control | Protocol-এর নিজের নিয়ম: HTTP/1.1-এ আগে Request, তারপর Response; WebSocket-এ দুই পক্ষ একসঙ্গে কথা বলে |
Note-এর Banking উদাহরণটা ধরো। তুমি Login করলে; Server Password মিলিয়ে একটা Session বানাল; তুমি Balance দেখলে, তারপর Statement, তারপর Transfer-এর পাতা, আর প্রতিটা Request-এর সঙ্গে Session Cookie যাচ্ছে বলে Server জানে এটা এখনো তুমিই; Logout করলে Server Session-টা বাতিল করে দিল। এটাই Session Management, কিন্তু বানিয়েছে Application, HTTP-এর ওপরে; Network Stack-এর আলাদা কোনো Layer নয়।
Session Checkpoint: দুর্বল Connection-এ ২ GB Upload
OSI Session Layer-এর “Synchronization আর Recovery”, আসল App যেভাবে করে: Application-এর ভেতরে।
পরিস্থিতি
একটাই লম্বা Request; যেকোনো বিচ্ছেদ মানে আবার শূন্য থেকে।
App পুরো ভিডিওটা একটাই লম্বা Request-এ পাঠায়। কতদূর গেল, তার কোনো চিহ্ন রাখা হয় না।
Session-এ গোলমাল হলে যা দেখবে: Session কেটে যাওয়া (Wi-Fi একটু হোঁচট খেলেই Remote Desktop বিচ্ছিন্ন), Timeout (অনেকক্ষণ কিছু না করায়), Form পূরণের মাঝখানে “তোমার Login-এর মেয়াদ শেষ”, আবার Connect করতে গিয়ে ব্যর্থ, কারণ Server Session ভুলে গেছে (Restart-এ Memory-তে রাখা Session মুছে গেছে), বা Transfer কতদূর গিয়েছিল তা নিয়ে দুই পক্ষের দ্বিমত।
#Presentation (L6): দুই দিকে Byte-এর মানে যেন একই থাকে
Presentation Layer-কে Translation বা Syntax Layer-ও বলে। এর কাজ হলো Sender যে মানে বুঝিয়ে পাঠিয়েছে, Receiver যেন ঠিক সেই মানেই বোঝে। কাজ তিনটা: Translation (Character Encoding আর Data Format), Compression আর Encryption।
Character Encoding: অক্ষর থেকে Byte
Network বহন করে Byte, অক্ষর না। কোন Byte কোন অক্ষর, এ নিয়ে দুই পক্ষকে একমত হতে হয়।
| Encoding | এটা কী | প্রতি অক্ষরে কত Byte |
|---|---|---|
| ASCII (১৯৬৩) | ১২৮টা অক্ষর: ইংরেজি বর্ণ, অঙ্ক, যতিচিহ্ন, কিছু Control Code। ৳ নেই, ক নেই, é নেই | ১ (৭ Bit ব্যবহার হয়) |
| Unicode | এটা Encoding না, একটা বড় তালিকা: পৃথিবীর সব লিপির প্রতিটা অক্ষরের জন্য একটা করে নম্বর, যাকে বলে Code Point। A হলো U+0041, ক হলো U+0995, 😀 হলো U+1F600। দেড় লাখের বেশি অক্ষর | (Encoding-এর ওপর নির্ভর করে) |
| UTF-8 | Unicode রাখার সবচেয়ে চালু উপায়। ASCII লেখা এমনিতেই বৈধ UTF-8। প্রায় ৯৮% Website এটা ব্যবহার করে, আর Network-এ JSON পাঠাতে হলে UTF-8 বাধ্যতামূলক | ১ থেকে ৪: ইংরেজি ১, বাংলা ৩, Emoji ৪ |
| UTF-16 | Unicode-এর আরেকটা Encoding, Windows, Java আর JavaScript-এর String-এর ভেতরে চলে | ২ বা ৪ |
| EBCDIC | IBM Mainframe-এর Encoding; ব্যাংক যখন Mainframe-এর সঙ্গে File আদান-প্রদান করে, তখনো দেখা যায় | ১ |
Unicode-এর আগে প্রতিটা অঞ্চলের নিজস্ব ৮-Bit “Code Page” ছিল, আর ১২৮–২৫৫ মানগুলো একেকটায় একেক অক্ষর বোঝাত। ফলে একই Byte এক কম্পিউটারে এক অক্ষর, আরেকটায় আরেক অক্ষর দেখাত। আজ বাংলা, আরবি আর Emoji যে প্রায় সব জায়গায় ঠিকঠাক দেখা যায়, সেটা Unicode আর UTF-8-এর কল্যাণে।
Mojibake (জাপানি শব্দ, মানে মোটামুটি “অক্ষরের রূপান্তর”) হলো সেই জিনিস, যখন এক Encoding-এ লেখা Byte আরেক Encoding ধরে পড়া হয়। বাংলা শব্দটায় অক্ষর ৫টা, কিন্তু UTF-8-এ Byte ১৫টা (E0 A6 AC E0 A6 BE …)। এই Byte-গুলোকে Windows-1252 (পশ্চিম ইউরোপের একটা Code Page) ধরে পড়লে প্রতিটা Byte নিজেই একটা ল্যাটিন অক্ষর হয়ে যায়: বাংলা। কিছুই নষ্ট হয়নি: ঠিক Byte-গুলোকে ভুল Table দিয়ে পড়া হচ্ছে, UTF-8 ধরে পড়লেই শব্দটা ফিরে আসে। এর চেয়ে খারাপ দুটো লক্ষণ আছে: ? চিহ্ন বা Replacement Character � মানে কোনো এক ধাপে Convert করার সময় আসল Byte ফেলেই দেওয়া হয়েছে, মূল লেখা আর ফেরত আসবে না।
ঠেকানোর উপায়: Label দাও, সবাই একমত হও। পাঠাও Content-Type: text/html; charset=utf-8 (বা application/json, যা সবসময় UTF-8), HTML-এ রাখো <meta charset="utf-8">, Source File UTF-8-এ Save করো, আর Database-টা দেখে নাও। MySQL-এর পুরনো utf8 Type প্রতি অক্ষরে সর্বোচ্চ ৩ Byte রাখে, তাই একটা Emoji (৪ Byte) Save হয় না বা কেটে যায়; ব্যবহার করো utf8mb4।
Compression: তারের ওপর কম Byte
- Lossless Compression মূল প্রতিটা Bit ফেরত দেয়: লেখা আর File-এর জন্য ZIP, gzip, Brotli, zstd; ছবির জন্য PNG; গানের জন্য FLAC। যেখানে প্রতিটা Byte জরুরি (Code, JSON, Document), সেখানে এটাই।
- Lossy Compression এমন খুঁটিনাটি ফেলে দেয় যা মানুষ টের পায় না, বিনিময়ে অনেক ছোট হয়: JPEG ছবি, MP3 আর AAC গান, প্রায় সব ভিডিও। আসলটা আর ফেরত পাওয়া যায় না।
Note-এর হিসাবটা: ১০০ MB-এর File Compress করে ৬০ MB হলো, বাঁচল ৪০ MB, মানে ৪০% কমল (অনুপাত ১০০ ÷ ৬০ ≈ ১.৬৭ : ১)। Web-এ Browser জানিয়ে দেয় সে কোন কোন পদ্ধতি বোঝে (Accept-Encoding: gzip, br, zstd), আর Server জানায় কোনটা ব্যবহার করল (Content-Encoding: br); HTML, CSS, JavaScript, JSON-এর মতো লেখা প্রায়ই ৭০% বা তার বেশি ছোট হয়। যেগুলো আগেই Compress করা (JPEG, MP4, ZIP), সেগুলো আর তেমন ছোট হয় না, তাই Server ওগুলো বাদ দেয়।
ক্রমটা জরুরি: আগে Compress, তারপর Encrypt। ভালো Encryption Byte-গুলোকে এলোমেলো দেখায়, আর এলোমেলো Byte Compress হয় না। (একই Encrypted Response-এ গোপন তথ্য আর আক্রমণকারীর পাঠানো লেখা একসঙ্গে Compress করলে গোপন তথ্য ফাঁস হতে পারে; সেই আক্রমণ আর তার সমাধান আছে অধ্যায় ২-এ।)
Data Format আর Encryption
| Data-র ধরন | চালু Format |
|---|---|
| ছবি | JPEG, PNG, GIF, WebP |
| গান / Audio | MP3, WAV, AAC |
| ভিডিও | MP4 |
| লেখা | ASCII, UTF-8 |
| কাঠামোবদ্ধ Data | JSON, XML (Protobuf-এর মতো Binary Format আছে অধ্যায় ২-এ) |
| Compressed Archive | ZIP, gzip |
| Encryption | TLS, AES বা ChaCha20-এর মতো Cipher দিয়ে |
Web-এ Content-Type Header Receiver-কে বলে দেয় কোন Format আসছে (image/jpeg, application/json)। Note-এর উদাহরণ: তুমি WhatsApp-এ একটা ছবি পাঠালে। ছবিটা JPEG (আগেই Lossy Compress করা), ফোন থেকে বের হওয়ার আগেই Encrypt হয়, আর বন্ধুর ফোন সেটা Decrypt করে, JPEG Decode করে, তারপর পর্দায় আঁকে। Encoding-এর গোলমাল, এলোমেলো অক্ষর, ছবি বা ভিডিও Decode না হওয়া, Decryption ব্যর্থ হওয়া আর “Unsupported File Format”: এগুলো সবই Presentation-এর সমস্যা।
#একটা HTTPS Request-এ সবকিছু কোথায় ঘটে
| কাজ | OSI বলে | আসলে করে | কোথায় চলে |
|---|---|---|---|
| Character Encoding | L6 | তোমার Code আর Framework (String থেকে UTF-8 Byte) | Application |
| Data Format | L6 | JSON, HTML, JPEG; Content-Type দিয়ে Label করা | Application |
| Compression | L6 | HTTP Content-Encoding (gzip, Brotli, zstd) | Web Server বা Application |
| Encryption | L6 | TLS Record (বা QUIC) | Process-এর ভেতরের TLS Library (যেমন OpenSSL), বা যে Load Balancer TLS Terminate করে |
| তুমি কে | L5 | Cookie বা Token | Application |
| দ্রুত আবার শুরু | L5 | TLS Session Ticket, Keep-alive | TLS Library, HTTP |
| কথোপকথন খোলা-বন্ধ | L5 | TCP Handshake আর FIN | অপারেটিং সিস্টেমের Kernel (L4) |
তাই পাতায় যখন বাংলা দেখো, তখন Cable না, Header আর Code দেখো; আর User-রা কয়েক মিনিট পরপর Logout হয়ে গেলে কোনো “Session Layer” না, দেখো Cookie, Session কোথায় রাখা হচ্ছে আর Load Balancer-এর Stickiness।
আসল HTTPS Response-এ Layer 5 আর 6
একটা দোকানের API “বাংলা বই” নামের একটা পণ্য ফেরত দেয়। প্রতিটা বাক্স এমন একটা কাজ যা OSI Model Layer 5 বা 6-কে দেয়, সঙ্গে লেখা আসলে কে করে।
পরিস্থিতি
Encode → Compress → Label → Encrypt → TCP। OSI 5 আর 6-এর প্রতিটা কাজ, করছে App, Web Server, TLS আর Kernel।
App-এর Memory-তে পণ্যটা লেখা হিসেবে আছে: অক্ষর, এখনো Byte না। Network শুধু Byte বইতে পারে।
#TCP/IP Model: যে চার Layer আসলে Internet চালায়
Internet তৈরি হয়েছে TCP/IP Model-এর (Internet Protocol Suite-ও বলে) ওপর, যার চারটি Layer:
| TCP/IP Layer | OSI Layer | এখানে কী থাকে |
|---|---|---|
| Application | 7, 6, 5 | HTTP, TLS, DNS, SMTP, SSH: তোমার Program-এর ভেতরের সবকিছু |
| Transport | 4 | TCP, UDP (আর UDP-এর ওপর QUIC) |
| Internet | 3 | IP (IPv4, IPv6), ICMP |
| Link (Network Access) | 2, 1 | Ethernet, Wi-Fi, 4G/5G, Fibre: পরের Hop-এ যা পৌঁছে দেয় |
কিছু বইয়ে Link Layer-কে Data Link ও Physical-এ ভাগ করে একে ৫-Layer Model বলা হয়। প্রতিদিনের কাজে মানুষ দুটো মিশিয়ে ফেলে: Protocol ব্যবহার করে TCP/IP-এর, নম্বর বলে OSI-এর।
| OSI | TCP/IP | |
|---|---|---|
| কে বানিয়েছে | ISO, প্রকাশ ১৯৮৪ | ১৯৭০-এর দশকে ARPANET-এর জন্য DARPA-র (মার্কিন প্রতিরক্ষা বিভাগ) গবেষণা; Host-এর শর্ত হিসেবে লেখা হয় RFC 1122 আর 1123-এ (১৯৮৯) |
| এটা কী | একটা Reference Model: যেকোনো Network বর্ণনা করার কাঠামো, কোনো Protocol-এর সঙ্গে বাঁধা না | একটা Protocol Suite, যা আগে তৈরি হয়েছে; Model পরে বর্ণনা করেছে যা বানানো হয়েছিল |
| Layer | ৭ | ৪ (কিছু বইয়ে ৫) |
| Transport-এর ওপরে | তিনটা Layer: Session, Presentation, Application | একটাই Application Layer তিনটা কাজ করে |
| Network-এর নিচে | Data Link আর Physical আলাদা | একটাই Link Layer |
| কাজে লাগে | পড়ানো, সবার এক ভাষা, Layer ধরে Troubleshooting | আসলে Internet চালানো |
OSI বেশি খুঁটিনাটি, কারণ এটা কাগজে-কলমে বানানো হয়েছিল সম্ভাব্য সব Network বর্ণনা করতে; TCP/IP ছিপছিপে, কারণ এটা এসেছে আগে থেকেই চলা Protocol থেকে। প্রতিটা Layer-এর নিজের ধরনের Address-ও আছে: Layer 2-এ MAC, Layer 3-এ IP, Layer 4-এ Port। Layer 1-এর কোনো Address নেই: সে শুধু Signal বয়ে নেয়।
Note থেকে একটি গুরুত্বপূর্ণ পার্থক্য: TCP/IP Model-এ IP Layer-এর কাজ হলো Packet গন্তব্যের দিকে পাঠানো, Hop by hop, কোনো প্রতিশ্রুতি ছাড়াই (Packet হারাতে, দুবার আসতে বা ক্রম উল্টে যেতে পারে)। TCP Layer-এর কাজ হলো নির্ভরযোগ্য Transport: তার ওপর দুটি Program-এর মধ্যে ক্রম, Retransmission ও Flow Control।
#কোন ডিভাইস কোন Layer পড়ে
একটি ডিভাইস শুধু সেই Header দেখেই সিদ্ধান্ত নিতে পারে যেটা সে খোলে। ওপরের ডিভাইস পরিস্থিতিটি এটা দেখায়, আর Note-এ প্রথম তিনটির জন্য একটি ক্লাসরুমের ছবি আছে:
| ডিভাইস | কতদূর খোলে | কী দেখে সিদ্ধান্ত | কী বদলায় |
|---|---|---|---|
| Hub, Repeater | L1 | কিছুই না (Bit পুনরাবৃত্তি করে) | কিছুই না |
| Switch | L2 | Destination MAC | কিছুই না (Source MAC শেখে) |
| Router | L3 | Destination IP + Routing Table | TTL, IP Checksum, পুরো Frame |
| NAT Router, L4 Firewall, L4 Load Balancer | L4 | IP ও Port | Address ও Port (NAT) |
| L7 Load Balancer, Reverse Proxy, WAF, API Gateway | L7 | URL, Header, Cookie | যেকোনো কিছু; HTTPS পড়তে TLS Terminate করতে হয় |
কিছু বইয়ে L5-এ একটা “Session Gateway” আর L6-এ একটা “SSL/TLS Gateway” দেখানো হয়। বাস্তবে TLS যে যন্ত্রে শেষ হয়, সেটা শেষ সারির ওই L7 Proxy বা Load Balancer; আর বেশিরভাগ আসল যন্ত্র কয়েকটা Layer জুড়ে কাজ করে (বাসার Router একসঙ্গে Switch, Router, NAT Box আর DHCP Server)।
#একটি TCP/IP Packet-এর ভেতরে কী থাকে
এবার সবচেয়ে গুরুত্বপূর্ণ Networking অংশ: তোমার Browser যখন একটি Server-এ HTTPS Request পাঠায়, Data কীভাবে একের পর এক Header-এ মোড়ানো হয়? Note-এর সরলীকৃত কাঠামো, ভেতর থেকে বাইরে:
| মোড়ক | যোগ করে | প্রধান উপাদান |
|---|---|---|
| Application Data | HTTP Request / Response | GET /index.html, Host, Cookie… |
| TLS Record | HTTP Content Encrypt করে | ৫ B Header + Ciphertext + ১৬ B Authentication Tag |
| TCP Header + Encrypted Payload = Segment | ২০–৬০ B | Source Port, Destination Port, Sequence Number, Flag… |
| IP Header + TCP Segment = Packet | ২০ B (IPv4) / ৪০ B (IPv6) | Source IP, Destination IP, TTL… |
| Ethernet / Wi-Fi Frame | ১৪ B Header + ৪ B Trailer | Local Link-এর MAC Address ও Frame তথ্য |
এই প্রক্রিয়াকে বলে Encapsulation: প্রতিটি Layer ওপর থেকে পাওয়া সবকিছুকে একটি বন্ধ Payload হিসেবে ধরে নিজের Header (কখনো Trailer-ও) যোগ করে। Receiver-এর দিকে Layer-গুলো বিপরীত ক্রমে তথ্য Process করে, যাকে বলে Decapsulation।
Encapsulation: একটি Request, মোড়ানো ও খোলা
192.168.1.10:53000 থেকে 198.51.100.20:443-এ একটি HTTPS Request। প্রতিটি Layer একটি Header যোগ করে; Receiver উল্টো ক্রমে সেগুলো খোলে।
পরিস্থিতি
ওপর থেকে নিচে: Application Data → TLS Record → TCP Segment → IP Packet → Ethernet Frame → Bit।
Browser Application Data তৈরি করে: সাধারণ Text-এ একটি HTTP Request। এই মুহূর্তে এটা শুধু Memory-তে কিছু Byte।
#Ethernet Frame, Field ধরে ধরে
| Field | আকার | উদ্দেশ্য |
|---|---|---|
| Preamble + Start Frame Delimiter | ৭ + ১ B | পর্যায়ক্রমিক Bit, যাতে Receiver ঘড়ি মেলাতে পারে, তারপর “Frame এখন শুরু” |
| Destination MAC | ৬ B | এই Link-এর পরের ডিভাইস (প্রায়ই Router, শেষ Server নয়) |
| Source MAC | ৬ B | Sender-এর Network Card |
| (VLAN Tag, ঐচ্ছিক) | ৪ B | Frame-টি কোন Virtual LAN-এর |
| EtherType | ২ B | ভেতরে কী: 0x0800 IPv4, 0x86DD IPv6, 0x0806 ARP |
| Payload | ৪৬–১৫০০ B | IP Packet; ছোট হলে ৪৬ B পর্যন্ত Padding |
| FCS (Frame Check Sequence) | ৪ B | Frame-এর ওপর একটি CRC-32 Checksum |
| Inter-frame Gap | ১২ B নীরবতা | পরের Frame-এর আগে বাধ্যতামূলক বিরতি |
Noise-এ নষ্ট হওয়া Frame ধরা হয় FCS দিয়ে। Receiver প্রাপ্ত Byte-এর ওপর CRC আবার হিসাব করে; ফল FCS থেকে ভিন্ন হলে Frame নিঃশব্দে বাতিল হয়। কাউকে জানানো হয় না। Ethernet আবার পাঠায় না (Wi-Fi নিজে কয়েকবার চেষ্টা করে), তাই উদ্ধারের দায়িত্ব TCP-এর, যে হারানো ACK লক্ষ করে Retransmit করে। ওপরের নষ্ট Frame পরিস্থিতিটি চালিয়ে দেখো।
সবচেয়ে ছোট Ethernet Frame ৬৪ Byte (Header + Payload + FCS), তাই খুব ছোট Payload-এ Padding যোগ হয়।
#IPv4 Header
| Field | উদ্দেশ্য |
|---|---|
| Version, Header Length | IPv4-এর জন্য 4; সাধারণত ২০ Byte (বিরল Option থাকলে বেশি) |
| Traffic Class Bit | অগ্রাধিকার চিহ্ন ও Congestion সংকেত |
| Total Length | পুরো Packet-এর আকার |
| Identification, Flag, Fragment Offset | Packet টুকরো (Fragment) হলে ব্যবহৃত হয়; Flag-এর মধ্যে আছে Don’t Fragment ও More Fragments |
| TTL (Time To Live) | প্রতিটি Router ১ করে কমায়; ০ হলে Packet বাতিল (Loop থামায়) |
| Protocol | ভেতরে কী: 6 = TCP, 17 = UDP, 1 = ICMP |
| Header Checksum | শুধু Header রক্ষা করে; প্রতি Hop-এ আবার হিসাব হয়, কারণ TTL বদলায় |
| Source IP, Destination IP | End-to-End Address |
IPv6 Header নির্দিষ্ট ৪০ Byte এবং সরলতর: Version, Traffic Class, Flow Label, Payload Length, Next Header (Protocol-এর মতো), Hop Limit (TTL-এর একই ধারণা), আর ১২৮-Bit Source ও Destination Address। এতে Header Checksum নেই, আর Router কখনো IPv6 Packet Fragment করে না।
#TCP ও UDP Header
TCP (ন্যূনতম ২০ Byte, Option-সহ ৬০ পর্যন্ত): Source Port, Destination Port, Sequence Number, Acknowledgment Number, Header Length, Flag (SYN, ACK, FIN, RST ও আরও কয়েকটি), Window Size (Flow Control), Checksum, Urgent Pointer, আর MSS, Window Scaling, Selective ACK ও Timestamp-এর মতো Option।
UDP (সবসময় ৮ Byte): Source Port, Destination Port, Length, Checksum। ব্যস, এজন্যই UDP দ্রুত ও সরল, আর বাকি সব (ক্রম, পুনরায় চেষ্টা) Application-এর দায়িত্ব। TCP ও UDP-এর আচরণ বিস্তারিত আছে Lesson 1.9-এ।
নিজেকে যাচাই করোপ্রশ্ন
একটি Frame Switch-এ পৌঁছাল। কোথায় পাঠাবে তা ঠিক করতে Switch কোন Field ব্যবহার করে?
#Hop by hop: পথে পথে Decapsulation
Encapsulation শুধু একবার Sender-এ হয়ে একবার Receiver-এ খোলা হয় না। পথের প্রতিটি Router Data আংশিক খোলে ও আবার মোড়ায়:
- Switch Destination MAC পড়ে Frame হুবহু পাঠিয়ে দেয়।
- Router FCS দেখে, Frame সরায়, IP Header পড়ে, পরের Hop খোঁজে, TTL কমায়, Header Checksum আবার হিসাব করে, আর পরের Link-এর জন্য নতুন Source ও Destination MAC দিয়ে একদম নতুন Frame বানায়।
- প্রতিটি Router-এ এটা চলতে থাকে। IP Address ও Port End-to-End একই থাকে (NAT বদলে না দিলে, Lesson 1.7), কিন্তু MAC Address প্রতিটি Link-এ বদলায়।
- শুধু গন্তব্য Host Application পর্যন্ত পুরোটা খোলে।
Note-এর এই লাইনের মানে এটাই: MAC Address Local Link-এ ব্যবহৃত হয়, আর IP Address End-to-End গন্তব্য চিহ্নিত করে। Lesson 1.6 এটাকে Addressing-এর দিক থেকে দেখে।
Hop by hop: প্রতিটি ডিভাইস Packet কতটা খোলে
Map-এর নিচের Header Field-গুলো দেখো। হাইলাইট করা Field মাত্রই বদলানো হয়েছে। (এখানে NAT নেই, তাই খাঁটি Routing দেখা যাবে; NAT আছে Lesson 1.7-এ।)
পরিস্থিতি
Laptop থেকে বের হওয়ার সময়
Dest MAC (L2)
00:1a:2b:00:00:01 (router)
Source MAC (L2)
3c:22:fb:01:01:01 (laptop)
Source IP (L3)
203.0.113.10
Dest IP (L3)
198.51.100.20
TTL (L3)
64
Port (L4)
53000 → 443
Laptop পুরো Stack তৈরি করে। Frame-এর Destination MAC অফিস Router-এর (ARP দিয়ে পাওয়া), কারণ Server অন্য Network-এ।
TTL ০ হলে Router Packet বাতিল করে আর একটি ICMP Time Exceeded বার্তা ফেরত পাঠায়। TTL না থাকলে একটি Routing ভুলে Packet চিরকাল ঘুরত। traceroute Tool এটাকে কাজে লাগায়: TTL 1, 2, 3… দিয়ে Packet পাঠায়, ফলে প্রতিটি Router পালা করে নিজের পরিচয় দেয়।
#MTU, MSS ও Fragmentation
প্রতিটি Link-এর একটি MTU (Maximum Transmission Unit) আছে: একটি Frame-এ সবচেয়ে বড় যে IP Packet সে বইতে পারে। Ethernet ও Wi-Fi-এর জন্য এটা ১৫০০ Byte। আরও কিছু সাধারণ মান: PPPoE Broadband-এ ১৪৯২, VPN Tunnel-এর ভেতরে প্রায় ১৪০০ বা কম (Tunnel নিজের Header যোগ করে), আর Data Centre-এর ভেতরে ৯০০০-এর “Jumbo Frame”।
MTU থেকে TCP তার MSS (Maximum Segment Size) বের করে, অর্থাৎ একটি Segment সর্বোচ্চ কতটা Application Data বইতে পারে:
- IPv4: ১৫০০ − ২০ (IP) − ২০ (TCP) = ১৪৬০ Byte
- IPv6: ১৫০০ − ৪০ − ২০ = ১৪৪০ Byte
TCP Handshake-এর সময় দুই পক্ষ নিজেদের MSS জানিয়ে দেয়। তাই ১০ KB-এর একটি Response-কে TCP ৭টি Segment-এ কাটে, প্রতিটি নিজস্ব Packet হিসেবে যায়।
Packet যদি পরের Link-এর MTU-র চেয়ে বড় হয়?
- IPv4, Don’t Fragment বন্ধ: Router একে Fragment-এ ভাগ করে, প্রতিটিতে IP Header-এর কপি, একই Identification, একটি Offset আর “More Fragments” Flag থাকে। শুধু গন্তব্য এগুলো জোড়া লাগায়। একটি Fragment হারালে পুরো Packet হারায়, আর Firewall Fragment অপছন্দ করে, তাই এটা এড়িয়ে চলা হয়।
- IPv4, Don’t Fragment চালু (TCP যা করে): Router Packet ফেলে দিয়ে ছোট MTU-সহ ICMP “Fragmentation needed” ফেরত পাঠায়। Sender ওই গন্তব্যের জন্য Packet ছোট করে। একে বলে Path MTU Discovery।
- IPv6: Router কখনো Fragment করে না; ICMPv6 “Packet Too Big” ফেরত পাঠায় আর Sender মানিয়ে নেয়। প্রতিটি IPv6 Link-কে অন্তত ১২৮০ Byte বইতে হবে।
#সংখ্যায় Overhead
Ethernet-এ পূর্ণ আকারের একটি TCP/IPv4 Packet-এর হিসাব:
| অংশ | Byte |
|---|---|
| Preamble + Delimiter | ৮ |
| Ethernet Header | ১৪ |
| IPv4 Header | ২০ |
| TCP Header | ২০ |
| তোমার Data (MSS) | ১৪৬০ |
| FCS | ৪ |
| Inter-frame Gap | ১২ |
| তারে মোট সময় | ১৫৩৮ |
দক্ষতা ১৪৬০ ÷ ১৫৩৮ ≈ ৯৫ %। TCP Timestamp (Header-এ আরও ১২ Byte, Linux-এ সাধারণ) আর TLS (প্রতি Record-এ প্রায় ২১ Byte) যোগ করলে কাজের Data নেমে আসে প্রায় ৯৩ %-এ। ১ Byte Payload-এর ক্ষেত্রে ছবিটা উল্টো: ১ Byte পৌঁছাতে তারে ৮৪ Byte। নিজে চালিয়ে দেখো:
Overhead Calculator: মোড়কের খরচ কত
Input বদলাও। Bar-টি একটি Ethernet Link-এ পূর্ণ আকারের একটি Packet, Byte ধরে ধরে দেখায়।
পাঠানোর Application Data: 10,000 Byte
তারে প্রথম Packet: 1,538 Byte
- Preamble + Delimiter 8
- Ethernet Header 14
- IPv4 20
- TCP 20
- তোমার Data 1,460
- FCS 4
- Inter-frame Gap 12
প্রতি Packet-এ সর্বোচ্চ Data
1,460 B
কয়টি Packet লাগবে
7
তারে মোট Byte
10,546 B
দক্ষতা (Data ÷ মোট)
94.8 %
1,460 = 1,500 − 20 (IPv4) − 20 (TCP). TCP-এর ক্ষেত্রে এটাই MSS।
#System Design-এ Layer
- Load Balancer বাছাই মানে Layer বাছাই। একটি L4 Load Balancer (যেমন AWS Network Load Balancer) IP ও Port দেখে TCP/UDP পাঠায়: খুব দ্রুত, যেকোনো Protocol চলে, কিন্তু URL দেখতে পায় না। একটি L7 Load Balancer (AWS Application Load Balancer, Nginx, Envoy) TLS Terminate করে Path, Header বা Cookie দেখে Route করে, বেশি Processing খরচে।
- TLS কোথায় Terminate হয় সেটাই ঠিক করে কে Traffic পড়তে পারবে: Load Balancer-এ (তার পেছনে সে সাধারণ HTTP দেখে) নাকি Application-এ (End-to-End Encryption, কিন্তু Load Balancer তখন শুধু L4 করতে পারে)।
- ছোট বার্তা ব্যয়বহুল। প্রতিটি Request Header-এর খরচ আর একটি Round Trip দেয়। Batching, Connection খোলা রাখা আর HTTP/2 Multiplexing আংশিক এই কারণেই।
- Cloud-এ MTU গুরুত্বপূর্ণ। AWS VPC-এর ভেতরে Jumbo Frame (৯০০১) চলে, কিন্তু VPN বা Internet দিয়ে বের হওয়া Traffic ১৫০০ বা কমে নেমে আসে। MTU না মিললে ঠিক ওপরের Black Hole লক্ষণ দেখা দেয়।
- Layer ধরে Debug করো। Link চালু? (L1/L2) Gateway-তে ping যায়? (L3) Port খোলা? (L4) App ঠিক উত্তর দেয়? (L7) Lesson 1.14-এ এটাকে একটি Checklist বানানো হয়েছে।
#নিজে চেষ্টা করো
# তোমার Interface-এর MTU দেখো
ip link show # Linux: "mtu 1500" খোঁজো
netsh interface ipv4 show subinterfaces # Windows
# Path MTU বের করো: এমন Packet পাঠাও যা Fragment করা যাবে না
ping -M do -s 1472 example.com # Linux: 1472 + 8 ICMP + 20 IP = 1500
ping -f -l 1472 example.com # Windows-এ একই কাজ
# 1472-এ "Frag needed" / "needs to be fragmented" এলে, কাজ না করা পর্যন্ত আকার কমাও।
# TTL দিয়ে Hop খুঁজে বের করা দেখো
traceroute example.com # macOS / Linux
tracert example.com # Windows
নিজের চোখে Encapsulation দেখতে Wireshark খোলো, Wi-Fi Interface-এ Capture চালু করো আর যেকোনো Website খোলো। একটি Packet-এ Click করো: মাঝের অংশে Layer-গুলো ঠিক এই Lesson-এর মতো সাজানো, Ethernet → Internet Protocol → Transmission Control Protocol → Transport Layer Security, আর প্রতিটি Header Field খুলে দেখা যায়।
#সারসংক্ষেপ
মূল বিষয়গুলো
- Networking Layer-এ ভাগ করা, যাতে প্রতিটি Layer একটি কাজ করে, শুধু নিচের Layer ব্যবহার করে আর নিজের Header দিয়ে সমকক্ষের সঙ্গে কথা বলে। Layer আলাদাভাবে বদলানো যায়।
- OSI (৭ Layer): Physical (Bit), Data Link (Frame, MAC, Switch), Network (Packet, IP, Router), Transport (Segment/Datagram, Port), Session, Presentation, Application। TCP/IP (৪ Layer): Link, Internet, Transport, Application।
- Encapsulation: Application Data → TLS Record → TCP Segment → IP Packet → Ethernet/Wi-Fi Frame → Bit। Receiver উল্টো ক্রমে Decapsulate করে।
- IP Layer Packet গন্তব্যের দিকে পাঠায়; TCP Layer Transport নির্ভরযোগ্য করে। MAC Address একটি Local Link-এ কাজ করে আর প্রতিটি Router-এ বদলায়; IP Address End-to-End গন্তব্য চিহ্নিত করে।
- Switch L2 পড়ে, Router L3 পড়ে আর TTL ও Frame বদলায়, L7 ডিভাইস HTTP পড়ে (এবং TLS Terminate করতে হয়)।
- Physical Layer: Bit হয়ে যায় তামার তারে Voltage, Fibre-এ আলো বা Radio Wave; এর Encoding (NRZ, Manchester আর দ্রুততর Code) Sender আর Receiver-কে একই তালেও রাখে। ভাগ করা Medium-এ (Bus, Hub) Collision হয়, তাই লাগে CSMA/CD; Switch প্রতিটা Port-কে নিজের Full-duplex Link দেয়, Collision আর থাকে না।
- Session আর Presentation-এর কাজগুলো সত্যি, কিন্তু আজ থাকে Application-এর ভেতরে: Session থাকে TCP, TLS আর Cookie-তে; Checkpoint থাকে Resumable Upload-এ; Encoding (UTF-8), Compression (gzip, Brotli) আর Format থাকে App আর HTTP-তে; Encryption থাকে TLS-এ। Mojibake মানে ঠিক Byte, ভুল Table দিয়ে পড়া; প্রতিটা লেখার সঙ্গে তার Charset বলে দাও।
- FCS নষ্ট Frame ধরে, যা নিঃশব্দে বাতিল হয়; TTL ঘুরতে থাকা Packet মেরে ফেলে; MTU (১৫০০) Packet-এর আকার সীমিত করে, MSS (১৪৬০) প্রতি Segment-এ TCP Data সীমিত করে, আর আটকানো ICMP থেকে MTU Black Hole হয়।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
Router IP Header দেখে Data Forward করে। সে যে একক Forward করে, তার ঠিক নাম কী?
নিজেকে যাচাই করোপ্রশ্ন
কোন OSI Layer একটা Local Link-এ Data পৌঁছাতে MAC Address ব্যবহার করে?
নিজেকে যাচাই করোপ্রশ্ন
চার Layer-এর TCP/IP Model-এ OSI-এর Layer 5, 6 আর 7-এর কাজগুলো কোথায় যায়?
নিজেকে যাচাই করোপ্রশ্ন
UDP Header কত লম্বা?
নিজেকে যাচাই করোপ্রশ্ন
Unicode আর UTF-8-এর পার্থক্য কী?
নিজেকে যাচাই করোপ্রশ্ন
বাংলা শব্দটায় ৫টা অক্ষর। UTF-8-এ এটা কত Byte নেয়?
নিজেকে যাচাই করোপ্রশ্ন
নিচের কোন Format-টা Lossless?
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। Manchester Encoding নিয়ে কোন কথাগুলো সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটি Laptop তিনটি Router দূরের একটি Web Server-এ Packet পাঠাল। Laptop থেকে বের হওয়ার সময়ের তুলনায় পৌঁছানোর সময় কোন Field-গুলো ভিন্ন (NAT নেই)?
নিজেকে যাচাই করোপ্রশ্ন
IPv4 সহ একটি সাধারণ Ethernet Link-এ TCP MSS কত?
নিজেকে যাচাই করোপ্রশ্ন
নতুন একটি VPN দিয়ে Website-এর Login Page খোলে, কিন্তু বড় File Download চিরকাল আটকে থাকে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা ছোট অফিসে এখনো বারোটা PC একটা পুরনো Hub-এ লাগানো। কয়েকজন একসঙ্গে File Copy করলে সবার গতি Port-এর প্রতিশ্রুত 100 Mbps-এর অনেক নিচে নেমে যায়। Hub বদলে Switch লাগাতেই সমস্যা মিটে গেল। কেন?
নিজেকে যাচাই করোপ্রশ্ন
একটা দোকানের Website নতুন Server-এ সরানোর পর বাংলায় লেখা পণ্যের নাম বাংলা-র বদলে দেখাচ্ছে বাংলা। Database-এর লেখা বদলায়নি। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। নিচের কোন কাজগুলো OSI Model Presentation Layer-কে দেয়, আর আসল HTTPS Request-এ Application বা তার TLS Library-র ভেতরে ঘটে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা Mobile App-এর User-রা দুর্বল ফোন Connection-এ ২ GB-এর ভিডিও Upload করে। প্রায়ই ৭০%-এর কাছে গিয়ে Upload ভেঙে যায় আর আবার শূন্য থেকে শুরু হয়, ফলে অনেকেরটা কখনো শেষই হয় না। কোন পরিবর্তনে সমাধান হবে?
নিজেকে যাচাই করোপ্রশ্ন
OSI-এর পরীক্ষায় “কোন Layer Data Encrypt করে?” প্রশ্নের উত্তর Presentation Layer। আসল একটা Web Server-এ HTTPS Traffic আসলে কোথায় Encrypt হয়?
নিজেকে যাচাই করোপ্রশ্ন
একটা Hub-এ দুটো PC ঠিক একই মুহূর্তে পাঠানো শুরু করল, ধাক্কা খেল আর Jam Signal পাঠাল। আবার চেষ্টার আগে CSMA/CD দুজনকে নির্দিষ্ট সময় না, এলোমেলো সময় অপেক্ষা করায় কেন?
নিজেকে যাচাই করোপ্রশ্ন
Ethernet-এ পুরো আকারের একটা TCP/IPv4 Packet ১,৪৬০ Byte Data বয় আর তারে ১,৫৩৮ Byte-এর সময় নেয়। দক্ষতা কত?
নিজেকে যাচাই করোপ্রশ্ন
IPv6-সহ সাধারণ ১৫০০ Byte-এর Ethernet Link-এ TCP MSS কত?
নিজেকে যাচাই করোপ্রশ্ন
একটা IoT Sensor Ethernet-এ একটা TCP/IPv4 Packet-এ মাত্র এক Byte Data পাঠায়। Preamble আর Frame-এর মাঝের বিরতি ধরে তারে কত Byte-এর সময় লাগে?
নিজেকে যাচাই করোপ্রশ্ন
একটা VPN দিয়ে Server-এ ping -M do -s 1472 পাঠালে Frag-needed বার্তা দিয়ে ব্যর্থ হয়, অথচ ping -M do -s 1400 কাজ করে। এ থেকে কী বোঝা যায়?
নিজেকে যাচাই করোপ্রশ্ন
২০০ MB-এর একটা Log Archive Compress করে ৫০ MB হলো। কতটা কমল?
নিজেকে যাচাই করোপ্রশ্ন
নতুন MySQL Server-এ যাওয়ার পর Emoji-ওয়ালা গ্রাহকদের Review Save হচ্ছে Emoji-র জায়গায় ???? দিয়ে, অথচ বাংলা লেখা ঠিক আছে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
দশটা ব্যস্ত PC একটা 100 Mbps Hub ভাগ করে। সবাই একসঙ্গে পাঠালে প্রত্যেকে মোটামুটি কত Throughput আশা করতে পারে?
নিজেকে যাচাই করোপ্রশ্ন
একটা Desktop-এর Link হঠাৎ 1 Gbps-এর বদলে 100 Mbps-এ উঠছে, আর ethtool দেখাচ্ছে CRC Error Counter বাড়ছে। সবচেয়ে সম্ভাব্য কারণ আর সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
পুরনো TLS-এ যে Compression-এর সুযোগ ছিল, TLS 1.3 সেটা বাদ দিল কেন?
নিজেকে যাচাই করোপ্রশ্ন
নিচের কোনটা OSI Model Presentation Layer-কে দেয় না?
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। একটা Packet NAT ছাড়া তিনটা Router পার হলো। পাঠানোর সময়ের তুলনায় পৌঁছানোর সময় কোন Field-গুলো আলাদা?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। Ethernet-এর FCS নিয়ে কোন কথাগুলো সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
একটা দল চায় HTTPS Traffic-এ তাদের Load Balancer /api Request এক দল Server-এ আর /images আরেক দলে পাঠাক। তাদের কী লাগবে?
নিজেকে যাচাই করোপ্রশ্ন
OSI Model আর TCP/IP Model নিয়ে কোন কথাটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। আজকের Web-এ OSI Session Layer-এর কাজগুলো আসলে কোথায় ঘটে?
বেছে নাও ২