Nền tảng Mạng máy tính/Ethernet, MAC & ARP — mạng LAN hoạt động thế nào
6/17
Bài 6 / 17~22 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 một mạng LAN, máy tìm và nói chuyện với nhau bằng địa chỉ MAC chứ không phải IP. Bài này giải thích Ethernet frame, địa chỉ MAC, cách switch học port, và ARP — cầu nối 'IP nào ↔ MAC nào'. Đây là tầng thấp nhất, nền cho mọi mạng cục bộ.

TL;DR: Hai máy trong cùng một mạng LAN không nói chuyện bằng IP — chúng 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. Hiểu tầng này là hiểu nền móng của mọi mạng cục bộ — cá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ề — nó đ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 thấp nhất — tầng Link — với ba mảnh ghép: Ethernet frame, địa chỉ MAC, và giao thức ARP. Bài này giải thích cả ba, và vì sao chúng là nền tảng cho mọi mạng cục bộ.

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.

Đó chính xác là ARP trong một LAN:

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. Nó được gắn cứng vào card mạng (NIC) từ nhà sản xuất — 24 bit đầu là OUI (Organizationally Unique Identifier — mã định danh hãng sản xuất do IEEE cấp), 24 bit sau là số seri của thiết bị. Xem MAC máy bạn:

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 MACSrc MAC cho biết frame đi từ card nào tới card nào — trong phạm vi một LAN.

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 (đó là 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.

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):

sequenceDiagram
    participant A as May A (192.168.1.10)
    participant LAN as Broadcast toan LAN
    participant B as May B (192.168.1.5)
    A->>LAN: ARP request — "Ai co IP 192.168.1.5?"
    LAN-->>B: Moi may deu nhan, chi B dung IP
    B->>A: ARP reply — "192.168.1.5 o MAC bb:bb:.." (unicast)
    Note over A: Luu (IP -> MAC) vao ARP cache,<br/>roi gui frame thang toi bb:bb
  • 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:

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

5. Broadcast domain — vì sao MAC chỉ 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.

Đó là lý do 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 — nó gửi frame tới MAC của router (default gateway), và để router lo chặng tiếp theo. "Cùng mạng thì gửi thẳng, khác mạng thì đưa cho gateway" — ranh giới "cùng/khác mạng" do subnet quyết định (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
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?
Vì ở tầng Link, dữ liệu đi trong Ethernet frame, và frame được chuyển dựa trên địa chỉ MAC đích — đó là thứ switch và card mạng hiểu. App chỉ biết IP đích, nên máy phải dùng ARP để tra ra MAC tương ứng trước, rồi mới đóng frame gửi tới MAC đó. IP là "tên" để hỏi; MAC là "địa chỉ vật lý" để giao.
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ó.
  • A gửi ARP request dạng broadcast (tới ff:ff:ff:ff:ff:ff): "ai có IP 192.168.1.5?". Mọi máy trong LAN đều nhận.
  • Chỉ máy đúng IP reply (unicast): "192.168.1.5 ở MAC bb:bb:..".
  • A lưu cặp (IP → MAC) vào ARP cache, rồi gửi frame thẳng tới MAC đó. Lần sau khỏi hỏi lại.
Q3
Vì sao bạn không bao giờ thấy MAC của google.com trong ARP cache máy mình?
Vì ARP chỉ hoạt động trong một broadcast domain (một LAN) — broadcast không lan ra ngoài. Google ở mạng khác, không ai trong LAN bạn trả lời ARP cho IP của nó. Khi gửi cho một đích ngoài LAN, máy bạn không ARP đích mà gửi frame tới MAC của default gateway (router), để router lo chặng tiếp. Trong ARP cache bạn chỉ thấy MAC của các máy/router cùng LAN.
Q4
Switch khác hub ở điểm gì, và 'học port' nghĩa là gì?
Hub (đời cũ) phát mọi frame ra tất cả cổng — tốn băng thông, dễ đụng độ. Switch thông minh hơn: với mỗi frame đi vào, nó đọc Src MAC để học "MAC này ở cổng này" (lưu vào bảng MAC). Khi chuyển frame có Dst MAC đã biết, nó gửi đúng một cổng; chỉ flood mọi cổng khi đích chưa học được. Nhờ vậy traffic gọn và riêng tư hơn.
Q5
Vì sao ARP request phải gửi dạng broadcast, còn ARP reply lại gửi dạng unicast?
Lúc gửi ARP request, máy mới chỉ biết IP đích chứ chưa biết MAC của nó — không có địa chỉ cụ thể để gửi riêng, nên phải broadcast (ff:ff:ff:ff:ff:ff) cho mọi máy trong LAN cùng nghe, để máy đúng IP tự nhận ra. Khi reply, máy đích đã đọc được Src MAC của bên hỏi trong frame request, nên nó biết chính xác gửi về đâu và dùng unicast — gửi riêng, đỡ làm phiền cả LAN. Nguyên tắc: broadcast khi chưa biết đích, unicast khi đã biết.
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ì'?
MAC gắn với thiết bị (card mạng) — do nhà sản xuất ghi cứng, đi theo phần cứng, có nghĩa trong phạm vi một chặng LAN. IP gắn với vị trí trong mạng — được gán theo mạng máy đang ở, đổi được, và có nghĩa đầu-cuối trên toàn Internet. Đổi mạng thì IP đổi nhưng MAC giữ nguyên; đó là lý do định tuyến toàn cầu dùng IP, còn giao nhận trong một chặng dùng MAC.

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?

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

Chưa có câu hỏi

Đặt câu hỏi

Có gì chưa rõ trong bài? Đặt câu hỏi đầu tiên — câu trả lời từ cộng đồng giúp bạn (và người sau).

Đặt câu hỏi đầu tiên