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)。
- 128 位地址分为 8 组 16 进制数,每组 4 位,用冒号分隔(如
-
地址类型:
- 单播(Unicast):
- 全球单播地址:全球唯一,类似 IPv4 公网地址,用于互联网通信。
- 链路本地地址(fe80::/10):自动生成(基于 MAC 地址),仅在本地网段有效,无需 DHCP 配置。
- 多播(Multicast):一对多通信,如
ff02::1表示链路本地所有主机。 - 任播(Anycast):一对最近通信,多个服务器共享任播地址,请求路由到离源最近的节点(如 CDN 服务)。
- 单播(Unicast):
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 地址的映射。
-
工作流程:
- 广播请求:主机 A 需要发送数据给主机 B(同网段),若 ARP 缓存中无 B 的 MAC 地址,则发送 ARP 请求广播(包含目标 IP、自身 IP 和 MAC),局域网内所有主机接收。
- 单播响应:只有 IP 地址匹配的主机 B 回复 ARP 响应(包含自身 MAC),其他主机忽略。
- 缓存更新:主机 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 字节数据),则需分片。 -
分片过程:
- 路由器根据链路 MTU 分割数据报,确保每个分片的长度不超过 MTU。
- 为每个分片设置相同的标识字段,以便重组。
- 第一个分片的 MF=0(若为最后一片)或 1(非最后一片),后续分片的 MF=1(除非是最后一片)。
- 片偏移字段指示分片在原数据报中的位置(如第一个分片偏移 0,第二个偏移 1480/8=185,因 1480=1500-20 首部)。
-
重组规则:
仅在目的主机进行重组(路由器不重组),这是为了避免中间节点因等待分片导致的性能开销。重组时根据标识、标志和片偏移字段,将分片按顺序拼接成完整数据报。若分片丢失或超时未到达,目的主机将丢弃所有已接收的分片,并返回 ICMP 超时报文。
4.3 IP 层转发分组的过程
IP 层的分组转发是网络层的核心操作,其效率直接影响整个网络的性能。现代转发机制基于 "最长前缀匹配" 原则,通过高效的数据结构实现快速路由查找。
4.3.1 基于终点的转发
路由表结构
路由表是转发决策的核心数据结构,每条路由条目包含以下关键信息:
- 目的网络前缀 / 掩码:如 192.168.1.0/24,表示匹配该前缀的 IP 地址。
- 下一跳地址:分组转发的下一个路由器的 IP 地址。
- 输出接口:数据报从哪个物理接口发出。
- 度量值:路由的优先级(如跳数、带宽等)。
转发逻辑流程
- 提取目的 IP:从数据报首部取出目的 IP 地址。
- 最长前缀匹配:遍历路由表,寻找与目的 IP 匹配且掩码最长的条目(掩码越长,前缀越具体,优先级越高)。
- 执行转发:根据匹配条目的下一跳地址和输出接口,将数据报转发到下一跳路由器。
- 默认路由处理:若没有匹配条目,则转发到默认网关(路由表中掩码为 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 地址前缀。节点存储该前缀对应的路由条目。 -
查找过程:
- 从根节点开始,按 IP 地址的二进制位逐位匹配(0 走左子树,1 走右子树)。
- 每经过一个节点,记录当前匹配的最长前缀。
- 到达叶节点或无法继续匹配时,返回记录的最长前缀对应的路由条目。
-
优势:
- 查找时间复杂度为 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 中冗余或可扩展的字段:
| 字段 | 长度(位) | 内容 | 关键作用 |
|---|---|---|---|
| 版本 | 4 | IPv6=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 位十六进制表示,通过以下规则简化书写:
- 每组前导零可省略(如
000A→A)。 - 连续的零组可用双冒号(::)替代(每个地址仅允许一个双冒号)。
- 示例:
- 完整地址:
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 地址。 - 工作逻辑:
- 优先使用 IPv6 进行通信(若双方均支持)。
- 若对方仅支持 IPv4,则通过 IPv4 通信(fallback 机制)。
- 应用场景:
企业网络、数据中心,确保新旧系统兼容。
隧道技术
隧道技术将 IPv6 数据报封装在 IPv4 数据报中,通过 IPv4 网络传输:
-
6to4 隧道:
- 自动隧道技术,适用于边缘网络。IPv6 地址包含 IPv4 地址前缀(如
2002:IPv4地址::/48),封装时从 IPv6 地址中提取 IPv4 地址作为隧道端点。
- 自动隧道技术,适用于边缘网络。IPv6 地址包含 IPv4 地址前缀(如
-
GRE 隧道:
- 通用路由封装,手动配置隧道端点(源和目的 IPv4 地址),支持任意 IPv6 地址传输,适合企业内网过渡。
-
ISATAP 隧道:
- 用于局域网内 IPv6 过渡,将 IPv6 数据报封装在 IPv4 的 GRE 报文中,隧道端点自动从 IPv6 地址中提取(如
::0:5EFE:IPv4地址)。
- 用于局域网内 IPv6 过渡,将 IPv6 数据报封装在 IPv4 的 GRE 报文中,隧道端点自动从 IPv6 地址中提取(如
NAT64
NAT64 用于 IPv6 与 IPv4 网络的互通,结合 DNS64 实现透明转换:
- 工作原理:
- 地址转换:IPv6 主机访问 IPv4 资源时,NAT64 设备将 IPv6 地址转换为 IPv4 地址,并维护端口映射表。
- 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 协议之一,基于距离向量算法,以跳数为度量:
-
基本原理:
- 路由器定期(默认 30 秒)向邻居发送路由更新报文,包含 <目的网络,跳数,下一跳> 信息。
- 接收到更新的路由器根据跳数更新自己的路由表(仅当新路径跳数更少时更新)。
- 跳数最大值为 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 协议,广泛应用于中大型网络:
-
基本原理:
- 链路状态发现:路由器通过 Hello 报文发现邻居,建立邻接关系。
- LSA 泛洪:路由器生成 LSA(描述自身连接的链路状态),并洪泛到整个区域。
- 拓扑构建:每个路由器根据收到的 LSA 构建全网链路状态数据库(LSDB)。
- 路径计算:使用 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 间路由的标准协议,基于路径向量算法,注重策略导向的路由选择:
-
基本原理:
- 邻居建立:AS 间的边界路由器通过 TCP(端口 179)建立 BGP 邻居关系。
- 路由交换:交换 <网络前缀,AS 路径,下一跳,度量值> 等信息,其中 AS 路径记录了分组经过的所有 AS 号,用于防止环路和策略控制。
- 路由选择:根据多种路径属性(如 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),这种冲突需在网络层处理。
- 示例:IP 多播地址 224.0.0.1 映射为 MAC 地址
网卡多播支持
- 多播监听:
主机通过 IGMP 协议加入多播组后,网卡会配置多播过滤列表(MCL),仅接收特定 MAC 多播帧,丢弃其他多播帧。 - 硬件加速:
高端网卡支持多播哈希过滤,通过硬件快速判断帧是否属于主机订阅的多播组,减少 CPU 开销。
4.7.3 网际组管理协议 IGMP 和多播路由选择协议
IGMP(Internet Group Management Protocol)
IGMP 是主机与路由器间的协议,用于管理多播组成员关系:
-
版本演进:
- IGMPv1:基本的组加入和查询,无离开机制。
- IGMPv2:增加离开组机制,路由器可快速响应成员离开。
- IGMPv3:支持 "指定源多播",主机可指定只接收来自特定源的多播流(如过滤恶意源)。
-
工作流程:
- 成员加入:主机发送 IGMP 成员关系报告,声明加入某多播组。
- 普遍查询:路由器定期发送查询报文,检测哪些多播组在本地网段有成员。
- 成员响应:主机响应查询,报告自己所属的多播组。
- 离开组:主机发送离开报文,路由器确认后停止转发该组流量。
多播路由选择协议
多播路由协议负责在网络层建立多播转发树,将多播流从源端传递到所有接收方:
-
PIM-DM(Protocol Independent Multicast - Dense Mode):
- 密集模式:适用于多播接收方密集的网络(如局域网)。
- 工作原理:
- 源端发送多播流,路由器先向所有接口泛洪。
- 无接收方的接口发送剪枝报文,从转发树中移除。
- 周期性泛洪 - 剪枝,确保接收方加入时能快速获取流量。
-
PIM-SM(Protocol Independent Multicast - Sparse Mode):
- 稀疏模式:适用于多播接收方分散的大规模网络(如互联网)。
- 核心概念:
- 汇聚点(RP, Rendezvous Point):所有多播流先到达 RP,再转发到接收方。
- 共享树:接收方通过 RP 加入多播组,源端注册到 RP,RP 将流量转发给接收方。
- 工作流程:
- 接收方通过本地路由器向 RP 发送加入请求。
- 源端发送多播流到 RP(注册过程)。
- RP 将流量沿共享树转发给接收方。
- 若流量较大,可建立源特定树(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 域的入口和出口路由器,负责打标签和拆标签。
-
工作流程:
- 标签分发:
通过 LDP(Label Distribution Protocol)或 RSVP-TE(资源预留协议)在 LSR 之间协商标签,建立 LSP。 - 分组转发:
- 入口 LER 接收 IP 分组,查找路由表确定 LSP,添加标签后转发。
- 中间 LSR 根据标签查找转发表,替换为下一跳标签,无需查 IP 路由表。
- 出口 LER 移除标签,按 IP 转发或继续处理。
- 标签分发:
4.9.2 MPLS 首部的位置与格式
MPLS 首部位于链路层首部和 IP 首部之间,称为 "Shim 首部",格式如下(32 位):
| 字段 | 长度(位) | 内容 |
|---|---|---|
| 标签值 | 20 | 标识转发路径 |
| EXP | 3 | 实验位(用于 QoS 优先级) |
| S | 1 | 栈底标识(1 表示最后一个标签,支持标签栈) |
| TTL | 8 | 生存时间,防止环路 |
标签栈机制
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 等。
- 动作:如转发到指定端口、修改字段、丢弃、组表(多播 / 负载均衡)。
- 计数器:记录匹配次数、字节数,用于监控和计费。
-
交互流程:
- 交换机启动后,向控制器发送 Hello 报文,协商协议版本。
- 控制器发送配置报文,设置交换机参数(如安全通道)。
- 交换机收到未知分组时,发送 Packet-In 报文到控制器,请求转发规则。
- 控制器返回 Flow-Mod 报文,下发流表项,交换机按规则转发后续分组。
SDN 的优势与应用
-
优势:
- 灵活性:通过软件编程快速调整网络策略,适应业务变化(如云计算、大数据流量)。
- 简化管理:集中控制避免了传统网络的分散配置,减少人为错误。
- 成本优化:白盒交换机(通用硬件 + SDN 软件)降低设备成本,资源利用率提升。
-
应用场景:
- 数据中心网络:虚拟机迁移时自动调整网络配置,支持弹性扩缩容。
- 广域网(WAN):SD-WAN 通过 SDN 优化企业广域网连接,降低带宽成本。
- 运营商网络:5G 核心网采用 SDN 架构,支持网络切片和按需资源分配。
本章核心逻辑串联
网络层作为互联网的 "神经系统",其设计贯穿了 "抽象 - 互联 - 优化" 的核心逻辑:
-
IP 协议的统一抽象:
通过 IP 地址和数据报格式,将异构网络抽象为逻辑上的统一网络,ARP 和 ICMP 分别解决了地址映射和网络诊断问题,分片机制确保了跨 MTU 传输的兼容性。 -
路由机制的分层设计:
AS 内通过 IGP(如 OSPF)计算最短路径,AS 间通过 BGP 实现策略路由,最长前缀匹配和 Trie 树查找保证了转发效率,路由器的硬件架构则从工程层面实现了高速转发。 -
应对现实需求的扩展技术:
- 多播解决一对多通信的带宽效率问题。
- VPN在公网中构建安全通道,满足企业互联需求。
- NAT缓解了 IPv4 地址短缺,延长了 IPv4 的生命周期。
- MPLS通过标签转发提升性能,支持 QoS 和大规模 VPN。
- SDN通过控制与转发分离,使网络具备可编程能力,适应云时代的动态需求。
-
从 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)。
- 128 位地址分为 8 组 16 进制数,每组 4 位,用冒号分隔(如
-
地址类型:
- 单播(Unicast):
- 全球单播地址:全球唯一,类似 IPv4 公网地址,用于互联网通信。
- 链路本地地址(fe80::/10):自动生成(基于 MAC 地址),仅在本地网段有效,无需 DHCP 配置。
- 多播(Multicast):一对多通信,如
ff02::1表示链路本地所有主机。 - 任播(Anycast):一对最近通信,多个服务器共享任播地址,请求路由到离源最近的节点(如 CDN 服务)。
- 单播(Unicast):
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 地址的映射。
-
工作流程:
- 广播请求:主机 A 需要发送数据给主机 B(同网段),若 ARP 缓存中无 B 的 MAC 地址,则发送 ARP 请求广播(包含目标 IP、自身 IP 和 MAC),局域网内所有主机接收。
- 单播响应:只有 IP 地址匹配的主机 B 回复 ARP 响应(包含自身 MAC),其他主机忽略。
- 缓存更新:主机 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 字节数据),则需分片。 -
分片过程:
- 路由器根据链路 MTU 分割数据报,确保每个分片的长度不超过 MTU。
- 为每个分片设置相同的标识字段,以便重组。
- 第一个分片的 MF=0(若为最后一片)或 1(非最后一片),后续分片的 MF=1(除非是最后一片)。
- 片偏移字段指示分片在原数据报中的位置(如第一个分片偏移 0,第二个偏移 1480/8=185,因 1480=1500-20 首部)。
-
重组规则:
仅在目的主机进行重组(路由器不重组),这是为了避免中间节点因等待分片导致的性能开销。重组时根据标识、标志和片偏移字段,将分片按顺序拼接成完整数据报。若分片丢失或超时未到达,目的主机将丢弃所有已接收的分片,并返回 ICMP 超时报文。
4.3 IP 层转发分组的过程
IP 层的分组转发是网络层的核心操作,其效率直接影响整个网络的性能。现代转发机制基于 "最长前缀匹配" 原则,通过高效的数据结构实现快速路由查找。
4.3.1 基于终点的转发
路由表结构
路由表是转发决策的核心数据结构,每条路由条目包含以下关键信息:
- 目的网络前缀 / 掩码:如 192.168.1.0/24,表示匹配该前缀的 IP 地址。
- 下一跳地址:分组转发的下一个路由器的 IP 地址。
- 输出接口:数据报从哪个物理接口发出。
- 度量值:路由的优先级(如跳数、带宽等)。
转发逻辑流程
- 提取目的 IP:从数据报首部取出目的 IP 地址。
- 最长前缀匹配:遍历路由表,寻找与目的 IP 匹配且掩码最长的条目(掩码越长,前缀越具体,优先级越高)。
- 执行转发:根据匹配条目的下一跳地址和输出接口,将数据报转发到下一跳路由器。
- 默认路由处理:若没有匹配条目,则转发到默认网关(路由表中掩码为 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 地址前缀。节点存储该前缀对应的路由条目。 -
查找过程:
- 从根节点开始,按 IP 地址的二进制位逐位匹配(0 走左子树,1 走右子树)。
- 每经过一个节点,记录当前匹配的最长前缀。
- 到达叶节点或无法继续匹配时,返回记录的最长前缀对应的路由条目。
-
优势:
- 查找时间复杂度为 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 中冗余或可扩展的字段:
| 字段 | 长度(位) | 内容 | 关键作用 |
|---|---|---|---|
| 版本 | 4 | IPv6=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 位十六进制表示,通过以下规则简化书写:
- 每组前导零可省略(如
000A→A)。 - 连续的零组可用双冒号(::)替代(每个地址仅允许一个双冒号)。
- 示例:
- 完整地址:
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 地址。 - 工作逻辑:
- 优先使用 IPv6 进行通信(若双方均支持)。
- 若对方仅支持 IPv4,则通过 IPv4 通信(fallback 机制)。
- 应用场景:
企业网络、数据中心,确保新旧系统兼容。
隧道技术
隧道技术将 IPv6 数据报封装在 IPv4 数据报中,通过 IPv4 网络传输:
-
6to4 隧道:
- 自动隧道技术,适用于边缘网络。IPv6 地址包含 IPv4 地址前缀(如
2002:IPv4地址::/48),封装时从 IPv6 地址中提取 IPv4 地址作为隧道端点。
- 自动隧道技术,适用于边缘网络。IPv6 地址包含 IPv4 地址前缀(如
-
GRE 隧道:
- 通用路由封装,手动配置隧道端点(源和目的 IPv4 地址),支持任意 IPv6 地址传输,适合企业内网过渡。
-
ISATAP 隧道:
- 用于局域网内 IPv6 过渡,将 IPv6 数据报封装在 IPv4 的 GRE 报文中,隧道端点自动从 IPv6 地址中提取(如
::0:5EFE:IPv4地址)。
- 用于局域网内 IPv6 过渡,将 IPv6 数据报封装在 IPv4 的 GRE 报文中,隧道端点自动从 IPv6 地址中提取(如
NAT64
NAT64 用于 IPv6 与 IPv4 网络的互通,结合 DNS64 实现透明转换:
- 工作原理:
- 地址转换:IPv6 主机访问 IPv4 资源时,NAT64 设备将 IPv6 地址转换为 IPv4 地址,并维护端口映射表。
- 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 协议之一,基于距离向量算法,以跳数为度量:
-
基本原理:
- 路由器定期(默认 30 秒)向邻居发送路由更新报文,包含 <目的网络,跳数,下一跳> 信息。
- 接收到更新的路由器根据跳数更新自己的路由表(仅当新路径跳数更少时更新)。
- 跳数最大值为 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 协议,广泛应用于中大型网络:
-
基本原理:
- 链路状态发现:路由器通过 Hello 报文发现邻居,建立邻接关系。
- LSA 泛洪:路由器生成 LSA(描述自身连接的链路状态),并洪泛到整个区域。
- 拓扑构建:每个路由器根据收到的 LSA 构建全网链路状态数据库(LSDB)。
- 路径计算:使用 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 间路由的标准协议,基于路径向量算法,注重策略导向的路由选择:
-
基本原理:
- 邻居建立:AS 间的边界路由器通过 TCP(端口 179)建立 BGP 邻居关系。
- 路由交换:交换 <网络前缀,AS 路径,下一跳,度量值> 等信息,其中 AS 路径记录了分组经过的所有 AS 号,用于防止环路和策略控制。
- 路由选择:根据多种路径属性(如 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),这种冲突需在网络层处理。
- 示例:IP 多播地址 224.0.0.1 映射为 MAC 地址
网卡多播支持
- 多播监听:
主机通过 IGMP 协议加入多播组后,网卡会配置多播过滤列表(MCL),仅接收特定 MAC 多播帧,丢弃其他多播帧。 - 硬件加速:
高端网卡支持多播哈希过滤,通过硬件快速判断帧是否属于主机订阅的多播组,减少 CPU 开销。
4.7.3 网际组管理协议 IGMP 和多播路由选择协议
IGMP(Internet Group Management Protocol)
IGMP 是主机与路由器间的协议,用于管理多播组成员关系:
-
版本演进:
- IGMPv1:基本的组加入和查询,无离开机制。
- IGMPv2:增加离开组机制,路由器可快速响应成员离开。
- IGMPv3:支持 "指定源多播",主机可指定只接收来自特定源的多播流(如过滤恶意源)。
-
工作流程:
- 成员加入:主机发送 IGMP 成员关系报告,声明加入某多播组。
- 普遍查询:路由器定期发送查询报文,检测哪些多播组在本地网段有成员。
- 成员响应:主机响应查询,报告自己所属的多播组。
- 离开组:主机发送离开报文,路由器确认后停止转发该组流量。
多播路由选择协议
多播路由协议负责在网络层建立多播转发树,将多播流从源端传递到所有接收方:
-
PIM-DM(Protocol Independent Multicast - Dense Mode):
- 密集模式:适用于多播接收方密集的网络(如局域网)。
- 工作原理:
- 源端发送多播流,路由器先向所有接口泛洪。
- 无接收方的接口发送剪枝报文,从转发树中移除。
- 周期性泛洪 - 剪枝,确保接收方加入时能快速获取流量。
-
PIM-SM(Protocol Independent Multicast - Sparse Mode):
- 稀疏模式:适用于多播接收方分散的大规模网络(如互联网)。
- 核心概念:
- 汇聚点(RP, Rendezvous Point):所有多播流先到达 RP,再转发到接收方。
- 共享树:接收方通过 RP 加入多播组,源端注册到 RP,RP 将流量转发给接收方。
- 工作流程:
- 接收方通过本地路由器向 RP 发送加入请求。
- 源端发送多播流到 RP(注册过程)。
- RP 将流量沿共享树转发给接收方。
- 若流量较大,可建立源特定树(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 域的入口和出口路由器,负责打标签和拆标签。
-
工作流程:
- 标签分发:
通过 LDP(Label Distribution Protocol)或 RSVP-TE(资源预留协议)在 LSR 之间协商标签,建立 LSP。 - 分组转发:
- 入口 LER 接收 IP 分组,查找路由表确定 LSP,添加标签后转发。
- 中间 LSR 根据标签查找转发表,替换为下一跳标签,无需查 IP 路由表。
- 出口 LER 移除标签,按 IP 转发或继续处理。
- 标签分发:
4.9.2 MPLS 首部的位置与格式
MPLS 首部位于链路层首部和 IP 首部之间,称为 "Shim 首部",格式如下(32 位):
| 字段 | 长度(位) | 内容 |
|---|---|---|
| 标签值 | 20 | 标识转发路径 |
| EXP | 3 | 实验位(用于 QoS 优先级) |
| S | 1 | 栈底标识(1 表示最后一个标签,支持标签栈) |
| TTL | 8 | 生存时间,防止环路 |
标签栈机制
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 等。
- 动作:如转发到指定端口、修改字段、丢弃、组表(多播 / 负载均衡)。
- 计数器:记录匹配次数、字节数,用于监控和计费。
-
交互流程:
- 交换机启动后,向控制器发送 Hello 报文,协商协议版本。
- 控制器发送配置报文,设置交换机参数(如安全通道)。
- 交换机收到未知分组时,发送 Packet-In 报文到控制器,请求转发规则。
- 控制器返回 Flow-Mod 报文,下发流表项,交换机按规则转发后续分组。
SDN 的优势与应用
-
优势:
- 灵活性:通过软件编程快速调整网络策略,适应业务变化(如云计算、大数据流量)。
- 简化管理:集中控制避免了传统网络的分散配置,减少人为错误。
- 成本优化:白盒交换机(通用硬件 + SDN 软件)降低设备成本,资源利用率提升。
-
应用场景:
- 数据中心网络:虚拟机迁移时自动调整网络配置,支持弹性扩缩容。
- 广域网(WAN):SD-WAN 通过 SDN 优化企业广域网连接,降低带宽成本。
- 运营商网络:5G 核心网采用 SDN 架构,支持网络切片和按需资源分配。
本章核心逻辑串联
网络层作为互联网的 "神经系统",其设计贯穿了 "抽象 - 互联 - 优化" 的核心逻辑:
-
IP 协议的统一抽象:
通过 IP 地址和数据报格式,将异构网络抽象为逻辑上的统一网络,ARP 和 ICMP 分别解决了地址映射和网络诊断问题,分片机制确保了跨 MTU 传输的兼容性。 -
路由机制的分层设计:
AS 内通过 IGP(如 OSPF)计算最短路径,AS 间通过 BGP 实现策略路由,最长前缀匹配和 Trie 树查找保证了转发效率,路由器的硬件架构则从工程层面实现了高速转发。 -
应对现实需求的扩展技术:
- 多播解决一对多通信的带宽效率问题。
- VPN在公网中构建安全通道,满足企业互联需求。
- NAT缓解了 IPv4 地址短缺,延长了 IPv4 的生命周期。
- MPLS通过标签转发提升性能,支持 QoS 和大规模 VPN。
- SDN通过控制与转发分离,使网络具备可编程能力,适应云时代的动态需求。
-
从 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章 网络层 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://it.en369.cn/jiaocheng/1754093445a2642768.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。


发表评论