Skip to content
← নেটওয়ার্কিং · প্রাথমিক · 12 মিনিট · 01 / 08 EN

ইন্টারনেট কীভাবে কাজ করে

প্যাকেট, রাউটার, আর যে ফিজিক্যাল ইনফ্রাস্ট্রাকচার কোটি কোটি ডিভাইসকে যুক্ত করে — প্রোটোকলে ঢোকার আগে বড় ছবিটা।

internetpacketsroutersISP

গল্পে বুঝি

ঢাকার আল-খোয়ারিজমি কুরিয়ারে করে চট্টগ্রামে ফাতিমা আল-ফিহরির দোকানে একগাদা মালামাল পাঠাবে — এক কার্টনে ধরে না। তাই কুরিয়ার অফিস মালটা ভেঙে অনেকগুলো আলাদা প্যাকেটে ভরে, আর প্রতিটা প্যাকেটের গায়ে একই ঠিকানা সেঁটে দেয়: প্রেরক আল-খোয়ারিজমি, ঢাকা; প্রাপক ফাতিমা আল-ফিহরি, চট্টগ্রাম। এক ট্রাকে সব যায় না, তাই প্যাকেটগুলো আলাদা আলাদাভাবে রওনা দেয়।

প্রতিটা প্যাকেট প্রথমে ঢাকার লোকাল হাবে যায়। সেখানকার লোক পুরো রাস্তা চেনে না — সে শুধু ঠিকানা দেখে ঠিক করে পরের হাব কোনটা হবে, আর সেদিকে ঠেলে দেয়। এভাবে কুমিল্লা হাব, ফেনী হাব — হাব থেকে হাবে হাত বদল হতে হতে প্যাকেট চট্টগ্রামের দিকে এগোয়। রাস্তায় জ্যাম থাকলে কোনো প্যাকেট হয়তো অন্য রুটে ঘুরে যায়, তাই সবগুলো একই পথে বা একই সময়ে পৌঁছায় না। শেষে ফাতিমা আল-ফিহরির দোকানে সব প্যাকেট জমা হলে সে ঠিকানার আর সিরিয়াল নম্বর মিলিয়ে আবার পুরো মালটা সাজিয়ে নেয়।

এই গল্পটাই আসলে ইন্টারনেট। বড় ডেটাটা ভেঙে ছোট ছোট packet বানানো হয়, প্রতিটার হেডারে থাকে সোর্স আর ডেস্টিনেশন IP address (আল-খোয়ারিজমি-ফাতিমা আল-ফিহরির ঠিকানার মতো)। কুরিয়ার হাবগুলোই হলো router — প্রতিটা শুধু পরের হপ ঠিক করে, পুরো পথ কেউ জানে না, এটাই hop-by-hop routing। আলাদা আলাদা network পার হয়ে প্যাকেট ভিন্ন রুটে, এলোমেলো ক্রমে পৌঁছাতে পারে, আর গন্তব্যে গিয়ে sequence number মিলিয়ে আবার reassemble হয়। বাস্তবে আপনি যখন একটা ভিডিও লোড করেন, সেটাও এভাবেই হাজারো প্যাকেটে ভেঙে ১০-২০টা নেটওয়ার্ক পেরিয়ে আপনার ফোনে এসে আবার জোড়া লাগে।

ইন্টারনেট হলো নেটওয়ার্কের নেটওয়ার্ক

ইন্টারনেট একটা কোনো একক জিনিস নয় — এটা হাজার হাজার স্বাধীন নেটওয়ার্ক (ISP, বিশ্ববিদ্যালয়, কোম্পানি, ডেটা সেন্টার) যারা নিজেদের মধ্যে ট্রাফিক পাস করতে রাজি হয়। আপনি যখন একটা ওয়েবপেজ লোড করেন, তখন সার্ভারে পৌঁছানোর আগে আপনার রিকোয়েস্ট হয়তো ১০-২০টা আলাদা নেটওয়ার্ক পার হয়।

বাস্তব জীবনের উদাহরণ

অনেকটা ডাক ব্যবস্থার মতো — আপনার চিঠি (প্যাকেট) আপনার লোকাল পোস্ট অফিস (ISP) থেকে রিজিওনাল সর্টিং সেন্টার (রাউটার) হয়ে গন্তব্যে যায়। প্রতিটা সর্টিং সেন্টার শুধু পরের গন্তব্যটা জানে, পুরো রুট নয়।

প্যাকেট: মৌলিক একক

ইন্টারনেটে ডেটা প্যাকেট হিসেবে চলে — ছোট ছোট টুকরো (সাধারণত সর্বোচ্চ 1,500 বাইট) যার একটা হেডারে থাকে সোর্স/ডেস্টিনেশন অ্যাড্রেস আর একটা পেলোডে থাকে আপনার আসল ডেটা।

অবিচ্ছিন্ন স্ট্রিমের বদলে প্যাকেট কেন? কারণ শেয়ার করাটা এফিশিয়েন্ট। একটা তারই একসাথে লক্ষ লক্ষ কথোপকথনের প্যাকেট বহন করতে পারে — প্রতিটা প্যাকেট নিজের পথ ধরে গন্তব্যে পৌঁছায়।

// Conceptual model of a packet
interface Packet {
	header: {
		sourceIP: string; // "192.168.1.5"
		destinationIP: string; // "93.184.216.34"
		protocol: 'TCP' | 'UDP';
		sequenceNumber: number; // for reassembly
		ttl: number; // time to live (hop limit)
	};
	payload: Uint8Array; // up to ~1460 bytes of actual data
}

একটা রিকোয়েস্ট কীভাবে ভ্রমণ করে

আপনি যখন ব্রাউজারে example.com টাইপ করেন, নেটওয়ার্ক লেভেলে যা ঘটে:

  1. DNS resolution — আপনার ব্রাউজার জিজ্ঞেস করে “example.com-এর IP address কী?” (অধ্যায় ২-এ আলোচনা করা হয়েছে)
  2. TCP handshake — কানেকশন প্রতিষ্ঠা করতে আপনার মেশিন আর সার্ভার ৩টা প্যাকেট আদান-প্রদান করে (অধ্যায় ৩)
  3. TLS handshake — HTTPS হলে, এনক্রিপশন ঠিক করতে আরও কয়েকটা প্যাকেট (অধ্যায় ৫)
  4. HTTP request — আপনার ব্রাউজার আসল রিকোয়েস্টটা পাঠায়
  5. Routing — প্রতিটা প্যাকেট রাউটার হয়ে হপ করে, প্রতিটা রাউটার পরের হপ ঠিক করে
  6. Response — সার্ভার ডেটা ফেরত পাঠায়, সম্ভবত অনেকগুলো প্যাকেট হিসেবে

রাউটার আর রাউটিং

প্রতিটা রাউটারের একটা routing table থাকে — একটা লুকআপ টেবিল যা ডেস্টিনেশন IP রেঞ্জকে পরের যে রাউটারে ফরওয়ার্ড করতে হবে তার সাথে ম্যাপ করে। রাউটার পুরো পথ জানে না, শুধু সেরা পরের হপটা জানে।

// Simplified routing table
const routingTable: Record<string, string> = {
	'10.0.0.0/8': 'eth0', // local network
	'172.16.0.0/12': '192.168.1.1', // forward to gateway
	'0.0.0.0/0': '203.0.113.1' // default route (ISP)
};

function route(destinationIP: string): string {
	// Find the most specific matching prefix
	// In reality, this uses a trie (prefix tree) for efficiency
	for (const [prefix, nextHop] of Object.entries(routingTable)) {
		if (matchesCIDR(destinationIP, prefix)) {
			return nextHop;
		}
	}
	return routingTable['0.0.0.0/0']; // default route
}

Traceroute আপনাকে দেখায় প্যাকেট আসলে কোন পথ নেয়। আপনার আর Google-এর সার্ভারের মধ্যে প্রতিটা রাউটার হপ দেখতে টার্মিনালে traceroute google.com চালান।

IP অ্যাড্রেস

ইন্টারনেটের প্রতিটা ডিভাইসের একটা অ্যাড্রেস দরকার। IPv4 অ্যাড্রেস হলো 32-bit সংখ্যা, চারটা অক্টেট হিসেবে লেখা: 192.168.1.1। সম্ভাব্য IPv4 অ্যাড্রেস আছে মাত্র ~4.3 বিলিয়ন — পৃথিবীর প্রতিটা ডিভাইসের জন্য যথেষ্ট নয়।

সমাধান:

  • NAT (Network Address Translation) — অনেক ডিভাইস একটা পাবলিক IP শেয়ার করে, তাদের আলাদা করতে port নম্বর ব্যবহার করে
  • IPv6 — 128-bit অ্যাড্রেস (2001:0db8:85a3::8a2e:0370:7334), ট্রিলিয়ন ট্রিলিয়ন ডিভাইসের জন্য যথেষ্ট
// IPv4 is just a 32-bit number
function ipToNumber(ip: string): number {
	return ip.split('.').reduce((acc, octet) => (acc << 8) + parseInt(octet), 0) >>> 0;
}

// "192.168.1.1" → 3232235777
console.log(ipToNumber('192.168.1.1'));

OSI মডেল (সরলীকৃত)

নেটওয়ার্কিং লেয়ারে লেয়ারে তৈরি। প্রতিটা লেয়ার একটা করে বিষয় সামলায়:

LayerNameকী করেউদাহরণ
7Applicationআপনার অ্যাপের প্রোটোকলHTTP, WebSocket
4Transportনির্ভরযোগ্য ডেলিভারিTCP, UDP
3Networkঅ্যাড্রেসিং ও রাউটিংIP
2Data Linkলোকাল নেটওয়ার্ক ফ্রেমEthernet, WiFi
1Physicalতারের উপর bitFiber optic, radio

প্রতিটা লেয়ার তার উপরের লেয়ারটাকে মুড়ে রাখে। একটা HTTP মেসেজ ঢোকে একটা TCP segment-এর ভেতর, সেটা ঢোকে একটা IP প্যাকেটের ভেতর, সেটা ঢোকে একটা Ethernet frame-এর ভেতর, তারপর তারে।

মূল বিষয়গুলো

  1. ইন্টারনেট হলো নেটওয়ার্কের নেটওয়ার্ক — প্যাকেট স্বাধীন নেটওয়ার্কজুড়ে রাউটার হয়ে হপ করে
  2. প্যাকেট ছোট, স্বাধীন একক — তারা আলাদা আলাদা পথ নিতে পারে আর এলোমেলো ক্রমে পৌঁছাতে পারে
  3. রাউটার শুধু পরের হপ জানে — কোনো একক ডিভাইস পুরো পথ জানে না
  4. লেয়ার বিষয়গুলো আলাদা করে — প্রতিটা প্রোটোকল একটা কাজ সামলায় আর নিচের লেয়ারের উপর তৈরি হয়