Routing & default gateway — gói tin nhảy hop thế nào
Mỗi máy có một routing table quyết định gói tin đi đâu tiếp; khác mạng thì đẩy ra default gateway. Router chỉ biết 'trạm kế tiếp', không biết toàn tuyến — gói nhảy hop-by-hop tới đích. Bài này giải thích routing table, longest-prefix match, và cách traceroute lộ ra từng chặng.
TL;DR: Mỗi máy (kể cả laptop bạn) có một routing table — danh sách "mạng đích → đi lối nào". Nếu đích nằm trong một route cụ thể thì theo route đó; không khớp gì thì đẩy ra default gateway (0.0.0.0/0). Khi nhiều route cùng khớp, chọn route cụ thể nhất (longest-prefix match). Không máy nào biết toàn tuyến tới đích — mỗi router chỉ biết trạm kế tiếp, và gói nhảy hop-by-hop qua nhiều router. traceroute lộ ra từng hop. Đây là cơ chế đưa gói tin "ra khỏi mạng nhà" mà bài subnet đã đặt nền: khác mạng → gateway.
ping 8.8.8.8 chạy ngon, dù laptop bạn chưa từng "biết" Google DNS ở đâu và không có đường dây trực tiếp tới nó. Laptop chỉ biết mỗi mạng LAN nhà mình. Vậy làm sao gói tin tìm được đường qua hàng chục máy lạ giữa đường tới đích?
Câu trả lời là routing: không ai biết toàn tuyến, nhưng mỗi trạm biết "đẩy về phía nào là gần đích hơn". Bài này giải thích routing table, default gateway, và cách gói tin nhảy từng chặng.
1. Analogy — Hỏi đường từng ngã rẽ
Bạn lái xe tới một thành phố xa chưa từng đến. Bạn không cần biết trước toàn bộ lộ trình. Tới mỗi ngã rẽ, có biển chỉ "Hà Nội → rẽ phải". Bạn theo biển, tới ngã tiếp theo lại có biển khác. Mỗi biển chỉ biết hướng kế tiếp, không biết cả con đường — nhưng cứ theo biển là tới.
| Lái xe | Routing |
|---|---|
| Biển chỉ đường ở mỗi ngã | Routing table ở mỗi router |
| "Hà Nội → rẽ phải" | "Mạng X → đi qua next hop Y" |
| Không cần biết toàn tuyến | Mỗi hop chỉ biết trạm kế tiếp |
| Biển mặc định "mọi nơi khác → ra quốc lộ" | Default gateway (0.0.0.0/0) |
Routing là chuyển tiếp từng chặng, không phải "biết đường đi cả tuyến". Mỗi máy chỉ trả lời được "gói này nên giao cho ai tiếp theo?" — phần còn lại để trạm sau lo.
2. Routing table — bảng quyết định lối đi
Mọi máy có routing table. Xem của bạn:
ip route
# default via 192.168.1.1 dev wlan0 <- khong khop dau het -> gateway
# 192.168.1.0/24 dev wlan0 proto kernel ... <- mang LAN: gui thang
Mỗi dòng là một route: "đích thuộc mạng này → đi qua next hop này / interface này". Hai dòng trên nói:
- Gói tới
192.168.1.x(cùng LAN) → gửi thẳng quawlan0(không cần router — dùng ARP như bài 01). - Mọi đích khác →
default via 192.168.1.1(đưa cho gateway).
Đây chính là hiện thân của quy tắc bài subnet: cùng mạng gửi thẳng, khác mạng đưa gateway — nhưng giờ ở dạng một bảng tra cụ thể.
3. Default gateway — cửa ra "mọi nơi khác"
Route default (viết CIDR là 0.0.0.0/0 — khớp mọi địa chỉ) là lối thoát khi không route cụ thể nào khớp. via 192.168.1.1 là default gateway — router nối LAN bạn với thế giới ngoài. Mọi gói ra Internet đều đi qua nó trước.
Đây là lý do mỗi mạng cần một gateway. Ví dụ một host trong LAN 192.168.1.0/24: mọi đích không khớp route nội bộ đều bị đẩy ra 192.168.1.1 (router nhà) để ra ngoài — đúng một cơ chế cho mọi mạng.
4. Longest-prefix match — chọn route cụ thể nhất
Nhiều route có thể cùng khớp một đích. Quy tắc: chọn route có prefix dài nhất (cụ thể nhất). Ví dụ đích 10.0.5.20 khớp cả hai:
| Route | Prefix | Khớp? |
|---|---|---|
10.0.0.0/8 via R1 | 8 bit | có |
10.0.5.0/24 via R2 | 24 bit | có (cụ thể hơn) |
→ Chọn 10.0.5.0/24 (prefix /24 dài hơn /8). default (/0) luôn là lựa chọn cuối vì prefix ngắn nhất. Tư duy: route càng chi tiết càng "hiểu rõ đường tới đó" nên được ưu tiên.
5. Hop-by-hop — gói nhảy qua từng router
Không máy nào giữ bản đồ toàn Internet. Gói tin được chuyển tiếp từng chặng: mỗi router nhận gói, tra routing table của nó, đẩy tới next hop, lặp lại tới đích.
Mỗi router chỉ biết "next hop" — không ai giữ toàn tuyến. IP đích cố định, MAC đổi mỗi chặng (bài 01).
6. traceroute — soi từng hop
traceroute (Windows: tracert) lộ ra danh sách router gói tin đi qua:
traceroute google.com
# 1 192.168.1.1 1.2 ms <- gateway nha
# 2 10.x.x.x 8.5 ms <- router ISP
# 3 ... <- cac hop backbone
# 9 142.250.x.x 25.1 ms <- toi dich
Mỗi dòng là một hop, kèm thời gian. Cách traceroute "ép" từng router tự lộ diện dùng một mẹo với TTL — sẽ giải thích ở bài ICMP kế tiếp. Khi debug "request đi tới đâu thì tắc", traceroute cho thấy gói dừng ở hop nào.
7. Pitfall — hiểu nhầm thường gặp
❌ Nhầm 1: "Máy tôi biết đường tới server đích." ✅ Máy bạn chỉ biết next hop (thường là gateway). Toàn tuyến là tổng hợp quyết định độc lập của từng router dọc đường — không ai giữ bản đồ đầy đủ.
❌ Nhầm 2: "Thiếu default gateway thì chỉ chậm thôi."
✅ Thiếu default route, mọi đích ngoài LAN không đi đâu được (máy không biết đẩy gói cho ai) — biểu hiện: ping được máy cùng LAN nhưng ra Internet là Network unreachable.
❌ Nhầm 3: "Gói đi và về cùng một đường." ✅ Routing có thể bất đối xứng — chiều đi và chiều về qua các router khác nhau (mỗi router quyết định độc lập). Điều này quan trọng khi debug bằng traceroute (chỉ thấy chiều đi).
8. 📚 Deep Dive — tài liệu gốc
Đọc khi muốn tới gốc routing:
- RFC 1812 — Requirements for IP Version 4 Routers — router phải làm gì khi forward gói.
- RFC 791 — Internet Protocol — forwarding và TTL ở tầng IP.
Ghi chú: Bài này là routing ở mức host/LAN. Cách các router toàn cầu học được route của nhau (giao thức BGP, OSPF) là chủ đề mạng nâng cao — ở mức nền chỉ cần hiểu "mỗi hop tra bảng, đẩy next hop".
9. Tóm tắt
- Mỗi máy có routing table: "mạng đích → next hop / interface". Cùng LAN gửi thẳng; khác mạng đẩy ra default gateway (
0.0.0.0/0). - Nhiều route khớp → chọn longest-prefix match (cụ thể nhất);
default(/0) là lựa chọn cuối. - Không ai giữ toàn tuyến — gói nhảy hop-by-hop, mỗi router chỉ biết trạm kế tiếp (IP đích cố định, MAC đổi mỗi hop).
traceroutelộ ra từng hop, hữu ích khi tìm "gói tắc ở đâu".- Routing có thể bất đối xứng; thiếu default gateway → ra ngoài LAN là
Network unreachable. - Một host trong LAN
192.168.1.0/24đẩy mọi đích khác mạng ra gateway192.168.1.1theo đúng cơ chế này.
10. Tự kiểm tra
Q1Vì sao nói 'không máy nào biết toàn tuyến tới đích' mà gói tin vẫn tới được?▸
Q2Routing table của laptop có dòng `default via 192.168.1.1` và `192.168.1.0/24 dev wlan0`. Gói tới 192.168.1.50 và gói tới 8.8.8.8 được xử lý khác nhau thế nào?▸
192.168.1.0/24 (cùng LAN) → gửi thẳng qua wlan0, dùng ARP tìm MAC đích. Gói tới 8.8.8.8 không khớp route cụ thể nào → rơi vào default → đẩy tới gateway 192.168.1.1, để router lo chặng tiếp. Đây chính là quy tắc "cùng mạng gửi thẳng, khác mạng đưa gateway" ở dạng bảng tra.Q3Đích 10.0.5.20 khớp cả route 10.0.0.0/8 và 10.0.5.0/24. Router chọn route nào, theo nguyên tắc gì?▸
10.0.5.0/24 theo longest-prefix match — route có prefix dài nhất (cụ thể nhất) thắng. /24 dài hơn /8 nên được ưu tiên. Tư duy: route càng chi tiết càng "hiểu rõ" đường tới mạng đó, nên đáng tin hơn route chung chung. default (/0) luôn là lựa chọn cuối vì prefix ngắn nhất.Q4Một máy thiếu default gateway thì biểu hiện ra sao? Vì sao không phải 'chỉ chậm'?▸
Network unreachable. Không phải chậm mà là không đi đâu cả — máy không biết giao gói cho ai.Q5traceroute dùng để làm gì khi debug, và 'routing bất đối xứng' ảnh hưởng cách đọc nó ra sao?▸
traceroute liệt kê từng router (hop) gói đi qua kèm thời gian — giúp tìm gói "tắc ở đâu" hoặc chặng nào chậm. Nhưng routing có thể bất đối xứng: chiều đi và chiều về qua các router khác nhau (mỗi router quyết định độc lập). traceroute chỉ thấy chiều đi, nên một vấn đề ở chiều về có thể không lộ ra — cần lưu ý khi kết luận.Q6Một laptop trong LAN 192.168.1.0/24 muốn mở một trang web ngoài Internet. Mô tả routing table của nó quyết định gói đi đâu, và vì sao gói không tới thẳng server đích.▸
192.168.1.0/24 (gửi thẳng trong LAN) và default via 192.168.1.1. Đích web là một IP công cộng không khớp route LAN → rơi vào default → đẩy ra gateway 192.168.1.1 (router nhà). Router tra routing table của nó rồi forward tới hop tiếp theo (router ISP), cứ thế hop-by-hop tới đích. Laptop không tới thẳng server vì nó chỉ biết next hop, không giữ bản đồ toàn Internet — đúng cơ chế "khác mạng → gateway → hop tiếp theo".Bài tiếp theo: NAT & Port Forwarding — một IP công cộng cho nhiều máy
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
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