Tầng Liên Kết: MAC, ARP và Switch

K
Kai··5 min read

Bài 2 cho biết IP định danh thiết bị ở tầng mạng. Nhưng bên trong một mạng nội bộ (LAN), việc giao dữ liệu thực tế lại dùng một loại địa chỉ khác: MAC. Bài này (tầng 2 — liên kết) giải thích MAC, giao thức ARP nối IP với MAC, và switch — thiết bị xương sống của mọi LAN.

MAC address: địa chỉ phần cứng

Mỗi giao diện mạng (card mạng, wifi) có một địa chỉ MAC — một số 48 bit, viết thành 6 cặp số thập lục phân:

ifconfig en0 | grep ether
ether fe:6f:15:fe:6d:67

Khác IP (gán theo mạng, có thể đổi), MAC gắn với phần cứng của card mạng (thường cố định từ nhà sản xuất). MAC hoạt động ở tầng 2 và chỉ có ý nghĩa trong một mạng nội bộ — nó không định tuyến được qua Internet như IP.

Vì sao cần cả MAC lẫn IP

Câu hỏi tự nhiên: đã có IP rồi, sao còn MAC? Vì hai địa chỉ phục vụ hai mục đích khác nhau, tương ứng hai tầng:

  • IP (tầng 3) — địa chỉ logic, dùng để định tuyến giữa các mạng, xuyên Internet. Trả lời "mạng nào, máy nào trên toàn cầu".
  • MAC (tầng 2) — địa chỉ vật lý, dùng để giao dữ liệu trong một mạng nội bộ. Trả lời "card mạng nào trên LAN này".

Một phép so sánh: gửi thư quốc tế. IP như địa chỉ đầy đủ "Việt Nam, TP.HCM, Quận 1..." để thư đi đúng nước, đúng thành phố. Nhưng tới bưu cục địa phương, người đưa thư dùng thông tin cụ thể để bỏ đúng hòm thư — đó là vai trò MAC trong chặng cuối nội bộ.

Khi một gói tin đi qua nhiều mạng, IP nguồn/đích giữ nguyên suốt hành trình, nhưng MAC thay đổi ở mỗi chặng (mỗi lần qua một router, MAC được viết lại cho chặng kế tiếp). Đây là điểm tinh tế nhưng quan trọng — ta gặp lại ở Bài 4 (định tuyến).

ARP: nối IP với MAC

Vấn đề: máy bạn muốn gửi gói tin cho 192.168.71.1 (IP), nhưng để giao trong LAN nó cần biết MAC của máy đó. Làm sao biết? Bằng ARP (Address Resolution Protocol), định nghĩa trong RFC 826.

ARP hoạt động đơn giản bằng cách "hỏi cả mạng":

   Máy A cần MAC của 192.168.71.1 nhưng chưa biết:

   A ──── broadcast tới CẢ LAN ────►  "Ai có 192.168.71.1? Cho tôi MAC."
                                       (ARP request)
   192.168.71.1 ──── trả lời riêng A ──►  "Tôi đây. MAC tôi là 40:ae:30:30:a6:48."
                                          (ARP reply)
   A lưu cặp 192.168.71.1 → 40:ae:30:30:a6:48 vào BẢNG ARP (cache)

Lần sau gửi cho IP đó, A tra bảng ARP, khỏi hỏi lại. Xem bảng ARP trên máy bạn:

arp -a
? (192.168.71.1)   at 40:ae:30:30:a6:48 on en0   ← gateway (router)
? (192.168.71.151) at a:69:a2:81:6d:8a  on en0
? (192.168.71.158) at 4a:e4:13:3c:fa:9  on en0

Mỗi dòng là một cặp IP↔MAC mà máy bạn đã học được trên LAN. Để ý 192.168.71.1 — đó là router/gateway của mạng (Bài 4); máy bạn phải biết MAC của nó để gửi mọi thứ ra Internet qua đó.

Về bảo mật: vì ARP tin tưởng mọi câu trả lời, kẻ xấu trong cùng LAN có thể "ARP spoofing" — giả mạo trả lời để chen vào giữa (man-in-the-middle). Đây là lý do trong mạng không tin cậy, mã hóa ở tầng trên (TLS — Bài 9) là cần thiết: dù ai đó chen vào tầng 2, họ không đọc được nội dung đã mã hóa.

Switch: bộ chuyển mạch của LAN

Các thiết bị trong một LAN nối vào nhau qua một switch — thiết bị tầng 2. Việc của switch: nhận frame Ethernet ở một cổng và đẩy nó tới đúng cổng có máy đích.

Switch làm điều đó bằng cách học MAC nào ở cổng nào:

   Switch tự lập bảng MAC ↔ cổng:
   ┌────────────────────────────────┐
   │ cổng 1  ── MAC aa:.. (máy A)    │
   │ cổng 2  ── MAC bb:.. (máy B)    │
   │ cổng 3  ── MAC cc:.. (máy C)    │
   └────────────────────────────────┘

   Frame gửi tới bb:.. → switch chỉ đẩy ra CỔNG 2
   (không làm phiền máy A và C)

So với hub (thiết bị cũ, phát mọi frame ra mọi cổng — chậm và kém riêng tư), switch chỉ gửi tới đúng cổng cần, nên hiệu quả và phổ biến. Switch nhìn MAC (tầng 2); nó không quan tâm IP — đó là việc của router (tầng 3, Bài 4).

Ghép lại: gửi một gói tin trong LAN

Khi máy A gửi dữ liệu cho máy B cùng LAN:

1. A có IP của B. Tra bảng ARP để lấy MAC của B (hỏi ARP nếu chưa có).
2. A đóng gói: frame Ethernet [MAC nguồn=A | MAC đích=B | ... | IP/dữ liệu]
3. A gửi frame ra switch.
4. Switch nhìn MAC đích=B, đẩy frame ra đúng cổng của B.
5. B nhận, bóc frame, xử lý.

Nếu B không cùng LAN (ở mạng khác / trên Internet)? A không thể gửi trực tiếp — nó gửi tới router/gateway (qua MAC của router), và router lo đưa gói đi tiếp. Đó chính là định tuyến — Bài 4.

Tổng kết

Trong một LAN, dữ liệu được giao bằng địa chỉ MAC (tầng 2, gắn phần cứng, 48 bit), khác với IP (tầng 3, logic, định tuyến toàn cầu). Cần cả hai: IP để đi đúng mạng, MAC để giao trong mạng nội bộ — và MAC thay đổi qua mỗi chặng còn IP giữ nguyên. ARP phân giải IP→MAC bằng cách hỏi broadcast cả LAN rồi cache lại (arp -a). Switch chuyển frame tới đúng cổng dựa trên MAC mà nó học được.

Nhưng khi đích nằm ở mạng khác, gói tin phải vượt ra khỏi LAN. Bài 4 giải thích cách đó: định tuyến — router, gateway và bảng định tuyến.