第 5 章 · 网络层:IP 与路由

网络层使命:在任意两主机间找路径,把分组从源送到目的,只承诺「尽力而为(best-effort)」,可靠性交给传输层(见第 4 章)。

5.1 IPv4 地址

IPv4 地址 32 位,写成点分十进制 192.168.1.1,分「网络号 + 主机号」两部分:

表示含义
192.168.1.0/24CIDR 记法:前 24 位是网络号,主机位 8 位,可容纳 2^8−2=254 台主机
子网掩码 255.255.255.0等价于 /24

全 0 主机位 = 网络地址,全 1 主机位 = 广播地址(二者不可分配给主机)。

5.2 子网划分与 CIDR

子网划分:借主机位当网络位、延长前缀,把大网络切成小网络。CIDR 取消 A/B/C 固定边界,允许任意长度前缀,路由表用 网络/前缀 聚合——现代互联网的基础。

对比:IPv4 32 位、约 43 亿个,早已耗尽,靠 NAT 续命;IPv6 128 位,写法 2001:db8::1(双冒号压缩连续 0),原生支持 SLAAC(见第 2 章)。IPv6 去掉首部校验和,把分片从路由器移到端点。

5.3 路由算法:距离向量 vs 链路状态

维度距离向量(RIP)链路状态(OSPF)
信息到各网络的距离(跳数)全网链路状态
交换对象只与邻居泛洪全网
算法Bellman-FordDijkstra
收敛速度慢(坏消息传得慢)
度量跳数(≤15 跳)可自定义(带宽、代价)
适用规模小型网络大型自治系统内部

对比:距离向量只跟邻居交换「到各网络的距离表」、迭代收敛;链路状态把全网拓扑广播给所有人、各自用 Dijkstra 算最短路径。

距离向量的坑:「坏消息传得慢」——链路断开后路由环路/计数到无穷可能持续很久(RIP 用 16 跳表示不可达兜底)。

5.4 ICMP:网络层的「诊断员」

ICMP 是 IP 的辅助协议,用于报告错误和诊断,不发应用数据:

ping -c 4 example.com     # Echo Request / Echo Reply,测连通性与 RTT
traceroute example.com    # TTL 递增,收集沿途 TTL 超时,画出路径
  • 典型错误:目的不可达、超时、重定向。

5.5 NAT:地址转换

NAT 让多台私有地址主机共享一个公网 IP:

内网 192.168.1.x  ──→  NAT 路由器  ──→  公网 IP(如 203.0.113.5)
  • 路由器维护转换表(内网 IP:端口 ↔ 公网 IP:端口),替换地址发出、回程换回。
  • 一举两得:缓解 IPv4 耗尽 + 隐藏内网拓扑(天然防火墙)。
  • 代价:破坏端到端原则——外网无法主动连内网主机(需端口映射/打洞),也让 FTP、IPsec 等协议更麻烦。