网络层是两个核心层之一,其功能是将分组从源主机一路送到目的主机。本章围绕这个功能,探讨网络层的技术和协议。

网络层服务模型

网络层首先探讨了源和目的之间的通信网络的分类和提供的服务:

  • 数据报网络:提供无连接的服务,每个分组(数据报)独立路由,使用 IP 协议。特点:不维护连接状态,分组可能乱序到达。优点:鲁棒性强,适合动态路由。
  • 虚电路网络:提供面向连接的服务,通信前需建立虚电路(如 X.25、ATM、MPLS)。特点:所有分组沿相同路径按序到达,可以预留资源(QoS)。缺点:需要维护连接状态,容错性差(节点故障导致所有连接中断)。

网络层上的协议分为被路由协议(routed protocol)和路由选择协议(routing protocol):

  • 被路由协议:为分组的路由提供所需要的信息,例如 IP 协议提供地址和分组格式。
  • 路由选择协议:用于填充路由表,如 RIP、OSPF、BGP。

IPv4 地址与子网划分

IPv4 地址表示和分类

IPv4 地址长度为 32 位,通常用点分十进制表示(如 192.0.2.1)。最初分为五类(A、B、C、D、E):

  • A 类:首位 0,网络号 8 位,主机号 24 位(范围 0.0.0.0 – 127.255.255.255),但 0 和 127 保留,实际 1–126。
  • B 类:首位 10,网络号 16 位,主机号 16 位(128.0.0.0 – 191.255.255.255)。
  • C 类:首位 110,网络号 24 位,主机号 8 位(192.0.0.0 – 223.255.255.255)。
  • D 类(组播):1110 开头,地址 224.0.0.0 – 239.255.255.255。
  • E 类(保留):240.0.0.0 – 255.255.255.255。

子网划分与 CIDR

IPv4 地址资源按块分配给 ISP,个人用户从 ISP 获取 IP 地址。为了方便管理和节约 IP 地址,使用子网掩码(如 255.255.255.0)将主机号再分为子网号和子网内主机号。**可变长子网掩码(VLSM)**允许不同子网使用不同掩码长度,尽量不浪费地址。

CIDR(无类别域间路由):舍弃固定类别,使用“前缀/长度”表示任意长度的网络前缀(例如 192.168.0.0/16)。CIDR 支持路由聚合(超网),大幅缩小路由表规模。

IP 寻址与 MAC 寻址的协作

IP 寻址用于跨网络通信(逻辑地址),而 MAC 寻址(物理地址)用于同一子网内的链路层传输。在数据传输过程中:

  • 源主机将 IP 分组封装成帧,目的 MAC 地址为下一跳路由器(或目的主机)的 MAC。
  • 路由器转发时,IP 分组(源和目的 IP 不变)被重新封装,MAC 地址每跳都更新。

地址解析协议(ARP)

在知晓通信对方的 IPv4 地址,但却不知其 MAC 地址时,启用地址解析协议(ARP)。工作原理:

  1. 发送方广播 ARP 请求(“谁拥有 IP X?请回复 MAC”)。
  2. 目标主机单播 ARP 应答(包含自己的 MAC)。
  3. 发送方将映射存入 ARP 缓存(通常 20 分钟有效期)。

当目的主机位于远程网络中时,必须使用默认网关(路由器),此时 ARP 请求的目标 IP 是网关 IP,从而获得网关 MAC。

ICMP(互联网控制消息协议)

IP 分组传输仅是尽力而为,会遭遇丢包、拥塞等异常。ICMP 提供差错报告和网络诊断。

  • 差错报告:目的不可达(3)、超时(11,如 TTL 为 0)、参数问题等。
  • 网络诊断:回声请求/应答(Type 8/0)用于 ping;时间戳请求用于测量延迟。
  • 著名的 traceroute 使用 TTL 逐跳递增和 ICMP 超时报文来探测路径。

NAT(网络地址转换)

IPv4 总地址池已于 2011 年枯竭,而网民人数还在逐年上升。NAT 是地址不够用的快速修补方案。

  • 私有地址:三个保留地址块(10.0.0.0/8、172.16.0.0/12、192.168.0.0/16),仅限内部网络使用,不接入公网路由。
  • NAT 工作原理:内部主机访问公网时,NAT 路由器将源 IP(私有)和端口号转换为公网 IP 和一个新端口,并维护映射表。返回数据时逆向转换。
  • NAT 局限性:破坏端到端透明性,外部无法主动连接内部主机(需手动配置端口转发或 UPnP)。

IPv6

IPv6 是大势所趋,其地址长度为 128 位,采用冒分十六进制表示(如 2001:0db8:85a3::8a2e:0370:7334)。

IPv6 地址分类

  • 单播:唯一标识一个接口,包括全球单播(可聚合全球)、链路本地(FE80::/10)、唯一本地(FC00::/7)等。
  • 多播(FF00::/8):代替 IPv4 广播。
  • 任播:分配多个节点,数据发送到最近的一个(按路由距离)。

地址获取与 DAD

IPv6 地址可以通过两种方式获取:

  • 无状态地址自动配置(SLAAC):根据路由器通告的前缀 + 接口标识符(通常由 MAC 生成 EUI-64)自动生成地址。
  • 动态主机配置协议 v6(DHCPv6):有状态配置,可下发 DNS 等信息。

获得的 IPv6 地址需要通过重复地址检测(DAD) 之后才可使用:节点发送邻居请求(NS)询问该地址是否已被使用,若无响应则地址有效。

邻居发现协议(NDP)

NDP 取代 IPv4 的 ARP,提供:

  • 地址解析:使用邻居请求(NS)/邻居通告(NA)获取链路层地址。
  • 路由器发现:主机通过路由器通告(RA)获知前缀和默认网关。
  • 地址自动配置:结合 SLAAC。
  • 重定向:路由器通知主机更优的下一跳。

IPv4 向 IPv6 过渡技术

三大类过渡技术:

  1. 双协议栈:节点同时运行 IPv4 和 IPv6,根据目的地址选择协议。
  2. 隧道技术:将 IPv6 分组封装在 IPv4 分组中,穿越 IPv4 网络(如 6to4、Teredo)。
  3. NAT-PT / NAT64:在边界网关处进行 IPv6 与 IPv4 地址和协议的转换。

路由选择协议

按照运行的位置,路由选择协议分为:

  • IGP(内部网关协议):在一个自治系统(AS)内部运行,如 RIP、OSPF。
  • EGP(外部网关协议):AS 之间运行,主要是 BGP。

距离矢量路由协议(RIP)

基本原理:每个路由器周期性地向邻居通告其到所有目的网络的“距离”(跳数),并更新自己的路由表。

  • RIP(Routing Information Protocol):使用跳数作为度量(最大 15,16 表示无穷大)。每 30 秒广播更新。存在计数到无穷问题:链路故障时,错误路由信息在网中传播,需通过水平分割、毒性逆转、最大跳数限制(15)等方法缓解。
  • RIPv2:支持 CIDR、认证和多播。

链路状态路由协议(OSPF)

链路状态(LS)路由协议的基本原理是:发现、设置、构造、分发和计算。每个路由器通过洪泛 LSA(链路状态通告)收集全网的拓扑信息,用 Dijkstra 算法计算最短路径。

OSPF(开放最短路径优先)

  • 五种报文:Hello(建立邻居)、数据库描述(DD,同步 LSA 摘要)、链路状态请求(LSR)、链路状态更新(LSU)、链路状态确认(LSAck)。
  • DR/BDR 选举:在广播多路访问网络(如以太网)中,选举一个指定路由器(DR)和备份 BDR 来减少 LSA 洪泛。
  • 分区域运行:将大型 AS 分为多个区域(Area 0 为骨干区域),区域内部计算详细路由,区域间汇总路由。好处:缩小路由表、隔离故障、减少 LSA 洪泛。

QoS(服务质量)

网络从免费走向商用时,QoS 问题就不可回避了。本章探讨了三个 QoS 模型:

  1. 综合服务模型(IntServ):为每个流(如视频会议)预留资源,使用 RSVP 信令。可提供严格 QoS,但扩展性差,不适合大规模网络。
  2. 区分服务模型(DiffServ):对流量分类标记(DS 字段),边界路由器标记流量类别,核心路由器按每跳行为(PHB)调度(如加速转发 EF、确保转发 AF)。可扩展性好,是目前主流的 QoS 方案。
  3. 多协议标签交换(MPLS):在网络边缘给分组打上固定长度的标签,核心路由器根据标签快速转发(不查 IP 头)。支持流量工程和虚拟专用网(VPN),位于层 2 和层 3 之间。

0929
1014