Advertisement

计算机网络笔记-第四章 网络层

阅读量:

本章目录

前言

1 网络层提供的两种服务

1.1 电信网:虚电路服务

1.2 因特网:数据报服务

1.3 虚电路服务与数据报服务的对比

2 网络层协议

3 网际协议IP

3.1 虚拟互联网

3.1.1 网络互连的问题

3.1.2 互连网络与虚拟互连网络

3.2 IP地址

3.2.1 二进制和十进制

3.2.2 IP地址的格式和组成

3.2.2.1 IP地址的格式

3.2.2.2 IP地址的组成

3.2.2.3 子网掩码

3.2.3 IP地址分类(ABCDE类)

3.2.3.1 A类地址

3.2.3.2 B类地址

3.2.3.3 C类地址

3.2.3.4 D类和E类地址

3.2.4 保留的IP地址

3.3 划分子网

3.3.1 等长子网划分

3.3.1.1 等分为两个子网

3.3.1.2 等分为四个子网

3.3.1.3 等分为八个子网

3.3.2 变长子网划分

3.3.3 点到点网络的子网掩码

3.3.4 子网掩码另一种表示方法-CIDR

3.3.5 判断IP地址所属的网段

3.3.5.1 判断方法

3.3.5.2 总结

3.3.6 A类网络划分子网

3.3.7 B类网络划分子网

3.4 构造超网

3.4.1 核心原理

3.4.2 实现步骤

3.4.3 超网示例

3.4.3.1 示例1:合并两个网段

3.4.3.2 示例2:合并4个网段

3.4.3.3 合并网络的规律

3.4.4 总结

3.5 IP地址与MAC硬件地址

3.6 IP数据包格式

3.6.1 数据包首部

3.6.1.1 详解

3.6.1.2 抓包查看IP数据包首部

3.6.2 数据分片

3.6.2.1 详解

3.6.2.2 抓包观察数据包分片

3.6.3 数据包生存时间(TTL)

3.6.3.1 详解

3.6.3.2 指定ping命令发送数据包的TTL值

3.6.3.3 抓包查看数据包的TTL变化

3.7 动态路由和静态路由

3.7.1 网络畅通的条件

3.7.2 静态路由

3.7.2.​​1 定义​​

3.7.2.​​​​2 特点​​

3.7.2.​​​​3 适用场景​​

3.7.2.4 配置静态路由

3.7.3 Windows网关和默认路由

3.7.4 动态路由

3.7.4.1 动态路由协议分类

3.7.4.2 距离矢量协议

3.7.4.3 链路状态路由协议

3.7.4.3.1 LSA泛洪

3.7.4.3.2 LSDB维护

3.7.4.3.3 SPF计算

3.7.4.3.4 路由表生成

3.7.4.3.5 总结

3.7.4.2 动态路由-RIP协议

3.7.4.2.1 RIP的定义​​

3.7.4.2.2 核心作用​​

3.7.4.2.3 RIP的版本

3.7.4.2.4 RIP 工作原理​​

3.7.4.2.5 RIP 关键特性​

3.7.4.2.6 RIP协议数据包报文格式

3.7.4.2.7 RIP 的优缺点​​

3.7.4.2.8 RIP 应用场景​​

3.7.4.2.9 RIP配置相关命令行(以Cisco设备为例)​​

3.7.4.2.10 RIP配置案例

3.7.4.3 动态路由-OSPF协议

3.7.4.3.1 OSPF概述

3.7.4.3.2 OSPF基础术语

3.7.4.3.3 OSPF协议的工作过程

3.7.4.3.4 OSPF配置相关命令行(以 Cisco 设备为例)​

3.7.4.3.5 OSPF协议配置案例

3.7.4.4 (外部)边界网关协议-BGP协议

3.7.4.4.1 BGP协议概述

3.7.4.4.2 BGP协议的特点

3.7.4.5 RIP、OSPF​、EIGRP​对比​​

4 网际控制报文协议 ICMP

4.1 ICMP的核心功能

4.1.1 功能一:错误报告​​

4.1.2 ​​功能二:网络诊断与控制​​

4.2 常见ICMP类型与代码

4.3 ICMP 报文结构​​

4.4 ICMP差错报告报文-示例

4.4.1 TTL过期

4.4.2 目标主机不可到达

4.4.3 路由重定向

4.4.4 给程序返回错误消息

4.5 使用ICMP排除网络故障

4.5.1 使用ping诊断网络阻塞

4.5.2 使用ping断定哪一段链路出现故障

4.5.3 使用tracert跟踪数据包路径

4.5.4 使用pathping跟踪数据包路径

4.6 ICMP 的安全性问题

4.6.1 潜在风险​​

4.6.2 ​​重要性权衡​​

5 ARP与RARP

5.1 ARP(地址解析协议)

5.1.1 定义​​

5.1.​​2 工作原理​​

5.1.​​3 应用场景​​

5.1.​​4 现状​​

5.2 RARP(逆地址解析协议)

5.2.1 定义​​

5.2.​​2 工作原理​​

5.2.​​3 应用场景​​

5.2.​​4 现状​​

5.3 ARP与RARP的异同点

5.3.​​1 相同点​​

5.3.​​2 不同点​​

5.4 ARP欺骗之网络执法官

5.4.1 核心功能​​

5.4.2 技术实现原理​​

5.4.3 典型工具示例​​

5.4.4 技术对比(合法 vs 非法)​​

5.4.5 防御“网络执法官”类ARP欺骗​​

6 IP多播-互联网组管理协议IGMP

6.1 组播基础内容

6.1.1 组播IP

6.1.2 组播MAC

6.2 IGMP 的工作原理

6.3 IGMP 的关键特性

6.4 IGMP 的应用场景


前言

网络层关注的是:如何将分组(即IP数据报)从源端 沿着网络路径送达目的端

分组在互联网中的传送,如下图所示。

本章我们只从网络层考虑问题,从网络层看IP数据报的传送。


1 网络层提供的两种服务

在计算机网络领域,网络层应该向运输层提供怎样的服务(“面向连接”还是“无连接”)曾引起了长期的争论。

争论焦点的实质就是,在计算机通信中,可靠交付应当由谁负责?是网络还是端系统(即主机)?

  • 答案:端系统(即主机)

网络层应该向运输层提供怎样的服务?

  • 答案:两种服务
    • 虚电路服务
    • 数据报服务(现代互联网正在使用的)

1.1 电信网:虚电路服务

虚电路表示这只是一条逻辑上的连接 ,分组都沿着这条逻辑连接按照存储转发方式传送,而并不是真正建立了一条物理连接。

请注意,电路交换的电话通信是先建立一条真正的连接 。因此分组交换的虚连接和电路交换的连接只是类似,但并不完全一样。

1.2 因特网:数据报服务

网络层向上只提供简单灵活的、无连接的、尽最大努力交付数据报服务

网络在发送分组时不需要先建立连接。每一个分组(即IP数据报)独立发送,与其前后的分组无关(不进行编号)。

网络层不提供服务质量的承诺。即所传送的分组可能出差错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。

尽最大努力交付好处:

  • 由于传输网络不提供端到端的可靠传输服务,这就使网络中的路由器可以做得比较简单,而且价格低廉(与电信网的交换机相比较)。
  • 如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的传输层负责(包括差错处理、流量控制等)。
  • 采用这种设计思路的好处是:网络的造价大大降低,方式灵活,能够适应多种应用。
  • 因特网能够发展到今日的规模,充分证明了当初采用这种设计思路的正确性。

1.3 虚电路服务与数据报服务的对比

对比的方面 虚电路服务 数据报服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接建立阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组,均按照同一路由进行转发 每个分组独立选择路由进行转发
当结点出故障时 所有通过出故障的节点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点的分组,不一定是按发送顺序到达的
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

2 网络层协议

网络层相关的协议如下表所示:

​协议名称​ ​全称​ ​核心功能​ ​所属模型​ ​备注​
​IP​ Internet Protocol 网络层核心协议,负责逻辑寻址和跨网络路由。 OSI 第三层 / TCP/IP 网络层 包含 IPv4(32位地址)和 IPv6(128位地址)。
​ICMP​ Internet Control Message Protocol 传递网络控制消息(如错误报告、诊断)。 OSI 第三层 / TCP/IP 网络层 常用于 ping(Echo请求/回复)、traceroute
​IGMP​ Internet Group Management Protocol 管理 IP 组播组成员关系(多播通信)。 OSI 第三层 / TCP/IP 网络层 用于路由器与主机间协商组播流量分发。
​OSPF​ Open Shortest Path First 动态路由协议,通过 SPF 算法计算最优路径(内部网关协议)。 OSI 第三层 / TCP/IP 网络层 支持分层路由(区域划分),适用于大型网络。
​BGP​ Border Gateway Protocol 动态路由协议,协调不同自治系统(AS)间的路由策略(外部网关协议)。 OSI 第三层 / TCP/IP 网络层 互联网骨干网的核心协议,基于路径属性选择最优路径。
​ARP​ Address Resolution Protocol 将网络层 IP 地址解析为数据链路层 MAC 地址。 OSI 第二层/第三层边界 工作在局域网内,通过广播请求获取目标 MAC。
​IPsec​ Internet Protocol Security 提供网络层数据加密和身份认证(如 VPN)。 OSI 第三层 / TCP/IP 网络层 支持 AH(认证头)和 ESP(封装安全载荷)协议。
​ICMPv6​ ICMP for IPv6 IPv6 的控制消息协议,替代 ICMP,支持邻居发现、路径 MTU 发现等。 OSI 第三层 / TCP/IP 网络层 集成自动配置(SLAAC)和重复地址检测(DAD)功能。
​EIGRP​ Enhanced Interior Gateway Routing Protocol Cisco 私有的动态路由协议,结合距离向量和链路状态特性。 OSI 第三层 / TCP/IP 网络层 高效收敛,支持多协议(IPv4/IPv6)。
​RIP​ Routing Information Protocol 基于跳数的动态路由协议(距离向量算法)。 OSI 第三层 / TCP/IP 网络层 适用于小型网络,默认每 30 秒更新路由表。
​NAT​ Network Address Translation 将私有 IP 地址转换为公网 IP 地址(解决 IPv4 地址短缺)。 OSI 第三层 / TCP/IP 网络层 常见于家庭路由器,分为静态 NAT 和动态 NAT(PAT)。
​PAT​ Port Address Translation NAT 的扩展,通过端口复用允许多设备共享同一公网 IP。

其中与IP协议配套使用的主要有如下协议:

  • 地址解析协议ARP(Address Resolution Protocol)
  • 逆地址解析协议RARP(Reverse Address Resolution Protocol)
  • 网际控制报文协议ICMP(Internet Control Message Protocol)
  • 网际组管理协议IGMP(Internet Group Management Protocol)

IP、ICMP、ARP、RARP、IGMP五者对比:

协议​ ​所属层级​ ​核心功能​ ​报文方向​ ​依赖协议​ ​现状​
​IP​ 网络层 逻辑寻址、跨网络路由 端到端(源→目的) 广泛使用
​ICMP​ 网络层(辅助协议) 错误报告、网络诊断 IP层封装 IP 依赖IP存在
​ARP​ 数据链路层边缘 IP → MAC 地址解析(局域网内) 广播请求 → 单播响应 IP IPv4专用
​RARP​ 数据链路层边缘 MAC → IP 地址解析(已淘汰) 广播请求 → 单播响应 IP 被DHCP取代
​IGMP​ 网络层 IP组播成员管理 主机 ↔ 路由器 IP 广泛使用

3 网际协议IP

网际协议IP(Internet Protocol)是TCP/IP体系中两个最主要的协议之一,负责 ​​逻辑寻址​ ​ 和 ​​跨网络路由​ ​。其核心目标是将数据包从源设备传输到目的设备,无论两者位于同一个局域网还是全球不同网络。

3.1 虚拟互联网

1. 网络互联的设备:

中间设备 又称为中间系统中继系统。

  • 物理层中继系统:集线器(hub)
  • 数据链路层中继系统:网桥或交换机
  • 网络层中继系统:路由器(router)
  • 网络层以上的中继系统:网关(gateway)

2. 网络互联的设备:路由器

当中继系统是集线器或网桥时,一般并不称为网络互联,因为这仅仅是把一个网络扩大了,而这仍然是一个网络。

网关由于比较复杂,目前使用得很少。

互联网 都是指用路由器进行互联的网络。

由于历史原因,许多有关TCP/IP的文献将网络层使用的路由器称为网关

3.1.1 网络互连的问题

互联在一起的网络要进行通信,会遇到很多问题需要解决,如:

  • 不同的寻址方案
  • 不同的最大分组长度
  • 不同的网络接入机制
  • 不同的超时控制
  • 不同的差错恢复技术
  • 不同的状态报告方法
  • 不同的路由选择技术
  • 不同的用户接入控制
  • 不同的服务(面向连接服务和无连接服务)
  • 不同的管理与控制方式

3.1.2 互连网络与虚拟互连网络

虚拟互连网络 也就是逻辑互连网络 ,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用IP协议就可以使这些性能各异的网络让用户看起来是一个统一的网络。

使用IP协议的虚拟互连网络 可简称为IP网使用虚拟互连网络好处 是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。

3.2 IP地址

3.2.1 二进制和十进制

IP地址经常会在二进制和十进制之间进行转换,其常用的二进制和十进制的对应关系如下图所示。

3.2.2 IP地址的格式和组成

3.2.2.1 IP地址的格式

IP地址用32位二进制来表示,换算成字节,就是4个字节。32些位通常被分割为4个部分,每一部分8位二进制,中间使用符号“.”分开,分成4部分的二进制地址,如:10101100.00010000.00011110.00111000。

IP地址经常被写成十进制的形式,于是,上面的IP地址可以表示为“172.16.30.56”。

本章为了方便说明,将IP地址分为第1部分,第2部分、第3部分和第4部分。

3.2.2.2 IP地址的组成

将32位的IP地址分为网络ID和主机ID,其中网络号net-id表示主机(或路由器)所连接到的网络,主机号host-id则表示该主机(或路由器)。

IP地址可以记为:IP地址 = { <网络号>, <主机号> }

IP地址又分为ABCDE五类,每类的网络号和主机号位数并不相同,其位数情况如下:

  • A类:网络号(前8位) + 主机号(后24位)
  • B类:网络号(前16位) + 主机号(后16位)
  • C类:网络号(前24位) + 主机号(后8位)
  • D类:组播地址,不区分网络号和主机号
  • E类:研究地址,不区分网络号和主机号(不用关心!)
3.2.2.3 子网掩码
  • 子网掩码(Subnet Mask)又叫网络掩码、地址掩码,
  • 它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网、哪些位标识的是主机的位掩码。
  • 子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。

将IP地址和子网掩码进行“与”运算,即可得知IP地址所在网段。

同一网段的计算机子网掩码相同,计算机的网关就就是到其他网段的出口,也就是路由器接口地址。

路由器接口使用的地址可以是本网段中任何一个地址,不过通常使用该网段的第一个可用的地址最后一个可用的地址 ,这是为了尽可能避免和网络中的计算机地址冲突。

3.2.3 IP地址分类(ABCDE类)

IP地址分为ABCDE五类地址,其分类示意图如下所示:

3.2.3.1 A类地址
  • 网络地址的最高位是0 的地址为A类地址。
  • 网络ID是0不能用,127作为保留网段,因此A类地址的第1部分取值范围1-126
  • A类网络默认子网掩码为255.0.0.0。
  • 主机ID由第2部分、第3部分和第4部分组成,每部分的取值范围0-255,共256种取值,你要是学过排列组合就知道,一个A类网络主机数量是256×256×256=166777216 - 2 = 166777214(这里还需减去2的原因:主机ID全0的地址为网络地址,而主机ID全部为1的地址为广播地址)。
3.2.3.2 B类地址
  • 网络地址的最高位是10 的地址为B类地址。
  • IP地址第1部分的取值范围为128-191
  • B类网络默认子网掩码为255.255.0.0。
  • 主机ID由第3部分和第4部分组成,每个B类网络可以容纳的最大主机数量256×256-2(全0全1)=65023。
3.2.3.3 C类地址
  • 网络地址的最高位是110 的地址为C类地址。
  • IP地址第1部分的取值范围为192-223
  • C类网络默认子网掩码为255.255.255.0。
  • 主机ID由第4部分组成,每个C类网络可以容纳的最大主机数量256-2=254。
3.2.3.4 D类和E类地址
  • 网络地址的最高位是1110 的地址为D类地址。

  • D类地址第1部分的取值范围为224-239

  • 用于多播(也称为组播) 的地址,组播地址没有子网掩码。

  • 网络地址的最高位是1111 的地址为E类地址。

  • 第一部分取值范围240-254。

  • 保留为今后使用,在本书中并不讨论这些类型的地址(并且你也不要求了解这些内容)。

3.2.4 保留的IP地址

  • 主机ID全为0的地址 :特指某个网段。比如:192.168.10.0 255.255.255.0,指192.168.10.0网段;
  • 主机ID全为1的地址 :特指该网段的全部主机。如果你的计算机发送数据包使用主机ID全是1的IP地址,数据链层地址用广播地址FF-FF-FF-FF-FF-FF;
  • 0.0.0.0 :如果计算机的IP地址和网络中的其他计算机地址冲突,使用ipconfig命令看到的就是0.0.0.0,子网掩码也是0.0.0.0;
  • 10.0.0.0 :保留的A类私有地址,范围:10.0.0.0~10.255.255.255,不能应用在互联网上,被用在局域网络中。
  • 127.0.0.1 :是本地环回地址,指本机地址,一般用来测试使用。回送地址(127.x.x.x)是本机回送地址(Loopback Address),即主机IP堆栈内部的IP地址;
  • 169.254.0.0 :实际上是自动私有IP地址,范围:169.254.0.0~169.254.255.255。当没有DHCP服务,请求不到ip地址后ip地址就会变成这类地址;
  • 172.16.0.0~172.31.0.0 :保留的B类私有地址,范围:172.16.0.0~172.31.255.255。
  • 192.168.0.0 :保留的C类私有地址,范围:192.168.0.0~192.168.255.255。

3.3 划分子网

场景一 :按照IP地址的传统分类方法,若一个网络有200台计算机,分配一个C类网络:212.2.3.0 255.255.255.0,则可用的地址范围为212.2.3.1~212.2.3.254,一共有254个地址可用。这种场景算是有富余。

场景二 :按照IP地址的传统分类方法,若一个网络有400台计算机,分配一个C类网络的话,地址就不够用了,那么就分配一个B类网络:131.107.0.0 255.255.0.0,则该B类网络的可用地址范围为131.107.0.1~131.107.255.154,一共有65534个地址可用,这就造成了极大浪费。

为了避免公网地址浪费,充分利用公网地址,可采用划分子网 的做法。子网划分可分为两部分任务

  1. 确定子网掩码的长度;
  2. 确定子网中第一个可用IP地址和最后一个可用IP地址;

3.3.1 等长子网划分

等分子网​ ​(Equal Subnetting)是指将一个较大的IP网络划分为多个​​大小相等​ ​的子网,每个子网的主机数量相同。这种划分方式属于​​固定长度子网划分(FLSM)​ ​,适用于需要简单、均匀分配地址的场景。

3.3.1.1 等分为两个子网

1. 场景:

某公司有两个部门,每个部门100台计算机,通过交换机连接,组成了局域网,通过路由器连接Internet。这两个部门的200台计算机使用C类网络:192.168.0.0 ,该网段的子网掩码为255.255.255.0,连接局域网的路由器接口配置使用该网段的第一个可用的IP地址:192.168.0.1。

注意:虽然路由器可以使用该网段的任何可用IP地址,但是为了避免该网段计算机的地址和路由器的地址冲突,一般将路由器设置为该网段的第一个可用IP地址或者最后一个可用IP地址。

2. 解决方案:等分为2个子网

为了安全考虑,你打算将两个部门的计算机分为两个网段,中间使用路由器隔开。现在将192.168.0.0 255.255.255.0 这个C类地址划分成两个网段。

  • A和B两个子网的子网掩码都为255.255.255.128;
  • A子网可用地址范围:192.168.0.1~192.168.0.126;
  • B子网可用地址范围:192.168.0.129~192.168.0.254;
  • 注意:主机位全为0、主机位全为1,这两种情况的IP地址是不能分配给计算机使用的;
    • 如A子网的第一个IP地址和最后一个IP地址:192.168.0.0、192.168.0.127,B子网的第一个IP地址和最后一个IP地址:192.168.0.128、192.168.0.255。

划分两个子网后网络规划如下图所示:

3.3.1.2 等分为四个子网

1. 场景:

假如公司有4个部门,每个部门有50台计算机,现在使用192.168.0.0/24这个C类网段,从安全考虑你打算每个部门的计算机放置到独立的网段中,这就要求你将192.168.0.0/24这个C类网络划分为4个网段,如何划分子网呢?

2. 解决方案:等分为4个子网

要想等分为4个子网,你需要将子网掩码往右移动两位,这样第1位和第2位就变成网络位。

  • A、B、C和D4个子网的子网掩码都为255.255.255.192

  • A子网可用地址范围:192.168.0.1~192.168.0.62

  • B子网可用地址范围:192.168.0.65~192.168.0.126

  • C子网可用地址范围:192.168.0.129~192.168.0.190

  • D子网可用地址范围:192.168.0.193~192.168.0.254

  • 注意:每个子网的最后一个地址都是自身子网的广播地址(即主机位全为1),不能分配给计算机使用。

    • 如A子网的192.168.0.63,B子网的192.168.0.127,C子网的192.168.0.191,D子网的192.168.0.255。如下图所示。
3.3.1.3 等分为八个子网

以此类推,要想把一个C类网络等分为8个子网,子网掩码需要往右移动3位,才能划分出8个子网。此时,第1位、第2位和第3位都变成了网络位。如下图所示。

3.3.2 变长子网划分

规律:若一个子网地址是原来网段的^{n},子网掩码就在原网段的基础上后移n位。

变长子网,其各子网的子网掩码是不同的。

3.3.3 点到点网络的子网掩码

点到点网络,这种情况可以看作只有2台计算机,故其子网掩码最好是252,子网是原来网络的^{6},即子网掩码向后移动6位(11111111.11111111.11111111.11111100 = 255.255.255.252)

3.3.4 子网掩码另一种表示方法-CIDR

我们知道,IP地址有“类”的概念,可分为ABCDE类地址,其中,A类地址默认子网掩码为255.0.0.0,B类地址默认子网掩码为255.255.0.0,C类地址默认子网掩码为255.255.255.0。

等长子网划分和变长子网划分,打破了IP地址“类”的概念,子网掩码也打破了字节限制,这种子网掩码被称为可变长子网掩码VLSM(Variable Length Subnet Masking)

在 VLSM 的基础上又进一步研究出无分类编址方法,它的正式名字是无分类域间路由选择 CIDR (Classless Inter-Domain Routing) 。 子网掩码中1的个数被称为CIDR值

子网掩码的二进制写法和相对应CIDR的斜线表示,如下表:

二进制子网掩码 子网掩码 CIDR值
11111111.00000000.00000000.00000000 255.0.0.0 /8
11111111.10000000.00000000.00000000 255.128.0.0 /9
11111111.11000000.00000000.00000000 255.192.0.0 /10
11111111.11100000.00000000.00000000 255.224.0.0 /11
11111111.11110000.00000000.00000000 255.240.0.0 /12
11111111.11111000.00000000.00000000 255.248.0.0 /13
11111111.11111100.00000000.00000000 255.252.0.0 /14
11111111.11111110.00000000.00000000 255.254.0.0 /15
11111111.11111111.00000000.00000000 255.255.0.0 /16
11111111.11111111.10000000.00000000 255.255.128.0 /17
11111111.11111111.11000000.00000000 255.255.192.0 /18
11111111.11111111.11100000.00000000 255.255.224.0 /19
11111111.11111111.11110000.00000000 255.255.240.0 /20
11111111.11111111.11111000.00000000 255.255.248.0 /21
11111111.11111111.11111100.00000000 255.255.252.0 /22
11111111.11111111.11111110.00000000 255.255.254.0 /23
11111111.11111111.11111111.00000000 255.255.255.0 /24
11111111.11111111.11111111.10000000 255.255.255.128 /25
11111111.11111111.11111111.11000000 255.255.255.192 /26
11111111.11111111.11111111.11100000 255.255.255.224 /27
11111111.11111111.11111111.11110000 255.255.255.240 /28
11111111.11111111.11111111.11111000 255.255.255.248 /29
11111111.11111111.11111111.11111100 255.255.255.252 /30

3.3.5 判断IP地址所属的网段

3.3.5.1 判断方法

将IP地址中的主机位全归0,就是该IP地址所在的网段。

  • 示例1:判断192.168.0.101/26所在的子网网段

  • 示例2:判断192.168.0.101/27所在的子网网段

3.3.5.2 总结

3.3.6 A类网络划分子网

要将A类网络42.0.0.0 255.0.0.0等分为4个子网,则子网掩码往右移动2位。如下图所示。

ABCD4个子网的第一个可用IP地址和最后一个可用IP地址如下所示:

3.3.7 B类网络划分子网

要将B类网络131.107.0.0 255.255.0.0等分为2个子网,则子网掩码往右移动1位。如下图所示。

A子网和B子网的第一个可用IP地址和最后一个可用IP地址如下所示:

3.4 构造超网

​ 超网(Supernetting)​ ​ 是一种将多个连续的子网合并为更大网络的技术,也称为​​路由聚合​ ​或​​CIDR(无类别域间路由)​ ​。其核心目的是减少路由表规模、优化地址分配效率,常用于ISP(互联网服务提供商)或大型网络中。

3.4.1 核心原理

​反向操作子网划分​ ​:
子网划分是将一个大网络拆分为多个小网络,而超网则是将多个小网络合并为一个大网络。

​缩短子网掩码​ ​:
通过减少网络位数(即增加主机位),合并多个子网。例如:

复制代码
 * 合并 `192.168.0.0/24` 和 `192.168.1.0/24` → 超网为 `192.168.0.0/23`。

​共同前缀匹配​ ​:
合并的子网必须具有相同的前缀部分,且地址范围连续。

3.4.2 实现步骤

1. 确定要合并的子网​

  • 要求:子网必须是连续的,且掩码长度相同。
  • 示例:合并 203.0.113.0/24203.0.114.0/24

​2. 计算共同前缀长度​

  • 比较两个子网的二进制地址,找到公共前缀位数。

    • 203.0.113.011001011.00000000.01110001.00000000
    • 203.0.114.011001011.00000000.01110010.00000000
  • 公共前缀为前23位(11001011.00000000.011100),因此合并后的掩码为 /22

​3. 计算超网地址​

  • 超网地址取公共前缀,剩余位设为0。
  • 示例:公共前缀 11001011.00000000.01110000.00000000203.0.112.0/22

​4. 验证地址范围​

  • 合并后的超网需覆盖所有原始子网。
  • 203.0.112.0/22 包含地址范围:203.0.112.1 ~ 203.0.115.254,覆盖原两个子网。

3.4.3 超网示例

3.4.3.1 示例1:合并两个网段

1. 场景:

某企业一开始有A网段,A网段有200台计算机,A网段为192.168.1.0 255.255.255.0。后来,计算机需要增加多200台,由于A网段资源不够,于是新增B网段来放置新增计算机,B网段为192.168.0.0 255.255.255.0。

2. 问题:

如下图所示,在这种情况下,A网段计算机要想和B网段计算机通信,就必须通过路由器转发。这就出现了一个问题,通信效率不高。因为从物理上看,400台计算机都是连接一起的,更好的方式应该是直接通信而非由路由器转发通信。

3. 解决方案:

此时更好的办法就是构造超网,将192.168.0.0/24和192.168.1.0/24合并成一个网段。实现如下。

  • 子网掩码改成:255.255.254.0
  • 合并后的网段为:192.168.0.0/23(网络位往左移动1位)
  • 可用IP地址为:192.168.0.1~192.168.1.254

构造超网后,IP地址的配置如下图所示。此时,计算机192.168.0.2和计算机192.168.1.2通信时,不再需要经过路由器转发,而是通过交换机直接通信。

3.4.3.2 示例2:合并4个网段

1. 待合并网段:

  • 192.168.0.0/24
  • 192.168.1.0/24
  • 192.168.2.0/24
  • 192.168.3.0/24

2. 合并后网段:

  • 192.168.0.0/22(网络位往左移动2位)
3.4.3.3 合并网络的规律

1. 情况1:

合并两个C类网络,如下:

  • 192.168.0.0 255.255.255.0
  • 192.168.1.0 255.255.255.0

子网掩码往左移动1位,即可合并成192.168.0.0 255.255.254.0。

2. 情况2:

合并两个C类网络,如下:

  • 192.168.2.0 255.255.255.0
  • 192.168.3.0 255.255.255.0

子网掩码往左移动1位,可合并成192.168.2.0 255.255.254.0。

3. 情况3:

合并两个网段,需要向左移动1位子网掩码,但是并不是随便两个连着的子网都能移动1位子网掩码被合并的

比如:不能通过向左移动1位子网掩码将192.168.1.0 255.255.255.0和192.168.2.0 255.255.255.0网段合并。如下图所示,子网掩码往左移动1位,网络部分还是不一样。

4. 情况4:

合并四个网段,如下:

  • 192.168.0.0 255.255.255.0
  • 192.168.1.0 255.255.255.0
  • 192.168.2.0 255.255.255.0
  • 192.168.3.0 255.255.255.0

如下图所示,需要将子网掩码往左移动2位,可合并成192.168.0.0 255.255.252.0。

5. 总结:

以下将192.168.0.0 255.255.255.0、192.168.1.0 255.255.255.0、192.168.2.0 255.255.255.0简称为0网段、1网段,2网段,以此类推。

  • 向左移动1位子网掩码可以合并0、1网段,也可合并2、3网段,也可合并4、5网段,也可合并6、7网段;
  • 向左移动2位子网掩码可以合并0、1、2、3网段,也可以合并4、5、6、7网段;
  • 向左移动3位子网掩码可以合并0、1、2、3、4、5、6、7网段;

进一步思考:

192.168.178.0 255.255.255.0和192.168.179.0 255.255.255.0这两个连续的网段是否能够向左移动1位子网掩码合并成一个网络?

答:能,合并后的网段为192.168.179.0 255.255.254.0。可以使用这样的方法来判断:178iv 2dots 0179iv 2dots 1,根据上面的总结,0和1网段是可以通过子网掩码向左移动1位,合并成一个网络的。

3.4.4 总结

  • 判断连续的2个网段是否能够合并,只要第一个网络号能被2整除 ,就能够通过左移1位子网掩码合并;
  • 判断连续的4个网段是否能够合并,只要第一个网络号能被4整除 ,就能够通过左移2位子网掩码合并;
  • 判断连续的8个网段是否能够合并,只要第一个网络号能被8整除 ,就能够通过左移3位子网掩码合并;

3.5 IP地址与MAC硬件地址

计算机A和计算机B的通信过程,如下图所示。

  • 交换机基于数据帧的MAC地址转发数据帧,路由器基于数据包的IP地址转发数据包;
  • 数据包在传输过程不变,过网络设备数据帧要有个新的物理层地址重新封装;
  • MAC地址决定 了数据帧下一跳 由哪个设备接收,而IP地址决定 了数据包的起点和终点

3.6 IP数据包格式

3.6.1 数据包首部

3.6.1.1 详解

一个IP数据报由首部和数据两部分组成。其中,首部又可分为固定和可变两部分组成。

  • 首部的前一部分是固定长度,共20字节,是所有IP数据报必须具备的。
  • 首部的后一部分是可变长度,是一些可选字段。

如图所示,IP数据报首部包含以下关键字段:

​字段​ ​长度(位)​ ​作用​
​版本(Version)​ 4
  • 标识IP协议版本(IPv4=4,IPv6=6)。
  • 以4字节为单位的首部长度,实际长度需乘以4(如5表示20字节,默认无选项)。
  • 最大数值是15个单位(即首部长度最大值是60字节)
  • 指定优先级和QoS(如延迟、吞吐量、可靠性)。
  • 在一般i情况下都不使用这个字段。
  • 整个IP数据报的长度(首部+数据),最大2^{16} -1 = 65535字节。实际上传输这样长的数据包在现实中是极少遇到的。
  • 一般的,总长度必须不超过最大传送单元MTU。
  • 是一个计数器,唯一标识数据报。
  • 每产生一个数据包,计数器就加1。
  • 主要用于分片重组。
  • 占​​3位​ ​,用于控制数据包的分片行为。
  • 3位 = (最高位)保留位 + DF + (最低位)MF。
  • DF(Don't Fragment) = 0:表示允许分片;DF = 1:表示禁止分片;
  • MF(More Fragment) = 0:表示是最后的分片;MF = 1:表示不是最后的分片;
  • 指定分片在原始数据中的位置(以8字节为单位)。

  • IP数据包分片举例如下图所示:
    |
    |​​生存时间(TTL)​ ​|8|

  • 数据报在网络中可通过的路由器数的最大值。

  • 每经过一跳减1,归零则丢弃。防止无限循环。

  • 标识上层协议(如TCP=6,UDP=17,ICMP=1)。
  • 校验首部完整性(仅IPv4,IPv6由上层协议处理)。

  • 只检验数据报的首部,不检验数据部分。这里不采用CRC检验码而采用简单的计算方法。
    |
    |​​源地址(Source IP)​ ​|32(4字节)|

  • 发送方IP地址。

  • 接收方IP地址。
  • 可选字段(如时间戳、路由记录),若不足需填充对齐至32位。
  • 用来支持排错、测量和安全等措施,内容很丰富。
  • 增加首部的可变部分目的是为了增加IP数据报的功能,但这同时也使得IP数据报的首部长度成为可变的。这就增加了每一个路由器处理数据报的开销。
  • 实际上这些选项很少被使用。

||

3.6.1.2 抓包查看IP数据包首部

3.6.2 数据分片

3.6.2.1 详解

在IP层下面的每一种数据链路层都有其特有的帧格式,帧格式也定义了帧中数据字段的最大长度,数据字段最大长度称为最大传送单元MTU(Maximum Transfer Unit)。

当一个IP数据包封装成链路层的帧时,此数据包的总长度(即首部加上数据部分)一定不能超过下面的数据链路层的MTU值。例如:以太网就规定其MTU值是1500字节。若所传送的数据包长度超过数据链路层的MTU值,就必须把过长的数据包进行分片处理。

这里介绍两种分片情况,如下:

  • 情况一:在计算机A的数据链路层分片

  • 情况二:在R1和R2链路的数据链路层分片

3.6.2.2 抓包观察数据包分片
复制代码
 C:\Users\win7> ping www.cctv.com -l 3500

    
  
    
 正在 Ping cctv.xdwscache.ourglb0.com [111.11.31.114] 具有 3500 字节的数据:
    
  
    
 来自 111.11.31.114 的回复: 字节=3500 时间=10ms TTL=128
    
  
    
 来自 111.11.31.114 的回复: 字节=3500 时间=11ms TTL=128
    
  
    
 来自 111.11.31.114 的回复: 字节=3500 时间=10ms TTL=128
    
  
    
 来自 111.11.31.114 的回复: 字节=3500 时间=11ms TTL=128
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/iAM3wHE0UtcLXev1Z68doCQkjbBI.png)




3.6.3 数据包生存时间(TTL)

3.6.3.1 详解

各种操作系统发送数据包,在网络首部都要给TTL字段赋值,用来限制该数据包能够通过的路由器数量。主流操作系统的默认TTL值,如下表所示。

操作系统​ ​默认 TTL 值​ ​备注​
​Windows​ 128 所有现代版本(XP/7/8/10/11)均使用 128。
​Linux​ 64 主流发行版(Ubuntu/CentOS/Debian 等)均默认设为 64。
​macOS​ 64 从 macOS Sierra 到 Ventura 均保持 64。
​Android​ 64 基于 Linux 内核,默认 TTL 继承自 Linux。
​iOS​ 64 基于 Darwin 内核(类似 BSD),与 macOS 一致。
​FreeBSD​ 64 默认 TTL 为 64,可通过系统参数调整。
​Solaris​ 128 早期版本(如 Solaris 10)使用 128,新版可能调整为 64。
​OpenBSD​ 64 默认 TTL 为 64。
​NetBSD​ 64 默认 TTL 为 64。
3.6.3.2 指定ping命令发送数据包的TTL值

ping命令的参数-i:指定发送的ICMP请求数据包的TTL值。

一个路由器在转发数据包之前将该数据包的TTL减1,如果减1后TTL变为0,路由器就会丢弃该数据包,然后产生一个ICMP响应数据包给发送者,说明TTL耗尽。通过这种方式,你能够知道到达目标地址经过哪些路由器。

复制代码
 C:\Users\czp94> ping edu.51cto.com -i 2

    
  
    
 正在 Ping yun.dns.51cto.com [120.55.239.108] 具有 32 字节的数据:
    
  
    
 来自 172.16.0.250 的回复: TTL 传输中过期。
    
  
    
 来自 172.16.0.250 的回复: TTL 传输中过期。
    
  
    
 来自 172.16.0.250 的回复: TTL 传输中过期。
    
  
    
 来自 172.16.0.250 的回复: TTL 传输中过期。
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/Uic4dwyJQSbG2Wj1zO5uvXEPFkf8.png)
3.6.3.3 抓包查看数据包的TTL变化

ping一个不存在的网段,会在R1和R2中间来回转,TCL逐渐减小。

3.7 动态路由和静态路由

3.7.1 网络畅通的条件

计算机网络畅通的条件:数据包能去能回。 道理很简单、也很好理解,却是我们排除网络故障的理论依据。

网络不通的情况:

3.7.2 静态路由

3.7.2.​​1 定义​
  • ​手动配置​ ​:管理员通过命令行或配置工具手动定义路由表的条目,指定目的网络、下一跳地址和出站接口。
  • ​无自动更新​ ​:路由信息不会自动调整,除非管理员手动修改。
3.7.2.​​2 特点​
​特性​ ​描述​
​配置方式​ 手动配置,依赖管理员操作。
​灵活性​ 简单、直接,但扩展性差(适合小型网络)。
​资源占用​ 无额外计算和协议开销,设备性能消耗低。
​可靠性​ 依赖管理员维护,若网络拓扑变化需手动更新,易出错。
​安全性​ 无协议交互,不易受攻击(如路由欺骗)。
3.7.2.​​3 适用场景​
  • ​小型网络​ ​:如家庭网络、实验室环境,网络结构简单且稳定。
  • ​特定路径需求​ ​:需要强制流量走特定路径(如通过防火墙或专用链路)。
  • ​冗余链路备份​ ​:与动态路由结合,作为默认路由或备份路径。
3.7.2.4 配置静态路由

1. 场景

如图所示,主机0 ping 主机1,网络要想通,要求沿途的路由器0、路由器1、路由器2、路由器3都必须有到192.168.1.0/24网络的路由,这样数据包才能到达主机1。同理,主机1要回应数据包给主机0,沿途所有的路由器必须有到192.168.0.0/24的路由,这样数据包才能回来。

  • 路由器0直连1、2两个网段,3、4、5网段没有直连,需要添加到3、4、5网段的路由;
  • 路由器1直连2、3两个网段,1、4、5网段没有直连,需要添加到1、4、5网段的路由;
  • 路由器2直连3、4两个网段,1、2、5网段没有直连,需要添加到1、2、5网段的路由;
  • 路由器3直连4、5两个网段,1、2、3网段没有直连,需要添加到1、2、3网段的路由;

2. 配置IP地址

路由器配置IP的命令行:

复制代码
    ip address 192.168.1.1 255.255.255.0
    
    bash

各设备的IP配置如下表。

设备名称 端口 IP地址
主机0 Fa0 192.168.0.2/24
路由器0 Fa0/0 192.168.0.1/24
路由器0 Se3/0 172.16.0.1/24
路由器1 Se2/0 172.16.0.2/24
路由器1 Se3/0 172.16.1.1/24
路由器2 Se2/0 172.16.1.2/24
路由器2 Se3/0 172.16.2.1/24
路由器3 Se2/0 172.16.2.2/24
路由器3 Fa0/0 192.168.1.1/24
主机1 Fa0 192.168.1.2/24

3. 配置静态路由

配置路由的相关命令行:

复制代码
 # 查看路由表

    
 show ip route  
    
  
    
 # 添加路由: ip route <目标网络> <子网掩码> <下一跳>
    
 ip route 192.168.0.0 255.255.255.0 172.16.1.2
    
  
    
 # 删除路由
    
 no ip route 192.168.0.0 255.255.255.0 172.16.1.2 
    
    
    
    
    bash

注意点:路由器只关心到某个网段如何转发!

  • 路由器只关心到某个网段如何转发数据包,因此我们在路由器上添加路由,必须是到某个网段(子网)的路由,不能添加到某个特定地址的路由。
  • 按以下命令试图添加到一个IP地址的路由,路由器报错。
复制代码
>       1. R1(config)#ip route 192.168.1.3 255.255.255.0 172.16.0.2

>  
>       2.  
>  
>       3. %Inconsistent address and mask --错误的地址和子网掩码
>  
>  
>  
>  
>     bash
  • 如果你就想让路由器转发到一个IP地址的路由,子网掩码要写成四个255,这就意味着IP地址的32位二进制是全部的网络位,该网段中就这一个地址。
复制代码
>     R1(config)#ip route 192.168.1.3 255.255.255.255 172.16.0.2
>  
>     bash
  • 路由器0:配置静态路由
复制代码
 Router0>en

    
 Router0#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 1 subnets
    
 C       172.16.0.0 is directly connected, Serial3/0
    
 C    192.168.0.0/24 is directly connected, FastEthernet0/0
    
 Router0#
    
 Router0#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router0(config)#ip route 172.16.1.0 255.255.255.0 172.16.0.2
    
 Router0(config)#ip route 172.16.2.0 255.255.255.0 172.16.0.2
    
 Router0(config)#ip route 192.168.1.0 255.255.255.0 172.16.0.2
    
 Router0(config)#
    
 Router0#
    
 %SYS-5-CONFIG_I: Configured from console by console
    
  
    
 Router0#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 3 subnets
    
 C       172.16.0.0 is directly connected, Serial3/0
    
 S       172.16.1.0 [1/0] via 172.16.0.2
    
 S       172.16.2.0 [1/0] via 172.16.0.2
    
 C    192.168.0.0/24 is directly connected, FastEthernet0/0
    
 S    192.168.1.0/24 [1/0] via 172.16.0.2
    
 Router0#
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/CXeRZucjvoKaBEVd1FN6SPyn7b3T.png)
  • 路由器1:配置静态路由
复制代码
 Router1>en

    
 Router1#show ip route 
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 2 subnets
    
 C       172.16.0.0 is directly connected, Serial2/0
    
 C       172.16.1.0 is directly connected, Serial3/0
    
 Router1#
    
 Router1#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router1(config)#ip route 192.168.0.0 255.255.255.0 172.16.0.1
    
 Router1(config)#ip route 172.16.2.0 255.255.255.0 172.16.1.2
    
 Router1(config)#ip route 192.168.1.0 255.255.255.0 172.16.1.2
    
 Router1(config)#
    
 Router1(config)#
    
 Router1#
    
 %SYS-5-CONFIG_I: Configured from console by console
    
  
    
 Router1#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 3 subnets
    
 C       172.16.0.0 is directly connected, Serial2/0
    
 C       172.16.1.0 is directly connected, Serial3/0
    
 S       172.16.2.0 [1/0] via 172.16.1.2
    
 S    192.168.0.0/24 [1/0] via 172.16.0.1
    
 S    192.168.1.0/24 [1/0] via 172.16.1.2
    
 Router1#
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/lsUObaIkcm1jwg2Mp08oDZNn7Qxz.png)
  • 路由器2:配置静态路由
复制代码
 Router2>en

    
 Router2#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 2 subnets
    
 C       172.16.1.0 is directly connected, Serial2/0
    
 C       172.16.2.0 is directly connected, Serial3/0
    
 Router2#
    
 Router2#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router2(config)#ip route 192.168.0.0 255.255.255.0 172.16.1.1
    
 Router2(config)#ip route 172.16.0.0 255.255.255.0 172.16.1.1
    
 Router2(config)#ip route 192.168.1.0 255.255.255.0 172.16.2.2
    
 Router2(config)#
    
 Router2#
    
 %SYS-5-CONFIG_I: Configured from console by console
    
  
    
 Router2#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 3 subnets
    
 S       172.16.0.0 [1/0] via 172.16.1.1
    
 C       172.16.1.0 is directly connected, Serial2/0
    
 C       172.16.2.0 is directly connected, Serial3/0
    
 S    192.168.0.0/24 [1/0] via 172.16.1.1
    
 S    192.168.1.0/24 [1/0] via 172.16.2.2
    
 Router2#
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/U9gPEet4FVNqCc7KzTjsxhIr1bln.png)
  • 路由器3:配置静态路由
复制代码
 Router3>en

    
 Router3#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 1 subnets
    
 C       172.16.2.0 is directly connected, Serial2/0
    
 C    192.168.1.0/24 is directly connected, FastEthernet0/0
    
 Router3#
    
 Router3#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router3(config)#ip route 192.168.0.0 255.255.255.0 172.16.2.1
    
 Router3(config)#ip route 172.16.0.0 255.255.255.0 172.16.2.1
    
 Router3(config)#ip route 172.16.1.0 255.255.255.0 172.16.2.1
    
 Router3(config)#
    
 Router3#
    
 %SYS-5-CONFIG_I: Configured from console by console
    
  
    
 Router#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 3 subnets
    
 S       172.16.0.0 [1/0] via 172.16.2.1
    
 S       172.16.1.0 [1/0] via 172.16.2.1
    
 C       172.16.2.0 is directly connected, Serial2/0
    
 S    192.168.0.0/24 [1/0] via 172.16.2.1
    
 C    192.168.1.0/24 is directly connected, FastEthernet0/0
    
 Router3#
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/umR2ME5bfVWrOwAT0l7yh9QsxZC1.png)

4. 网络通达性验证

结果正常:主机0 ping 主机1,网络通。

3.7.3 Windows网关和默认路由

  • 计算机也有路由表,我们可以在计算机上route print 显示Windows操作系统上的路由表;

  • netstat -r 也可以显示Windows操作系统上的路由表;

  • 如图所示,给计算机配置网关就是给计算机添加默认路由;

  • Windows添加路由的命令行:

复制代码
 # 命令行添加(默认)路由,语法:route add <目标网络> mask <子网掩码> <下一跳>

    
 route add 0.0.0.0 mask 0.0.0.0 192.168.191.154
    
  
    
    
    
    
    bash

3.7.4 动态路由

3.7.4.1 动态路由协议分类
3.7.4.2 距离矢量协议

距离矢量路由协议 的路由器周期性地泛洪自己的路由表。通过路由的交互,每台路由器都从相邻的路由器学习到路由,并且加载进自己的路由表中,然后再通告给其他相邻路由器。
对于网络中的所有路由器而言,路由器并不清楚网络的拓扑,只是简单的知道要去往某个目的网段方向在哪里,开销有多大。

3.7.4.3 链路状态路由协议
3.7.4.3.1 LSA泛洪

链路状态路由协议通告的的是链路状态而不是路由信息。链路状态路由协议的路由器之间首先会建立邻居关系,然后彼此之间开始交互LSA(LinkState Advertisement,链路状态通告)。

3.7.4.3.2 LSDB维护

每台路由器都会产生LSA,路由器将接收到的LSA放入自己的LSDB(Link State DataBase,链路状态数据库) 。路由器通过对LSDB中所存储的LSA进行解析,进而了解全网拓扑。

3.7.4.3.3 SPF计算

每台路由器基于LSDB,使用SPF(Shortest Path first,最短路径优先) 算法进行计算。每台路由器都计算出一棵以自己为根的、无环的、拥有最短路径的“树”。有了这棵“树”,路由器就已经知道了到达所有网段的优选路径。

3.7.4.3.4 路由表生成

路由器将计算出来的优选路径,加载进自己的路由表**(Routing Table)** 。

3.7.4.3.5 总结

3.7.4.2 动态路由-RIP协议
3.7.4.2**.1 RIP的定义​** ​

RIP(Routing Information Protocol,路由信息协议)是一种基于​​距离矢量算法​ ​的动态路由协议,用于在局域网或中小型广域网中交换路由信息。

3.7.4.2**.2 核心作用​** ​
  • 通过跳数(Hop Count)衡量路径优劣,选择最优路径。
  • 自动构建和维护路由表,适应网络拓扑变化。
3.7.4.2**.3 RIP的版本**
​版本​ ​名称​ ​关键特性​
RIPv1 RIPv1 有类路由(Classful),不支持VLSM和认证。
RIPv2 RIPv2 无类路由(Classless),支持VLSM、组播更新和简单认证。
RIPng RIP next generation 支持IPv6的RIP协议。
3.7.4.2**.4 RIP 工作原理​** ​

​​1. 距离矢量算法​​

  • ​路由更新机制​ ​:

    • 路由器定期(默认30秒)向邻居发送完整的路由表。
    • 更新通过​​广播(RIPv1)​ ​或​​组播(RIPv2,224.0.0.9)​ ​发送。
  • ​跳数度量​ ​:

    • 每经过一个路由器,跳数加1。
    • ​最大跳数​ ​为15,超过15的路由视为不可达。

​​2. 路由环路避免​​

  • ​水平分割(Split Horizon)​ ​:禁止将来自某接口的路由信息从同一接口发回。
  • ​毒性逆转(Poison Reverse)​ ​:当路由失效时,立即将跳数设置为16(不可达)并通告邻居。

3. 举例说明

场景(如下图所示):192.168.10.0/24网段如何通过RIP协议通告给网络中的其他路由器的。如果学到到一个网段有两条路径,只保留最佳路径。

3.7.4.2**.5 RIP 关键特性** ​

​​​​适用场景​ ​:中小型网络,简单部署。

​收敛速度​ ​:较慢(依赖定期更新,收敛时间可能长达数分钟)。

​协议开销​ ​:广播/组播更新可能占用带宽。

3.7.4.2.6 RIP协议数据包报文格式


3.7.4.2**.7 RIP 的优缺点​** ​

​优点​

复制代码
* ​**​简单易用​** ​:配置门槛低,适合小型网络。
* ​**​兼容性好​** ​:支持多种设备厂商。
  • ​缺点​
    • ​扩展性差​ ​:跳数限制(最大15跳)不适用于大型网络。
    • ​收敛速度慢​ ​:网络变化时需等待更新周期,易产生临时环路。
    • ​安全性低​ ​:RIPv1无认证机制,易受伪造路由更新攻击。
3.7.4.2**.8 RIP 应用场景​** ​
  • ​企业分支机构网络​ ​:通过RIPv2实现多站点互联。
  • ​教育/实验室环境​ ​:用于教学动态路由协议原理。
  • ​IPv6过渡网络​ ​:RIPng支持IPv6地址族的路由分发。
3.7.4.2**.9 RIP配置相关命令行(以Cisco设备为例)​** ​
复制代码
 # 启用RIP并指定版本  
    
 Router(config)# router rip  
    
 Router(config-router)# version 2  
    
  
    
 # 宣告直连网络  network <直连网段>
    
 # 若是同类网段,则可合并。
    
 # 如:172.16.2.0 172.16.4.0都是B类网络,可合并写成:network 172.16.0.0
    
 Router(config-router)# network 192.168.1.0  
    
 Router(config-router)# network 10.0.0.0  
    
  
    
 # 关闭自动汇总(可选)  
    
 Router(config-router)# no auto-summary
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/I095RQ7jaUPudkSvmOxLwq24nDgr.png)
复制代码
 # 验证命令

    
  
    
 # 查看路由表中的RIP路由  
    
 show ip route rip
    
  
    
 # 查看RIP邻居信息  
    
 show ip protocols
    
  
    
 # 开启实时监控路由更新
    
 # 显示发送和接收到的RIP路由更新信息,显示路由器使用了RIP的V1版还是V2版本
    
 debug ip rip
    
  
    
 # 关闭实时监控路由更新
    
 no debug ip rip
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/IAk6lup43iJsUeToEQD5bzr71FNg.png)
3.7.4.2.10 RIP配置案例

1. 搭建实验环境

2. 路由器配置RIP

以路由器2为例,路由器0~4均按照如下命令配置RIP。

复制代码
 Router2>

    
 Router2>en
    
 Router2#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router2(config)#router rip
    
 Router2(config-router)#network 172.16.0.0
    
 Router2(config-router)#
    
 Router2(config-router)#
    
    
    
    
    bash

3. 查看路由表

以路由器2为例,路由器2动态学到了4条路由(2条直连路由除外)。

复制代码
 Router2#

    
 Router2#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
      172.16.0.0/24 is subnetted, 6 subnets
    
 C       172.16.0.0 is directly connected, FastEthernet0/0
    
 R       172.16.1.0 [120/2] via 172.16.2.2, 00:00:25, Serial2/0
    
 C       172.16.2.0 is directly connected, Serial2/0
    
 R       172.16.3.0 [120/1] via 172.16.2.2, 00:00:25, Serial2/0
    
 R       172.16.4.0 [120/1] via 172.16.2.2, 00:00:25, Serial2/0
    
 R       172.16.5.0 [120/2] via 172.16.2.2, 00:00:23, Serial2/0
    
 Router2#
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/4qr15Ib0KYmDSZjckdEnOtxBs76A.png)

路由条目的说明,如下图所示:

管理距离(administrative distance,缩写:AD) :指一种路由协议的路由可信度。每一种路由协议按可靠性从高到低,依次分配一个信任等级。

  • AD值越低,则它的优先级越高。 一个管理距离是一个从0-255的整数值,0是最可信赖的,而255则意味着不会有业务量通过这个路由。
  • 默认情况下的管理距离值:
    • 直连接口:0
    • 静态路由:1
    • OSPF:110
    • RIP:120
3.7.4.3 动态路由-OSPF协议
3.7.4.3.1 OSPF概述

OSPF(开放式最短路径优先) 是IETF定义的一种基于链路状态的内部网关路由协议。

OSPF就像一张​​智能地图​ ​,帮助路由器在复杂的网络中找到最快、最稳定的路径来传递数据。它的核心是​​链路状态协议​ ​,所有路由器都维护同一份网络地图(链路状态数据库),并通过协作计算出最优路径。

目前针对IPv4协议使用的是OSPFVersion 2(RFC2328) ;针对IPv6协议使用OSPF Version 3(RFC2740)
OSPF有以下优点:

  • 基于SPF算法,以“累计链路开销”作为选路参考值
  • 采用组播形式收发部分协议报文
  • 支持区域划分
  • 支持对等价路由进行负载分担
  • 支持报文认证
3.7.4.3.2 OSPF基础术语

​1. Router ID

Router ID用于在自治系统中唯一标识一台OSPF的路由器,它是一个32位的无符号整数,在网络中绝对不可以重复。Router ID选举规则如下:

  • 手动配置OSPF路由器的Router ID(建议手动配置);
  • 如果没有手动配置Router ID,那么路由器使用Loopback接口中最大的IP地址作为Router ID;
  • 如果没有配置Loopback接口,则路由器使用物理接口中最大的IP地址作为Router ID;

2. 区域

  • OSPF Area用于标识一个OSPF的区域。
  • 区域是从逻辑上讲设备划分为不同的“片区”(区域),每个“片区”(区域)用区域号(Area ID)来标识。骨干区域(Area 0)是核心,其他区域必须连接到它。
  • 划分区域的好处:
    • 把利用洪泛法交换链路状态信息的范围局限于每一个区域而不是整个的自治系统,这就减少路由信息传播范围,提升网络稳定性。
    • 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不需知道其他区域的网络拓扑的情况。

3. Cost(开销)

OSPF协议选择最佳路径的标准是带宽,带宽越高计算出来的开销越低。到达目标网络的各个链路累计开销最低的,就是最佳路径。

4. 度量值

  • OSPF使用开销(Cost) 作为路由的度量值。每一个激活了OSPF的接口都会维护一个接口Cost值(可配置),其中,缺省参考值Cost = 100 Mbit/s 接口带宽。

  • OSPF以“累计Cost ”为开销值,即流量从源网络到目的网络经过的所有路由器的出口接口的Cost总和。

  • 度量值修改示例:

5. 链路(Link)

就是路由器上的接口,在这里,应该指在OSPF进程下的接口。

6. 链路状态(Link-State)

链路状态(LSA)就是OSPF接口上的描述信息,例如接口上的IP地址,子网掩码,网络类型,Cost值等等,OSPF路由器之间交换的并不是路由表,而是链路状态(LSA)。

7. 邻居(Neighbor)

OSPF只有邻接状态才会交换LSA。

8. OSPF三大表

OSPF有三张重要的表,分别为邻居表、链路状态表、计算路由表。

  • 邻居表

    • OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
    • OSPF的邻居关系通过交互Hello报文建立。
    • OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer 查看。
  • 链路状态表LSDB

    • LSDB会保存自己产生的及从邻居收到的LSA信息,如下图中的R1的LSDB包含了三条LSA。
    • Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
    • 使用命令行display ospf lsdb 查看LSDB表。
  • 计算路由表

  • OSPF计算路由表和路由器路由表是两张不同的表 。如下图中的OSPF路由表有三条路由。

  • OSPF计算路由表包含Destination、Cost和NextHop等指导转发的信息。

  • 使用命令display ospf routing查看OSPF计算路由表。

9. OSPF报文类型及格式

  • OSPF一共定义了5种类型的报文,不同类型的OSPF报文有相同的头部格式。
  • OSPF报文直接采用IP封装,在报文的IP头部中,协议号为89。
Type 报文名称 报文功能
1 问候数据包(Hello) 发现并建立邻接关系
2 数据库描述数据包(Database Description) 向邻居给出自己的链路状态数据库中的所有链路状态项目
3 链路状态请求数据包(Link State Request) 向对方请求某些链路状态项目的完整信息
4 链路状态更新数据包(Link State Update) 用泛洪法对全网更新链接状态。
5 链路状态确认数据包(Link State Ack) 确认LSA

3.7.4.3.3 OSPF协议的工作过程

OSPF协议的路由器有3张表,邻居表、链路状态表和计算路由表。下面以这三张表的产生过程为线索,来分析在这个过程中,路由器发生了那些变化,从而说明OSPF协议的工作过程。

3.7.4.3.4 OSPF配置相关命令行**(以 Cisco 设备为例)​**
复制代码
 # 启用OSPF进程,语法:router ospf <进程号>

    
 Router(config)# router ospf 1
    
  
    
 # 配置路由器 ID(Router ID)​,语法:router-id <IP地址或接口IP>
    
 Router(config-router)# router-id 192.168.1.1
    
  
    
  
    
 # 宣告网络, 语法:network <网络地址> <通配符掩码(反向子网掩码)> area <区域号>
    
 Router(config-router)# network 192.168.1.0 0.0.0.255 area 0
    
 Router(config-router)# network 10.0.0.0 0.255.255.255 area 1
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/fovi3w0uc2EHFI5JqxWlnP8Ys6B7.png)
复制代码
 # 查看 OSPF 邻居​

    
 show ip ospf neighbor
    
  
    
 # 查看 OSPF 路由表​
    
 show ip route ospf
    
  
    
 # 查看 OSPF 协议状态​
    
 show ip ospf
    
  
    
 # 查看 OSPF 链路状态数据库(LSDB)
    
 show ip ospf database
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/j3l6p740yrRaZX5UShvFCKc8MLGt.png)
3.7.4.3.5 OSPF协议配置案例

1. 搭建实验环境

2. 路由器配置OSPF

  • 路由器2配置OSPF
复制代码
 Router2>en

    
 Router2#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router2(config)#router ospf ?
    
   <1-65535>  Process ID
    
 Router2(config)#router ospf 1
    
 Router2(config-router)#network 172.16.0.0 0.0.255.255 area 0
    
 Router2(config-router)#network 192.168.0.0 0.0.0.3 area 0
    
 Router2(config-router)#
    
    
    
    
    bash
  • 路由器0配置OSPF

方式一:三个直连网络合并成一个C类网络(推荐)

复制代码
 Router0>

    
 Router0>en
    
 Router0#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router0(config)#router ospf ?
    
   <1-65535>  Process ID
    
 Router0(config)#router ospf 1
    
 Router0(config-router)#network 192.168.0.0 0.0.0.255 area 0
    
 Router0(config-router)#
    
    
    
    
    bash

方式二:逐个添加三个直连网络

复制代码
 Router0>en

    
 Router0#config ?
    
   terminal  Configure from the terminal
    
   <cr>
    
 Router0#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router0(config)#router ospf ?
    
   <1-65535>  Process ID
    
 Router0(config)#router ospf 1
    
 Router0(config-router)#network 192.168.0.0 0.0.0.3 area 0
    
 Router0(config-router)#network 192.168.0.4 0.0.0.3 area 0
    
 Router0(config-router)#
    
 00:30:56: %OSPF-5-ADJCHG: Process 1, Nbr 192.168.0.1 on Serial3/0 from LOADING to FULL, Loading Done
    
  
    
 Router0(config-router)#network 192.168.0.12 0.0.0.3 area 0
    
 Router0(config-router)#
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/PMtZn8RrOELbsm4jIpiY0Uz6FBgy.png)
  • 路由器1配置OSPF
复制代码
 Router1>

    
 Router1>en
    
 Router1#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router1(config)#router ospf ?
    
   <1-65535>  Process ID
    
 Router1(config)#router ospf 1
    
 Router1(config-router)#network 192.168.0.0 0.0.0.255 area 0
    
 Router1(config-router)#
    
    
    
    
    bash
  • 路由器3配置OSPF
复制代码
 Router3>en

    
 Router3#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router3(config)#router ospf ?
    
   <1-65535>  Process ID
    
 Router3(config)#router ospf 1
    
 Router3(config-router)#network 192.168.0.0 0.0.0.255 area 0
    
 Router3(config-router)#network 172.17.0.0 0.0.255.255 area 0
    
 Router3(config-router)#
    
    
    
    
    bash
  • 路由器4配置OSPF
复制代码
 Router4>en

    
 Router4#config t
    
 Enter configuration commands, one per line.  End with CNTL/Z.
    
 Router4(config)#router ospf ?
    
   <1-65535>  Process ID
    
 Router4(config)#router ospf 1
    
 Router4(config-router)#network 192.168.0.0 0.0.0.255 area 0
    
 Router4(config-router)#network 172.18.0.0 0.0.255.255 area 0
    
 Router4(config-router)#
    
    
    
    
    bash

3. 查看路由表

以路由器2为例,路由器2动态学到了6条路由(2条直连路由除外)。

复制代码
 Router2>en

    
 Router2#show ip route
    
 Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP
    
    D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
    
    N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
    
    E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP
    
    i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, ia - IS-IS inter area
    
    * - candidate default, U - per-user static route, o - ODR
    
    P - periodic downloaded static route
    
  
    
 Gateway of last resort is not set
    
  
    
 C    172.16.0.0/16 is directly connected, FastEthernet0/0
    
 O    172.17.0.0/16 [110/129] via 192.168.0.2, 00:30:35, Serial2/0
    
 O    172.18.0.0/16 [110/193] via 192.168.0.2, 00:43:14, Serial2/0
    
      192.168.0.0/30 is subnetted, 5 subnets
    
 C       192.168.0.0 is directly connected, Serial2/0
    
 O       192.168.0.4 [110/128] via 192.168.0.2, 00:43:24, Serial2/0
    
 O       192.168.0.8 [110/192] via 192.168.0.2, 00:43:14, Serial2/0
    
 O       192.168.0.12 [110/128] via 192.168.0.2, 00:30:45, Serial2/0
    
 O       192.168.0.16 [110/192] via 192.168.0.2, 00:03:54, Serial2/0
    
 Router2#
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/qPO91QJmtuMabA8ZSCRDjidKYBfz.png)

4. 验证OSPF协议健壮性

主机0 tracert 主机1,观察数据包的路径。初始数据包路径如下:

复制代码
 PC>

    
 PC>ping 172.17.0.2
    
  
    
 Pinging 172.17.0.2 with 32 bytes of data:
    
  
    
 Request timed out.
    
 Reply from 172.17.0.2: bytes=32 time=4ms TTL=125
    
 Reply from 172.17.0.2: bytes=32 time=8ms TTL=125
    
 Reply from 172.17.0.2: bytes=32 time=2ms TTL=125
    
  
    
 Ping statistics for 172.17.0.2:
    
     Packets: Sent = 4, Received = 3, Lost = 1 (25% loss),
    
 Approximate round trip times in milli-seconds:
    
     Minimum = 2ms, Maximum = 8ms, Average = 4ms
    
  
    
 PC>
    
 PC>
    
 PC>tracert 172.17.0.2
    
  
    
 Tracing route to 172.17.0.2 over a maximum of 30 hops: 
    
  
    
   1   1 ms      0 ms      0 ms      172.16.0.1
    
   2   1 ms      8 ms      6 ms      192.168.0.2
    
   3   1 ms      2 ms      1 ms      192.168.0.14
    
   4   2 ms      0 ms      0 ms      172.17.0.2
    
  
    
 Trace complete.
    
  
    
 PC>
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/NjM8fZvKla94tS2DnBHLuVF1wz3W.png)
  • 当断开最佳连接,跟踪数据包路径,断开后会立即更换路径。
复制代码
 PC>

    
 PC>ping 172.17.0.2
    
  
    
 Pinging 172.17.0.2 with 32 bytes of data:
    
  
    
 Reply from 172.17.0.2: bytes=32 time=4ms TTL=123
    
 Reply from 172.17.0.2: bytes=32 time=49ms TTL=123
    
 Reply from 172.17.0.2: bytes=32 time=4ms TTL=123
    
 Reply from 172.17.0.2: bytes=32 time=5ms TTL=123
    
  
    
 Ping statistics for 172.17.0.2:
    
     Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
    
 Approximate round trip times in milli-seconds:
    
     Minimum = 4ms, Maximum = 49ms, Average = 15ms
    
  
    
 PC>tracert 172.17.0.2
    
  
    
 Tracing route to 172.17.0.2 over a maximum of 30 hops: 
    
  
    
   1   0 ms      0 ms      0 ms      172.16.0.1
    
   2   1 ms      0 ms      2 ms      192.168.0.2
    
   3   0 ms      0 ms      1 ms      192.168.0.6
    
   4   11 ms     4 ms      2 ms      192.168.0.10
    
   5   9 ms      2 ms      11 ms     192.168.0.18
    
   6   3 ms      0 ms      2 ms      172.17.0.2
    
  
    
 Trace complete.
    
  
    
 PC>
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/hDledULfsc4vq0SK96GROmjXTwHZ.png)
  • 当恢复最佳连接,跟踪数据包路径,恢复后需等待一段时间,路径才会变成回最佳路径。
复制代码
 PC>

    
 PC>tracert 172.17.0.2
    
  
    
 Tracing route to 172.17.0.2 over a maximum of 30 hops: 
    
  
    
   1   0 ms      0 ms      0 ms      172.16.0.1
    
   2   0 ms      1 ms      1 ms      192.168.0.2
    
   3   2 ms      19 ms     4 ms      192.168.0.6
    
   4   1 ms      1 ms      0 ms      192.168.0.10
    
   5   4 ms      3 ms      4 ms      192.168.0.18
    
   6   5 ms      3 ms      3 ms      172.17.0.2
    
  
    
 Trace complete.
    
  
    
 PC>tracert 172.17.0.2
    
  
    
 Tracing route to 172.17.0.2 over a maximum of 30 hops: 
    
  
    
   1   0 ms      1 ms      0 ms      172.16.0.1
    
   2   0 ms      0 ms      0 ms      192.168.0.2
    
   3   0 ms      1 ms      1 ms      192.168.0.6
    
   4   8 ms      1 ms      1 ms      192.168.0.10
    
   5   2 ms      1 ms      2 ms      192.168.0.14
    
   6   1 ms      3 ms      2 ms      172.17.0.2
    
  
    
 Trace complete.
    
  
    
 PC>tracert 172.17.0.2
    
  
    
 Tracing route to 172.17.0.2 over a maximum of 30 hops: 
    
  
    
   1   1 ms      0 ms      0 ms      172.16.0.1
    
   2   0 ms      1 ms      7 ms      192.168.0.2
    
   3   1 ms      6 ms      5 ms      192.168.0.6
    
   4   9 ms      0 ms      1 ms      172.17.0.2
    
  
    
 Trace complete.
    
  
    
 PC>
    
    
    
    
    bash
![](https://ad.itadn.com/c/weblog/blog-img/images/2025-08-16/vpiQlW8Mm36jCLKZzPfHsJgXtuFx.png)
3.7.4.4 (外部)边界网关协议-BGP协议
3.7.4.4.1 BGP协议概述

BGP(Border Gateway Protocol,边界网关协议) 是互联网的​​核心路由协议​ ​,用于在不同自治系统(AS)之间交换路由信息。它的主要目标是确保全球互联网的可扩展性、稳定性和灵活性,是唯一支持大规模跨域路由的协议。

每一个自治协同的管理员要选择至少一个路由器作为该自治系统的“BGP发言人”。

BGP发言人与AS自治系统的关系如下图所示:

BGP发言人交换路径:

自治系统{AS}_{2}的BGP发言人通知主干网的BGP发言人:要到达网络N_{1}N_{2}N_{3}N_{4}可经过{AS}_{2}

主干网在收到{AS}_{2}的通知以后就发出通知:要到达网络N_{1}N_{2}N_{3}N_{4}可沿路径{AS}_{1}{AS}_{2}

同理,主干网还可发出通知:要到达网络N_{5}N_{6}N_{7}可沿路径{AS}_{1}{AS}_{3}

3.7.4.4.2 BGP协议的特点
  • BGP协议交换路由信息数量不是很多;
  • BGP发言人数目不多,路由选择相对简单;
  • BGP协议支持CIDR;
  • BGP建立时,交换整个路由表,之后只交换变化部分;
3.7.4.5 RIP、OSPF​、EIGRP、BGP四者​对比​
3.7.4.5.1 协议类型与核心定位​
​协议​ ​类型​ ​核心定位​
​RIP​ 内部网关协议(IGP) 距离向量协议,适用于​​小型静态网络​ ​,通过周期性广播路由表实现简单互联。
​OSPF​ 内部网关协议(IGP) 链路状态协议,适用于​​中大型动态网络​ ​,通过共享拓扑图实现快速收敛和灵活路由。
​EIGRP​ 内部网关协议(IGP) 增强型距离向量协议(Cisco私有),适用于​​中大型企业网络​ ​,结合快速收敛与多路径支持。
​BGP​ 外部网关协议(EGP) 路径矢量协议,适用于​​跨自治系统(AS)互联​ ​,通过策略控制实现大规模网络路由。

3.7.4.5.2 核心机制与算法对比​

​1. 路由度量与计算方式​

​协议​ ​度量方式​ ​算法核心​
​RIP​ 跳数(Hop Count),最大跳数 15(超过则不可达) Bellman-Ford 算法(距离向量):路由器仅交换“到目标的跳数”,通过迭代更新路由表。
​OSPF​ 代价(Cost),与带宽相关(带宽越高,Cost越低,默认 Cost=10^8/带宽(bps))。 Dijkstra 算法(链路状态):所有路由器共享完整拓扑图(LSDB),独立计算最短路径(SPF)。

| ​​EIGRP​ ​ | 多度量(Multi-Metric):综合带宽、延迟、可靠性、负载、MTU 计算,默认公式:
Metric=MTU(带宽+延迟)×256​ | 改进的 DUAL(扩散更新算法):结合距离向量与链路状态特性,维护拓扑表并快速响应网络变化。 |
|​​BGP​ ​|路径属性(Path Attributes):如 AS_PATH(路径经过的AS序列)、LOCAL_PREF(本地优先级)、MED(多出口鉴别器)等。|路径矢量(Path Vector):基于属性协商选择最优路径,核心是 AS_PATH 防环。|

​2. 收敛速度与稳定性​

​协议​ ​收敛速度​ ​稳定性机制​
​RIP​ 慢(秒级至分钟级) 周期性全量更新(默认 30 秒),网络变化时需多次迭代更新,易产生环路(需毒性反转等机制缓解)。
​OSPF​ 快(秒级) 触发式更新(网络变化时立即发送),SPF 算法快速重新计算路径,分层设计(Area 0)减少路由震荡。
​EIGRP​ 最快(亚秒级) DUAL 算法仅重新计算受影响路径,支持快速收敛;通过“可行后继”机制避免全网重算。
​BGP​ 慢(分钟级) 依赖路径属性协商,跨 AS 路径变化需逐跳传播,通过 BGP 会话保持和路由刷新机制稳定。

3.7.4.5.3 配置特性与复杂度​
​协议​ ​配置复杂度​ ​关键配置项​ ​私有性​
​RIP​ 低(简单易用) 启用 RIP、宣告直连网络(network命令)、调整跳数限制(默认 15)。 公有标准(RFC 1058)。
​OSPF​ 中(需理解区域划分) 启用 OSPF、配置 Router ID、定义区域(Area 0 为骨干)、宣告网络及所属区域。 公有标准(RFC 2328)。
​EIGRP​ 中(Cisco 私有) 启用 EIGRP(需指定 AS 号)、配置 Router ID、调整度量参数(如带宽、延迟)。 Cisco 私有(需授权使用)。
​BGP​ 高(策略控制复杂) 启用 BGP(指定本地 AS 号)、配置邻居(neighbor命令)、设置路径属性(如 LOCAL_PREF、AS_PATH)。 公有标准(RFC 4271)。

3.7.4.5.4 典型适用场景​
​协议​ ​适用场景​ ​示例​
​RIP​ 小型企业/家庭网络(≤100 台设备),静态拓扑,对配置要求低。 办公室、小型门店,仅需基本互联网接入。
​OSPF​ 中大型企业/数据中心(≥100 台设备),动态拓扑,需快速收敛和分层设计。 企业园区网(接入层-汇聚层-核心层)、云数据中心内部互联。
​EIGRP​ 中大型企业网络(Cisco 设备主导),需快速收敛、多路径负载均衡。 跨地域企业分支互联(如总部与分部通过双链路连接)。
​BGP​ 跨自治系统(AS)互联(如运营商骨干网、企业跨 ISP 接入、云服务商与客户互联)。 企业总部(AS 65001)与分支(AS 65002)通过 ISP(AS 65000)互联;云服务商(AS 64512)与客户(AS 65003)互联。

3.7.4.5.5 核心区别总结​
​维度​ ​RIP​ ​OSPF​ ​EIGRP​ ​BGP​
​协议类型​ IGP(距离向量) IGP(链路状态) IGP(增强距离向量) EGP(路径矢量)
​核心目标​ 小型网络简单互联 中大型网络快速收敛 中大型企业高效互联 跨 AS 策略控制互联
​度量方式​ 跳数(≤15) 代价(与带宽相关) 多度量(带宽+延迟等) 路径属性(AS_PATH等)
​收敛速度​ 慢(秒级至分钟级) 快(秒级) 最快(亚秒级) 慢(分钟级)
​配置复杂度​ 中(Cisco 私有)
​适用场景​ 小型企业/家庭网络 中大型企业/数据中心 中大型企业(Cisco) 跨 AS 互联(运营商/云)

3.7.4.5.6 总结​

​RIP​ ​:适合小型静态网络,配置简单但功能有限。

​OSPF​ ​:适合中大型动态网络,快速收敛且支持分层设计。

​EIGRP​ ​:适合中大型企业(Cisco 设备),兼顾快速收敛与多路径。

​BGP​ ​:适合跨 AS 互联,通过策略控制实现大规模网络路由。

选择时需根据​​网络规模​ ​(小型/中大型/跨 AS)、​​设备兼容性​ ​(Cisco 优先选 EIGRP)和​​策略需求​ ​(是否需要路径控制)综合判断。

4 网际控制报文协议 ICMP

ICMP(Internet Control Message Protocol,互联网控制报文协议)​ ​ 是网络层(IP层)的一个核心协议,主要用于传递网络设备之间的​​控制信息​ ​和​​错误报告​ ​。它本身不传输用户数据,而是辅助IP协议完成网络通信的诊断、管理和错误处理。

4.1 ICMP的核心功能

4.1.1 功能一:错误报告​

  • 当IP数据包无法正常交付时,ICMP向发送方报告错误(如目标不可达、超时等)。
  • ​示例​ ​:
    • 目标主机宕机 → 返回 Destination Unreachable(类型3)。
    • 数据包TTL超时 → 返回 Time Exceeded(类型11)。

4.1.2 ​​功能二:网络诊断与控制​

  • 提供工具(如Ping、Traceroute)检测网络连通性和路径。
  • ​示例​ ​:
    • Ping 使用 ICMP Echo请求(类型8)和回复(类型0)。
    • Traceroute 利用TTL超时的ICMP消息追踪路径。

4.2 常见ICMP类型与代码

报文种类 类型值 代码 描述
请求报文 8 0 请求回显报文
响应报文 0 0 回显应答报文
差错报告报文 3 (终点不可到达) 0 网络不可达
1 主机不可达
2 协议不可达
3 端口不可达
4 需要进行分片但设置了不分片
13 由于路由过滤,通信被禁止
4 0 源端被关闭
5 (改变路由) 0 对网络重定向
1 对主机重定向
11 0 传输期间生存时间(TTL)为0
12 (参数问题) 0 坏的IP首部
1 缺少必要的选项

4.3 ICMP 报文结构​

ICMP报文封装在IP数据包中,结构简单:

  • ​头部​ ​(8字节):

    • 类型**(** ​​Type,8位)​ ​:消息类型(如8=Echo请求,0=Echo回复)。
    • ​代码(Code,8位)​ ​:消息子类型(进一步描述错误原因)。
    • 校验和(​Checksum,16位)​ ​:校验和,确保报文完整性。
  • ​数据部分​ ​:可选,携带附加信息(如Ping的时间戳)。

ICMP差错报告报文的数据字段的内容,如下图。

4.4 ICMP差错报告报文-示例

4.4.1 TTL过期

4.4.2 目标主机不可到达

4.4.3 路由重定向

场景:PC1 ping PC3,IP数据包的走向如下图所示。

4.4.4 给程序返回错误消息


4.5 使用ICMP排除网络故障

4.5.1 使用ping诊断网络阻塞

ping通的延时接近2s,抓包发现存在广播包,导致网络阻塞。

4.5.2 使用ping断定哪一段链路出现故障

  • 测试哪一段链路丢包,以缩小故障范围;

  • 断定是整个机房堵塞还是服务器网络堵塞

4.5.3 使用tracert 跟踪数据包路径

Ping命令并不能跟踪从源地址到目标地址沿途经过了哪些路由器, Windows操作系统中的tracert命令是路由跟踪实用程序,用于确定IP数据报访问目标地址路径,能够帮助我们发现到达目标网络到底是哪一条链路出现了故障。

Tracert 命令 就是ping命令的扩展,用 IP报文生存时间 (TTL)字段和 ICMP差错报告报文来确定沿途经过的路由器。

Tracert命令的工作原理:通过逐步增加TTL值,触发沿途路由器的ICMP Time Exceeded消息,从而追踪路径。如图所示。当数据包无法送达时,路由器或目标主机会返回ICMP错误消息(如“端口不可达”或“网络不可达”)。

4.5.4 使用pathping 跟踪数据包路径

Pathpi ng是一个基于TCP/IP的命令行工具,该命令不但可以跟踪数据包从源主机到目标主机所经过的路径,还可以统计计算机网络延时 以及丢包率 ,帮助我们解决网络问题,跟踪数据包路径的原理和tracert命令一样。

4.6 ICMP 的安全性问题

4.6.1 潜在风险​

  • ICMP可能被滥用发起攻击:

    • ​Smurf攻击​ ​:伪造源IP地址发送大量ICMP Echo请求,导致网络拥塞。
    • ​Ping洪水​ ​:通过海量Ping请求耗尽目标主机资源。
  • ​防御措施​ ​:

    • 防火墙可过滤部分ICMP流量(如禁止入站Echo请求)。
    • 限制ICMP报文的发送速率。

4.6.2 ​​重要性权衡​

  • 虽然ICMP存在安全风险,但禁用它可能导致网络故障难以排查(如无法Ping通设备)。
  • ​建议​ ​:根据实际需求配置ICMP过滤规则,而非完全屏蔽。

5 ARP与RARP

ARP(地址解析协议)RARP(逆地址解析协议) 是两种用于网络地址转换的协议,但它们的功能和用途截然不同。

5.1 ARP(地址解析协议)


5.1.1 定义​

  • ​全称​ ​:Address Resolution Protocol(地址解析协议)
  • ​核心功能​ ​:将网络层的​​IP地址​ ​解析为数据链路层的​​MAC地址​ ​,用于同一局域网内设备间的通信。

5.1.​2 工作原理​

  • ​触发场景​ ​:当设备A需要与同一局域网内的设备B通信时,已知设备B的IP地址,但需要获取其MAC地址。
  • ​步骤​ ​:
    1. ​广播ARP请求​ ​:设备A发送一个广播包,包含自己的IP和MAC地址,以及目标设备B的IP地址。
    2. ​接收响应​ ​:局域网内所有设备收到请求后,检查目标IP是否与自身匹配。
    3. ​单播回复​ ​:匹配的设备B向设备A发送单播响应,提供自己的MAC地址。
    4. ​缓存记录​ ​:设备A将设备B的IP-MAC映射关系存入本地ARP缓存表,有效期通常为几分钟到几小时。

5.1.​​3 应用场景​​

  • ​日常局域网通信​ ​:如访问同一网络内的服务器、打印机等。

  • ​ARP欺骗攻击​ ​:攻击者伪造ARP响应,实施中间人攻击(MITM)。

    • ARP协议是建立在网络中各个主机互相信任的基础上的。
    • 如计算机A发送ARP广播帧解析计算机B的MAC地址,同一个网段中的计算机都能够收到这个ARP请求消息,任何一个主机都可以给计算机A发送ARP应答消息,可以告诉计算机A一个错误的MAC地址,计算机A收到ARP应答报文时并不会检测该报文的真实性,就会将其记入本机ARP缓存,这就存在一个安全隐患--ARP欺骗。
  • ​免费ARP​ ​:设备主动广播自己的IP-MAC映射,用于检测IP冲突或更新缓存。

5.1.​4 现状​

  • ​仍广泛应用​ ​:作为网络通信的基础协议,几乎存在于所有IP网络中。
  • ​增强功能​ ​:如代理ARP(路由器代替目标设备响应ARP请求)和动态ARP检测(DAI)。

5.2 RARP(逆地址解析协议)

5.2.1 定义​

  • ​全称​ ​:Reverse Address Resolution Protocol(逆地址解析协议)
  • ​核心功能​ ​:将数据链路层的​​MAC地址​ ​解析为网络层的​​IP地址​ ​,用于设备初始化时获取IP地址。

5.2.​​2 工作原理​

  • ​触发场景​ ​:无盘工作站(如早期终端)启动时,已知自身MAC地址,但需要从服务器获取IP地址。
  • ​步骤​ ​:
    1. ​广播RARP请求​ ​:设备发送广播包,包含自己的MAC地址,目标MAC地址为全F(FF:FF:FF:FF:FF:FF)。
    2. ​服务器响应​ ​:RARP服务器收到请求后,根据MAC地址查询预配置的IP地址表。
    3. ​单播回复​ ​:服务器向设备发送单播响应,分配IP地址及其他网络参数(如子网掩码、网关)。
    4. ​配置生效​ ​:设备使用获取的IP地址加入网络。

5.2.​​3 应用场景​

  • ​早期无盘工作站​ ​:如UNIX终端启动时通过RARP获取IP地址。
  • ​网络引导​ ​:设备通过RARP从服务器加载操作系统镜像。

5.2.​​4 现状​

  • ​已淘汰​ ​:因功能单一且依赖专用服务器,被更灵活的DHCP协议取代。
  • ​替代方案​ ​:DHCP(动态主机配置协议)不仅分配IP地址,还支持租约管理、选项扩展等。

5.3 ARP与RARP的异同点

5.3.​​1 相同点​

​维度​ ​说明​
​协议分层​ 均属于数据链路层协议(OSI模型)或网络接口层(TCP/IP模型)。
​广播机制​ 均通过广播请求包发起,依赖目标设备的单播响应。
​地址映射​ 均用于解决地址解析问题,但方向相反。

5.3.​​2 不同点​

​维度​ ​ARP​ ​RARP​
​地址转换方向​ IP → MAC(已知IP找MAC) MAC → IP(已知MAC找IP)
​主要用途​ 日常通信(如访问网页) 网络初始化(如无盘系统启动)
​依赖设备​ 所有网络设备均可参与 需专用RARP服务器
​协议现状​ 仍广泛使用 已淘汰,被DHCP取代
​报文字段差异​ 目标MAC地址为空,目标IP已知 目标IP地址为空,目标MAC已知
​扩展功能​ 支持代理ARP、免费ARP 无扩展功能

5.4 ARP欺骗之网络执法官

“网络执法官” 通常指一种网络管理工具(如企业级网络监控软件),其核心功能是通过​​ARP欺骗技术​ ​实现对局域网内设备的流量监控、行为管控或安全防护。这类工具常被企业或机构用于合法的网络管理,但也可能被攻击者滥用为攻击手段。

5.4.1 核心功能​

​1. 流量监控与审计​

  • ​技术原理​ ​:通过ARP欺骗将目标设备的流量重定向到监控端口,捕获其网络行为(如访问的网站、下载的文件)。
  • ​应用场景​ ​:企业监控员工上网行为,防止违规操作(如访问非法网站、泄露数据)。

​2. 内网安全防护​

  • ​防御ARP欺骗攻击​ ​:主动发送虚假ARP响应,阻断外部攻击者的ARP欺骗行为。
  • ​检测异常流量​ ​:通过流量镜像分析潜在威胁(如DDoS攻击、恶意软件通信)。

​3. 设备管理​

  • ​IP/MAC绑定强制生效​ ​:通过伪造ARP包强制设备使用静态IP-MAC绑定,防止IP冲突或未授权设备接入。
  • ​网络准入控制​ ​:阻断未认证设备接入网络,仅允许绑定设备通信。

5.4.2 技术实现原理​

ARP欺骗的核心步骤​:

  1. ​嗅探目标网络​ ​:获取目标设备的IP和MAC地址,以及网关信息。
  2. ​伪造ARP响应​ ​:向目标设备发送虚假ARP包,声称执法官设备的MAC地址对应网关或目标设备的IP。
  3. ​流量重定向​ ​:将目标设备的流量通过执法官设备中转,实现监控或过滤。

5.4.3 典型工具示例​

  • ​网络执法官软件​ ​:如“聚生网管”“P2P终结者”,通过ARP欺骗实现局域网流量控制。
  • ​开源工具​ ​:如EttercapBettercap,支持ARP欺骗模块,用于渗透测试或网络管理。

5.4.4 技术对比(合法 vs 非法)​

​场景​ ​合法用途(网络执法官)​ ​非法用途(攻击者)​
​目的​ 网络管理、安全防护 窃取数据、中间人攻击
​授权​ 经管理员授权,用于企业内网 未经授权,针对他人网络
​数据使用​ 仅限内部审计,符合隐私政策 非法收集敏感信息并外泄

5.4.5 防御“网络执法官”类ARP欺骗​

​1. 技术措施​

  • ​静态ARP绑定​ ​:手动配置设备的IP-MAC映射,防止动态ARP表被篡改。
复制代码
        1. arp -s 192.168.1.1 00-11-22-33-44-55  # Windows

    
        2. arp -s 192.168.1.1 00:11:22:33:44:55  # Linux
    
    bash
  • ​启用DAI(动态ARP检测)​ ​:在交换机上验证ARP包的合法性,过滤伪造的ARP响应。
    • ​使用加密协议​ ​:HTTPS、SSH等加密通信,即使流量被重定向也无法解密。

​2. 管理措施​

  • ​网络分段​ ​:通过VLAN隔离敏感设备,缩小ARP欺骗的影响范围。
  • ​定期审计​ ​:检查ARP表异常,监控网络流量是否被重定向。
  • ​禁用ARP动态更新​ ​:在关键设备上关闭ARP自动学习功能,仅允许手动配置。

​3. 用户意识​

  • ​警惕异常网络行为​ ​:如网速突然变慢、弹出认证页面,可能是ARP欺骗的迹象。
  • ​举报可疑工具​ ​:发现未经授权的网络管理软件,及时向网络管理员反馈。

6 IP多播-互联网组管理协议IGMP

IGMP(Internet Group Management Protocol,互联网组管理协议) 是一种用于管理 IP 组播组成员关系的协议。IGMP 在主机和与其直接相连的路由器之间,用于支持 IP 组播通信。

6.1 组播基础内容

6.1.1 组播IP

传统网络进行地址分配时,将IPv4网络分为5类:

  • A类:1.0.0.0 - 126.0.0.0
  • B类:128.0.0.0 - 191.254.0.0
  • C类:192.0.0.0 - 223.255.255.0
  • D类:224.0.0.0 - 239.255.255.255
  • E类:240.0.0.0-239.255.255.255,保留地址

其中 D 类地址 称为组播 IP 。虽然目前 CIDR(Classless Inter-Domain Routing,无类域间路由) 和 VLSM(Variable Length Subnet Mask,可变长子网掩码) 的出现淡化了 IP 分类,但组播 IP 范围并未发生变化。

其中组播IP又可进行如下划分:

  • 224.0.0.0-224.0.0.255:预留永久组播地址,通常为协议所使用。
  • 224.0.1.0-231.255.255.255 和 233.0.0.0-238.255.255.255:ASM(Any Source Multicast) 模型使用。
  • 232.0.0.0-232.255.255.255:SSM(Source-Specific Multicast) 模型使用。
  • 239.0.0.0-239.255.255.255:本地管理组地址,也即私网组播IP。

需要说明的是,上述仅是 IPv4 组播地址的一个大致分类。其中还包含了保留组播地址、网络间控制组播地址等。感兴趣者可查阅相关资料。

常用协议组播地址:

组播地址 使用者
224.0.0.1 在本子网上的所有参加多播的主机和路由器
224.0.0.2 在本子网上的所有参加组播的路由器
224.0.0.4 DVMRP协议使用
224.0.0.5 224.0.0.6 OSPFv2协议使用
224.0.0.9 RIPv2协议使用
224.0.0.12 DHCP协议特定场景使用
224.0.0.13 PIM协议使用
224.0.0.14 RSVP协议特定场景使用
224.0.0.18 VRRPv2协议使用
224.0.0.22 IGMPv3协议使用
224.0.0.251 mDNS协议使用
224.0.0.252 Link-local Multicast Name Resolution协议使用

关于其他 IPv4 组播地址的使用,可查阅 IANA 发布的《IPv4 Multicast Address Space Registry》等相关资料。

6.1.2 组播MAC

目标地址是组播IP地址的数据包到达以太网,就要使用组播MAC地址封装,组播MAC地址使用组播IP地址构造。

为了支持IP 组播,因特网号码指派管理局IANA已经为 Ethernet的MAC地址保留了一个组播地址区间:01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF,如图所示。

  • 组播MAC地址48位的MAC地址中的高25位是固定的,为了映射一个IP 多播地址到MAC层的组播地址,
  • IP多播地址的低23位可以直接映射为MAC层组播地址的低23位。

不同的组播IP地址可能构造出相同的多播MAC地址 。比如:

  • 组播IP地址224.128.64.32,使用上面的方法构造出的MAC地址为01-00-5E-00-40-20。
  • 组播IP地址224.0.64.32,使用上面的方法构造出的MAC地址也为01-00-5E-00-40-20。

6.2 IGMP 的工作原理

IGMP 的主要功能是让主机能够加入或离开组播组,并让路由器能够了解哪些组播组在本地网络中有成员。

1. 主机加入组播组

当主机希望加入某个组播组时,它会向本地网络发送 IGMP 成员报告(Membership Report)消息。

  • 主机发送 IGMP 成员报告消息,表示希望接收某个组播地址的数据。

2. 路由器查询组播成员

路由器定期发送 IGMP 查询(Membership Query)消息,询问本地网络中有哪些主机是组播组的成员。

  • 路由器发送 IGMP 查询消息,询问本地网络中的组播成员。
  • 主机收到查询消息后,发送 IGMP 成员报告消息,表明自己仍然是组播组的成员。

3. 主机离开组播组

当主机希望离开某个组播组时,它会发送 IGMP 离开组(Leave Group)消息。

  • 主机发送 IGMP 离开组消息,表示不再接收某个组播地址的数据。
  • 路由器收到离开组消息后,会发送特定组查询(Group-Specific Query),确认是否还有其他主机是该组播组的成员。

6.3 IGMP 的关键特性

  1. 组播组成员管理 :支持主机动态加入或离开组播组。

  2. 路由器查询机制 :路由器通过定期查询了解本地网络中的组播成员。

  3. 版本支持 :IGMP 有多个版本(IGMPv1、IGMPv2、IGMPv3),每个版本的功能和兼容性不同。
    1. IGMPv1 :支持基本的组播组成员管理功能。
    2. IGMPv2 :增加了离开组消息和特定组查询功能。
    3. IGMPv3 :增加了源过滤功能,支持主机选择接收特定源的组播数据。

  4. 效率高 :通过组播方式传输数据,减少网络带宽的占用。

6.4 IGMP 的应用场景

IGMP 广泛应用于以下场景:

  1. 视频流媒体 :支持多用户同时观看同一个视频流。
  2. 在线会议 :支持多用户参与同一个在线会议。
  3. 网络游戏 :支持多玩家同时参与同一个网络游戏。
  4. 数据分发 :支持将数据同时分发给多个接收者。

全部评论 (0)

还没有任何评论哟~