admin管理员组

文章数量:1130349

第 4 章 网络层

4.1 网络层的几个重要概念

网络层作为计算机网络体系结构的核心层次,承担着网际互连的关键职能,其本质是通过抽象底层异构网络,为上层提供统一的通信服务。该层以 "数据报服务" 为设计核心,这一选择深刻影响了互联网的架构逻辑 —— 在不可靠的网络层之上,由传输层(如 TCP)补充可靠性机制,从而在全局范围内实现灵活性与可扩展性的平衡。

4.1.1 网络层提供的两种服务

虚电路服务(Virtual Circuit, VC)

虚电路服务采用面向连接的设计思路,其工作流程类似电话通信:通信双方在数据传输前需先建立一条逻辑上的 "虚电路"。这一过程涉及路径协商与资源预留,例如路由器会为该虚电路分配缓存空间和带宽资源。数据传输时,所有分组严格沿着预建路径按序传输,如同在网络中开辟了一条专用通道。

  • 技术特点

    • 可靠性保障:网络层负责分组的按序交付与错误重传,无需上层协议干预。
    • 资源预留机制:通过预先分配带宽和缓存,特别适合对实时性要求高的业务(如语音通话、视频会议)。
    • 状态维护:路由器需维护每条虚电路的状态信息(如当前传输进度、下一跳地址)。
  • 应用局限

    • 路径固定导致灵活性不足,当网络拓扑变化时难以快速调整。
    • 大规模网络中,虚电路的建立与维护开销显著,这也是互联网最终放弃该模式的重要原因。
数据报服务(Datagram)

数据报服务是互联网采用的无连接模式,每个分组(数据报)独立携带完整的目的地址,在网络中逐跳进行路由选择。这种设计允许同一通信的不同分组经过不同路径到达目的地,如同信件投递中的 "独立寻址" 模式。

  • 技术特点

    • 无连接特性:无需预先建立连接,分组可随时发送,适应突发流量。
    • 动态路由:每个分组根据当前网络状态独立选路,提高了网络资源利用率。
    • 不可靠传输:网络层不保证分组的顺序、完整性或交付,相关可靠性由传输层(如 TCP)实现。
  • 互联网的选择逻辑

    • 牺牲网络层可靠性换取全局可扩展性,使互联网能以 "尽力而为" 的方式连接数十亿设备。
    • 传输层的灵活适配(TCP 保证可靠,UDP 支持实时)满足了多样化的应用需求。

4.1.2 网络层的两个层面

网际互连(Internetworking)

网际互连的核心是通过 IP 协议实现异构网络的统一抽象。无论底层是以太网、Wi-Fi、ATM 还是卫星网络,IP 协议将其视为 "IP 网络" 的一部分,屏蔽了物理介质、帧格式等差异。这一抽象能力使得全球范围内的网络能够无缝互通,如同构建了一个逻辑上的 "单一网络"。

  • 实现机制
    • 路由器作为网际互连的关键设备,运行 IP 协议处理分组转发。
    • 异构网络的帧格式需转换为 IP 数据报格式,再通过 IP 层进行跨网传输。
路由选择(Routing)

路由选择是网络层的核心功能之一,其本质是为数据报计算从源到目的的最优路径。这一过程基于多种度量(metrics)进行决策,常见的度量包括:

  • 跳数:分组经过的路由器数量(如 RIP 协议采用)。

  • 带宽:链路的可用数据传输速率(如 OSPF 协议支持)。

  • 延迟:分组传输的端到端时间。

  • 负载:链路或路由器的当前繁忙程度。

  • 可靠性:链路的误码率或故障概率。

  • 路由分类

    • 静态路由:由管理员手工配置,适合拓扑稳定的小型网络(如企业分支)。
    • 动态路由:通过路由协议(如 RIP、OSPF、BGP)自动学习网络拓扑,适应大规模动态网络。

4.2 网际协议 IP

IP 协议(Internet Protocol)是网络层的核心,它定义了互联网的地址空间、分组格式和转发规则,是实现全球网络互连的基础。从 IPv4 到 IPv6 的演进,反映了互联网对地址空间、性能和安全性的不断追求。

4.2.1 虚拟互连网络(Internet)

虚拟互连网络是 IP 协议的核心抽象,它将无数异构物理网络通过路由器互连,在逻辑上呈现为一个统一的 "IP 网络"。用户无需关心底层网络的技术细节(如光纤、铜线或无线),只需通过 IP 地址即可实现跨网通信。

  • 技术意义
    • 打破了物理网络的异构性壁垒,使不同技术的网络能够互通(如以太网与卫星网的互联)。
    • 为上层应用提供了统一的通信接口,推动了互联网应用的标准化。

4.2.2 IP 地址

IP 地址是标识网络中设备接口的逻辑地址,其设计经历了从分类地址到无类别编址的演进,以适应网络规模的爆炸式增长。

1. IPv4 地址(历史与演进)
分类地址(已废弃)

分类地址将 IP 地址划分为 A、B、C、D、E 五类,通过前缀字节判断类型,这种设计在早期简化了路由处理,但存在严重的地址浪费问题。

  • A 类地址(0.0.0.0~127.255.255.255):

    • 网络号占 8 位(首位为 0),主机号占 24 位,理论上支持 126 个网络,每个网络可容纳约 1600 万台主机。
    • 适用于大型网络(如 ISP),但实际中大量 A 类地址未被充分利用。
  • B 类地址(128.0.0.0~191.255.255.255):

    • 网络号占 16 位(前两位为 10),主机号占 16 位,支持约 16384 个网络,每个网络 65534 台主机。
    • 原设计用于中型企业,但多数企业无需如此多的主机地址。
  • C 类地址(192.0.0.0~223.255.255.255):

    • 网络号占 24 位(前三位为 110),主机号占 8 位,支持约 209 万个网络,每个网络 254 台主机。
    • 适合小型网络(如家庭或办公室),但小型网络对 254 个地址仍显冗余。
  • D 类地址(224.0.0.0~239.255.255.255):多播地址,用于一对多通信。

  • E 类地址(240.0.0.0~255.255.255.255):保留地址,用于科研实验。

子网划分(Subnetting)

为解决分类地址的浪费问题,子网划分通过借用主机位作为子网位,将一个大网络划分为多个小网络。

  • 实现方法

    • 例如,B 类网络 172.16.0.0/16(默认掩码 255.255.0.0)可借 8 位主机位划分子网,新掩码变为 255.255.255.0(/24),形成 172.16.1.0/24、172.16.2.0/24 等子网。
    • 子网掩码用于标识网络位和主机位,例如 255.255.255.0 表示前 24 位为网络 + 子网位,后 8 位为主机位。
  • 关键作用

    • 提高地址利用率,使大网络可分配给多个部门使用。
    • 减少路由表条目(子网内路由可聚合),提升路由效率。
无类别域间路由(CIDR)

CIDR 彻底摒弃了地址分类,采用 "网络前缀 / 前缀长度" 的表示法(如 192.168.0.0/20),实现了更灵活的地址分配和路由聚合。

  • 路由聚合(Route Aggregation)
    • 例如,192.168.0.0/24 和 192.168.1.0/24 可聚合为 192.168.0.0/23,路由表只需一条记录,显著减少了骨干路由器的路由表规模(从数万条降至数千条)。
    • 聚合规则:网络前缀的共同部分作为新前缀,长度为最长公共前缀。
2. IPv6 地址(未来方向)

IPv6 通过 128 位地址空间解决了 IPv4 的地址枯竭问题,其设计还引入了更灵活的地址类型和扩展机制。

  • 地址格式

    • 128 位地址分为 8 组 16 进制数,每组 4 位,用冒号分隔(如2001:0db8:85a3::8a2e:0370:7334)。
    • 优化表示:连续的零段可简化为双冒号(::),前导零可省略(如0db8可写为db8)。
  • 地址类型

    • 单播(Unicast)
      • 全球单播地址:全球唯一,类似 IPv4 公网地址,用于互联网通信。
      • 链路本地地址(fe80::/10):自动生成(基于 MAC 地址),仅在本地网段有效,无需 DHCP 配置。
    • 多播(Multicast):一对多通信,如ff02::1表示链路本地所有主机。
    • 任播(Anycast):一对最近通信,多个服务器共享任播地址,请求路由到离源最近的节点(如 CDN 服务)。

4.2.3 IP 地址与 MAC 地址

IP 地址和 MAC 地址分别在网络层和链路层标识设备,二者的协同工作是跨网通信的基础。

  • MAC 地址

    • 48 位物理地址,固化在网卡硬件中,由 IEEE 统一分配(前 24 位为厂商标识符,后 24 位为设备标识符)。
    • 作用范围:仅在物理链路内有效(如以太网中标识同一网段的设备)。
  • IP 地址

    • 逻辑地址,32 位(IPv4)或 128 位(IPv6),由网络管理员或 DHCP 动态分配。
    • 作用范围:标识设备在逻辑网络中的位置(如属于哪个网络的哪个子网)。
  • 映射关系

    • ARP 协议:局域网内将 IP 地址映射为 MAC 地址。
    • 跨网通信:主机发送数据到外网时,目标 MAC 地址为网关(路由器)的局域网接口 MAC,而非目标主机的 MAC(因目标主机不在同一网段)。

4.2.4 地址解析协议 ARP

ARP(Address Resolution Protocol)是网络层与链路层的桥梁,负责动态建立 IP 地址到 MAC 地址的映射。

  • 工作流程

    1. 广播请求:主机 A 需要发送数据给主机 B(同网段),若 ARP 缓存中无 B 的 MAC 地址,则发送 ARP 请求广播(包含目标 IP、自身 IP 和 MAC),局域网内所有主机接收。
    2. 单播响应:只有 IP 地址匹配的主机 B 回复 ARP 响应(包含自身 MAC),其他主机忽略。
    3. 缓存更新:主机 A 将 B 的 IP-MAC 映射存入 ARP 缓存(通常超时时间为 10-20 分钟),后续通信直接使用缓存记录。
  • 跨网通信特例
    当主机发送数据到外网时,ARP 请求的是网关(路由器)的 IP 对应的 MAC 地址。例如,主机 192.168.1.100 访问百度(14.215.177.38),其 ARP 请求的是默认网关(如 192.168.1.1)的 MAC,而非百度服务器的 MAC。

  • 安全隐患
    ARP 协议缺乏认证机制,易受 ARP 欺骗攻击 —— 攻击者伪造 ARP 响应,将目标 IP 映射到自己的 MAC,从而截获通信流量(如中间人攻击)。

4.2.5 IP 数据报的格式

IPv4 数据报由首部和数据部分组成,首部包含关键转发控制信息,其格式设计直接影响网络层的性能与功能。

首部结构(20 字节固定部分 + 可选部分)
字段(位)内容关键作用
版本4标识 IP 协议版本(IPv4=4,IPv6=6),路由器据此选择处理逻辑
首部长度4以 4 字节为单位,指示首部总长度(最小值 5→20 字节,含选项时可扩展),用于确定数据部分起始位置
服务类型(TOS)8早期用于指定优先级和服务质量(如低延迟、高吞吐量),现多用 DSCP 字段
总长度16数据报总长度(字节),最大值 65535,超过链路 MTU 时需分片
标识16唯一标识一个数据报,用于分片重组(同一数据报的分片具有相同标识)
标志3包含 DF(不分片,1 表示禁止分片)和 MF(更多分片,1 表示非最后一片)
片偏移13分片在原数据报中的相对位置(以 8 字节为单位),用于重组时排序
生存时间(TTL)8数据报允许经过的最大路由器跳数,每经一跳减 1,为 0 时丢弃,防止环路(默认值 64 或 128)
协议8指示上层协议类型(6=TCP,17=UDP,1=ICMP),用于交付给正确的传输层协议
首部校验和16仅校验首部(因 TTL 等字段逐跳变化),采用反码求和算法,检测首部传输错误
源 IP 地址32发送方的 IP 地址
目的 IP 地址32接收方的 IP 地址
分片与重组机制
  • 分片原因
    数据报长度超过链路 MTU(最大传输单元)时必须分片。例如,以太网 MTU 为 1500 字节,若数据报长度为 1600 字节(20 字节首部 + 1580 字节数据),则需分片。

  • 分片过程

    1. 路由器根据链路 MTU 分割数据报,确保每个分片的长度不超过 MTU。
    2. 为每个分片设置相同的标识字段,以便重组。
    3. 第一个分片的 MF=0(若为最后一片)或 1(非最后一片),后续分片的 MF=1(除非是最后一片)。
    4. 片偏移字段指示分片在原数据报中的位置(如第一个分片偏移 0,第二个偏移 1480/8=185,因 1480=1500-20 首部)。
  • 重组规则
    仅在目的主机进行重组(路由器不重组),这是为了避免中间节点因等待分片导致的性能开销。重组时根据标识、标志和片偏移字段,将分片按顺序拼接成完整数据报。若分片丢失或超时未到达,目的主机将丢弃所有已接收的分片,并返回 ICMP 超时报文。

4.3 IP 层转发分组的过程

IP 层的分组转发是网络层的核心操作,其效率直接影响整个网络的性能。现代转发机制基于 "最长前缀匹配" 原则,通过高效的数据结构实现快速路由查找。

4.3.1 基于终点的转发

路由表结构

路由表是转发决策的核心数据结构,每条路由条目包含以下关键信息:

  • 目的网络前缀 / 掩码:如 192.168.1.0/24,表示匹配该前缀的 IP 地址。
  • 下一跳地址:分组转发的下一个路由器的 IP 地址。
  • 输出接口:数据报从哪个物理接口发出。
  • 度量值:路由的优先级(如跳数、带宽等)。
转发逻辑流程
  1. 提取目的 IP:从数据报首部取出目的 IP 地址。
  2. 最长前缀匹配:遍历路由表,寻找与目的 IP 匹配且掩码最长的条目(掩码越长,前缀越具体,优先级越高)。
  3. 执行转发:根据匹配条目的下一跳地址和输出接口,将数据报转发到下一跳路由器。
  4. 默认路由处理:若没有匹配条目,则转发到默认网关(路由表中掩码为 0.0.0.0/0 的条目)。

4.3.2 最长前缀匹配

最长前缀匹配是 IP 转发的核心原则,其本质是在路由表中选择与目的 IP 地址前缀最长的匹配项,以确保路由的精确性。

  • 原理示例
    假设路由表中有两条条目:

    • 条目 1:192.168.1.0/24(掩码 255.255.255.0)
    • 条目 2:192.168.0.0/16(掩码 255.255.0.0)
      当目的 IP 为 192.168.1.100 时,与条目 1 的前缀匹配长度为 24 位,与条目 2 的匹配长度为 16 位,因此选择条目 1(更长的前缀更具体)。
  • 路由优先级
    掩码长度决定优先级,掩码越长(如 / 24)的路由条目优先级高于掩码较短(如 / 16)的条目,这确保了路由的精确性(如子网路由优先于主网路由)。

4.3.3 使用二叉线索查找转发表

随着网络规模扩大,路由表条目可达数十万条,传统线性查找效率低下,二叉线索(Trie)成为主流的高效查找结构。

  • Trie 树结构
    将 IP 地址视为 32 位二进制数,构建一棵二叉树,每一层对应一位(0 或 1),从根节点到叶节点的路径表示一个 IP 地址前缀。节点存储该前缀对应的路由条目。

  • 查找过程

    1. 从根节点开始,按 IP 地址的二进制位逐位匹配(0 走左子树,1 走右子树)。
    2. 每经过一个节点,记录当前匹配的最长前缀。
    3. 到达叶节点或无法继续匹配时,返回记录的最长前缀对应的路由条目。
  • 优势

    • 查找时间复杂度为 O (32)(IPv4)或 O (128)(IPv6),与路由表规模无关。
    • 支持硬件加速(如 TCAM 芯片),实现线速转发(每秒处理数百万分组)。
  • 实际应用
    骨干路由器普遍采用 Trie 树或其变种(如压缩 Trie、分层 Trie)实现路由查找,结合硬件加速技术,确保高速网络环境下的转发性能。

4.4 网际控制报文协议 ICMP

ICMP(Internet Control Message Protocol)是网络层的 "诊断工具",通过发送控制报文反馈网络状态,帮助检测和解决网络问题。

4.4.1 ICMP 报文的种类

差错报告报文

差错报告报文用于反馈分组传输中的错误情况,常见类型包括:

  • 目的不可达(Type=3)
    当路由器无法转发分组到目的地址时发送,包含多种代码(如网络不可达、主机不可达、端口不可达等)。例如,防火墙阻断某端口时,会返回 "端口不可达" 报文。

  • 超时(Type=11)

    • TTL 超时:分组经过的路由器跳数超过 TTL 值,路由器丢弃分组并发送超时报文(常用于 traceroute 工具)。
    • 分片重组超时:目的主机等待分片重组的时间超过阈值,丢弃已接收分片并发送超时报文。
  • 参数问题(Type=12)
    数据报首部字段存在错误(如无效的版本号、非法的选项字段),路由器或目的主机丢弃分组并报告参数问题。

  • 重定向(Type=5)
    路由器发现主机使用非最优路径时,发送重定向报文,告知主机更优的下一跳地址。例如,主机通过默认网关访问同一网段的服务器,网关会重定向主机直接访问服务器。

询问报文

询问报文用于获取网络信息或测试连通性:

  • 回声请求 / 应答(Type=8/0)
    ping 命令的核心机制。发送方发送回声请求,接收方回复应答,用于测量往返时间(RTT)和丢包率。

  • 时间戳请求 / 应答(Type=13/14)
    用于网络时间同步,请求方发送时间戳请求,接收方回复当前时间戳,请求方根据往返时间计算时钟偏移。

4.5 IPv6

IPv6(Internet Protocol Version 6)是 IPv4 的继任者,旨在解决地址枯竭问题,并引入了一系列技术改进,是未来互联网的基础。

4.5.1 IPv6 的基本首部

IPv6 首部设计更简洁高效,固定首部为 40 字节,去除了 IPv4 中冗余或可扩展的字段:

字段长度(位)内容关键作用
版本4IPv6=6标识协议版本
流量类8类似 IPv4 的 TOS用于 QoS,指定分组的优先级和服务类型
流标签20唯一标识数据流用于标识同一流(如视频会议),实现逐流处理(QoS、安全策略)
有效载荷长度16数据部分长度指示 IPv6 首部之后的字节数(不含首部)
下一个首部8上层协议或扩展首部标识上层协议(如 TCP/UDP)或后续扩展首部的类型
跳数限制8类似 IPv4 的 TTL每经过一个路由器减 1,为 0 时丢弃
源地址128发送方 IPv6 地址全球唯一或链路本地地址
目的地址128接收方 IPv6 地址全球唯一或多播地址
扩展首部

IPv6 通过扩展首部实现灵活的功能扩展,扩展首部位于基本首部和上层数据之间,由 "下一个首部" 字段标识:

  • 常见扩展首部

    • 逐跳选项首部:包含需所有路由器处理的选项(如超大有效载荷)。
    • 路由首部:指定分组经过的路由器列表(类似 IPv4 的源路由)。
    • 分片首部:用于数据报分片,包含标识、标志和片偏移。
    • 认证首部(AH):提供数据完整性和认证。
    • 封装安全有效载荷首部(ESP):提供加密和完整性保护(IPsec 核心)。
  • 设计优势
    扩展首部按需添加,避免了 IPv4 选项字段导致的首部膨胀,且路由器仅处理逐跳选项首部,其他扩展首部由目的主机处理,提升了转发效率。

4.5.2 IPv6 的地址

地址格式优化

IPv6 地址采用 128 位十六进制表示,通过以下规则简化书写:

  • 每组前导零可省略(如000AA)。
  • 连续的零组可用双冒号(::)替代(每个地址仅允许一个双冒号)。
  • 示例:
    • 完整地址:2001:0000:0000:0000:0800:0000:200C:417A
    • 优化后:2001::800:0:200C:417A
地址类型
  • 链路本地地址(fe80::/10)

    • 自动生成(基于 EUI-64 格式,将 MAC 地址转换为 IPv6 地址),仅在本地链路有效。
    • 应用场景:无 DHCP 环境下的本地通信(如同一网段内的设备发现)。
  • 全球单播地址

    • 结构:网络前缀(48位)+ 子网ID(16位)+ 接口ID(64位)
    • 全球唯一,可通过 IPv6 互联网路由,类似 IPv4 公网地址。
  • 多播地址(ff00::/8)

    • 标识一组接收者,分组发送到多播地址时,所有订阅该地址的接口都会接收。
    • 常见多播地址:
      • ff02::1:链路本地所有主机。
      • ff02::2:链路本地所有路由器。
  • 任播地址

    • 分配给多个接口(通常属于不同设备),发送到任播地址的分组路由到 "最近" 的接口(基于路由协议的度量)。
    • 应用场景:CDN 服务、分布式云平台,实现负载均衡和高可用性。

4.5.3 从 IPv4 向 IPv6 过渡

由于互联网规模庞大,IPv4 向 IPv6 的过渡是一个长期过程,需多种技术配合:

双栈技术
  • 实现方式
    主机或路由器同时支持 IPv4 和 IPv6 协议栈,可同时拥有 IPv4 和 IPv6 地址。
  • 工作逻辑
    1. 优先使用 IPv6 进行通信(若双方均支持)。
    2. 若对方仅支持 IPv4,则通过 IPv4 通信(fallback 机制)。
  • 应用场景
    企业网络、数据中心,确保新旧系统兼容。
隧道技术

隧道技术将 IPv6 数据报封装在 IPv4 数据报中,通过 IPv4 网络传输:

  • 6to4 隧道

    • 自动隧道技术,适用于边缘网络。IPv6 地址包含 IPv4 地址前缀(如2002:IPv4地址::/48),封装时从 IPv6 地址中提取 IPv4 地址作为隧道端点。
  • GRE 隧道

    • 通用路由封装,手动配置隧道端点(源和目的 IPv4 地址),支持任意 IPv6 地址传输,适合企业内网过渡。
  • ISATAP 隧道

    • 用于局域网内 IPv6 过渡,将 IPv6 数据报封装在 IPv4 的 GRE 报文中,隧道端点自动从 IPv6 地址中提取(如::0:5EFE:IPv4地址)。
NAT64

NAT64 用于 IPv6 与 IPv4 网络的互通,结合 DNS64 实现透明转换:

  • 工作原理
    1. 地址转换:IPv6 主机访问 IPv4 资源时,NAT64 设备将 IPv6 地址转换为 IPv4 地址,并维护端口映射表。
    2. DNS64:DNS 服务器在响应 A 记录查询时,自动生成 AAAA 记录(IPv6 地址),其中包含 NAT64 的地址和端口信息。
  • 示例
    IPv6 主机查询example,DNS64 返回64:ff9b::example(其中64:ff9b::是 NAT64 的前缀),IPv6 主机向该地址发送分组,NAT64 将其转换为 IPv4 分组发送到example的 IPv4 地址。

4.5.4 ICMPv6

ICMPv6 是 ICMP 的 IPv6 版本,功能大幅增强,集成了 ARP 和路由发现等功能:

  • 邻居发现(ND)
    替代 IPv4 的 ARP 协议,通过 ICMPv6 报文实现:

    • 路由器公告(RA):路由器定期广播 RA 报文,告知主机本地链路的 IPv6 前缀、MTU 等信息。
    • 邻居请求(NS):主机发送 NS 报文请求邻居的链路层地址(类似 ARP 请求)。
    • 邻居公告(NA):响应 NS 报文,返回链路层地址和可达性信息。
  • 无状态地址自动配置(SLAAC)
    主机基于路由器公告的前缀,自动生成 IPv6 地址(接口 ID 通常基于 MAC 地址生成),无需 DHCP 服务器,简化了网络配置(尤其适合物联网设备)。

  • 新增报文类型

    • 路由请求(RS):主机主动请求路由器发送 RA 报文。
    • 前缀信息选项:RA 报文中包含可用于自动配置的网络前缀。
    • 可达性确认:检测邻居是否可达,替代 IPv4 的 ARP 缓存超时机制。

4.6 互联网的路由选择协议

路由选择协议是网络层的关键组件,负责自动发现网络拓扑、维护路由表,使分组能高效到达目的地。根据作用范围,路由协议分为自治系统内(IGP)和自治系统间(EGP)两类。

4.6.1 有关路由选择协议的几个基本概念

自治系统(AS)

自治系统是由单一管理实体控制的网络集合(如企业、ISP),具有统一的路由策略,通过 16 位 AS 号(如中国电信 AS4134)标识。AS 内部使用 IGP 协议,AS 之间使用 EGP 协议(如 BGP)。

路由协议分类
  • 内部网关协议(IGP, Interior Gateway Protocol)
    在 AS 内使用,关注如何发现和计算 AS 内的最优路径,常见协议包括 RIP、OSPF、IS-IS。
  • 外部网关协议(EGP, Exterior Gateway Protocol)
    用于 AS 间路由交换,关注策略导向的路径选择(如成本、安全性),当前唯一广泛使用的是 BGP。
路由算法类型
  • 距离向量算法(Distance Vector)
    核心思想是每个路由器向邻居发送自己到各网络的 "距离向量"(如跳数),并根据接收到的向量更新自己的路由表。典型协议:RIP。

    • 优点:实现简单,资源消耗小。
    • 缺点:收敛慢,易形成路由环路。
  • 链路状态算法(Link State)
    每个路由器泛洪传播 "链路状态通告(LSA)",告知邻居自己的连接状态,全网路由器据此构建完整拓扑,再用 Dijkstra 算法计算最短路径。典型协议:OSPF、IS-IS。

    • 优点:收敛快,路由精确,支持大规模网络。
    • 缺点:计算复杂度高,资源消耗大。

4.6.2 内部网关协议 RIP

RIP(Routing Information Protocol)是最早的 IGP 协议之一,基于距离向量算法,以跳数为度量:

  • 基本原理

    1. 路由器定期(默认 30 秒)向邻居发送路由更新报文,包含 <目的网络,跳数,下一跳> 信息。
    2. 接收到更新的路由器根据跳数更新自己的路由表(仅当新路径跳数更少时更新)。
    3. 跳数最大值为 15,16 表示不可达,限制了 RIP 的网络规模(直径不超过 15 跳)。
  • 防环机制

    • 水平分割(Split Horizon):不从接收路由的接口发回该路由(如从接口 A 收到的路由,不通过接口 A 再发回)。
    • 毒性逆转(Poison Reverse):当路由不可达时,发送跳数为 16 的更新,明确告知邻居该路由不可用。
    • 抑制时间(Holddown Timer):路由更新后进入抑制期,期间不接受更差的路由,避免频繁振荡。
  • 报文格式

    • 基于 UDP 传输(端口 520),分为请求报文(查询邻居路由)和响应报文(发送路由表)。
    • 响应报文包含最多 25 条路由条目,每条条目包含 IP 地址、子网掩码、下一跳和跳数。
  • 应用场景
    适合小型网络(如企业分支),但在大规模网络中因收敛慢、度量单一(仅跳数)等缺点已逐渐被 OSPF 取代。

4.6.3 内部网关协议 OSPF

OSPF(Open Shortest Path First)是基于链路状态算法的 IGP 协议,广泛应用于中大型网络:

  • 基本原理

    1. 链路状态发现:路由器通过 Hello 报文发现邻居,建立邻接关系。
    2. LSA 泛洪:路由器生成 LSA(描述自身连接的链路状态),并洪泛到整个区域。
    3. 拓扑构建:每个路由器根据收到的 LSA 构建全网链路状态数据库(LSDB)。
    4. 路径计算:使用 Dijkstra 算法计算从自身到所有网络的最短路径,生成路由表。
  • 关键特点

    • 分层设计
      将 AS 划分为多个区域(Area),每个区域内的路由器维护相同的 LSDB,区域间通过骨干区域(Area 0)互联,减少了 LSA 泛洪范围和路由计算开销。
    • 灵活度量
      默认度量为带宽(10^8 / 链路带宽,如 100Mbps 链路度量为 1),也可配置为延迟、负载等,支持更精确的路径选择。
    • 快速收敛
      触发式更新(而非周期性更新),网络拓扑变化时立即泛洪 LSA,收敛时间可达秒级。
    • 认证机制
      支持明文、MD5 或 HMAC-SHA 认证,防止恶意路由注入,提升安全性。
    • 负载均衡
      支持等价多路径(ECMP),最多 6 条等价路径分担流量,提高带宽利用率。
  • 报文类型

    • Hello 报文:发现邻居,建立和维护邻接关系。
    • 数据库描述(DBD)报文:交换 LSDB 摘要,协商同步 LSDB。
    • 链路状态请求(LSR)报文:请求邻居的完整 LSA。
    • 链路状态更新(LSU)报文:发送 LSA 内容。
    • 链路状态确认(LSAck)报文:确认收到 LSU,确保可靠传输。
  • 应用场景
    广泛应用于运营商网络、大型企业网,支持数万节点的大规模网络,是当前最主流的 IGP 协议之一。

4.6.4 外部网关协议 BGP

BGP(Border Gateway Protocol)是 AS 间路由的标准协议,基于路径向量算法,注重策略导向的路由选择:

  • 基本原理

    1. 邻居建立:AS 间的边界路由器通过 TCP(端口 179)建立 BGP 邻居关系。
    2. 路由交换:交换 <网络前缀,AS 路径,下一跳,度量值> 等信息,其中 AS 路径记录了分组经过的所有 AS 号,用于防止环路和策略控制。
    3. 路由选择:根据多种路径属性(如 AS 路径长度、本地优先级、MED 等)选择最优路径,而非单纯的最短路径。
  • 路径属性

    • AS_PATH:分组经过的 AS 列表,用于环路检测(若收到包含自身 AS 号的路由,丢弃)。
    • NEXT_HOP:到达目标网络的下一跳地址。
    • LOCAL_PREF:本地优先级,用于 AS 内选择出口(值越高越优先)。
    • MED(Multi-Exit Discriminator):向其他 AS 推荐的路径度量(值越小越优先)。
    • ORIGIN:路由的来源(IGP>EGP>Incomplete,优先级依次降低)。
  • 报文类型

    • 打开(Open)报文:建立 BGP 连接,协商参数(如 AS 号、版本)。
    • 更新(Update)报文:发布可达路由或撤销不可达路由。
    • 保活(Keepalive)报文:维持连接活性,默认 30 秒发送一次。
    • 通知(Notification)报文:报告错误,关闭连接。
  • 应用场景
    用于 ISP 之间的路由交换(如电信、联通、移动之间的互联),支持多归属(AS 连接多个 ISP),实现冗余和流量工程。例如,企业可通过 BGP 选择成本更低的 ISP 出口。

4.6.5 路由器的构成

路由器作为网络层的核心设备,其硬件架构直接影响转发性能和可靠性:

硬件组件
  • 输入端口

    • 接收物理链路的帧,解封装得到 IP 数据报。
    • 执行首部校验、TTL 递减,查找转发表确定输出端口。
    • 支持队列管理,处理突发流量(如 FIFO、优先级队列)。
  • 交换结构
    将数据报从输入端口转发到输出端口,是路由器的性能瓶颈,常见实现方式:

    • 总线交换:数据报通过共享总线传输,成本低但吞吐量有限(适合小型路由器)。
    • 交叉矩阵交换:通过矩阵开关实现多端口并行转发,吞吐量高(如 10Gbps 以上),是高端路由器的主流选择。
    • 共享内存交换:数据报存储在共享内存中,由输入端口写入,输出端口读取,适合中等规模路由器。
  • 输出端口

    • 对数据报进行链路层封装(如以太网帧)。
    • 队列管理(如尾部丢弃、RED 随机早期检测)处理拥塞。
    • 速率适配(如将高速接口的数据报适配到低速链路)。
  • 路由处理器

    • 运行路由协议(如 OSPF、BGP),维护路由表和转发表。
    • 处理管理接口(如 SSH、SNMP)的请求。
    • 与数据转发平面分离(控制平面与数据平面分离),避免转发延迟。
转发与控制平面分离

现代路由器采用转发与控制平面分离的架构:

  • 控制平面:路由处理器运行路由协议,计算最优路径,生成转发表。
  • 数据平面:输入 / 输出端口和交换结构负责高速转发,直接查询转发表(通常为硬件加速的 TCAM),无需路由处理器参与,实现线速转发。

4.7 IP 多播

IP 多播(Multicast)实现了 "一对多" 的高效通信模式,避免了单播中源端重复发送的弊端,特别适合视频直播、网络会议等场景。

4.7.1 IP 多播的基本概念

  • 定义
    发送方仅发送一份数据,网络层自动将其复制到所有订阅该多播组的接收方,如同 "广播" 的可控版本(仅接收方主动订阅的组)。

  • 技术优势

    • 带宽优化:无论接收方数量多少,源端只发送一份数据,大幅节省带宽(如 100 个接收方仅需 1 份带宽,单播需 100 份)。
    • 源端减负:源端无需维护每个接收方的状态,降低了处理开销。
    • 网络效率:多播复制在网络层完成,减少了中间节点的处理负担。

4.7.2 在局域网上进行硬件多播

MAC 多播地址映射

IPv4 多播 IP 地址(224.0.0.0/4)映射为特定的 MAC 地址,实现硬件层的多播支持:

  • 映射规则
    MAC 地址的高 24 位固定为01-00-5E(IANA 分配的多播前缀),低 23 位对应 IP 多播地址的低 23 位。
    • 示例:IP 多播地址 224.0.0.1 映射为 MAC 地址01-00-5E-00-00-01
    • 注意:IPv4 多播地址的高 4 位为 1110,因此 IP 多播地址的低 28 位中,最高位被忽略(因 MAC 地址仅 23 位),导致多个 IP 多播地址可能映射到同一个 MAC 地址(如 224.0.0.1 和 232.0.0.1 映射到同一 MAC),这种冲突需在网络层处理。
网卡多播支持
  • 多播监听
    主机通过 IGMP 协议加入多播组后,网卡会配置多播过滤列表(MCL),仅接收特定 MAC 多播帧,丢弃其他多播帧。
  • 硬件加速
    高端网卡支持多播哈希过滤,通过硬件快速判断帧是否属于主机订阅的多播组,减少 CPU 开销。

4.7.3 网际组管理协议 IGMP 和多播路由选择协议

IGMP(Internet Group Management Protocol)

IGMP 是主机与路由器间的协议,用于管理多播组成员关系:

  • 版本演进

    • IGMPv1:基本的组加入和查询,无离开机制。
    • IGMPv2:增加离开组机制,路由器可快速响应成员离开。
    • IGMPv3:支持 "指定源多播",主机可指定只接收来自特定源的多播流(如过滤恶意源)。
  • 工作流程

    1. 成员加入:主机发送 IGMP 成员关系报告,声明加入某多播组。
    2. 普遍查询:路由器定期发送查询报文,检测哪些多播组在本地网段有成员。
    3. 成员响应:主机响应查询,报告自己所属的多播组。
    4. 离开组:主机发送离开报文,路由器确认后停止转发该组流量。
多播路由选择协议

多播路由协议负责在网络层建立多播转发树,将多播流从源端传递到所有接收方:

  • PIM-DM(Protocol Independent Multicast - Dense Mode)

    • 密集模式:适用于多播接收方密集的网络(如局域网)。
    • 工作原理
      1. 源端发送多播流,路由器先向所有接口泛洪。
      2. 无接收方的接口发送剪枝报文,从转发树中移除。
      3. 周期性泛洪 - 剪枝,确保接收方加入时能快速获取流量。
  • PIM-SM(Protocol Independent Multicast - Sparse Mode)

    • 稀疏模式:适用于多播接收方分散的大规模网络(如互联网)。
    • 核心概念
      • 汇聚点(RP, Rendezvous Point):所有多播流先到达 RP,再转发到接收方。
      • 共享树:接收方通过 RP 加入多播组,源端注册到 RP,RP 将流量转发给接收方。
    • 工作流程
      1. 接收方通过本地路由器向 RP 发送加入请求。
      2. 源端发送多播流到 RP(注册过程)。
      3. RP 将流量沿共享树转发给接收方。
      4. 若流量较大,可建立源特定树(SPT),直接从源端到接收方,绕过 RP。

4.8 虚拟专用网 VPN 和网络地址转换 NAT

4.8.1 虚拟专用网 VPN

VPN(Virtual Private Network)通过公用网络(如互联网)构建安全的专用通信通道,实现远程用户或分支网络的安全互联。

技术类型
  • IPsec VPN

    • 网络层加密:基于 IPsec 协议(ESP 或 AH),对 IP 数据报进行加密和认证。
    • 应用场景
      • 站点到站点 VPN:企业分支之间通过互联网互联,形成统一内网。
      • 远程接入 VPN:员工在家通过 IPsec 客户端连接公司内网。
    • 工作模式
      • 隧道模式:封装整个 IP 数据报,包括原 IP 首部(用于站点到站点)。
      • 传输模式:仅封装上层数据,保留原 IP 首部(用于主机到主机)。
  • SSL VPN

    • 应用层加密:基于 HTTPS 协议,通过浏览器即可访问(无需安装客户端)。
    • 优势
      • 跨平台支持(Windows、Mac、手机)。
      • 细粒度访问控制(可限制仅访问特定应用,如 OA 系统)。
    • 应用场景:移动办公、合作伙伴远程访问。
  • MPLS VPN

    • 运营商级 VPN:通过 MPLS 标签交换实现,为企业提供专用链路体验。
    • 技术特点
      • 高可靠性和服务质量(QoS)保障。
      • 多租户隔离(不同企业流量通过标签区分)。
    • 应用场景:大型企业跨地域互联、金融行业高安全需求网络。
核心技术原理
  • 加密与认证
    使用 AES、3DES 等算法加密数据,SHA、MD5 等算法保证完整性,IKE 协议协商加密密钥。
  • 隧道封装
    将私有网络的数据包封装在公共网络的数据包中传输,隐藏内部网络结构。

4.8.2 网络地址转换 NAT

NAT(Network Address Translation)是解决 IPv4 地址短缺的关键技术,通过映射内网私有 IP 到公网 IP,实现多设备共享公网 IP。

工作原理
  • 私有 IP 地址段(RFC 1918 定义):
    • 10.0.0.0~10.255.255.255(10.0.0.0/8)
    • 172.16.0.0~172.31.255.255(172.16.0.0/12)
    • 192.168.0.0~192.168.255.255(192.168.0.0/16)
  • 映射方式
    内网设备发送数据到公网时,NAT 设备将其源 IP 替换为公网 IP(可能包含端口映射),响应数据返回时,NAT 根据映射表还原目标 IP 和端口。
类型分类
  • 静态 NAT

    • 一对一映射:固定私有 IP 映射到固定公网 IP。
    • 应用场景:内网服务器对外提供服务(如 Web 服务器、邮件服务器)。
  • 动态 NAT

    • 多对多映射:从公网 IP 池中动态分配 IP 给内网设备。
    • 特点:公网 IP 数量需大于等于内网活跃设备数,适合中小网络。
  • PAT(端口地址转换)

    • 多对一映射:多个私有 IP 通过不同端口映射到同一个公网 IP。
    • 示例:
      内网主机 A(192.168.0.1:80)和主机 B(192.168.0.2:80)访问公网时,NAT 转换为:
      • 192.168.0.1:80 → 202.0.0.1:10001
      • 192.168.0.2:80 → 202.0.0.1:10002
    • 应用场景:家庭网络(光猫 NAT 功能)、企业出口(数百台设备共享一个公网 IP)。
局限性
  • 破坏端到端通信
    公网设备无法主动发起连接到内网设备(除非 NAT 支持端口转发或穿透),导致 P2P 应用(如 BT 下载、视频会议)需要 NAT 穿透技术(如 STUN、TURN、ICE)。
  • IPv6 不适用
    IPv6 地址空间充足(2^128 个地址),无需 NAT,且 NAT 破坏了 IPv6 的端到端特性,因此 IPv6 网络中不再使用 NAT。

4.9 多协议标签交换 MPLS

MPLS(Multi-Protocol Label Switching)是一种结合 IP 路由与标签转发的技术,提升了转发效率,支持 QoS 和 VPN 等高级功能。

4.9.1 MPLS 的工作原理

MPLS 通过在 IP 分组前添加标签,将路由查找转换为标签匹配,实现快速转发:

  • 核心概念

    • 标签(Label):长度为 20 位的整数,标识分组的转发路径。
    • 标签交换路径(LSP):从源到目的的标签转发路径,通过标签分发协议预先建立。
    • 标签交换路由器(LSR):支持 MPLS 的路由器,根据标签转发分组。
    • 标签边缘路由器(LER):MPLS 域的入口和出口路由器,负责打标签和拆标签。
  • 工作流程

    1. 标签分发
      通过 LDP(Label Distribution Protocol)或 RSVP-TE(资源预留协议)在 LSR 之间协商标签,建立 LSP。
    2. 分组转发
      • 入口 LER 接收 IP 分组,查找路由表确定 LSP,添加标签后转发。
      • 中间 LSR 根据标签查找转发表,替换为下一跳标签,无需查 IP 路由表。
      • 出口 LER 移除标签,按 IP 转发或继续处理。

4.9.2 MPLS 首部的位置与格式

MPLS 首部位于链路层首部和 IP 首部之间,称为 "Shim 首部",格式如下(32 位):

字段长度(位)内容
标签值20标识转发路径
EXP3实验位(用于 QoS 优先级)
S1栈底标识(1 表示最后一个标签,支持标签栈)
TTL8生存时间,防止环路
标签栈机制

MPLS 支持标签栈(多层标签嵌套),用于复杂场景:

  • VPN 应用:双层标签(外层标签标识 VPN 隧道,内层标签标识目标网络)。
  • 服务提供商网络:外层标签用于骨干网转发,内层标签用于客户网络路由。

4.9.3 新一代的 MPLS:Segment Routing

Segment Routing(分段路由)是 MPLS 的演进技术,简化了路径控制,支持 SDN 集成:

  • 核心思想
    摒弃传统的 LDP 协议,通过源路由方式定义路径 —— 源端将路径编码为标签列表(Segment List),中间节点按顺序处理标签,无需维护全网路由状态。

  • 技术优势

    • 配置简化:无需复杂的协议协商,路径由控制器或源端直接定义。
    • 灵活路径控制:支持流量工程(TE),可手动指定路径绕过拥塞链路。
    • SDN 集成:与 SDN 控制器结合,实现可编程的路径调度。
  • 实现方式

    • MPLS Segment Routing:使用 MPLS 标签栈承载 Segment List。
    • IPv6 Segment Routing:通过 IPv6 扩展头(Routing Header)承载 Segment List,适用于纯 IPv6 网络。

4.10 软件定义网络 SDN 简介

SDN(Software-Defined Networking)是一种颠覆传统网络架构的技术,通过分离控制平面和数据平面,实现网络的可编程化和集中管理。

核心思想

  • 控制平面集中化
    传统网络中,每个路由器独立运行路由协议;SDN 将控制逻辑集中到控制器(如 ONOS、RYU),控制器掌握全网拓扑,统一计算最优路径和转发策略。

  • 数据平面开放化
    数据平面设备(交换机、路由器)仅负责转发,通过标准化接口(如 OpenFlow)接收控制器下发的流表,无需理解复杂的路由协议。

SDN 架构

SDN 架构分为三层,层次分明且接口标准化:

  • 数据层
    由交换机等转发设备组成,按流表执行转发动作(如转发、丢弃、修改首部)。

    • 关键技术:流表匹配(基于五元组、VLAN、物理端口等)、流水线处理。
  • 控制层
    控制器是 SDN 的大脑,通过南向接口(如 OpenFlow)管理数据层设备,维护网络拓扑和转发规则。

    • 主流控制器:
      • ONOS:面向运营商网络,支持高可用性和分布式架构。
      • RYU:开源控制器,适合教学和研发,提供丰富的 API。
      • OpenDaylight:社区驱动的控制器,支持多协议和插件扩展。
  • 应用层
    基于控制器提供的 API 开发网络应用,实现业务逻辑与底层网络的解耦。

    • 典型应用:
      • 流量工程:动态调整路径,避免拥塞。
      • 网络安全:集中管理防火墙规则,快速响应攻击。
      • 云网络:为虚拟机动态分配网络资源。

关键技术:OpenFlow 协议

OpenFlow 是 SDN 中控制器与数据层设备通信的标准协议,定义了流表结构和交互流程:

  • 流表结构
    每个流表项包含:

    • 匹配字段:如源 / 目的 IP、端口、协议、VLAN ID 等。
    • 动作:如转发到指定端口、修改字段、丢弃、组表(多播 / 负载均衡)。
    • 计数器:记录匹配次数、字节数,用于监控和计费。
  • 交互流程

    1. 交换机启动后,向控制器发送 Hello 报文,协商协议版本。
    2. 控制器发送配置报文,设置交换机参数(如安全通道)。
    3. 交换机收到未知分组时,发送 Packet-In 报文到控制器,请求转发规则。
    4. 控制器返回 Flow-Mod 报文,下发流表项,交换机按规则转发后续分组。

SDN 的优势与应用

  • 优势

    • 灵活性:通过软件编程快速调整网络策略,适应业务变化(如云计算、大数据流量)。
    • 简化管理:集中控制避免了传统网络的分散配置,减少人为错误。
    • 成本优化:白盒交换机(通用硬件 + SDN 软件)降低设备成本,资源利用率提升。
  • 应用场景

    • 数据中心网络:虚拟机迁移时自动调整网络配置,支持弹性扩缩容。
    • 广域网(WAN):SD-WAN 通过 SDN 优化企业广域网连接,降低带宽成本。
    • 运营商网络:5G 核心网采用 SDN 架构,支持网络切片和按需资源分配。

本章核心逻辑串联

网络层作为互联网的 "神经系统",其设计贯穿了 "抽象 - 互联 - 优化" 的核心逻辑:

  1. IP 协议的统一抽象
    通过 IP 地址和数据报格式,将异构网络抽象为逻辑上的统一网络,ARP 和 ICMP 分别解决了地址映射和网络诊断问题,分片机制确保了跨 MTU 传输的兼容性。

  2. 路由机制的分层设计
    AS 内通过 IGP(如 OSPF)计算最短路径,AS 间通过 BGP 实现策略路由,最长前缀匹配和 Trie 树查找保证了转发效率,路由器的硬件架构则从工程层面实现了高速转发。

  3. 应对现实需求的扩展技术

    • 多播解决一对多通信的带宽效率问题。
    • VPN在公网中构建安全通道,满足企业互联需求。
    • NAT缓解了 IPv4 地址短缺,延长了 IPv4 的生命周期。
    • MPLS通过标签转发提升性能,支持 QoS 和大规模 VPN。
    • SDN通过控制与转发分离,使网络具备可编程能力,适应云时代的动态需求。
  4. 从 IPv4 到 IPv6 的演进
    128 位地址空间解决了地址枯竭,扩展首部和邻居发现等机制为未来互联网(如物联网、工业 4.0)奠定了基础,过渡技术确保了演进的平滑性。

本章核心逻辑串联

网络层是“网际互连的大脑”

1. IP协议 统一地址(CIDR、IPv6)、分组格式(分片、首部字段),ARP解决IP→MAC映射,ICMP诊断网络;

2. 路由协议 自动学习路径(RIP/OSPF是AS内“最短路径”,BGP是AS间“策略路径”);

3. 扩展技术 应对现实需求:多播(高效一对多)、VPN(安全通信)、NAT(IPv4续命)、MPLS(快速转发)、SDN(灵活控制)。

第 4 章 网络层

4.1 网络层的几个重要概念

网络层作为计算机网络体系结构的核心层次,承担着网际互连的关键职能,其本质是通过抽象底层异构网络,为上层提供统一的通信服务。该层以 "数据报服务" 为设计核心,这一选择深刻影响了互联网的架构逻辑 —— 在不可靠的网络层之上,由传输层(如 TCP)补充可靠性机制,从而在全局范围内实现灵活性与可扩展性的平衡。

4.1.1 网络层提供的两种服务

虚电路服务(Virtual Circuit, VC)

虚电路服务采用面向连接的设计思路,其工作流程类似电话通信:通信双方在数据传输前需先建立一条逻辑上的 "虚电路"。这一过程涉及路径协商与资源预留,例如路由器会为该虚电路分配缓存空间和带宽资源。数据传输时,所有分组严格沿着预建路径按序传输,如同在网络中开辟了一条专用通道。

  • 技术特点

    • 可靠性保障:网络层负责分组的按序交付与错误重传,无需上层协议干预。
    • 资源预留机制:通过预先分配带宽和缓存,特别适合对实时性要求高的业务(如语音通话、视频会议)。
    • 状态维护:路由器需维护每条虚电路的状态信息(如当前传输进度、下一跳地址)。
  • 应用局限

    • 路径固定导致灵活性不足,当网络拓扑变化时难以快速调整。
    • 大规模网络中,虚电路的建立与维护开销显著,这也是互联网最终放弃该模式的重要原因。
数据报服务(Datagram)

数据报服务是互联网采用的无连接模式,每个分组(数据报)独立携带完整的目的地址,在网络中逐跳进行路由选择。这种设计允许同一通信的不同分组经过不同路径到达目的地,如同信件投递中的 "独立寻址" 模式。

  • 技术特点

    • 无连接特性:无需预先建立连接,分组可随时发送,适应突发流量。
    • 动态路由:每个分组根据当前网络状态独立选路,提高了网络资源利用率。
    • 不可靠传输:网络层不保证分组的顺序、完整性或交付,相关可靠性由传输层(如 TCP)实现。
  • 互联网的选择逻辑

    • 牺牲网络层可靠性换取全局可扩展性,使互联网能以 "尽力而为" 的方式连接数十亿设备。
    • 传输层的灵活适配(TCP 保证可靠,UDP 支持实时)满足了多样化的应用需求。

4.1.2 网络层的两个层面

网际互连(Internetworking)

网际互连的核心是通过 IP 协议实现异构网络的统一抽象。无论底层是以太网、Wi-Fi、ATM 还是卫星网络,IP 协议将其视为 "IP 网络" 的一部分,屏蔽了物理介质、帧格式等差异。这一抽象能力使得全球范围内的网络能够无缝互通,如同构建了一个逻辑上的 "单一网络"。

  • 实现机制
    • 路由器作为网际互连的关键设备,运行 IP 协议处理分组转发。
    • 异构网络的帧格式需转换为 IP 数据报格式,再通过 IP 层进行跨网传输。
路由选择(Routing)

路由选择是网络层的核心功能之一,其本质是为数据报计算从源到目的的最优路径。这一过程基于多种度量(metrics)进行决策,常见的度量包括:

  • 跳数:分组经过的路由器数量(如 RIP 协议采用)。

  • 带宽:链路的可用数据传输速率(如 OSPF 协议支持)。

  • 延迟:分组传输的端到端时间。

  • 负载:链路或路由器的当前繁忙程度。

  • 可靠性:链路的误码率或故障概率。

  • 路由分类

    • 静态路由:由管理员手工配置,适合拓扑稳定的小型网络(如企业分支)。
    • 动态路由:通过路由协议(如 RIP、OSPF、BGP)自动学习网络拓扑,适应大规模动态网络。

4.2 网际协议 IP

IP 协议(Internet Protocol)是网络层的核心,它定义了互联网的地址空间、分组格式和转发规则,是实现全球网络互连的基础。从 IPv4 到 IPv6 的演进,反映了互联网对地址空间、性能和安全性的不断追求。

4.2.1 虚拟互连网络(Internet)

虚拟互连网络是 IP 协议的核心抽象,它将无数异构物理网络通过路由器互连,在逻辑上呈现为一个统一的 "IP 网络"。用户无需关心底层网络的技术细节(如光纤、铜线或无线),只需通过 IP 地址即可实现跨网通信。

  • 技术意义
    • 打破了物理网络的异构性壁垒,使不同技术的网络能够互通(如以太网与卫星网的互联)。
    • 为上层应用提供了统一的通信接口,推动了互联网应用的标准化。

4.2.2 IP 地址

IP 地址是标识网络中设备接口的逻辑地址,其设计经历了从分类地址到无类别编址的演进,以适应网络规模的爆炸式增长。

1. IPv4 地址(历史与演进)
分类地址(已废弃)

分类地址将 IP 地址划分为 A、B、C、D、E 五类,通过前缀字节判断类型,这种设计在早期简化了路由处理,但存在严重的地址浪费问题。

  • A 类地址(0.0.0.0~127.255.255.255):

    • 网络号占 8 位(首位为 0),主机号占 24 位,理论上支持 126 个网络,每个网络可容纳约 1600 万台主机。
    • 适用于大型网络(如 ISP),但实际中大量 A 类地址未被充分利用。
  • B 类地址(128.0.0.0~191.255.255.255):

    • 网络号占 16 位(前两位为 10),主机号占 16 位,支持约 16384 个网络,每个网络 65534 台主机。
    • 原设计用于中型企业,但多数企业无需如此多的主机地址。
  • C 类地址(192.0.0.0~223.255.255.255):

    • 网络号占 24 位(前三位为 110),主机号占 8 位,支持约 209 万个网络,每个网络 254 台主机。
    • 适合小型网络(如家庭或办公室),但小型网络对 254 个地址仍显冗余。
  • D 类地址(224.0.0.0~239.255.255.255):多播地址,用于一对多通信。

  • E 类地址(240.0.0.0~255.255.255.255):保留地址,用于科研实验。

子网划分(Subnetting)

为解决分类地址的浪费问题,子网划分通过借用主机位作为子网位,将一个大网络划分为多个小网络。

  • 实现方法

    • 例如,B 类网络 172.16.0.0/16(默认掩码 255.255.0.0)可借 8 位主机位划分子网,新掩码变为 255.255.255.0(/24),形成 172.16.1.0/24、172.16.2.0/24 等子网。
    • 子网掩码用于标识网络位和主机位,例如 255.255.255.0 表示前 24 位为网络 + 子网位,后 8 位为主机位。
  • 关键作用

    • 提高地址利用率,使大网络可分配给多个部门使用。
    • 减少路由表条目(子网内路由可聚合),提升路由效率。
无类别域间路由(CIDR)

CIDR 彻底摒弃了地址分类,采用 "网络前缀 / 前缀长度" 的表示法(如 192.168.0.0/20),实现了更灵活的地址分配和路由聚合。

  • 路由聚合(Route Aggregation)
    • 例如,192.168.0.0/24 和 192.168.1.0/24 可聚合为 192.168.0.0/23,路由表只需一条记录,显著减少了骨干路由器的路由表规模(从数万条降至数千条)。
    • 聚合规则:网络前缀的共同部分作为新前缀,长度为最长公共前缀。
2. IPv6 地址(未来方向)

IPv6 通过 128 位地址空间解决了 IPv4 的地址枯竭问题,其设计还引入了更灵活的地址类型和扩展机制。

  • 地址格式

    • 128 位地址分为 8 组 16 进制数,每组 4 位,用冒号分隔(如2001:0db8:85a3::8a2e:0370:7334)。
    • 优化表示:连续的零段可简化为双冒号(::),前导零可省略(如0db8可写为db8)。
  • 地址类型

    • 单播(Unicast)
      • 全球单播地址:全球唯一,类似 IPv4 公网地址,用于互联网通信。
      • 链路本地地址(fe80::/10):自动生成(基于 MAC 地址),仅在本地网段有效,无需 DHCP 配置。
    • 多播(Multicast):一对多通信,如ff02::1表示链路本地所有主机。
    • 任播(Anycast):一对最近通信,多个服务器共享任播地址,请求路由到离源最近的节点(如 CDN 服务)。

4.2.3 IP 地址与 MAC 地址

IP 地址和 MAC 地址分别在网络层和链路层标识设备,二者的协同工作是跨网通信的基础。

  • MAC 地址

    • 48 位物理地址,固化在网卡硬件中,由 IEEE 统一分配(前 24 位为厂商标识符,后 24 位为设备标识符)。
    • 作用范围:仅在物理链路内有效(如以太网中标识同一网段的设备)。
  • IP 地址

    • 逻辑地址,32 位(IPv4)或 128 位(IPv6),由网络管理员或 DHCP 动态分配。
    • 作用范围:标识设备在逻辑网络中的位置(如属于哪个网络的哪个子网)。
  • 映射关系

    • ARP 协议:局域网内将 IP 地址映射为 MAC 地址。
    • 跨网通信:主机发送数据到外网时,目标 MAC 地址为网关(路由器)的局域网接口 MAC,而非目标主机的 MAC(因目标主机不在同一网段)。

4.2.4 地址解析协议 ARP

ARP(Address Resolution Protocol)是网络层与链路层的桥梁,负责动态建立 IP 地址到 MAC 地址的映射。

  • 工作流程

    1. 广播请求:主机 A 需要发送数据给主机 B(同网段),若 ARP 缓存中无 B 的 MAC 地址,则发送 ARP 请求广播(包含目标 IP、自身 IP 和 MAC),局域网内所有主机接收。
    2. 单播响应:只有 IP 地址匹配的主机 B 回复 ARP 响应(包含自身 MAC),其他主机忽略。
    3. 缓存更新:主机 A 将 B 的 IP-MAC 映射存入 ARP 缓存(通常超时时间为 10-20 分钟),后续通信直接使用缓存记录。
  • 跨网通信特例
    当主机发送数据到外网时,ARP 请求的是网关(路由器)的 IP 对应的 MAC 地址。例如,主机 192.168.1.100 访问百度(14.215.177.38),其 ARP 请求的是默认网关(如 192.168.1.1)的 MAC,而非百度服务器的 MAC。

  • 安全隐患
    ARP 协议缺乏认证机制,易受 ARP 欺骗攻击 —— 攻击者伪造 ARP 响应,将目标 IP 映射到自己的 MAC,从而截获通信流量(如中间人攻击)。

4.2.5 IP 数据报的格式

IPv4 数据报由首部和数据部分组成,首部包含关键转发控制信息,其格式设计直接影响网络层的性能与功能。

首部结构(20 字节固定部分 + 可选部分)
字段(位)内容关键作用
版本4标识 IP 协议版本(IPv4=4,IPv6=6),路由器据此选择处理逻辑
首部长度4以 4 字节为单位,指示首部总长度(最小值 5→20 字节,含选项时可扩展),用于确定数据部分起始位置
服务类型(TOS)8早期用于指定优先级和服务质量(如低延迟、高吞吐量),现多用 DSCP 字段
总长度16数据报总长度(字节),最大值 65535,超过链路 MTU 时需分片
标识16唯一标识一个数据报,用于分片重组(同一数据报的分片具有相同标识)
标志3包含 DF(不分片,1 表示禁止分片)和 MF(更多分片,1 表示非最后一片)
片偏移13分片在原数据报中的相对位置(以 8 字节为单位),用于重组时排序
生存时间(TTL)8数据报允许经过的最大路由器跳数,每经一跳减 1,为 0 时丢弃,防止环路(默认值 64 或 128)
协议8指示上层协议类型(6=TCP,17=UDP,1=ICMP),用于交付给正确的传输层协议
首部校验和16仅校验首部(因 TTL 等字段逐跳变化),采用反码求和算法,检测首部传输错误
源 IP 地址32发送方的 IP 地址
目的 IP 地址32接收方的 IP 地址
分片与重组机制
  • 分片原因
    数据报长度超过链路 MTU(最大传输单元)时必须分片。例如,以太网 MTU 为 1500 字节,若数据报长度为 1600 字节(20 字节首部 + 1580 字节数据),则需分片。

  • 分片过程

    1. 路由器根据链路 MTU 分割数据报,确保每个分片的长度不超过 MTU。
    2. 为每个分片设置相同的标识字段,以便重组。
    3. 第一个分片的 MF=0(若为最后一片)或 1(非最后一片),后续分片的 MF=1(除非是最后一片)。
    4. 片偏移字段指示分片在原数据报中的位置(如第一个分片偏移 0,第二个偏移 1480/8=185,因 1480=1500-20 首部)。
  • 重组规则
    仅在目的主机进行重组(路由器不重组),这是为了避免中间节点因等待分片导致的性能开销。重组时根据标识、标志和片偏移字段,将分片按顺序拼接成完整数据报。若分片丢失或超时未到达,目的主机将丢弃所有已接收的分片,并返回 ICMP 超时报文。

4.3 IP 层转发分组的过程

IP 层的分组转发是网络层的核心操作,其效率直接影响整个网络的性能。现代转发机制基于 "最长前缀匹配" 原则,通过高效的数据结构实现快速路由查找。

4.3.1 基于终点的转发

路由表结构

路由表是转发决策的核心数据结构,每条路由条目包含以下关键信息:

  • 目的网络前缀 / 掩码:如 192.168.1.0/24,表示匹配该前缀的 IP 地址。
  • 下一跳地址:分组转发的下一个路由器的 IP 地址。
  • 输出接口:数据报从哪个物理接口发出。
  • 度量值:路由的优先级(如跳数、带宽等)。
转发逻辑流程
  1. 提取目的 IP:从数据报首部取出目的 IP 地址。
  2. 最长前缀匹配:遍历路由表,寻找与目的 IP 匹配且掩码最长的条目(掩码越长,前缀越具体,优先级越高)。
  3. 执行转发:根据匹配条目的下一跳地址和输出接口,将数据报转发到下一跳路由器。
  4. 默认路由处理:若没有匹配条目,则转发到默认网关(路由表中掩码为 0.0.0.0/0 的条目)。

4.3.2 最长前缀匹配

最长前缀匹配是 IP 转发的核心原则,其本质是在路由表中选择与目的 IP 地址前缀最长的匹配项,以确保路由的精确性。

  • 原理示例
    假设路由表中有两条条目:

    • 条目 1:192.168.1.0/24(掩码 255.255.255.0)
    • 条目 2:192.168.0.0/16(掩码 255.255.0.0)
      当目的 IP 为 192.168.1.100 时,与条目 1 的前缀匹配长度为 24 位,与条目 2 的匹配长度为 16 位,因此选择条目 1(更长的前缀更具体)。
  • 路由优先级
    掩码长度决定优先级,掩码越长(如 / 24)的路由条目优先级高于掩码较短(如 / 16)的条目,这确保了路由的精确性(如子网路由优先于主网路由)。

4.3.3 使用二叉线索查找转发表

随着网络规模扩大,路由表条目可达数十万条,传统线性查找效率低下,二叉线索(Trie)成为主流的高效查找结构。

  • Trie 树结构
    将 IP 地址视为 32 位二进制数,构建一棵二叉树,每一层对应一位(0 或 1),从根节点到叶节点的路径表示一个 IP 地址前缀。节点存储该前缀对应的路由条目。

  • 查找过程

    1. 从根节点开始,按 IP 地址的二进制位逐位匹配(0 走左子树,1 走右子树)。
    2. 每经过一个节点,记录当前匹配的最长前缀。
    3. 到达叶节点或无法继续匹配时,返回记录的最长前缀对应的路由条目。
  • 优势

    • 查找时间复杂度为 O (32)(IPv4)或 O (128)(IPv6),与路由表规模无关。
    • 支持硬件加速(如 TCAM 芯片),实现线速转发(每秒处理数百万分组)。
  • 实际应用
    骨干路由器普遍采用 Trie 树或其变种(如压缩 Trie、分层 Trie)实现路由查找,结合硬件加速技术,确保高速网络环境下的转发性能。

4.4 网际控制报文协议 ICMP

ICMP(Internet Control Message Protocol)是网络层的 "诊断工具",通过发送控制报文反馈网络状态,帮助检测和解决网络问题。

4.4.1 ICMP 报文的种类

差错报告报文

差错报告报文用于反馈分组传输中的错误情况,常见类型包括:

  • 目的不可达(Type=3)
    当路由器无法转发分组到目的地址时发送,包含多种代码(如网络不可达、主机不可达、端口不可达等)。例如,防火墙阻断某端口时,会返回 "端口不可达" 报文。

  • 超时(Type=11)

    • TTL 超时:分组经过的路由器跳数超过 TTL 值,路由器丢弃分组并发送超时报文(常用于 traceroute 工具)。
    • 分片重组超时:目的主机等待分片重组的时间超过阈值,丢弃已接收分片并发送超时报文。
  • 参数问题(Type=12)
    数据报首部字段存在错误(如无效的版本号、非法的选项字段),路由器或目的主机丢弃分组并报告参数问题。

  • 重定向(Type=5)
    路由器发现主机使用非最优路径时,发送重定向报文,告知主机更优的下一跳地址。例如,主机通过默认网关访问同一网段的服务器,网关会重定向主机直接访问服务器。

询问报文

询问报文用于获取网络信息或测试连通性:

  • 回声请求 / 应答(Type=8/0)
    ping 命令的核心机制。发送方发送回声请求,接收方回复应答,用于测量往返时间(RTT)和丢包率。

  • 时间戳请求 / 应答(Type=13/14)
    用于网络时间同步,请求方发送时间戳请求,接收方回复当前时间戳,请求方根据往返时间计算时钟偏移。

4.5 IPv6

IPv6(Internet Protocol Version 6)是 IPv4 的继任者,旨在解决地址枯竭问题,并引入了一系列技术改进,是未来互联网的基础。

4.5.1 IPv6 的基本首部

IPv6 首部设计更简洁高效,固定首部为 40 字节,去除了 IPv4 中冗余或可扩展的字段:

字段长度(位)内容关键作用
版本4IPv6=6标识协议版本
流量类8类似 IPv4 的 TOS用于 QoS,指定分组的优先级和服务类型
流标签20唯一标识数据流用于标识同一流(如视频会议),实现逐流处理(QoS、安全策略)
有效载荷长度16数据部分长度指示 IPv6 首部之后的字节数(不含首部)
下一个首部8上层协议或扩展首部标识上层协议(如 TCP/UDP)或后续扩展首部的类型
跳数限制8类似 IPv4 的 TTL每经过一个路由器减 1,为 0 时丢弃
源地址128发送方 IPv6 地址全球唯一或链路本地地址
目的地址128接收方 IPv6 地址全球唯一或多播地址
扩展首部

IPv6 通过扩展首部实现灵活的功能扩展,扩展首部位于基本首部和上层数据之间,由 "下一个首部" 字段标识:

  • 常见扩展首部

    • 逐跳选项首部:包含需所有路由器处理的选项(如超大有效载荷)。
    • 路由首部:指定分组经过的路由器列表(类似 IPv4 的源路由)。
    • 分片首部:用于数据报分片,包含标识、标志和片偏移。
    • 认证首部(AH):提供数据完整性和认证。
    • 封装安全有效载荷首部(ESP):提供加密和完整性保护(IPsec 核心)。
  • 设计优势
    扩展首部按需添加,避免了 IPv4 选项字段导致的首部膨胀,且路由器仅处理逐跳选项首部,其他扩展首部由目的主机处理,提升了转发效率。

4.5.2 IPv6 的地址

地址格式优化

IPv6 地址采用 128 位十六进制表示,通过以下规则简化书写:

  • 每组前导零可省略(如000AA)。
  • 连续的零组可用双冒号(::)替代(每个地址仅允许一个双冒号)。
  • 示例:
    • 完整地址:2001:0000:0000:0000:0800:0000:200C:417A
    • 优化后:2001::800:0:200C:417A
地址类型
  • 链路本地地址(fe80::/10)

    • 自动生成(基于 EUI-64 格式,将 MAC 地址转换为 IPv6 地址),仅在本地链路有效。
    • 应用场景:无 DHCP 环境下的本地通信(如同一网段内的设备发现)。
  • 全球单播地址

    • 结构:网络前缀(48位)+ 子网ID(16位)+ 接口ID(64位)
    • 全球唯一,可通过 IPv6 互联网路由,类似 IPv4 公网地址。
  • 多播地址(ff00::/8)

    • 标识一组接收者,分组发送到多播地址时,所有订阅该地址的接口都会接收。
    • 常见多播地址:
      • ff02::1:链路本地所有主机。
      • ff02::2:链路本地所有路由器。
  • 任播地址

    • 分配给多个接口(通常属于不同设备),发送到任播地址的分组路由到 "最近" 的接口(基于路由协议的度量)。
    • 应用场景:CDN 服务、分布式云平台,实现负载均衡和高可用性。

4.5.3 从 IPv4 向 IPv6 过渡

由于互联网规模庞大,IPv4 向 IPv6 的过渡是一个长期过程,需多种技术配合:

双栈技术
  • 实现方式
    主机或路由器同时支持 IPv4 和 IPv6 协议栈,可同时拥有 IPv4 和 IPv6 地址。
  • 工作逻辑
    1. 优先使用 IPv6 进行通信(若双方均支持)。
    2. 若对方仅支持 IPv4,则通过 IPv4 通信(fallback 机制)。
  • 应用场景
    企业网络、数据中心,确保新旧系统兼容。
隧道技术

隧道技术将 IPv6 数据报封装在 IPv4 数据报中,通过 IPv4 网络传输:

  • 6to4 隧道

    • 自动隧道技术,适用于边缘网络。IPv6 地址包含 IPv4 地址前缀(如2002:IPv4地址::/48),封装时从 IPv6 地址中提取 IPv4 地址作为隧道端点。
  • GRE 隧道

    • 通用路由封装,手动配置隧道端点(源和目的 IPv4 地址),支持任意 IPv6 地址传输,适合企业内网过渡。
  • ISATAP 隧道

    • 用于局域网内 IPv6 过渡,将 IPv6 数据报封装在 IPv4 的 GRE 报文中,隧道端点自动从 IPv6 地址中提取(如::0:5EFE:IPv4地址)。
NAT64

NAT64 用于 IPv6 与 IPv4 网络的互通,结合 DNS64 实现透明转换:

  • 工作原理
    1. 地址转换:IPv6 主机访问 IPv4 资源时,NAT64 设备将 IPv6 地址转换为 IPv4 地址,并维护端口映射表。
    2. DNS64:DNS 服务器在响应 A 记录查询时,自动生成 AAAA 记录(IPv6 地址),其中包含 NAT64 的地址和端口信息。
  • 示例
    IPv6 主机查询example,DNS64 返回64:ff9b::example(其中64:ff9b::是 NAT64 的前缀),IPv6 主机向该地址发送分组,NAT64 将其转换为 IPv4 分组发送到example的 IPv4 地址。

4.5.4 ICMPv6

ICMPv6 是 ICMP 的 IPv6 版本,功能大幅增强,集成了 ARP 和路由发现等功能:

  • 邻居发现(ND)
    替代 IPv4 的 ARP 协议,通过 ICMPv6 报文实现:

    • 路由器公告(RA):路由器定期广播 RA 报文,告知主机本地链路的 IPv6 前缀、MTU 等信息。
    • 邻居请求(NS):主机发送 NS 报文请求邻居的链路层地址(类似 ARP 请求)。
    • 邻居公告(NA):响应 NS 报文,返回链路层地址和可达性信息。
  • 无状态地址自动配置(SLAAC)
    主机基于路由器公告的前缀,自动生成 IPv6 地址(接口 ID 通常基于 MAC 地址生成),无需 DHCP 服务器,简化了网络配置(尤其适合物联网设备)。

  • 新增报文类型

    • 路由请求(RS):主机主动请求路由器发送 RA 报文。
    • 前缀信息选项:RA 报文中包含可用于自动配置的网络前缀。
    • 可达性确认:检测邻居是否可达,替代 IPv4 的 ARP 缓存超时机制。

4.6 互联网的路由选择协议

路由选择协议是网络层的关键组件,负责自动发现网络拓扑、维护路由表,使分组能高效到达目的地。根据作用范围,路由协议分为自治系统内(IGP)和自治系统间(EGP)两类。

4.6.1 有关路由选择协议的几个基本概念

自治系统(AS)

自治系统是由单一管理实体控制的网络集合(如企业、ISP),具有统一的路由策略,通过 16 位 AS 号(如中国电信 AS4134)标识。AS 内部使用 IGP 协议,AS 之间使用 EGP 协议(如 BGP)。

路由协议分类
  • 内部网关协议(IGP, Interior Gateway Protocol)
    在 AS 内使用,关注如何发现和计算 AS 内的最优路径,常见协议包括 RIP、OSPF、IS-IS。
  • 外部网关协议(EGP, Exterior Gateway Protocol)
    用于 AS 间路由交换,关注策略导向的路径选择(如成本、安全性),当前唯一广泛使用的是 BGP。
路由算法类型
  • 距离向量算法(Distance Vector)
    核心思想是每个路由器向邻居发送自己到各网络的 "距离向量"(如跳数),并根据接收到的向量更新自己的路由表。典型协议:RIP。

    • 优点:实现简单,资源消耗小。
    • 缺点:收敛慢,易形成路由环路。
  • 链路状态算法(Link State)
    每个路由器泛洪传播 "链路状态通告(LSA)",告知邻居自己的连接状态,全网路由器据此构建完整拓扑,再用 Dijkstra 算法计算最短路径。典型协议:OSPF、IS-IS。

    • 优点:收敛快,路由精确,支持大规模网络。
    • 缺点:计算复杂度高,资源消耗大。

4.6.2 内部网关协议 RIP

RIP(Routing Information Protocol)是最早的 IGP 协议之一,基于距离向量算法,以跳数为度量:

  • 基本原理

    1. 路由器定期(默认 30 秒)向邻居发送路由更新报文,包含 <目的网络,跳数,下一跳> 信息。
    2. 接收到更新的路由器根据跳数更新自己的路由表(仅当新路径跳数更少时更新)。
    3. 跳数最大值为 15,16 表示不可达,限制了 RIP 的网络规模(直径不超过 15 跳)。
  • 防环机制

    • 水平分割(Split Horizon):不从接收路由的接口发回该路由(如从接口 A 收到的路由,不通过接口 A 再发回)。
    • 毒性逆转(Poison Reverse):当路由不可达时,发送跳数为 16 的更新,明确告知邻居该路由不可用。
    • 抑制时间(Holddown Timer):路由更新后进入抑制期,期间不接受更差的路由,避免频繁振荡。
  • 报文格式

    • 基于 UDP 传输(端口 520),分为请求报文(查询邻居路由)和响应报文(发送路由表)。
    • 响应报文包含最多 25 条路由条目,每条条目包含 IP 地址、子网掩码、下一跳和跳数。
  • 应用场景
    适合小型网络(如企业分支),但在大规模网络中因收敛慢、度量单一(仅跳数)等缺点已逐渐被 OSPF 取代。

4.6.3 内部网关协议 OSPF

OSPF(Open Shortest Path First)是基于链路状态算法的 IGP 协议,广泛应用于中大型网络:

  • 基本原理

    1. 链路状态发现:路由器通过 Hello 报文发现邻居,建立邻接关系。
    2. LSA 泛洪:路由器生成 LSA(描述自身连接的链路状态),并洪泛到整个区域。
    3. 拓扑构建:每个路由器根据收到的 LSA 构建全网链路状态数据库(LSDB)。
    4. 路径计算:使用 Dijkstra 算法计算从自身到所有网络的最短路径,生成路由表。
  • 关键特点

    • 分层设计
      将 AS 划分为多个区域(Area),每个区域内的路由器维护相同的 LSDB,区域间通过骨干区域(Area 0)互联,减少了 LSA 泛洪范围和路由计算开销。
    • 灵活度量
      默认度量为带宽(10^8 / 链路带宽,如 100Mbps 链路度量为 1),也可配置为延迟、负载等,支持更精确的路径选择。
    • 快速收敛
      触发式更新(而非周期性更新),网络拓扑变化时立即泛洪 LSA,收敛时间可达秒级。
    • 认证机制
      支持明文、MD5 或 HMAC-SHA 认证,防止恶意路由注入,提升安全性。
    • 负载均衡
      支持等价多路径(ECMP),最多 6 条等价路径分担流量,提高带宽利用率。
  • 报文类型

    • Hello 报文:发现邻居,建立和维护邻接关系。
    • 数据库描述(DBD)报文:交换 LSDB 摘要,协商同步 LSDB。
    • 链路状态请求(LSR)报文:请求邻居的完整 LSA。
    • 链路状态更新(LSU)报文:发送 LSA 内容。
    • 链路状态确认(LSAck)报文:确认收到 LSU,确保可靠传输。
  • 应用场景
    广泛应用于运营商网络、大型企业网,支持数万节点的大规模网络,是当前最主流的 IGP 协议之一。

4.6.4 外部网关协议 BGP

BGP(Border Gateway Protocol)是 AS 间路由的标准协议,基于路径向量算法,注重策略导向的路由选择:

  • 基本原理

    1. 邻居建立:AS 间的边界路由器通过 TCP(端口 179)建立 BGP 邻居关系。
    2. 路由交换:交换 <网络前缀,AS 路径,下一跳,度量值> 等信息,其中 AS 路径记录了分组经过的所有 AS 号,用于防止环路和策略控制。
    3. 路由选择:根据多种路径属性(如 AS 路径长度、本地优先级、MED 等)选择最优路径,而非单纯的最短路径。
  • 路径属性

    • AS_PATH:分组经过的 AS 列表,用于环路检测(若收到包含自身 AS 号的路由,丢弃)。
    • NEXT_HOP:到达目标网络的下一跳地址。
    • LOCAL_PREF:本地优先级,用于 AS 内选择出口(值越高越优先)。
    • MED(Multi-Exit Discriminator):向其他 AS 推荐的路径度量(值越小越优先)。
    • ORIGIN:路由的来源(IGP>EGP>Incomplete,优先级依次降低)。
  • 报文类型

    • 打开(Open)报文:建立 BGP 连接,协商参数(如 AS 号、版本)。
    • 更新(Update)报文:发布可达路由或撤销不可达路由。
    • 保活(Keepalive)报文:维持连接活性,默认 30 秒发送一次。
    • 通知(Notification)报文:报告错误,关闭连接。
  • 应用场景
    用于 ISP 之间的路由交换(如电信、联通、移动之间的互联),支持多归属(AS 连接多个 ISP),实现冗余和流量工程。例如,企业可通过 BGP 选择成本更低的 ISP 出口。

4.6.5 路由器的构成

路由器作为网络层的核心设备,其硬件架构直接影响转发性能和可靠性:

硬件组件
  • 输入端口

    • 接收物理链路的帧,解封装得到 IP 数据报。
    • 执行首部校验、TTL 递减,查找转发表确定输出端口。
    • 支持队列管理,处理突发流量(如 FIFO、优先级队列)。
  • 交换结构
    将数据报从输入端口转发到输出端口,是路由器的性能瓶颈,常见实现方式:

    • 总线交换:数据报通过共享总线传输,成本低但吞吐量有限(适合小型路由器)。
    • 交叉矩阵交换:通过矩阵开关实现多端口并行转发,吞吐量高(如 10Gbps 以上),是高端路由器的主流选择。
    • 共享内存交换:数据报存储在共享内存中,由输入端口写入,输出端口读取,适合中等规模路由器。
  • 输出端口

    • 对数据报进行链路层封装(如以太网帧)。
    • 队列管理(如尾部丢弃、RED 随机早期检测)处理拥塞。
    • 速率适配(如将高速接口的数据报适配到低速链路)。
  • 路由处理器

    • 运行路由协议(如 OSPF、BGP),维护路由表和转发表。
    • 处理管理接口(如 SSH、SNMP)的请求。
    • 与数据转发平面分离(控制平面与数据平面分离),避免转发延迟。
转发与控制平面分离

现代路由器采用转发与控制平面分离的架构:

  • 控制平面:路由处理器运行路由协议,计算最优路径,生成转发表。
  • 数据平面:输入 / 输出端口和交换结构负责高速转发,直接查询转发表(通常为硬件加速的 TCAM),无需路由处理器参与,实现线速转发。

4.7 IP 多播

IP 多播(Multicast)实现了 "一对多" 的高效通信模式,避免了单播中源端重复发送的弊端,特别适合视频直播、网络会议等场景。

4.7.1 IP 多播的基本概念

  • 定义
    发送方仅发送一份数据,网络层自动将其复制到所有订阅该多播组的接收方,如同 "广播" 的可控版本(仅接收方主动订阅的组)。

  • 技术优势

    • 带宽优化:无论接收方数量多少,源端只发送一份数据,大幅节省带宽(如 100 个接收方仅需 1 份带宽,单播需 100 份)。
    • 源端减负:源端无需维护每个接收方的状态,降低了处理开销。
    • 网络效率:多播复制在网络层完成,减少了中间节点的处理负担。

4.7.2 在局域网上进行硬件多播

MAC 多播地址映射

IPv4 多播 IP 地址(224.0.0.0/4)映射为特定的 MAC 地址,实现硬件层的多播支持:

  • 映射规则
    MAC 地址的高 24 位固定为01-00-5E(IANA 分配的多播前缀),低 23 位对应 IP 多播地址的低 23 位。
    • 示例:IP 多播地址 224.0.0.1 映射为 MAC 地址01-00-5E-00-00-01
    • 注意:IPv4 多播地址的高 4 位为 1110,因此 IP 多播地址的低 28 位中,最高位被忽略(因 MAC 地址仅 23 位),导致多个 IP 多播地址可能映射到同一个 MAC 地址(如 224.0.0.1 和 232.0.0.1 映射到同一 MAC),这种冲突需在网络层处理。
网卡多播支持
  • 多播监听
    主机通过 IGMP 协议加入多播组后,网卡会配置多播过滤列表(MCL),仅接收特定 MAC 多播帧,丢弃其他多播帧。
  • 硬件加速
    高端网卡支持多播哈希过滤,通过硬件快速判断帧是否属于主机订阅的多播组,减少 CPU 开销。

4.7.3 网际组管理协议 IGMP 和多播路由选择协议

IGMP(Internet Group Management Protocol)

IGMP 是主机与路由器间的协议,用于管理多播组成员关系:

  • 版本演进

    • IGMPv1:基本的组加入和查询,无离开机制。
    • IGMPv2:增加离开组机制,路由器可快速响应成员离开。
    • IGMPv3:支持 "指定源多播",主机可指定只接收来自特定源的多播流(如过滤恶意源)。
  • 工作流程

    1. 成员加入:主机发送 IGMP 成员关系报告,声明加入某多播组。
    2. 普遍查询:路由器定期发送查询报文,检测哪些多播组在本地网段有成员。
    3. 成员响应:主机响应查询,报告自己所属的多播组。
    4. 离开组:主机发送离开报文,路由器确认后停止转发该组流量。
多播路由选择协议

多播路由协议负责在网络层建立多播转发树,将多播流从源端传递到所有接收方:

  • PIM-DM(Protocol Independent Multicast - Dense Mode)

    • 密集模式:适用于多播接收方密集的网络(如局域网)。
    • 工作原理
      1. 源端发送多播流,路由器先向所有接口泛洪。
      2. 无接收方的接口发送剪枝报文,从转发树中移除。
      3. 周期性泛洪 - 剪枝,确保接收方加入时能快速获取流量。
  • PIM-SM(Protocol Independent Multicast - Sparse Mode)

    • 稀疏模式:适用于多播接收方分散的大规模网络(如互联网)。
    • 核心概念
      • 汇聚点(RP, Rendezvous Point):所有多播流先到达 RP,再转发到接收方。
      • 共享树:接收方通过 RP 加入多播组,源端注册到 RP,RP 将流量转发给接收方。
    • 工作流程
      1. 接收方通过本地路由器向 RP 发送加入请求。
      2. 源端发送多播流到 RP(注册过程)。
      3. RP 将流量沿共享树转发给接收方。
      4. 若流量较大,可建立源特定树(SPT),直接从源端到接收方,绕过 RP。

4.8 虚拟专用网 VPN 和网络地址转换 NAT

4.8.1 虚拟专用网 VPN

VPN(Virtual Private Network)通过公用网络(如互联网)构建安全的专用通信通道,实现远程用户或分支网络的安全互联。

技术类型
  • IPsec VPN

    • 网络层加密:基于 IPsec 协议(ESP 或 AH),对 IP 数据报进行加密和认证。
    • 应用场景
      • 站点到站点 VPN:企业分支之间通过互联网互联,形成统一内网。
      • 远程接入 VPN:员工在家通过 IPsec 客户端连接公司内网。
    • 工作模式
      • 隧道模式:封装整个 IP 数据报,包括原 IP 首部(用于站点到站点)。
      • 传输模式:仅封装上层数据,保留原 IP 首部(用于主机到主机)。
  • SSL VPN

    • 应用层加密:基于 HTTPS 协议,通过浏览器即可访问(无需安装客户端)。
    • 优势
      • 跨平台支持(Windows、Mac、手机)。
      • 细粒度访问控制(可限制仅访问特定应用,如 OA 系统)。
    • 应用场景:移动办公、合作伙伴远程访问。
  • MPLS VPN

    • 运营商级 VPN:通过 MPLS 标签交换实现,为企业提供专用链路体验。
    • 技术特点
      • 高可靠性和服务质量(QoS)保障。
      • 多租户隔离(不同企业流量通过标签区分)。
    • 应用场景:大型企业跨地域互联、金融行业高安全需求网络。
核心技术原理
  • 加密与认证
    使用 AES、3DES 等算法加密数据,SHA、MD5 等算法保证完整性,IKE 协议协商加密密钥。
  • 隧道封装
    将私有网络的数据包封装在公共网络的数据包中传输,隐藏内部网络结构。

4.8.2 网络地址转换 NAT

NAT(Network Address Translation)是解决 IPv4 地址短缺的关键技术,通过映射内网私有 IP 到公网 IP,实现多设备共享公网 IP。

工作原理
  • 私有 IP 地址段(RFC 1918 定义):
    • 10.0.0.0~10.255.255.255(10.0.0.0/8)
    • 172.16.0.0~172.31.255.255(172.16.0.0/12)
    • 192.168.0.0~192.168.255.255(192.168.0.0/16)
  • 映射方式
    内网设备发送数据到公网时,NAT 设备将其源 IP 替换为公网 IP(可能包含端口映射),响应数据返回时,NAT 根据映射表还原目标 IP 和端口。
类型分类
  • 静态 NAT

    • 一对一映射:固定私有 IP 映射到固定公网 IP。
    • 应用场景:内网服务器对外提供服务(如 Web 服务器、邮件服务器)。
  • 动态 NAT

    • 多对多映射:从公网 IP 池中动态分配 IP 给内网设备。
    • 特点:公网 IP 数量需大于等于内网活跃设备数,适合中小网络。
  • PAT(端口地址转换)

    • 多对一映射:多个私有 IP 通过不同端口映射到同一个公网 IP。
    • 示例:
      内网主机 A(192.168.0.1:80)和主机 B(192.168.0.2:80)访问公网时,NAT 转换为:
      • 192.168.0.1:80 → 202.0.0.1:10001
      • 192.168.0.2:80 → 202.0.0.1:10002
    • 应用场景:家庭网络(光猫 NAT 功能)、企业出口(数百台设备共享一个公网 IP)。
局限性
  • 破坏端到端通信
    公网设备无法主动发起连接到内网设备(除非 NAT 支持端口转发或穿透),导致 P2P 应用(如 BT 下载、视频会议)需要 NAT 穿透技术(如 STUN、TURN、ICE)。
  • IPv6 不适用
    IPv6 地址空间充足(2^128 个地址),无需 NAT,且 NAT 破坏了 IPv6 的端到端特性,因此 IPv6 网络中不再使用 NAT。

4.9 多协议标签交换 MPLS

MPLS(Multi-Protocol Label Switching)是一种结合 IP 路由与标签转发的技术,提升了转发效率,支持 QoS 和 VPN 等高级功能。

4.9.1 MPLS 的工作原理

MPLS 通过在 IP 分组前添加标签,将路由查找转换为标签匹配,实现快速转发:

  • 核心概念

    • 标签(Label):长度为 20 位的整数,标识分组的转发路径。
    • 标签交换路径(LSP):从源到目的的标签转发路径,通过标签分发协议预先建立。
    • 标签交换路由器(LSR):支持 MPLS 的路由器,根据标签转发分组。
    • 标签边缘路由器(LER):MPLS 域的入口和出口路由器,负责打标签和拆标签。
  • 工作流程

    1. 标签分发
      通过 LDP(Label Distribution Protocol)或 RSVP-TE(资源预留协议)在 LSR 之间协商标签,建立 LSP。
    2. 分组转发
      • 入口 LER 接收 IP 分组,查找路由表确定 LSP,添加标签后转发。
      • 中间 LSR 根据标签查找转发表,替换为下一跳标签,无需查 IP 路由表。
      • 出口 LER 移除标签,按 IP 转发或继续处理。

4.9.2 MPLS 首部的位置与格式

MPLS 首部位于链路层首部和 IP 首部之间,称为 "Shim 首部",格式如下(32 位):

字段长度(位)内容
标签值20标识转发路径
EXP3实验位(用于 QoS 优先级)
S1栈底标识(1 表示最后一个标签,支持标签栈)
TTL8生存时间,防止环路
标签栈机制

MPLS 支持标签栈(多层标签嵌套),用于复杂场景:

  • VPN 应用:双层标签(外层标签标识 VPN 隧道,内层标签标识目标网络)。
  • 服务提供商网络:外层标签用于骨干网转发,内层标签用于客户网络路由。

4.9.3 新一代的 MPLS:Segment Routing

Segment Routing(分段路由)是 MPLS 的演进技术,简化了路径控制,支持 SDN 集成:

  • 核心思想
    摒弃传统的 LDP 协议,通过源路由方式定义路径 —— 源端将路径编码为标签列表(Segment List),中间节点按顺序处理标签,无需维护全网路由状态。

  • 技术优势

    • 配置简化:无需复杂的协议协商,路径由控制器或源端直接定义。
    • 灵活路径控制:支持流量工程(TE),可手动指定路径绕过拥塞链路。
    • SDN 集成:与 SDN 控制器结合,实现可编程的路径调度。
  • 实现方式

    • MPLS Segment Routing:使用 MPLS 标签栈承载 Segment List。
    • IPv6 Segment Routing:通过 IPv6 扩展头(Routing Header)承载 Segment List,适用于纯 IPv6 网络。

4.10 软件定义网络 SDN 简介

SDN(Software-Defined Networking)是一种颠覆传统网络架构的技术,通过分离控制平面和数据平面,实现网络的可编程化和集中管理。

核心思想

  • 控制平面集中化
    传统网络中,每个路由器独立运行路由协议;SDN 将控制逻辑集中到控制器(如 ONOS、RYU),控制器掌握全网拓扑,统一计算最优路径和转发策略。

  • 数据平面开放化
    数据平面设备(交换机、路由器)仅负责转发,通过标准化接口(如 OpenFlow)接收控制器下发的流表,无需理解复杂的路由协议。

SDN 架构

SDN 架构分为三层,层次分明且接口标准化:

  • 数据层
    由交换机等转发设备组成,按流表执行转发动作(如转发、丢弃、修改首部)。

    • 关键技术:流表匹配(基于五元组、VLAN、物理端口等)、流水线处理。
  • 控制层
    控制器是 SDN 的大脑,通过南向接口(如 OpenFlow)管理数据层设备,维护网络拓扑和转发规则。

    • 主流控制器:
      • ONOS:面向运营商网络,支持高可用性和分布式架构。
      • RYU:开源控制器,适合教学和研发,提供丰富的 API。
      • OpenDaylight:社区驱动的控制器,支持多协议和插件扩展。
  • 应用层
    基于控制器提供的 API 开发网络应用,实现业务逻辑与底层网络的解耦。

    • 典型应用:
      • 流量工程:动态调整路径,避免拥塞。
      • 网络安全:集中管理防火墙规则,快速响应攻击。
      • 云网络:为虚拟机动态分配网络资源。

关键技术:OpenFlow 协议

OpenFlow 是 SDN 中控制器与数据层设备通信的标准协议,定义了流表结构和交互流程:

  • 流表结构
    每个流表项包含:

    • 匹配字段:如源 / 目的 IP、端口、协议、VLAN ID 等。
    • 动作:如转发到指定端口、修改字段、丢弃、组表(多播 / 负载均衡)。
    • 计数器:记录匹配次数、字节数,用于监控和计费。
  • 交互流程

    1. 交换机启动后,向控制器发送 Hello 报文,协商协议版本。
    2. 控制器发送配置报文,设置交换机参数(如安全通道)。
    3. 交换机收到未知分组时,发送 Packet-In 报文到控制器,请求转发规则。
    4. 控制器返回 Flow-Mod 报文,下发流表项,交换机按规则转发后续分组。

SDN 的优势与应用

  • 优势

    • 灵活性:通过软件编程快速调整网络策略,适应业务变化(如云计算、大数据流量)。
    • 简化管理:集中控制避免了传统网络的分散配置,减少人为错误。
    • 成本优化:白盒交换机(通用硬件 + SDN 软件)降低设备成本,资源利用率提升。
  • 应用场景

    • 数据中心网络:虚拟机迁移时自动调整网络配置,支持弹性扩缩容。
    • 广域网(WAN):SD-WAN 通过 SDN 优化企业广域网连接,降低带宽成本。
    • 运营商网络:5G 核心网采用 SDN 架构,支持网络切片和按需资源分配。

本章核心逻辑串联

网络层作为互联网的 "神经系统",其设计贯穿了 "抽象 - 互联 - 优化" 的核心逻辑:

  1. IP 协议的统一抽象
    通过 IP 地址和数据报格式,将异构网络抽象为逻辑上的统一网络,ARP 和 ICMP 分别解决了地址映射和网络诊断问题,分片机制确保了跨 MTU 传输的兼容性。

  2. 路由机制的分层设计
    AS 内通过 IGP(如 OSPF)计算最短路径,AS 间通过 BGP 实现策略路由,最长前缀匹配和 Trie 树查找保证了转发效率,路由器的硬件架构则从工程层面实现了高速转发。

  3. 应对现实需求的扩展技术

    • 多播解决一对多通信的带宽效率问题。
    • VPN在公网中构建安全通道,满足企业互联需求。
    • NAT缓解了 IPv4 地址短缺,延长了 IPv4 的生命周期。
    • MPLS通过标签转发提升性能,支持 QoS 和大规模 VPN。
    • SDN通过控制与转发分离,使网络具备可编程能力,适应云时代的动态需求。
  4. 从 IPv4 到 IPv6 的演进
    128 位地址空间解决了地址枯竭,扩展首部和邻居发现等机制为未来互联网(如物联网、工业 4.0)奠定了基础,过渡技术确保了演进的平滑性。

本章核心逻辑串联

网络层是“网际互连的大脑”

1. IP协议 统一地址(CIDR、IPv6)、分组格式(分片、首部字段),ARP解决IP→MAC映射,ICMP诊断网络;

2. 路由协议 自动学习路径(RIP/OSPF是AS内“最短路径”,BGP是AS间“策略路径”);

3. 扩展技术 应对现实需求:多播(高效一对多)、VPN(安全通信)、NAT(IPv4续命)、MPLS(快速转发)、SDN(灵活控制)。

本文标签: 计算机网络网络谢希仁