1.6
Address: IP, MAC, Port, ARP ও DHCP
প্রতিটি Packet-এর তিন ধরনের Address, Public বনাম Private, Subnet, এবং ডিভাইস কীভাবে এগুলো পায় ও খুঁজে নেয়।
34 মিনিট পড়া + Animation
টিপস: ডটেড-আন্ডারলাইন করা যেকোনো শব্দে ট্যাপ বা Hover করলে তার অর্থ দেখবে।
এই Lesson শেষে তুমি পারবে
- প্রতিটি Packet যে তিনটি Address বহন করে (MAC, IP, Port) তাদের নাম বলতে, এবং কোনটা কোন Layer ব্যবহার করে ও কতদূর যায় তা বলতে।
- একটি IPv4 Address Binary-তে পড়তে, Subnet Mask বা CIDR Prefix দিয়ে Network ও Host অংশে ভাগ করতে, আর Network, Broadcast, Range ও Host সংখ্যা হিসাব করতে।
- Private, Public, Loopback, Link-local (169.254), CGNAT ও Documentation Address চিনতে, এবং IPv6 Address পড়তে ও ছোট করে লিখতে।
- Port, Socket ও 5-tuple ব্যাখ্যা করতে, আর Well-known, Registered ও Ephemeral Port Range বলতে।
- DHCP (DORA, Lease) ও ARP (Request, Reply, Cache, Gratuitous ARP, Subnet-এর বাইরের Traffic) ধাপে ধাপে বোঝাতে, কী ভুল হতে পারে তা-সহ: DHCP Server না থাকা, IP Conflict, ভুয়া Server ও Spoofing।
- চারটা চালু ভুল ধারণা ধরতে: MAC Address চিরস্থায়ী, IPv6-এ IPsec বাধ্যতামূলকভাবে চালু, 255.255.255.0 একটা “Classful” Mask, আর ARP করে Switch।
#প্রতিটি Packet-এ তিনটি Address
তোমার Laptop যখন Network-এ কিছু পাঠায়, Data-তে থাকে তিনটি আলাদা Address, প্রতি Layer-এ একটি:
| Address | Layer | উদাহরণ | কী চিহ্নিত করে | কতদূর যায় |
|---|---|---|---|---|
| MAC Address | L2 (Data Link) | 3c:22:fb:01:01:01 | Local Link-এ একটি Network Interface | এক Hop: প্রতিটি Router-এ বদলায় |
| IP Address | L3 (Network) | 192.168.1.10, 2001:db8::10 | পুরো Network-এ একটি Host (একটি Interface) | End to end (NAT না বদলালে) |
| Port Number | L4 (Transport) | 443, 53000 | ওই Host-এর একটি Program / Connection | End to end (NAT না বদলালে) |
Note-এ প্রথম দুটির সংজ্ঞা আছে:
- IP (Internet Protocol) ডিভাইসকে Network-এ একটি Logical Address দেয় আর Packet সেদিকে বয়ে নেয়। “Logical” মানে এটা Configuration দিয়ে দেওয়া হয়, Hardware-এ খোদাই করা নয়, আর তুমি কোন Network-এ আছ তার ওপর নির্ভর করে।
- MAC (Media Access Control) হলো Hardware Address, যা Local Network-এ একটি Network Interface চেনায়। Ethernet ও Wi-Fi-তে Frame পৌঁছানো হয় MAC দেখে।
#IPv4 Address
একটি IPv4 Address হলো একটি ৩২-Bit সংখ্যা। পড়ার সুবিধার জন্য একে চারটি Octet (৮-Bit Byte) হিসেবে দশমিকে লেখা হয়, ডট দিয়ে আলাদা করে: Dotted-decimal Notation। প্রতিটি Octet ০–২৫৫।
| Octet 1 | Octet 2 | Octet 3 | Octet 4 | |
|---|---|---|---|---|
| দশমিক | 192 | 168 | 1 | 10 |
| Binary | 11000000 | 10101000 | 00000001 | 00001010 |
একটি Octet রূপান্তর করতে যে Bit-গুলো 1 তাদের মান যোগ করো: ১২৮, ৬৪, ৩২, ১৬, ৮, ৪, ২, ১। ১৯২ হলো ১২৮ + ৬৪, তাই 11000000; ১০ হলো ৮ + ২, তাই 00001010।
৩২ Bit-এ হয় 2³² ≈ ৪.৩ বিলিয়ন Address। শুনতে অনেক, কিন্তু ফোন, Laptop, Server আর IoT ডিভাইসে তা ফুরিয়ে গেছে: কেন্দ্রীয় Pool (IANA) শেষ হয়েছে ২০১১ সালে, আর আঞ্চলিক Registry-গুলো (বাংলাদেশ ও এশিয়া-প্যাসিফিকের জন্য APNIC) তার কিছু পরেই। Private Address, NAT ও IPv6 হলো এর উত্তর, যা নিচে দেখবে।
#Network অংশ ও Host অংশ
প্রতিটি IPv4 Address-এর দুটি অংশ:
- Network অংশ (Prefix): Address-টি কোন Network-এর, ওই Subnet-এর সব ডিভাইসের জন্য একই;
- Host অংশ: ওই Network-এর ভেতরে কোন ডিভাইস।
ভাগটা কোথায় হবে তা বলে Subnet Mask, যা ডট দিয়ে লেখা হয় অথবা CIDR Prefix Length (Classless Inter-Domain Routing) হিসেবে: শুরুর দিকের 1-Bit-এর সংখ্যা।
IP address 192.168.1.10 11000000.10101000.00000001.00001010
Subnet mask 255.255.255.0 11111111.11111111.11111111.00000000 (= /24)
───────── network (24 bits) ───────── host (8 bits)
Network 192.168.1.0 (host bits all 0)
Broadcast 192.168.1.255 (host bits all 1)
Usable hosts 192.168.1.1 – 192.168.1.254 → 2⁸ − 2 = 254
যে Address-এর সব Host Bit 0, সেটা Network-এর নিজের নাম, আর যার সব Host Bit 1, সেটা Subnet-এর Broadcast Address (“এই Subnet-এর সবাই”)। এজন্যই ব্যবহারযোগ্য Host = 2^(Host Bit) − 2।
| Prefix | Mask | Address | ব্যবহারযোগ্য Host | সাধারণ ব্যবহার |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 16,777,216 | 16,777,214 | পুরো 10.0.0.0/8 Private Range |
| /16 | 255.255.0.0 | 65,536 | 65,534 | একটি Cloud VPC, একটি ক্যাম্পাস |
| /24 | 255.255.255.0 | 256 | 254 | বাসা বা অফিসের LAN, একটি Cloud Subnet |
| /25 | 255.255.255.128 | 128 | 126 | একটি /24-এর অর্ধেক |
| /26 | 255.255.255.192 | 64 | 62 | একটি ছোট Subnet |
| /30 | 255.255.255.252 | 4 | 2 | পুরনো ধাঁচের Point-to-point Link |
| /31 | 255.255.255.254 | 2 | 2 | Point-to-point Link (Network/Broadcast লাগে না) |
| /32 | 255.255.255.255 | 1 | 1 | একটিমাত্র Host (Firewall Rule, Route) |
Prefix-এ প্রতিটি বাড়তি Bit Block-কে অর্ধেক করে। একটি Network-কে ছোট ছোট ভাগে ভাগ করাকে বলে Subnetting: একটি /24 হতে পারে দুটি /25, চারটি /26, এভাবে।
Network-কে Subnet-এ ভাগ করার কারণও ঠিক এই দুটো:
- Broadcast কমে। ARP Request আর DHCP Discover Subnet-এর প্রত্যেক ডিভাইসের কাছে যায়। এক সমতল Network-এ ১০০০টা ডিভাইস থাকলে প্রতিটা মেশিন অন্যদের Broadcast সামলাতে সময় নষ্ট করে; ২০০ করে ৫টা Subnet হলে প্রতিটা Broadcast শুধু নিজের রুমেই পৌঁছায়, কারণ Router Broadcast পার করে না।
- নিরাপত্তা আর Access Control সহজ হয়। এক Subnet থেকে আরেক Subnet-এ যেতে হলে Router বা Firewall পেরোতে হয়, তাই পুরো একটা রুমের জন্য একটা Rule লিখলেই হয়: “Guest Wi-Fi-র Subnet Internet-এ যেতে পারবে, কিন্তু Accounts-এর Subnet-এ না।”
বাস্তবের Subnet অবশ্য ২০০-র মতো গোল সংখ্যায় হয় না, হয় দুইয়ের ঘাতে। ২০০ পর্যন্ত ডিভাইসের ৫টা রুমের জন্য তুমি নেবে পাঁচটা /24 Subnet (প্রতিটায় ২৫৪টা ব্যবহারযোগ্য), যেমন 10.1.1.0/24 থেকে 10.1.5.0/24।
Subnet Calculator: Network অংশ, Host অংশ
যেকোনো IPv4 Address লেখো আর Prefix টেনে বদলাও। নীল Bit-গুলো Network-এর নাম, ধূসর Bit-গুলো তার ভেতরের Host-এর নাম।
192.168.1.10 /24
Subnet Mask 255.255.255.0
Subnet Mask
255.255.255.0 (/24)
Network Address
192.168.1.0/24
Broadcast Address
192.168.1.255
ব্যবহারযোগ্য Host Range
192.168.1.1 – 192.168.1.254
Block-এ মোট Address
256
ব্যবহারযোগ্য Host
254 (= 256 − 2)
Address-এর ধরন: Private (192.168/16): Internet-এ Route হয় না
এই গন্তব্য কি আমার Subnet-এ?
192.168.1.20: একই Subnet: Network Bit মিলে গেছে। Laptop সরাসরি এই Address-এর জন্য ARP করে আর Frame সোজা তাকেই পাঠায়।
#Local কিনা? প্রতিটি Host-এর সিদ্ধান্ত
পাঠানোর আগে Host Mask ব্যবহার করে গন্তব্যকে নিজের Network-এর সঙ্গে মেলায় (Bit-গুলোর একটি Bitwise “and”):
- Network অংশ এক → আমার Subnet-এ: ARP দিয়ে গন্তব্যের MAC খুঁজে সরাসরি Frame পাঠাও।
- Network অংশ ভিন্ন → অন্য কোথাও: Frame পাঠাও Default Gateway (Router)-এ, Router-এর MAC দিয়ে।
/24 Mask-এ 192.168.1.20 হলো 192.168.1.10-এর Local, কিন্তু 192.168.2.5 আর 198.51.100.20 নয়। ওপরের Calculator-এ দুটোই চেষ্টা করে দেখো। ভুল Mask একটি পরিচিত ভুল Configuration: Host তখন Router-এর পেছনের মেশিনের জন্য ARP করে, বা অকারণে Local Traffic Router-এ পাঠায়।
#Public, Private ও বিশেষ Address
কিছু Range বিশেষ কাজের জন্য সংরক্ষিত। এগুলো জানা থাকলে এক নজরে একটি Configuration পড়তে পারবে:
| Range | নাম | অর্থ |
|---|---|---|
10.0.0.0/8 | Private | যে কেউ ভেতরে ব্যবহার করতে পারে; Internet-এ কখনো Route হয় না (RFC 1918) |
172.16.0.0/12 | Private | 172.16.0.0 – 172.31.255.255 (পুরো 172.x নয়!) |
192.168.0.0/16 | Private | সাধারণ বাসার Router: 192.168.0.x বা 192.168.1.x |
100.64.0.0/10 | Shared / CGNAT | যে ISP গ্রাহকদের Carrier-grade NAT-এর পেছনে রাখে, তাদের ভেতরে ব্যবহৃত |
127.0.0.0/8 | Loopback | 127.0.0.1 = “এই মেশিন”; কখনো Host ছেড়ে যায় না |
169.254.0.0/16 | Link-local (APIPA) | DHCP ব্যর্থ হলে নিজে নেওয়া; শুধু Local Link-এ কাজ করে |
0.0.0.0 | Unspecified | “এখনো Address নেই” (DHCP), বা Server Bind করলে “সব Interface” |
255.255.255.255 | Limited Broadcast | এই Link-এর সবাই (DHCP Discover ব্যবহার করে) |
224.0.0.0/4 | Multicast | এক থেকে অনেক Group (Streaming, Routing Protocol) |
192.0.2.0/24, 198.51.100.0/24, 203.0.113.0/24 | Documentation | শুধু উদাহরণ ও বইয়ের জন্য, এই Course-এর মতো |
বাকি প্রায় সবই Public: বিশ্বজুড়ে অনন্য, Registry-র মাধ্যমে ISP ও প্রতিষ্ঠানকে বরাদ্দ করা, আর Internet-এ Route হয়।
- একটি Private Address শুধু তার নিজের Network-এর ভেতরে অনন্য। লাখো বাসা একই সময়ে
192.168.1.10ব্যবহার করে। Internet-এ যেতে Router-এর NAT একে একটি Public Address দিয়ে বদলে দেয় (NAT-এর বিস্তারিত Lesson 1.7-এ)। - CGNAT: অনেক ISP, বিশেষ করে Mobile Operator, এখন আর প্রতিটি বাসার Router-কে Public IPv4 Address দেয় না। Router পায় একটি
100.64.x.xAddress, আর ISP আবার রূপান্তর করে। পার্শ্বপ্রতিক্রিয়া: Internet থেকে কেউ তোমার বাসার ভেতরে Connection খুলতে পারে না।
Private, Public, CGNAT ও Loopback
দুটি বাসা হুবহু একই Private Address ব্যবহার করে। Internet-এ শুধু Public Address অনন্য।
পরিস্থিতি
দুটি Laptop-ই 192.168.1.10। এতে কোনো সমস্যা নেই: Private Range (10/8, 172.16/12, 192.168/16) লাখো Network-এ বারবার ব্যবহৃত হয় আর Internet-এ কখনো Route হয় না।
#IPv6 Address
IPv6 ব্যবহার করে ১২৮-Bit Address: 2¹²⁸ ≈ ৩.৪ × ১০³⁸, যা প্রতিটি ডিভাইসকে NAT ছাড়াই বিশ্বজুড়ে অনন্য Address দেওয়ার জন্য যথেষ্ট। এগুলো লেখা হয় চার Hexadecimal অঙ্কের আটটি Group হিসেবে, কোলন দিয়ে আলাদা করে:
Full: 2001:0db8:0000:0000:0000:ff00:0042:8329
Rule 1 (drop leading zeros in each group):
2001:db8:0:0:0:ff00:42:8329
Rule 2 (replace ONE run of consecutive all-zero groups with ::):
2001:db8::ff00:42:8329
:: মাত্র একবার বসানো যায়, নইলে কোনটা কয়টি শূন্য Group লুকিয়ে রেখেছে বোঝা যেত না।
| Prefix | ধরন | IPv4-এর কোনটির মতো |
|---|---|---|
2000::/3 | Global Unicast (Public) | Public Address |
fe80::/10 | Link-local, প্রতিটি Interface-এ স্বয়ংক্রিয়ভাবে | 169.254.x.x, তবে সবসময় থাকে ও স্বাভাবিক |
fc00::/7 (বাস্তবে fd00::/8) | Unique Local | Private Range |
::1 | Loopback | 127.0.0.1 |
ff00::/8 | Multicast | Multicast (IPv6-এ Broadcast নেই) |
2001:db8::/32 | Documentation | 192.0.2.0/24 ইত্যাদি |
সাধারণ ভাগ হলো /64: প্রথম ৬৪ Bit Network Prefix (Router দেয়), শেষ ৬৪ Bit Interface ID, যা ডিভাইস নিজেই তৈরি করতে পারে (SLAAC, নিচের DHCP Animation-এ দেখানো)। URL-এ IPv6 Address বন্ধনীর মধ্যে লেখা হয়, যাতে তার কোলন Port-এর সঙ্গে গুলিয়ে না যায়: https://[2001:db8::10]:443/।
আজ বেশিরভাগ Network চলে Dual Stack-এ: ডিভাইসের IPv4 ও IPv6 দুটো Address-ই থাকে, আর DNS A ও AAAA দুটো Record-ই দেয়।
Note-এ IPv6-এর সুবিধা হিসেবে লেখা আছে Auto-configuration (ওপরের SLAAC), NAT-এর দরকার না থাকা (প্রতিটা ডিভাইস Global Address পেতে পারে, যদিও ভেতরে কী ঢুকবে তা তখনো Firewall-ই ঠিক করে), আর “শক্তিশালী Built-in নিরাপত্তা (IPsec)”। শেষেরটা শুধরে নিতে হবে:
#MAC Address
একটি MAC Address ৪৮ Bit (৬ Byte), লেখা হয় Hex অঙ্কের ছয়টি জোড়া হিসেবে: 3c:22:fb:01:01:01 (Linux, macOS) বা 3C-22-FB-01-01-01 (Windows)।
- প্রথম ৩ Byte হলো OUI (Organizationally Unique Identifier), যা IEEE নির্মাতাকে বরাদ্দ দেয়। এটা দেখে নির্মাতা খুঁজে বের করা যায়। শেষ ৩ Byte নির্মাতা নিজে ঠিক করে।
ff:ff:ff:ff:ff:ffহলো Broadcast MAC: Link-এর প্রতিটি ডিভাইস Frame-টি গ্রহণ করে।- MAC একটি Network Interface-এর, ডিভাইসের নয়: একটি Laptop-এর Wi-Fi-এর জন্য একটি আর Ethernet-এর জন্য আরেকটি MAC থাকে।
- এটা অনন্য হওয়ার কথা, কিন্তু স্থির নয়: Software দিয়ে বদলানো যায়, আর ফোন ও Laptop এখন গোপনীয়তার জন্য প্রতিটি Wi-Fi Network-এ Random MAC ব্যবহার করে (তখন দ্বিতীয় Hex অঙ্কটি 2, 6, A বা E হয়, যা “Locally Administered” Address চিহ্নিত করে)। MAC-কে কখনো নিরাপদ পরিচয় হিসেবে ধরো না।
#IP Address বনাম MAC Address
Note থেকে:
- IP Address Packet-এর Network-Level Source ও Destination চিহ্নিত করে।
- MAC Address Frame-কে Local Link-এ পরের ডিভাইসে পৌঁছাতে সাহায্য করে।
- Computer থেকে Router-এ পাঠানোর সময় Destination IP Server-এর IP হতে পারে, কিন্তু Destination MAC সাধারণত Router-এর Local Interface-এর MAC।
- Router পরের Link-এ পাঠানোর সময় নতুন Link-Layer Frame তৈরি করে; তাই MAC Address প্রতিটি Link-এ বদলায়।
- সাধারণ Routing-এ NAT না থাকলে Source ও Destination IP End-to-End একই থাকে।
- IPv4 Router Packet Forward করার সময় TTL কমায়; IPv6-এ এর সমতুল্য Field হলো Hop Limit।
IP বনাম MAC: প্রতিটি Link-এ কী বদলায়
Note-এর Connection: TCP-তে 192.168.1.10:53000 → 198.51.100.20:443। হাইলাইট করা Field মাত্রই বদলানো হয়েছে।
পরিস্থিতি
Laptop-এর তৈরি
Source MAC
3c:22:fb:01:01:01
Destination MAC
00:1a:2b:00:00:01
Source IP
192.168.1.10
Destination IP
198.51.100.20
Source Port
53000
Destination Port
443
Protocol / Flag
TCP SYN
TTL
64
Laptop একটি Connection খোলে। Source IP 192.168.1.10 (তার Private Address), Destination IP 198.51.100.20 (Server), Source Port 53000 (এই Connection-এর জন্য বাছা অস্থায়ী Port), Destination Port 443 (HTTPS), TCP আর SYN Flag।
নিজেকে যাচাই করোপ্রশ্ন
তোমার Laptop (192.168.1.10/24) 198.51.100.20-এ একটি Packet পাঠাল। Laptop থেকে বের হওয়া Frame-এর Destination MAC Address কী?
#Port
IP Address Packet-কে সঠিক মেশিনে পৌঁছায়; Port পৌঁছায় ওই মেশিনের সঠিক Program-এ। Port হলো TCP বা UDP Header-এর একটি ১৬-Bit সংখ্যা, ০–৬৫৫৩৫। TCP ও UDP-এর Port আলাদা: TCP 53 আর UDP 53 ভিন্ন জিনিস।
Note-এর উদাহরণ: তোমার কম্পিউটার HTTPS দিয়ে একটি Web Server-এ Connection খুলছে। (Address-গুলো ডকুমেন্টেশনের জন্য সংরক্ষিত উদাহরণ, বাস্তব Google Server-এর IP নয়।)
| Field | উদাহরণ | অর্থ |
|---|---|---|
| Source IP | 192.168.1.10 | Client-এর Private IP |
| Destination IP | 198.51.100.20 | উদাহরণস্বরূপ Server-এর IP |
| Source Port | 53000 | Client-এর অস্থায়ী Port |
| Destination Port | 443 | HTTPS-এর প্রচলিত Server Port |
| Protocol | TCP | Transport Protocol |
| TCP Flag | SYN, ACK, … | Connection ও Data Transfer নিয়ন্ত্রণ |
সহজভাবে:
- Source IP: কোথা থেকে Packet পাঠানো হচ্ছে।
- Destination IP: কোন IP-তে Packet পৌঁছাবে।
- Source Port: Client-এর এই নির্দিষ্ট Connection চিহ্নিত করে।
- Destination Port: Server-এর কোন Transport Service-এ Data যাবে তা চিহ্নিত করে।
Port 443 HTTPS-এর শুধু প্রচলিত Port; এটা বাধ্যতামূলক নয় (https://example.com:8443 দিব্যি চলে)। একইভাবে Client Port 53000 একটি উদাহরণ, স্থায়ী নিয়ম নয়: প্রতিটি নতুন Connection-এর জন্য অপারেটিং সিস্টেম একটি খালি Port বেছে নেয়।
| Range | নাম | কে ব্যবহার করে |
|---|---|---|
| 0–1023 | Well-known Port | Standard সেবা; Linux-এ Default-এ শুধু root এগুলোতে Listen করতে পারে |
| 1024–49151 | Registered Port | IANA-তে নিবন্ধিত Application (Database, Tool) |
| 49152–65535 | Dynamic / Ephemeral Port | Client-এর অস্থায়ী Port (Linux Default-এ 32768–60999 ব্যবহার করে) |
যে Port-গুলো মুখস্থ রাখার মতো:
| Port | সেবা | Port | সেবা | |
|---|---|---|---|---|
| 22 | SSH | 443 | HTTPS (TCP, আর HTTP/3-এর জন্য UDP) | |
| 25 | SMTP (Server থেকে Server-এ Mail) | 3306 | MySQL | |
| 53 | DNS (UDP ও TCP) | 5432 | PostgreSQL | |
| 67 / 68 | DHCP Server / Client (UDP) | 6379 | Redis | |
| 80 | HTTP | 27017 | MongoDB |
#Socket ও 5-tuple
- একটি Socket হলো কথোপকথনের এক প্রান্ত: IP Address + Port (+ Protocol), যেমন
198.51.100.20:443। - Server একটি Socket-এ Listen করে। Client নিজের একটি Ephemeral Port-এর Socket থেকে Connect করে।
- প্রতিটি Connection অনন্যভাবে চেনা যায় তার 5-tuple দিয়ে: Protocol, Source IP, Source Port, Destination IP, Destination Port। এভাবেই Port 443-এর একটি Server একসঙ্গে হাজারো Client সামলায়, আর একই সাইটে খোলা দুটি Browser Tab আলাদা থাকে।
Port ও Socket: একটি IP, অনেক কথোপকথন
IP Address Packet-কে মেশিন পর্যন্ত পৌঁছায়; Port পৌঁছায় সঠিক Program পর্যন্ত। একটি Connection চেনা হয় তার 5-tuple দিয়ে।
পরিস্থিতি
Server-এ Connection (5-tuple)
| Protocol | Remote IP:Port | Local IP:Port | Program |
|---|---|---|---|
| TCP | 192.168.1.10:53000 | 198.51.100.20:443 | nginx |
Tab 1 Website-এ Connect করে। অপারেটিং সিস্টেম একটি খালি Ephemeral Source Port বাছে, 53000। গন্তব্য: 198.51.100.20-এর Port 443, যেখানে nginx Listen করছে।
দুটি ব্যর্থতার বার্তা অনেক কিছু বলে: “Connection Refused” (দ্রুত একটি TCP RST) মানে মেশিনে পৌঁছানো যায় কিন্তু ওই Port-এ কেউ Listen করছে না; Timeout সাধারণত মানে Firewall Packet ফেলে দিয়েছে বা Host-এ পৌঁছানো যাচ্ছে না।
#DHCP: স্বয়ংক্রিয়ভাবে Address পাওয়া
Network ব্যবহারের আগে একটি ডিভাইসের চারটি জিনিস লাগে: একটি IP Address, একটি Subnet Mask, একটি Default Gateway আর DNS Server। প্রতিটি ফোনে হাতে করে এগুলো লেখা অসম্ভব, তাই DHCP (Dynamic Host Configuration Protocol) এগুলো স্বয়ংক্রিয়ভাবে দেয়। বাসার Network-এ Wi-Fi Router-ই DHCP Server।
DHCP: ডিভাইস কীভাবে Address পায়
একটি Laptop কোনো Address ছাড়াই Wi-Fi-তে যুক্ত হয়। DHCP UDP ব্যবহার করে: Client Port 68-এ, Server Port 67-এ।
পরিস্থিতি
Discover, Offer, Request, Acknowledge: চারটি বার্তা, আর ডিভাইস প্রস্তুত।
Laptop-এর MAC Address আছে, কিন্তু IP, Gateway বা DNS Server নেই। এখনো নির্দিষ্ট কাউকে পাঠাতে পারে না, তাই তাকে Broadcast করতে হবে।
চারটি বার্তার এই আদান-প্রদান মনে রাখা হয় DORA নামে:
- Discover (Client → Broadcast): “কোনো DHCP Server আছে?” Client-এর এখনো IP নেই, তাই
0.0.0.0থেকে255.255.255.255-এ পাঠায়, UDP Port 68 → 67। - Offer (Server → Client): “তুমি 192.168.1.10 নিতে পারো, Mask /24, Gateway .1, DNS .1, ২৪ ঘণ্টার জন্য।”
- Request (Client → Broadcast): “আমি 192.168.1.1-এর অফার নিচ্ছি।” Broadcast, যাতে অন্য DHCP Server বোঝে তাদের বাছা হয়নি।
- Acknowledge (Server → Client): “নিশ্চিত।” Lease শুরু। ACK-এর সঙ্গে Mask, Default Gateway আর DNS Server-ও আসে।
বাস্তবে যা গুরুত্বপূর্ণ:
- Lease-এর মেয়াদ শেষ হয়। Lease-এর ৫০ %-এ Client সরাসরি Server-এর কাছে নবায়ন করে; ৮৭.৫ %-এ যেকোনো Server-কে জিজ্ঞেস করে; ১০০ %-এ Address ব্যবহার বন্ধ করতে হয়।
- Reservation থাকলে Server একই MAC Address-কে সবসময় একই IP দেয়: Printer ও বাসার Server-এর জন্য ভালো। Static Address অবশ্যই DHCP Pool-এর বাইরে রাখতে হবে, নইলে Conflict হবে।
- Broadcast Router পার হয় না, তাই বড় Network-এ Router-এর একটি DHCP Relay Request-গুলো কেন্দ্রীয় DHCP Server-এ পাঠিয়ে দেয়।
- কোনো Server উত্তর না দিলে Windows ও macOS নিজেই 169.254.x.x (APIPA) নেয়: ডিভাইস তখন শুধু একই Link-এর অন্য ডিভাইসে পৌঁছাতে পারে, Internet নেই। 169.254 দেখা মানে “DHCP ব্যর্থ”।
- যে কেউ DHCP Server চালাতে পারে, তাই একটি ভুয়া (Rogue) DHCP Server নিজেকে Gateway হিসেবে দিয়ে দিতে পারে। Managed Switch DHCP Snooping দিয়ে এটা আটকায়।
#ARP: IP Address থেকে MAC Address
Host এখন জানে কোন IP-তে পাঠাতে হবে (গন্তব্য নিজে, বা Gateway)। কিন্তু Ethernet ও Wi-Fi Frame পৌঁছায় MAC দেখে। ARP (Address Resolution Protocol) Local Network-এ একটি IP Address-এর MAC Address খুঁজে বের করে।
ARP: একটি IP-এর MAC Address খোঁজা
Laptop A (192.168.1.10/24) একটি IP-তে পাঠাতে চায়। Ethernet-এর আগে একটি MAC Address দরকার।
পরিস্থিতি
A 192.168.1.20-এ পৌঁছাতে চায়। তার /24 Mask বলে এটা একই Subnet-এ, তাই সরাসরি পৌঁছানো যাবে। কিন্তু তার ARP Cache-এ .20-এর কোনো MAC নেই।
যেভাবে কাজ করে:
- Host তার ARP Cache দেখে। IP সেখানে থাকলে কাজ শেষ।
- না থাকলে সে একটি ARP Request Broadcast করে (Destination MAC
ff:ff:ff:ff:ff:ff, EtherType0x0806): “192.168.1.20 কার? 192.168.1.10-কে জানাও।” - Link-এর প্রতিটি Host এটা পায়; শুধু ওই IP-এর মালিক একটি Unicast ARP Reply পাঠায়: “192.168.1.20 আছে
aa:bb:cc:00:00:20-এ।” - Sender উত্তরটি কিছুক্ষণের জন্য Cache করে আর Frame পাঠায়।
মূল কথা:
- ARP ব্যবহার হয় শুধু একই Subnet-এর প্রতিবেশীর জন্য। Subnet-এর বাইরের যেকোনো গন্তব্যের জন্য Host তার Default Gateway-এর জন্য ARP করে, কখনো দূরের Server-এর জন্য নয়। ARP Broadcast কখনো Router পার হয় না।
- Gratuitous ARP এমন একটি ঘোষণা যা কেউ চায়নি (“192.168.1.100 আছে আমার MAC-এ”)। ডিভাইস চালু হওয়ার সময় এটা পাঠায়, আর High-availability জোড়া এক সেকেন্ডের মধ্যে Virtual IP অপেক্ষমাণ মেশিনে সরাতে এটা ব্যবহার করে।
- IP Conflict: একই IP-এর দুটি ডিভাইস দুজনেই ARP-এর উত্তর দেয়, আর প্রতিবেশীদের Cache দুজনের মধ্যে লাফায়। অপারেটিং সিস্টেম একটি Address ব্যবহারের আগে ARP দিয়ে যাচাই করে আর “IP address conflict” সতর্কতা দেখায়।
- ARP Spoofing: ARP-এ কোনো Authentication নেই, তাই একই LAN-এর একজন আক্রমণকারী Gateway-এর IP দাবি করে Man-in-the-middle হয়ে যেতে পারে। প্রতিরোধ হলো Switch-এ Dynamic ARP Inspection আর, সবার ওপরে, Encryption (TLS, SSH, VPN)।
- IPv6-এ ARP-এর জায়গায় আছে NDP (Neighbor Discovery Protocol), যা Broadcast-এর বদলে Multicast ICMPv6 বার্তা ব্যবহার করে।
#সব একসঙ্গে
তোমার Laptop যখন একটি Wi-Fi Network-এ যুক্ত হয়ে একটি Website খোলে, Address-গুলো এই ক্রমে কাজে আসে:
- DHCP Laptop-কে দেয় IP (
192.168.1.10/24), Gateway (192.168.1.1) আর DNS Server। - Laptop DNS-কে জিজ্ঞেস করতে চায়। DNS Server Subnet-এর বাইরে (বা Router নিজেই), তাই সে Gateway-এর জন্য ARP করে আর Router-এর MAC Cache করে।
- DNS (Lesson 1.8) নামটিকে Server-এর IP
198.51.100.20-এ রূপান্তর করে। - Laptop একটি Ephemeral Port (
53000) থেকে Port443-এ একটি TCP Connection খোলে, Router-এর MAC-এ Frame পাঠায়, ভেতরে Server-এর IP। - Router NAT প্রয়োগ করে, আর Packet Hop by hop Internet পার হয়, প্রতিটি Link-এ নতুন MAC নিয়ে (Lesson 1.5)।
#System Design-এ Addressing
- CIDR দিয়ে Cloud Network-এর পরিকল্পনা করো। একটি VPC হতে পারে
10.0.0.0/16, প্রতিটি Availability Zone-এর জন্য Public ও Private/24Subnet-এ ভাগ করা। Range-গুলো তোমার অফিস, অন্য VPC ও Partner-দের সঙ্গে যেন না মেলে, কারণ মিলে যাওয়া Network কষ্টকর NAT ছাড়া Peering বা VPN দিয়ে জোড়া যায় না। বাড়ার জায়গা রাখো; AWS প্রতিটি Subnet-এ ৫টি Address নিজের জন্য রেখে দেয়। - Default-এ Private। Database, Cache ও Internal সেবা থাকে Public IP ছাড়া Private Subnet-এ; শুধু Load Balancer Internet-মুখী। Security Group ও Firewall লেখা হয় CIDR Block ও Port দিয়ে (“10.0.1.0/24 থেকে TCP 5432 খোলা”)।
- IP Hard-code কোরো না। Instance, Container ও Pod Restart হলে নতুন Address পায়। DNS নাম ও Service Discovery ব্যবহার করো, দরকারে Floating/Virtual IP।
- Port সীমিত সম্পদ। যে Proxy ও NAT Gateway এক গন্তব্যে অনেক Connection খোলে, তাদের Ephemeral Port ফুরিয়ে যেতে পারে। Connection Pooling ও Keep-alive এটা এড়ায়।
- IPv4 দুর্লভ, আর এর দাম আছে। Cloud এখন Public IPv4 Address-এর জন্য টাকা নেয়, যা সেবাগুলোকে IPv6 ও শেয়ার করা Load Balancer-এর দিকে ঠেলে দিচ্ছে।
- Debug করার সময় বিশেষ Range চিনে রাখো। 169.254.x.x মানে DHCP ব্যর্থ (Cloud Metadata Service-ও
169.254.169.254ব্যবহার করে); Router-এর WAN-এ 100.64.x.x মানে CGNAT; 127.0.0.1-এ Bind মানে শুধু Local।
#নিজে চেষ্টা করো
# Your IP, mask, gateway, DNS, MAC and DHCP lease
ipconfig /all # Windows
ip addr; ip route # Linux ("default via ..." is your gateway)
ifconfig; netstat -rn # macOS
# Your ARP / neighbour cache
arp -a # Windows, macOS, Linux
ip neigh # Linux
# Release and renew the DHCP lease (watch DORA in Wireshark with filter "dhcp")
ipconfig /release && ipconfig /renew # Windows
sudo dhclient -r && sudo dhclient # Linux
# Which programs listen on which ports, and your open connections (5-tuples)
netstat -ano # Windows
ss -tlnp # Linux: listening TCP sockets
ss -tn # Linux: established connections
# Your public IP as the internet sees it (compare with ipconfig!)
curl -4 https://ifconfig.me
curl -6 https://ifconfig.me
ipconfig যদি 192.168.x.x দেখায় কিন্তু curl -4 ifconfig.me অন্য কিছু দেখায়, সেই পার্থক্যটাই NAT। তোমার Router-এর WAN Address যদি 100.64–100.127 দিয়ে শুরু হয়, তুমি CGNAT-এর পেছনে আছ।
#সারসংক্ষেপ
মূল বিষয়গুলো
- প্রতিটি Packet বহন করে একটি MAC (L2, এক Hop, প্রতিটি Router-এ বদলায়), একটি IP (L3, NAT না থাকলে End to end) আর একটি Port (L4, কোন Program)।
- IPv4 হলো চার Octet-এ ৩২ Bit। Subnet Mask / CIDR Prefix একে Network ও Host অংশে ভাগ করে; ব্যবহারযোগ্য Host = 2^(Host Bit) − 2 (একটি /24-এ ২৫৪)।
- Host নিজের Subnet-এর গন্তব্যে সরাসরি (ARP-এর পর) পাঠায়, বাকি সবকিছু Default Gateway-তে।
- Private Range 10/8, 172.16/12, 192.168/16 সবখানে বারবার ব্যবহৃত হয় আর NAT লাগে; আরও জেনে রাখো 127.0.0.1 Loopback, 169.254 (DHCP ব্যর্থ), 100.64/10 (CGNAT) আর Documentation Range।
- IPv6 হলো Hex Group-এ ১২৮ Bit; শুরুর শূন্য বাদ দাও আর শূন্য Group-এর একটি ধারাকে
::দিয়ে বদলাও। Link-localfe80::, Loopback::1, Broadcast নেই, /64 Subnet। - Port ০–৬৫৫৩৫: Well-known (22, 53, 80, 443…), Registered (3306, 5432, 6379), Ephemeral (49152–65535)। Socket হলো IP:Port; একটি Connection হলো একটি অনন্য 5-tuple।
- DHCP (Discover, Offer, Request, Acknowledge) IP, Mask, Gateway ও DNS Lease দেয়। ARP Local Link-এ Broadcast Request ও Unicast Reply দিয়ে IP থেকে MAC বের করে, Cache-এ রাখে; Gratuitous ARP ঘোষণা করে, Spoofing এর অপব্যবহার করে।
- যে ভুল ধারণাগুলো ছাড়তে হবে: MAC চিরস্থায়ী না (ফোন প্রতিটা Wi-Fi Network-এ Random MAC ব্যবহার করে); IPv6 নিজে থেকে IPsec চালু করে না (RFC 6434 একে ঐচ্ছিক করেছে);
255.255.255.0আসলে অন্যভাবে লেখা/24, “Classful” না; ARP পাঠায় Host, Switch শুধু পৌঁছে দেয়। - Subnet করার দুই কারণ: ছোট Broadcast এলাকা, আর Subnet-এর মধ্যে Access Control।
আগে নিজে উত্তর দাও, তারপর ব্যাখ্যাটা পড়ো। ঠিক হলেও পড়ো, কারণ ভুল Option-গুলো কেন ভুল, সেটাও ওখানে আছে।
নিজেকে যাচাই করোপ্রশ্ন
একটা IPv4 Address কত Bit লম্বা?
নিজেকে যাচাই করোপ্রশ্ন
Octet 192-কে Binary-তে লিখলে কী হয়?
নিজেকে যাচাই করোপ্রশ্ন
কারখানা থেকে দেওয়া MAC Address-এর প্রথম তিন Byte তোমাকে কী বলে?
নিজেকে যাচাই করোপ্রশ্ন
নিচের কোনটা Private (RFC 1918) Address?
নিজেকে যাচাই করোপ্রশ্ন
নতুন Network-এ যোগ দেওয়ার সময় চারটা DHCP বার্তা কোন ক্রমে আদান-প্রদান হয়?
নিজেকে যাচাই করোপ্রশ্ন
Client-এর অস্থায়ী Port-এর জন্য IANA কোন Port Range-কে Dynamic বা Ephemeral হিসেবে রেখেছে?
নিজেকে যাচাই করোপ্রশ্ন
2001:0db8:0000:0000:0000:0000:0000:0001-এর সবচেয়ে ছোট সঠিক রূপ কোনটা?
নিজেকে যাচাই করোপ্রশ্ন
IPv6-এ ARP নেই। IPv6 Link-এ প্রতিবেশীর MAC Address কে খুঁজে দেয়?
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। নিচের কোন Address-গুলো কখনো Public Internet-এ Route হয় না?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
10.0.5.0/26 Subnet-এ কয়টি ব্যবহারযোগ্য Host Address আছে?
নিজেকে যাচাই করোপ্রশ্ন
একজন সহকর্মীর Laptop দেখাচ্ছে 169.254.37.12, আর Internet নেই। সবচেয়ে সম্ভাব্য সমস্যা কী?
নিজেকে যাচাই করোপ্রশ্ন
দুটি Browser Tab একই Server 198.51.100.20:443-এ HTTPS Connection খুলল। কী দুটি Connection-কে আলাদা রাখে?
নিজেকে যাচাই করোপ্রশ্ন
বাসার Router মেয়ের ফোনকে একটা DHCP Reservation দিয়ে নির্দিষ্ট Address দেয়, Reservation-টা ফোনের MAC-এর সঙ্গে বাঁধা; একটা Parental Control Rule-ও সেই MAC দিয়েই চলে। মেয়ে Wi-Fi-র Setting একটু নাড়াচাড়া করার পর Rule কাজ করছে না, ফোন অন্য IP পাচ্ছে। সবচেয়ে সম্ভাব্য কারণ কী?
নিজেকে যাচাই করোপ্রশ্ন
একজন ম্যানেজার বলছেন: অফিস IPv6-এ নিয়ে যাই, কারণ IPv6-এ IPsec ভেতরে বসানো আর চালু থাকে, তাই আমাদের Traffic নিজে থেকেই Encrypt হয়ে যাবে। ঠিক উত্তর কী?
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। একটা কোম্পানির ১০০০টা ডিভাইস একটাই সমতল Network-এ ছিল; এখন সেটা ভাগ করে মোটামুটি ২০০ করে পাঁচটা Subnet বানানো হলো। কোন দুটো সুবিধা পাওয়া যাবে?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
PC A (192.168.1.10) আর PC B (192.168.1.20) একই Switch-এ লাগানো। A আগে কখনো B-র সঙ্গে কথা বলেনি। 192.168.1.20 কার, এই ARP Request কে পাঠায়?
নিজেকে যাচাই করোপ্রশ্ন
একটা Laptop অফিসের DHCP Server থেকে ৩ দিনের Lease-এ Address পেল। মালিক ছুটিতে গেলেন, Laptop দুই সপ্তাহ বন্ধ পড়ে রইল। অফিসে আবার চালু করলে কী হবে?
নিজেকে যাচাই করোপ্রশ্ন
একটা Configuration File-এ আছে Network 10.20.30.0, Mask 255.255.255.0। এক সহকর্মী একে বলছেন Classful Class C Network। কোনটা ঠিক?
নিজেকে যাচাই করোপ্রশ্ন
একটা /27 Subnet-এ কয়টা ব্যবহারযোগ্য Host Address থাকে?
নিজেকে যাচাই করোপ্রশ্ন
একটা Host-এর Address 192.168.10.77/26। তার Network আর Broadcast Address কী?
নিজেকে যাচাই করোপ্রশ্ন
একটা Server-এর Address 10.0.1.10/25, সে 10.0.1.200-এ পৌঁছাতে চায়। সে কী করবে?
নিজেকে যাচাই করোপ্রশ্ন
ভুল করে একটা PC-তে Address 192.168.1.10 আর Mask 255.255.0.0 বসানো; অফিস /24 Subnet ব্যবহার করে, আর 192.168.2.5 আছে Router-এর ওপারে। PC 192.168.2.5-এ পৌঁছাতে পারছে না। কেন?
নিজেকে যাচাই করোপ্রশ্ন
অফিসের Network 10.0.0.0/16, আর VPN দিয়ে Cloud-এর সঙ্গে জোড়া। এক সহকর্মী নতুন VPC-র জন্যও 10.0.0.0/16 প্রস্তাব করলেন। তুমি কী বলবে?
নিজেকে যাচাই করোপ্রশ্ন
তুমি বাসায় একটা Game Server চালাতে চাও। তোমার Router-এর WAN Address 100.72.14.9। Port Forwarding বসানোর পরও বন্ধুরা Connect করতে পারছে না। কেন?
নিজেকে যাচাই করোপ্রশ্ন
অফিসের LAN-এ User-রা হঠাৎ Certificate সতর্কবার্তা দেখছে, আর কয়েকটা PC-তে arp -a দেখাচ্ছে Gateway-এর IP একটা অচেনা Laptop-এর MAC-এ বাঁধা। কী ঘটছে, আর কী দিয়ে ঠেকানো যায়?
নিজেকে যাচাই করোপ্রশ্ন
একটা LAN-এর কিছু User Internet হারাচ্ছে, আর ipconfig দেখাচ্ছে তাদের Gateway 192.168.1.66, যে মেশিন কেউ চেনে না, Router 192.168.1.1 না। সবচেয়ে সম্ভাব্য কারণ কী, আর Switch-এর কোন সুবিধা এটা ঠেকায়?
নিজেকে যাচাই করোপ্রশ্ন
একটা Printer-কে Static Address 192.168.1.50 দেওয়া হয়েছে, যা DHCP Pool 192.168.1.20–192.168.1.200-এর ভেতরে। মাঝে মাঝে Printer আর একটা Laptop দুটোই Network-এ কাজ বন্ধ করে দেয়। সবচেয়ে ভালো সমাধান কী?
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। ARP নিয়ে কোন কথাগুলো সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। IPv6 নিয়ে কোন কথাগুলো সত্যি?
বেছে নাও ২
নিজেকে যাচাই করোপ্রশ্ন
দুটো বেছে নাও। Mask আর DNS Server ছাড়া একটা DHCP Server সাধারণত Client-কে আর কী দেয়?
বেছে নাও ২