Switch ও ARP — MAC address কে কোথায় পাঠাব জানা
Switches and ARP
Frame-টা গেল gateway-র দিকে — কিন্তু switch জানল কোন port-এ? আর laptop জানল gateway-র MAC? MAC-learning আর ARP-এর দুই-স্তরের 'কে কোথায়' সমাধান।
আগে এটা বুঝি
আগের লেসনে frame-টা তারে উঠল DST-MAC b8:27:eb:44:9c:10 লিখে।
দুটো প্রশ্ন ঝুলে ছিল:
প্রশ্ন ১: ঘরের switch-frame-টা পেল চার port-এর কোনটা দিয়ে পাঠাবে? Laptop port-1-এ, router port-4-এ, TV port-2-এ, phone port-3-এ — সঠিক উত্তর port-4। Switch জানে কীভাবে?
প্রশ্ন ২: Laptop-ও তো frame লিখেছিল কারো বলে না — gateway-
র MAC লিখেছিল। সে MAC address টা শিখল কোথা থেকে? IP-তে তো
শুধু 192.168.1.1 জানা ছিল!
উত্তর দুটো দুই স্তরে: switch-এর MAC learning (নিঃশব্দ, passive observation), আর host-দের ARP (জোরে চিৎকার করে জিজ্ঞা)। দুটোই ইন্টারনেটের সবচেয়ে সফল অলস-বুদ্ধির নমুনা — কেউ কোনো central registry maintain করে না, সবাই শুধু দেখে-শোনে- মনে রাখে।
আজকের journey-অবস্থান: আমাদের packet এখনো ঘরের ভেতরে — প্রথম hop-এর দরজা খুলছি।
মূল ধারণা
Switch-এর একটাই মন্ত্র
Switch প্রতিটা incoming-frame-এ তিনটা-কাজ:
১. Source-MAC + arrival-port নোট করো ← LEARNING (নতুন হলে)
২. Destination-MAC টেবিলে খোঁজো:
found → শুধু ওই এক port-এ পাঠাও ← FORWARDING (filtering)
miss → সব port-এ (arrival-port বাদে)← FLOODING
৩. Entry-র age refresh করো; পুরনো (~300s নিঃশব্দে) মুছে দাও ← AGINGTable-টার নাম CAM table / FDB (Forwarding Database):
VLAN MAC TYPE AGE PORT
1 a4:5e:60:d2:1f:83 DYNAMIC 12 eth1 ← laptop
1 b8:27:eb:44:9c:10 DYNAMIC 240 eth4 ← router/gateway
1 3c:22:fb:09:aa:71 DYNAMIC 5 eth2 ← TVFlood-দুই-মুখ — ভালো: first-contact-delivery; খারাপ: broadcast/multicast সবসময় flood (group-destination শেখা-যায়-না) → বড়-L2 = broadcast-storm-ঝুঁকি।
Broadcast domain বনাম collision domain — চূড়ান্ত হিসাব
| Device | Collision domain | Broadcast domain |
|---|---|---|
| Hub | সব port এক | এক |
| Switch | প্রতি port আলাদা | সব port এক |
| Router | প্রতি interface আলাদা | প্রতি interface আলাদা |
সূত্র: switch collision-কে মারে, router broadcast-কে মারে। আজকের full-duplex যুগে collision-domain প্রায় academic — কিন্তু exam আর interview-তে এই টেবিল চিরকাল ফেরে।
ARP — IP থেকে MAC-এ সেতু
Host-এর forwarding logic (গতকালের শেষ প্রশ্নের উত্তর):
dst-IP আমার subnet-এ? (dst & mask == net)
├─ হ্যাঁ → frame-এ dst-MAC = dst-IP-এর MAC ← ARP লাগবে
└─ না → frame-এ dst-MAC = gateway-র MAC ← এটাও ARP লাগবে!দুই পথেই দরকার ‘IP → MAC’ dictionary। ARP (RFC 826, 1982) তার উত্তর — দুই packet:
Request (broadcast ff:ff:ff:ff:ff:ff):
Who has 192.168.1.1? Tell 192.168.1.20
(sender MAC/IP field-ও ভরা — কারণ সবাই এটা দেখে শিখে নেয়!)
Reply (unicast, শুধু জিজ্ঞাসকের কাছে):
192.168.1.1 is-at b8:27:eb:44:9c:10Reply unicast — কারণ requester-এর MAC request-এই জানা ছিল। আর LAN-এর বাকিরা reply না দেখলেও ক্ষতি নেই: তারা requester-এর mapping request-থেকেই নোট করেছে (opportunistic learning)।
Cache-এর জীবন
প্রতি lookup-এ wire-noise অযৌক্তিক, তাই OS রাখে ARP cache:
$ ip neigh show
192.168.1.1 dev wlan0 lladdr b8:27:eb:44:9c:10 REACHABLE
192.168.1.34 dev wlan0 <incomplete> ← মৃত/অনুপস্থিতLinux-এ state-machine: REACHABLE (সদ্য-প্রমাণিত) → STALE (সময় গড়াল, তবু ব্যবহারযোগ্য) → PROBE/DELAY (নতুন traffic-এ re-confirm) → REACHABLE। macOS-এ simpler timeout (~20 min)। Entry expire হলে পরের packet-এ আবার ARP — silent-failover-friendly: gateway swap হলে stale-cache কয়েক সেকেন্ডে ঠিক হয়ে যায়।
Gratuitous ARP — না-জিজ্ঞেস-করে-ঘোষণা
কেউ জিজ্ঞা না করেই device broadcast করে: ‘আমি X.X.X.X, MAC আমার!’ ব্যবহার: NIC failover (HA-pair swap), IP change, VM migration, DHCP-assign-এর পর duplicate-detection। সবার cache pre-refresh — convergence সেকেন্ড থেকে instant।
L2 বনাম L3 — সিদ্ধান্তের সীমারেখা
| Switch (L2) | Router (L3) | |
|---|---|---|
| দেখে | dst MAC | dst IP |
| জানে | MAC↔port (learning) | route table (protocol/config) |
| বদলায় | frame-header rewrite করে না — শুধু copy | TTL—, নতুন frame |
| ভাষা | Ethernet | IP |
| সীমা | এক subnet/broadcast-domain | subnet-দের মধ্যে |
Router আসলে L2-ও বোঝে (প্রতিটা interface-এ frame receive করে), কিন্তু সিদ্ধান্ত IP দেখে। Switch-এর চোখে পৃথিবী = flat MAC-space; router-এর চোখে = hierarchical prefix-space — পরের লেসনগুলোর foundation।
ভেতরে কী ঘটছে
Flood-এর ভেতরে: store-and-forward বনাম cut-through
Store-and-forward: পুরো-frame-buffer, FCS-verify, forward — latency এক-frame-time, corrupted-মরে-পথেই। Cut-through: DST-MAC (৬৪ bit!)-পড়া- মাত্র forward — ultra-low-latency-fabric-প্রিয়, error-propagation-দাম। Hybrid fragment-free: প্রথম 64-byte পড়ে — CSMA/CD-minimum-size-র প্রতিধ্বনি।
Aging timer কেন ~300 সেকেন্ড
খুব-ছোট হলে churn: idle-host entry বারবার-মরে, flood-বন্যা। খুব-বড় হলে ghost-port: device-সরে-গেলে stale-mapping traffic-অন্ধ-দিকে। 300 s sweet-spot; datacenter-mobility-তে কম, campus-এ বেশি। Same-MAC- দুই-port (VM-migration): নতুন-জিতে, flap হলে loop-suspect-alarm।
ARP-এর ৪০+ বছর, এক-RFC, শূন্য-revision
Plummer-এর RFC 826 এত-সংক্ষিপ্ত-সঠিক যে IPv6-পর্যন্ত চলল — v6-তে ARP ND-তে-প্রত্যাহার (broadcast-নেই, multicast-replace; ipv6 lesson)। কিন্তু প্রতি-LAN-এ ‘who-has’ আজও-শোনা-যায় — minimalism-স্মৃতিস্তম্ভ।
Proxy ARP — জাদুকরী-উত্তরদাতা
Router-নিজেই-উত্তর: ‘192.168.2.5? আমি!’ (proxy-ARP) — mask-misconfig- লুকানো ৮০-এর-hack, আজ NAT-hairpin/mobile-network-এ জীবন্ত। ক্ষতি: topology-অদৃশ্য, debug-কঠিন। tcpdump-এ reply-sender router-না-হলে proxy-suspect।
উদাহরণ
Scripted scenario — একটা ঘরের জন্ম থেকে পূর্ণ নেটওয়ার্ক
চার device, fresh switch (table খালি):
T0 laptop boot → DHCP discover (broadcast!)
switch: src=laptop@p1 শিখল table: {laptop:p1}
flood → সবাই পেল (router DHCP-server উত্তর দেবে)
T1 laptop → gateway ICMP (gateway-র MAC জানা না)
laptop: ARP who-has 192.168.1.1 (broadcast)
switch: flood; সবাই শিখল laptop@p1
gateway: reply is-at b8:27:…:10 (unicast)
switch: src=gateway@p4 শিখল table: {laptop:p1, gw:p4}
T2 laptop → server.example.com (via gateway)
frame: dst-MAC=gateway → switch FORWARD p1→p4 only ✓
(TV@p2, phone@p3 কিছুই দেখল না — filtering-এর জয়)
T3 TV YouTube stream শুরু (gateway-র MAC cache-এ ছিল না)
TV: ARP broadcast → flood; gateway reply → switch শিখল tv@p2
table complete: {laptop:p1, gw:p4, tv:p2}
T4 gateway → laptop response
forward p4→p1 single-port ✓ — zero floodingলক্ষ্য করুন: প্রথম কয়েক সেকেন্ডে flood-heavy, তারপর নেটওয়ার্ক ‘nibhrito’ — steady-state-এ প্রতি frame ঠিক এক port। Broadcast- traffic শুধু ARP-refresh-এ ফেরে (aging ~300 s পরপর)।
একই scenario-তে ARP cache-দের জীবন
laptop cache: gateway cache:
192.168.1.1 → b8:27:…:10 192.168.1.20 → a4:5e:…:83
(REACHABLE, T1-জন্ম) (request-field থেকে T1-এই)
T0-DHCP-broadcast-এ gateway laptop-MAC-জানত — T1-request তার-কাছে
শুধু formal-confirm। Opportunistic-learning: প্রতি-exchange দুই-
দিকেই cache-ভরে।ছবিতে
Time Event Switch table after Ports hit
──── ──────────────────────── ──────────────────────── ─────────
T0 laptop DHCP-disc (bcast) laptop→p1 p1→all
T1 ARP req (bcast) laptop→p1 p1→all
ARP rep laptop→p1, gw→p4 p4→p1
T2 ICMP to gw (no change) p1→p4 ★
T3 TV ARP req (bcast) …, tv→p2 p2→all
ARP rep complete p4→p2
T4 steady-state streaming (aging refresh only) point-to-point
★ filtering: জানা destination = ঠিক এক port — switch-এর পুরো মূল্যlaptop gateway
│─── ARP req (BROADCAST) ───────────▶│
│ who-has 192.168.1.1 │
│ tell 192.168.1.20 @a4:5e:…:83 │
│ [laptop-MAC সবাই নোট করল] │
│◀─── ARP rep (UNICAST) ─────────────│
│ 192.168.1.1 is-at b8:27:…:10 │
[gateway-MAC laptop-এ cache] [কিছুই না — already known]
after: both caches REACHABLE → STALE → PROBE → REACHABLE …নিজে চালিয়ে দেখুন
Cache-এর আগে-পরে, bridge FDB, আর জীবন্ত ARP-capture
ধাপ ১ — cache-এর আগে-পরে:
# Linux:
ip neigh show # আগে — target-এর entry নেই?
ping -c 1 <LAN-এর নতুন IP> # যেমন printer/NAS
ip neigh show # পরে — REACHABLE এসেছে!
# macOS:
arp -a # সব entry
arp -d <IP> # একটা মুছুন (sudo হতে পারে)
ping -c 1 <IP> && arp <IP>incomplete দেখলে সে host মৃত বা অনুপস্থিত — negative-cache-ও
তথ্য।
ধাপ ২ — switch-এর চোখ (Linux bridge হলে):
bridge fdb show br br0 | grep -v permanent | head
# আপনার own-MAC খুঁজুন — কোন port-এ শেখা?Managed switch হলে web-UI-র MAC-table page একই জিনিস। Home-router firmware-এ ‘attached devices’-ও আসলে এই FDB-ই।
ধাপ ৩ — জীবন্ত exchange capture (sudo):
sudo tcpdump -e -n -i any -c 4 'arp'
# আরেক terminal-ে cache-flush + fresh ping:
sudo ip neigh flush all ; ping -c 1 192.168.1.1
# (macOS: sudo arp -a -d ; ping -c 1 192.168.1.1)Annotated pattern:
a4:5e:60:d2:1f:83 > ff:ff:ff:ff:ff:ff, ethertype ARP:
who-has 192.168.1.1 tell 192.168.1.20 ← DST=সব-f: BROADCAST
b8:27:eb:44:9c:10 > a4:5e:60:d2:1f:83, ethertype ARP:
reply 192.168.1.1 is-at b8:27:eb:44:9c:10 ← UNICAST replyধাপ ৪ — gratuitous-ARP-শিকার (ঐচ্ছিক): WiFi-reconnect/VPN-toggle capture-চালু-রেখে — অনেক-stack unsolicited-announce পাঠায় (no-request ‘reply … is-at’)। পেলে HA/failover-র প্রথম-দৃশ্য।
সতর্কতা: নিজের-LAN-এ খেলুন; অপরিচিত-network-এ ARP-tooling আইনি- নৈতিক-সীমা-ছোঁয়ে।
Fresh ping-এর আগে-পরে ARP-cache-এ entry জন্ম নেয়, switch-এর FDB-তে আপনার MAC নিজেই ঢোকে, আর capture-এ request-broadcast/reply-unicast ঠিক textbook-এর মতো — তিনটা observation-ই আজকের দুই mechanism-এর direct evidence।
নিজে বানান
ARP Simulator — hosts, switch, queue: পুরো LAN-এর মস্তিষ্ক নিজের হাতে
- Host class: ip, mac, arp_cache, send()-এ gateway-decision
- Switch class: mac_table, learn(), forward() — miss হলে flood
- Event queue: প্রতিটা frame (src,dst,payload) time-ordered process হয়
- ARP-exchange model: broadcast-request সব host-এ cache ভরে
- Scenario runner প্রতি event-এ switch-table আর cache-এর snapshot ছাপে
লক্ষ্য: example-section-এর T0–T4-scenario executable — table-evolution নিজের-চোখে, নিজের-engine-এ।
#!/usr/bin/env python3
"""arp_sim.py — একটা LAN-এ switch-learning + ARP-এর miniature simulation।"""
class Host:
def __init__(self, name, ip, mac, port):
self.name, self.ip, self.mac, self.port = name, ip, mac, port
self.cache = {} # ip -> mac
def want_send(self, net, dst_ip, payload):
"""Gateway-decision + (দরকার হলে) ARP — event yield করে।"""
if net.is_local(dst_ip):
target_ip = dst_ip
else:
target_ip = net.gateway_ip # off-subnet → gateway
if target_ip not in self.cache:
print(f"[{self.name}] ARP? {target_ip} এর MAC জানি না")
yield from net.arp_exchange(self, target_ip)
dst_mac = self.cache[target_ip]
yield ("frame", self, dst_mac, payload)
class Switch:
def __init__(self):
self.table = {} # mac -> port
self.hosts_by_port = {}
def learn(self, mac, port):
if self.table.get(mac) != port:
self.table[mac] = port
print(f" switch learns {mac} -> p{port}")
def forward(self, frame):
_, src_host, dst_mac, _ = frame
self.learn(src_host.mac, src_host.port)
out = self.table.get(dst_mac)
if out is None:
ports = [p for p in self.hosts_by_port if p != src_host.port]
action = f"FLOOD {ports}"
else:
action = f"FORWARD p{out}"
print(f" switch: {src_host.name} -> {dst_mac[:8]}… : {action}")
class Network:
def __init__(self, cidr, gateway_ip):
self.prefix = cidr
self.gateway_ip = gateway_ip
self.switch = Switch()
self.hosts = []
def add(self, host):
self.hosts.append(host)
self.switch.hosts_by_port[host.port] = host
def is_local(self, ip):
return ip.rsplit(".", 1)[0] == self.prefix
def arp_exchange(self, asker, target_ip):
print(f"[{asker.name}] ARP who-has {target_ip}? (broadcast)")
self.switch.learn(asker.mac, asker.port)
for h in self.hosts: # broadcast: সবাই শোনে
h.cache.setdefault(asker.ip, asker.mac)
target = next(h for h in self.hosts if h.ip == target_ip)
asker.cache[target_ip] = target.mac
print(f"[{target.name}] ARP reply {target_ip} is-at {target.mac}")
yield ("arp", asker, target.mac, None)
net = Network("192.168.1", gateway_ip="192.168.1.1")
laptop = Host("laptop", "192.168.1.20", "a4:5e:60:d2:1f:83", 1)
tv = Host("tv", "192.168.1.30", "3c:22:fb:09:aa:71", 2)
gw = Host("gw", "192.168.1.1", "b8:27:eb:44:9c:10", 4)
for h in (laptop, tv, gw): net.add(h)
net.switch.hosts_by_port[3] = None # খালি port p3
print("== T1: laptop → gateway ping ==")
for ev in laptop.want_send(net, "192.168.1.1", "ICMP echo"):
if ev[0] == "frame": net.switch.forward(ev)
print("== T2: laptop → internet (off-subnet, via gw) ==")
for ev in laptop.want_send(net, "93.184.216.34", "HTTP GET"):
if ev[0] == "frame":
print(f" frame dst-MAC={ev[2]} (gw! not the server)")
net.switch.forward(ev)
print("== final switch table ==")
for m, p in sorted(net.switch.table.items()):
print(f" p{p}: {m}")প্রত্যাশিত output (সংক্ষেপে):
== T1 ==
[laptop] ARP? 192.168.1.1 এর MAC জানি না
[laptop] ARP who-has 192.168.1.1? (broadcast)
[gw] ARP reply 192.168.1.1 is-at b8:27:eb:44:9c:10
switch learns a4:5e:60:d2:1f:83 -> p1
switch: laptop -> b8:27:eb… : FORWARD p4
== T2 ==
frame dst-MAC=b8:27:eb:44:9c:10 (gw! not the server)
switch: laptop -> b8:27:eb… : FORWARD p4
== final switch table ==
p1: a4:5e:60:d2:1f:83
p4: b8:27:eb:44:9c:10T2-র সেই print-line-ই লেসনের heart: internet-bound frame-ও L2-তে শুধু gateway-কে চেনে।
নিজে বাড়ান:
- Aging-timer: timestamp+300 s expire → forced-re-flood
- Attacker-host fake-gratuitous-announce → cache-poison-animation
- Duplicate-MAC-migration: নতুন-port overwrite + flap-log
বাস্তব সিস্টেমে
Datacenter-এ ARP storm
Cloud-provider-এ হাজার VM live-migrate হয় — প্রতি migration-এ gratuitous-ARP burst। Top-of-rack switch-গুলোর CPU এই control-plane traffic-এ rate-limit রাখে, নাহলে one bad hypervisor = whole-rack ARP-storm = management-plane outage।
EVPN/VXLAN — MAC learning-এর BGP-রূপ
Modern cloud L2 multi-rack/site stretch — flood-and-learn scale করে-না; MAC-reachability BGP-EVPN-control-plane-এ (routing-bgp lesson সংযোগ) — learning→signaling, পুরনো-concept-নতুন-পোশাক।
DHCP snooping + DAI enterprise-এ standard
Campus access-switch-এ Dynamic-ARP-Inspection default-on: untrusted-port reply শুধু DHCP-snooping-binding মিললে accept — static-IP-spoofing instant-block; গতকালের attack-তাৎপর্যের production-উত্তর।
Neighbor Discovery — IPv6-এর ARP-পুনর্জন্ম
IPv6-তে ARP নেই; ND multicast-solicited-node-address দিয়ে একই-কাজ — broadcast-noise-ছাড়া, reachability-confirm + DAD built-in (ipv6 lesson)।
যে ভুলগুলো সবাই করে
“Switch-এর টেবিলে MAC ঢোকে destination দেখে।”
উল্টো — শেখা-হয় source-দেখে: কে-পাঠাচ্ছে, কোন-port-এ। Destination শুধু-lookup-এ। কোনো-host একবারও-না-পাঠালে switch-চেনে-না → flood।
“ARP শুধু প্রথমবার দরকার, তারপর সব মনে থাকে।”
Cache-volatile-by-design: timeout/STALE-cycle re-verify — NIC-swap, DHCP-renew, VM-migration, failover-এ static-forever-cache নীরব-blackhole। Volatility feature, bug-নয়।
“Router আর switch একই কাজ, শুধু দামে পার্থক্য।”
সিদ্ধান্তের-ভিত্তি-ভিন্ন: switch dst-MAC (flat, per-link), router dst-IP (hierarchical, end-to-end)। Switch broadcast-domain-এ- সবাই-একসাথে; router সীমা-টানে। Home-‘WiFi-router’ = switch+AP+router+ DHCP+NAT এক-box — concept-আলাদা-রাখুন।
“ARP-spoofing শুধু পুরনো threat, switched-network-এ অসম্ভব।”
Switch traffic-isolate-করে, trust-করে-না — যে-কোনো-LAN-host spoofed-reply পাঠাতে-পারে, switch স্বাভাবিক-frame-ভেবে forward-ই-করবে। DAI-ছাড়া home/public-LAN-এ আজও-trivially-সম্ভব — HTTPS/VPN non-negotiable।
বুঝেছেন কি না দেখুন
1Switch-এর তিনটা স্থায়ী কাজ কী কী? প্রতিটার এক-লাইনে নিয়ম।
স্মরণ
Learning: source-MAC+ingress-port টেবিলে। Forwarding: dst-MAC-lookup — hit=single-port, miss=flood (ingress-বাদে)। Aging: idle-entry ~300 s নিঃশব্দ-delete।
224-port switch-এ collision domain কয়টা, broadcast domain কয়টা?
ওই switch-এর মাঝখানে এক router-interface ঢুকলে দুটো কী হয়?
প্রয়োগ
Collision: 24 (per-port), broadcast: 1। Router-interface ঢুকলে দুই-পাশে broadcast-split → 2; collision-সংখ্যা-অপরিবর্তিত (আগেই- per-port)।
3ARP request কেন broadcast, reply কেন unicast? Request-এর sender-
field থেকে অন্য host-রা কী লাভ করে?
যুক্তি
Requester target-MAC-জানে-না → broadcast; target-উত্তর-দেবে জেনে requester-MAC (sender-field) → unicast-যথেষ্ট। Onlookers sender-ip→mac নোট-করে cache-fill — ভবিষ্যৎ-ARP-বাঁচে।
4ip neigh-এ এক entry REACHABLE, আরেকটা STALE — দুটোর মধ্যে
functional difference কী? STALE-এর দিকে packet পাঠালে কী হয়?
প্রয়োগ
ip neigh-এ এক entry REACHABLE, আরেকটা STALE — দুটোর মধ্যে
functional difference কী? STALE-এর দিকে packet পাঠালে কী হয়?REACHABLE = সদ্য-confirmed; STALE = সময়-গড়িয়েছে, তবু-valid — packet সরাসরি-যাবে, kernel-পাশাপাশি DELAY→PROBE নীরব-re-confirm। STALE ≠ broken, ‘verify-pending’।
5Attacker gratuitous-ARP দিয়ে gateway-র IP-র জন্য নিজের MAC
ঘোষণা করল আপনার cache-এ। আপনার internet-traffic কী হবে, আর TLS
সেটা কতটা বাঁচাবে?
যুক্তি
Traffic attacker-MAC-এ ঘুরে-আসবে — MITM-position। TLS confidentiality- integrity দেয় (decrypt/tamper-না), কিন্তু metadata (SNI/DNS) দেখবে, connection-block-করতে-পারবে। Password-safe-ish, privacy-not — defense L2-level (DAI/static) বা VPN।
6500-user campus-এ broadcast-domain এক রাখার ঝুঁকি কী, আর VLAN-
partition কী বদলে দেয়? Inter-VLAN-communication কোথায় যেতে বাধ্য?
ডিজাইন
এক-domain-এ ৫০০-host-এর ARP/DHCP/multicast সবাইকে-পৌঁছায় — CPU/noise scale-linearly, এক-storm = সবাই-down। VLAN-ভাগ broadcast-isolate; cross-VLAN router/L3-gateway-তে-ই — যেখানে ACL/policy: isolation-dividend।
এরপর কী
এরপর কী
Frame এবার সত্যিই ঘরের বাইরে — gateway-দিকে। ওপারে internet-যেতে চুক্তি: কে delivery-guarantee, কে-না। সেই-চুক্তির-নাম IP।
পরের লেসনে:
- IPv4 header field-by-field — version/IHL → checksum, hexdump-হাতে
- Best-effort semantics — IP কী promise-করে-না
- Fragmentation mechanics + modern-world-avoidance-যুক্তি
- TTL loop-containment; protocol-numbers TCP/UDP-demux
আজ শিখলাম প্রথম hop কীভাবে cross হয়; পরের লেসনে শিখব continent- crossing-এর চুক্তিপত্র নিজে কেমন।
আরও পড়ুন
- RFC 826 — An Ethernet Address Resolution Protocol — David C. Plummer · ARP-র মূল ১৯৮২ spec — চল্লিশ বছর পরেও word-by-word কার্যকর
- TCP/IP Illustrated, Volume 1: The Protocols — Chapter 4 (ARP) — W. Richard Stevens · ARP cache behavior আর proxy-ARP-সহ wire-level উদাহরণ
- Computer Networking: A Top-Down Approach — Link Layer chapter (switches section) — Kurose & Ross · Self-learning switch-এর algorithmic আলোচনা আর broadcast/collision domain analysis