Nền tảng Mạng máy tính
6/17
Bài 6 / 17~10 phútĐịa chỉ & Định tuyếnMiễn phí… lượt xem

Ethernet, MAC & ARP — mạng LAN hoạt động thế nào

Trong LAN máy tìm nhau bằng MAC chứ không phải IP: Ethernet frame, địa chỉ MAC, switch học port, và ARP nối IP nào với MAC nào ở tầng Link.

TL;DR: Hai máy trong cùng một mạng LAN không nói chuyện bằng IP mà dùng địa chỉ MAC (48-bit, gắn cứng vào card mạng) ở tầng Link, đóng dữ liệu vào Ethernet frame. Một switch học xem MAC nào ở cổng nào để chuyển frame đúng chỗ. Nhưng app chỉ biết IP đích, không biết MAC, nên cần ARP: máy gửi broadcast "ai có IP 192.168.1.5?", máy đó trả lời "tôi, MAC bb:bb:..". MAC chỉ có nghĩa trong một LAN; ra khỏi LAN phải nhờ router. Tầng này là chỗ IP gặp phần cứng.

Hai chiếc laptop nối cùng một Wi-Fi ở nhà. Bạn AirDrop / gửi file từ máy này sang máy kia. Dữ liệu không đi ra Internet rồi vòng về, mà đi thẳng giữa hai máy trong phòng. Nhưng làm sao máy A "tìm" được máy B giữa nhiều thiết bị cùng mạng, khi cả hai chỉ vừa nối Wi-Fi và chưa biết gì về nhau?

Câu trả lời nằm ở tầng Link, tầng thấp nhất, với ba mảnh ghép: Ethernet frame, địa chỉ MAC, và giao thức ARP. Bài này đi qua cả ba, rồi trả lời vì sao MAC không bao giờ vượt ra khỏi LAN.

Nhớ lại — mo hinh tcp ip 4 tang

Ôn lại kiến thức nền tảng từ bài mo hinh tcp ip 4 tang trước khi đi sâu vào nội dung bài học này.

1. Analogy — Gọi tên trong phòng họp

Bạn vào một phòng họp đông người, cần đưa tài liệu cho "anh Minh" nhưng không biết anh ngồi đâu. Bạn hô to cả phòng: "Anh Minh ngồi đâu ạ?". Mọi người đều nghe, nhưng chỉ anh Minh giơ tay: "Tôi đây, bàn số 3". Giờ bạn biết chính xác chỗ và đưa tài liệu thẳng cho anh, không hô nữa.

ARP trong một LAN chạy đúng như vậy:

Phòng họpMạng LAN
"Anh Minh ngồi đâu?" (hô cả phòng)ARP request (broadcast tới mọi máy)
Chỉ anh Minh giơ tayARP reply (chỉ máy đúng IP trả lời)
"Bàn số 3"Địa chỉ MAC của máy đó
Đưa thẳng tài liệu cho anhGửi frame trực tiếp tới MAC đó
Tên "anh Minh"Địa chỉ IP (cái bạn biết trước)
💡 Cách nhớ

Trong LAN: bạn biết IP (tên), nhưng để gửi được phải có MAC (vị trí vật lý). ARP là bước "hỏi cả phòng để biết ai ở đâu". Hỏi một lần rồi nhớ (cache), khỏi hỏi lại.

2. Ethernet frame & địa chỉ MAC

Ở tầng Link, dữ liệu được đóng vào Ethernet frame, đơn vị truyền trong LAN. Một frame (giản lược) gồm:

Dst MAC
gửi tới ai
Src MAC
gửi từ ai
Type
vd IPv4
Payload
gói IP bên trong
FCS
kiểm lỗi

Trường cuối FCS (Frame Check Sequence) là một checksum để máy nhận phát hiện frame có bị lỗi bit trên đường truyền không; sai thì loại bỏ frame.

Địa chỉ MAC (Media Access Control) là số 48-bit, viết dạng 6 cặp hex (hệ thập lục phân, mỗi chữ số biểu diễn 4 bit, dùng 0–9 và a–f), ví dụ a4:83:e7:1b:9c:0d. Nhà sản xuất ghi cứng nó vào card mạng (NIC): 24 bit đầu là OUI (Organizationally Unique Identifier, mã định danh hãng do IEEE cấp), 24 bit sau là số seri của thiết bị. Xem MAC máy bạn:

Bash
ip link            # Linux: dong "link/ether a4:83:e7:..."
# macOS: ifconfig en0 | grep ether

Khác với IP (gán theo mạng, đổi được), MAC gắn với thiết bị. Trong frame, Dst MAC và Src MAC cho biết frame đi từ card nào tới card nào, trong phạm vi một LAN.

Thử ngẫmbạn đổi Wi-Fi từ nhà sang quán cà phê, MAC card mạng giữ nguyên nhưng IP đổi. Vì sao kết nối TCP đang mở tới server lại rớt, dù thứ "định danh thiết bị" không hề thay đổi?

3. Switch học port mapping thế nào?

Nhiều máy trong LAN cắm vào một switch. Switch không phát frame ra mọi cổng như hub đời cũ; nó học xem MAC nào nằm ở cổng nào, rồi chuyển frame đúng cổng.

May A
A · aa:aa
Switch
Switch
May B
B · bb:bb

Bảng MAC switch học được

Cổng 1 → aa:aa (máy A)
Cổng 3 → bb:bb (máy B)

Cơ chế: mỗi frame đi vào, switch nhìn Src MAC để học "MAC này ở cổng này". Khi cần chuyển frame có Dst MAC đã biết, nó gửi đúng một cổng. Nếu Dst MAC chưa biết, nó flood (gửi ra mọi cổng) một lần để học.

Switch lo phần chuyển frame khi frame đã có MAC đích. Còn máy gửi lấy MAC đích ở đâu ra, khi app chỉ đưa cho nó một IP?

4. ARP — cầu nối IP sang MAC

Vấn đề mấu chốt: tầng trên (Internet) làm việc với IP, nhưng frame ở tầng Link cần MAC đích. Khi máy A muốn gửi cho IP 192.168.1.5 trong cùng LAN mà chưa biết MAC của nó, A chạy ARP (Address Resolution Protocol):

Sơ đồ tuần tự bốn máy A, B, C, D trong LAN: A gửi ARP request tới địa chỉ broadcast hỏi ai có 192.168.1.5, cả B, C, D đều nhận; chỉ B đúng IP trả lời unicast kèm MAC bb:bb, C và D bỏ qua; A lưu cặp IP MAC vào ARP cache để lần sau gửi thẳng

  • ARP request gửi tới địa chỉ broadcast ff:ff:ff:ff:ff:ff (broadcast = gửi một lần tới mọi máy trong LAN), nên mọi máy đều nhận.
  • Chỉ máy đúng IP reply dạng unicast (unicast = gửi riêng tới một đích duy nhất) kèm MAC của mình.
  • Máy A lưu cặp (IP → MAC) vào ARP cache để lần sau khỏi hỏi lại.

Xem ARP cache máy bạn:

Bash
arp -a             # liet ke cap IP <-> MAC da hoc
# hoac: ip neigh    (Linux)

Thử ngẫmtrong một văn phòng 200 máy dùng chung switch, mỗi ARP request là một broadcast mà MỌI máy phải nhận và xử lý. Nếu ARP cache không tồn tại, mạng đó chịu thêm gánh nặng gì mỗi khi có gói tin mới?

5. Broadcast domain — vì sao MAC chỉ có nghĩa trong LAN?

ARP dựa trên broadcast, và broadcast chỉ lan trong một broadcast domain (một mạng LAN). Bạn không thể ARP một máy ở Internet: hô "ai có IP 142.250.x.x?" trong LAN nhà mình thì không ai trả lời, vì máy đó ở mạng khác.

Vì vậy MAC không định tuyến được ra ngoài LAN. Khi đích ở mạng khác, máy bạn không ARP đích mà gửi frame tới MAC của router (default gateway), để router lo chặng tiếp theo. Cùng mạng thì gửi thẳng, khác mạng thì đưa cho gateway; còn ranh giới "cùng/khác mạng" do subnet quyết định, chuyện của bài kế.

📌 Nối lại với Module 1

Nhớ quy tắc ở bài mô hình 4 tầng: IP đích giữ nguyên, MAC đổi mỗi chặng. Giờ bạn thấy vì sao: mỗi chặng là một LAN riêng, và trong mỗi LAN, frame phải mang MAC của trạm kế tiếp, học được qua ARP.

6. Pitfall — hiểu nhầm thường gặp

❌ Nhầm 1: "Máy nói chuyện với nhau bằng IP." ✅ Trong cùng LAN, frame được gửi tới MAC, không phải IP. IP chỉ là thứ ARP dùng để tra ra MAC. App nghĩ theo IP; dây mạng chạy theo MAC.

❌ Nhầm 2: "Có IP của máy ở mạng khác là ping/ARP được nó." ✅ ARP chỉ hoạt động trong LAN (broadcast domain). Máy ở mạng khác phải đi qua router; bạn không bao giờ thấy MAC của một máy ngoài Internet trong ARP cache của mình.

❌ Nhầm 3: "ARP cache luôn đúng." ✅ Cache có thời hạn và có thể lỗi thời (máy đổi card, đổi IP). Tệ hơn, kẻ tấn công trong LAN có thể trả lời ARP giả mạo (ARP spoofing) để chen vào giữa, một lý do mạng nội bộ vẫn cần cảnh giác. ip neigh cho thấy trạng thái cache (REACHABLE/STALE).

7. 📚 Deep Dive — tài liệu gốc

📚 Spec & reference chính thức

Đọc khi muốn tới gốc tầng Link:

Ghi chú: ARP cũ nhưng vẫn chạy khắp mọi LAN IPv4 hôm nay (IPv6 thay bằng Neighbor Discovery). Hiểu ARP là hiểu cách "IP gặp phần cứng".

8. Tóm tắt

  • Trong một LAN, máy nói chuyện bằng địa chỉ MAC (48-bit, gắn cứng vào NIC), đóng dữ liệu trong Ethernet frame (Dst MAC, Src MAC, Type, Payload, FCS).
  • Switch học Src MAC ↔ cổng để chuyển frame đúng cổng; chưa biết thì flood ra mọi cổng một lần.
  • ARP phân giải IP → MAC trong LAN: broadcast request "ai có IP này?", máy đúng reply unicast kèm MAC; kết quả lưu vào ARP cache.
  • ARP chỉ chạy trong một broadcast domain (một LAN), nên MAC không định tuyến ra ngoài; khác mạng thì gửi tới MAC của gateway.
  • Quy tắc Module 1 sáng tỏ: IP đích cố định, MAC đổi mỗi chặng vì mỗi chặng là một LAN với ARP riêng.

9. Tự kiểm tra

Tự kiểm tra
0/6 câu đã trả lời
  1. Q1
    Hai máy trong cùng Wi-Fi gửi file cho nhau. Vì sao nói chúng dùng MAC chứ không phải IP để gửi, dù app chỉ định IP đích?
  2. Q2
    Mô tả các bước ARP khi máy A (192.168.1.10) muốn gửi cho 192.168.1.5 trong cùng LAN mà chưa biết MAC của nó.
  3. Q3
    Vì sao bạn không bao giờ thấy MAC của google.com trong ARP cache máy mình?
  4. Q4
    Switch khác hub ở điểm gì, và 'học port' nghĩa là gì?
  5. Q5
    Vì sao ARP request phải gửi dạng broadcast, còn ARP reply lại gửi dạng unicast?
  6. Q6
    Địa chỉ MAC và địa chỉ IP khác nhau căn bản ở chỗ nào về 'gắn với cái gì'?

Bài tiếp theo: Địa chỉ IP — IPv4, IPv6 và dải private

Bài này có giúp bạn hiểu bản chất không?

Bài này đáng gửi cho bạn học cùng?

Copy link đã gắn nguồn — dán group, chat, hoặc LinkedIn.

Thảo luận & góp ý

Hỏi đáp về bài này

Bài tiếp theo

Địa chỉ IP — IPv4, IPv6 và dải private