單元 03 IPv4、子網與下一跳
學習目標與問題
先讀單元 01、02。你應能將十進位位址轉成前綴判斷,計算一般子網範圍,使用最長前綴匹配找出口,並解釋 ICMP 與 MTU。問題是:目的主機不在同一個網段時,電腦究竟把訊框交給誰?
補充 03A 進一步處理單介面多 IP、來源偏好與政策路由;完成 L03 後接 L15。
3.1 位址與前綴
IPv4 位址有 32 bits,通常寫成四個 0 至 255 的十進位數。CIDR 的 /n 表示前 n bits 是網路前綴;它不是可用主機數。192.0.2.64/26 的遮罩為 255.255.255.192,每塊有 64 個位址。一般廣播子網中網路位址為 .64、廣播為 .127,主機為 .65 至 .126。/31 點對點鏈路和 /32 主機路由有不同用途,不能機械套用「減二」。
判斷是否同網段:將位址與遮罩逐 bit 做 AND,再比較網路前綴。最後一個 octet 的 .70 是 01000110;與 11000000 做 AND 得 01000000,即 .64。位址長得相似不代表同一子網。
私有位址 10/8、172.16/12、192.168/16 供內部使用;它們不是自動加密或安全區。192.0.2/24、198.51.100/24、203.0.113/24 是本文範例使用的文件用位址。不要把例題目的主機當成 Internet 上的實際服務。
3.2 路由表選的是下一跳
主機和路由器都要查轉送資訊。查表以目的 IP 比較所有可用路由,優先選最長匹配前綴;同前綴的優先序與成本再依平臺、路由來源及設定決定。預設路由 0.0.0.0/0 只在沒有更具體匹配時使用。
| 前綴 | 下一跳/出口 | 用途 |
|---|---|---|
| 192.0.2.64/26 | on-link,介面 A | 直接連線的子網 |
| 198.51.100.0/24 | 192.0.2.65,介面 A | 特定遠端網段 |
| 198.51.100.128/25 | 192.0.2.66,介面 A | 更具體的網段 |
| 0.0.0.0/0 | 192.0.2.65,介面 A | 其餘目的地 |
目的 .140 符合 /24 和 /25,選 /25;目的 198.51.100.20 選 /24;192.0.2.80 選 on-link。遠端目的 IP 仍寫在 IP 封包內,鏈路目的 MAC 則是下一跳路由器。一般情況下 ARP 查的是下一跳的 IPv4 位址,不會一路廣播找遠端主機。
下一跳本身也必須可達。上表假設 .65、.66 在介面 A 的直連網段,且鏈路正常。路由存在不等於服務存活;正向路徑可達也不保證回程可達。
3.3 IP 標頭與逐跳處理
來源與目的位址識別 IP 端點;Protocol 欄位指向 TCP、UDP 或 ICMP 等上層;TTL 限制轉送次數。每經路由器轉送會降低 TTL,降到零時丟棄,通常可回 ICMP Time Exceeded。TTL 現在主要表示跳數限制,不能當作精確的存活秒數。
IP 本身不保證到達、順序或無重複。應用是否需要重傳、排序、驗證,要看上層。IPv4 標頭檢查和只涵蓋 IP 標頭;它不能保證整份應用資料不被修改。
3.4 MTU、分片與 ICMP
鏈路 MTU 限制可承載的 IP 封包大小;路徑 MTU 在此模型取各段鏈路 MTU 的最小值。IPv4 可在允許時分片,但分片遺失會讓整個資料報無法重組,且中間裝置可能丟棄分片。設定 DF 的過大封包不能由中間路由器分片,通常需要 ICMP 回報限制。PMTUD 利用這類訊息;封鎖必要 ICMP 可能造成「小資料能通、大資料卡住」。
例:Ethernet MTU 1500,無 options 的 IPv4 20 bytes、TCP 20 bytes,理想 TCP 資料上限為 1460 bytes。加上 VPN、TCP options 或其他封裝後要重新計算;MSS 不是所有封包永久固定為 1460。
ICMP 是控制與診斷訊息,不是 TCP/UDP 埠上的服務。ping 的 Echo Reply 只支持特定路徑與回覆的結論;拒絕 ping 的網站仍可能接受 HTTPS。traceroute 的各跳延遲也不是每段鏈路延遲,ICMP 限速、不同回程和負載平衡會影響結果。
實驗、習題與檢核
做 L03:先手算三個目的位址,再用 ipaddress 和最長前綴查表確認。
- 求 198.51.100.160/27 的網路、廣播、一般可用範圍與遮罩。
- 上表目的 198.51.100.200、203.0.113.9 各選哪條路由?
- 解釋遠端封包的目的 IP 和第一跳目的 MAC 為何不同。
- 連線可傳 100-byte 內容卻卡在大型回應,提出兩個可測試假設。
檢核:能分開回答「去哪個 IP」「走哪個介面」「交給哪個下一跳」。來源補充 RFC 1918(私有位址)、RFC 5737(文件位址)。來源:RFC 4632、RFC 791、RFC 1191、RFC 3021。