一、网络层概述
1.1. 网络层的目的与核心功能
1.1.1. 网络层的目的
网络层的目的是将自身的数据报(其载荷为传输层报文段)基于++IP地址++从++源主机++经路径选择送达++目的主机++。
-
发送端 :传输层报文段 → 封装为网络层数据报(Datagram)
-
接收端:解封装数据报 → 提取报文段交付给传输层
网络层协议存在于每个主机和路由器,确保异构网络互联
类比理解:将网络层比作邮政系统,则:
数据报 = 信件(带完整收发地址)
路由器 = 邮局(根据地址分拣转发)
路由算法 = 邮件运输路线规划
1.1.2. 网络层设计的原则
网络层的设计遵循三个关键抽象原则:
-
服务与通信子网技术无关:传输层无需关心底层是以太网、WiFi还是光纤
-
拓扑透明性 :子网数量、类型和拓扑结构对传输层完全隐蔽
-
统一编址 :使用统一的IP地址体系,跨越多个LAN和WAN仍保持一致性
1.1.3. 网络层的核心功能
转发 与路由是网络层的两个核心功能。
1.1.3.1. 转发(Forwarding)
-
定义 :将数据报从单一路由器的输入接口转移到适当输出接口 的本地动作(从入口到出口)
-
实现方式 :基于转发表 的查表匹配操作
转发表的生成方式:
传统方式:路由器自身运行路由协议,分布式计算转发表
SDN方式:逻辑集中的控制器统一计算,下发至所有路由器
查表示例:
# 转发表项结构 { "目的地址前缀": "11001000 00010111 00010*** *********", "输出接口": 0, "下一跳IP": "10.1.1.2" }
-
时间尺度 :纳秒级 ,通常由专用硬件(ASIC/TCAM)实现
-
关键特征:
-
实时性:每个分组到达后立即处理
-
确定性:转发表项明确指定输出端口
-
硬件加速:使用TCAM实现1个时钟周期完成最长前缀匹配
-
1.1.3.2. 路由(Routing)
-
定义 :确定分组从源到目的所经端到端路径 的网络范围处理过程(分组从源到目的)
-
实现方式 :运行路由算法和协议 (RIP/OSPF/BGP)动态计算路径
-
时间尺度 :秒级 ,由软件定期执行
-
关键特征:
-
全局性:涉及网络中多个路由器的协作
-
动态性:根据拓扑变化(链路故障、拥塞)调整路径
-
分布式:各路由器通过协议交换信息,收敛到一致路由
-
1.2. 数据平面与控制平面
1.2.1. 数据平面
-
功能定位 :执行转发功能
-
工作范围 :本地 、每个路由器独立运行
-
性能要求 :线速处理,速度需达到链路最大速率
-
实现技术:硬件流水线(输入端口 → 交换结构 → 输出端口)
-
时间视角 :纳秒级响应(路由器内部)
1.2.2. 控制平面
-
功能定位 :计算并填充转发表
-
工作范围 :网络范围,关注端到端路径
-
性能要求 :可扩展性,支持大规模网络收敛
-
实现技术:路由协议软件(OSPF守护进程、BGP守护进程)
-
时间视角 :毫秒/秒级响应(网络拓扑变化)
Q1:我们注意到网络层功能可被大体分成数据平面功能和控制平面功能。数据平面的主要功能是什么? 控制平面的主要功能呢?
A1:数据平面的主要功能是转发 , 也就是说当路由器接受到网络层数据报后, 数据平面负责根据路由转发表把数据报从输入链路转发到合适的输出链路。控制平面的主要功能是填充路由表, 也就是决定一个数据报应该转发到哪里。
Q2:我们对网络层执行的转发功能和路由选择功能进行区别,路由选择和转发的主要区别是什么?A2:转发是指将分组从一个输入链路接口转移到适当的输出链路接口 的路由本地 动作,转发发生的时间很短 ,通常用硬件 实现。路由选择是指确定分组从源到目的地所采取的端到端路径 的网络 范围处理过程,发生的时间较长 ,通常为几秒,因此用软件实现。
Q3:路由器中转发表的主要作用是什么?A3:路由表的作用是确定分组下一步应该发送到哪里,路由器会根据分组首部的一个或几个字段作为索引,并在转发表中根据索引找到对应的输出链路接口.
1.2.3. 控制平面的两种控制方法
1.2.3.1. 传统路由算法(分布式)
-
特点 :每个路由器自主计算转发表(路由算法决定转发表),通过协议交换信息
-
优点:容错性强,无单点故障
-
缺点:收敛慢,全局策略难以统一实施

1.2.3.2. 软件定义网络(SDN)(集中式)
-
特点 :控制器集中计算 ,本地代理执行转发
-
优点:全局优化,策略统一部署
-
缺点:控制器成为潜在单点故障(需高可用设计)

1.3. 网络服务模型:尽力而为的哲学
1.3.1. 服务模型对比矩阵
| 服务特性 | 尽力而为(IP) | CBR(ATM) | VBR(ATM) | ABR(ATM) | UBR(ATM) |
|---|---|---|---|---|---|
| 带宽保证 | 无 | 恒定速率 | 保证速率 | 最小保证 | 无 |
| 丢包率保证 | 无 | 有 | 有 | 无 | 无 |
| 按序交付 | 无 | 是 | 是 | 是 | 是 |
| 时序保证 | 无 | 是 | 是 | 否 | 否 |
| 拥塞反馈 | 无(通过丢包推断) | 无 | 无 | 有 | 无 |
1.3.2. Internet的设计抉择
-
核心原则 :网络层提供最小服务 (尽力而为),将复杂性推向边缘
-
可靠性 :由TCP在端系统实现(重传、确认)
-
流量控制 :由端系统根据网络状况调整
-
拥塞控制 :由端系统协同实现(AIMD算法)
-
-
优势:
-
网络核心简洁:路由器无需维护连接状态
-
高度可扩展:支持数十亿主机的全球网络
-
灵活适应:从拨号到光纤,技术无关
-
-
代价:应用需自行处理丢包、乱序、抖动
1.4. 无连接服务:数据报
各层的协议数据单元(PDU)名称:消息 -> 报文段 -> 数据报 -> 帧 -> 比特
应用层:消息
表示层:消息
会话层:消息
传输层:报文段
网络层:数据报 / 分组
数据链路层:帧
物理层:比特
网络层提供的两种服务:面向连接的虚电路服务和无连接的数据包服务。这两种都是分组交换,电路交换较为古老,现代网络基本不用。
1.4.1. 工作机制

1.4.2. 核心特征
-
独立性 :每个数据报自主携带完整源/目的地址(发送分组时不需要先建立连接,每个分组独立发送数据报独立转发)
-
动态选路 :路由器基于当前网络状况独立决策(相同源-目的的数据报可能经过不同的路径,可绕过故障链路,自动选择替代路径)
-
无状态 :路由器不保留任何连接信息
-
尽力而为交付:网络层向上只提供简单灵活无连接的、尽最大努力交付的数据报服务,网络层不提供端到端的可靠传输服务
尽力而为交付的优点:网络的造价大大降低,运行方式灵活,能够适应多种应用
无连接的方法允许分组有选择不同路径的可能性,但这样可能会导致接收数据的失序;需要说明的是,为避免增加额外的开销进行数据排序,网络并不会完全随意地发送数据,在大多数情况下,仍然是会尽量沿着某一条路径发送。
在某些特殊情况下(例如设备故障、状态改变、链路变化等),分组可能通过一些策略选择不同的路径到达目的地。在网络不可靠的情况下,这种方法可能会显示出灵活性。但不可避免的,会带来额外的开销(例如对路径的选择、对失序分组的重新排列等)。所以一般情况下,路径仍然是相对固定的,并不会随意地向各个下一跳发送分组。
1.5 面向连接服务:虚电路
1.5.1. 工作机制
在虚电路方式中,当两台计算机进行通信时,应当先建立网络层的连接,也就是建立一条逻辑上的虚电路(Virtual Circuit,VC),连接一旦建立,就固定了虚电路对应的物理路径。与电路交换类似,整个通信过程分为三个阶段:虚电路建立、数据传输与虚电路释放。
每次建立虚电路时,将一个未用过的**虚电路号(VCI)**分配给该电路,以区别于本系统中的其他虚电路,然后双方就沿着已建立的虚电路传送分组。分组的首部仅在连接建立时使用完整的目的地址,之后每个分组的首部只需携带这条虚电路的编号即可。在虚电路网络中的每个节点上都维持一张虚电路表,表中每项记录一个打开的虚电路的信息,包括在接收链路和发送链路上的虚电路号、前一节点和下一节点的标识,它是在虚电路建立过程中确定的。
具体流程:
-
虚电路建立:数据传输前,主机 A 与主机 B 先建立连接,主机 A 发出"呼叫请求"分组,该分组通过中间节点送往主机 B,若主机 B 同意连接,则发送"呼叫应答"分组予以确认。
-
数据传输:虚电路建立后,主机 A 和主机 B 就可相互传送数据分组。
-
虚电路释放:传送结束后,主机 A 通过发送"释放请求"分组来拆除虚电路,逐段断开整个连接。

1.5.2. 核心特征
-
虚电路通信链路的建立和拆除需要时间开销,对交互式应用和少量的短分组情况显得很浪费,但对长时间、频繁的数据交换效率较高。(有点类似物理层的电路交换)
-
虚电路的路由选择体现在连接建立阶段,连接建立后,就确定了传输路径。
-
虚电路提供了可靠的通信功能,能保证每个分组正确且有序到达。此外,还可对两个端点的流量进行控制,当接收方来不及接收数据时,可以通知发送方暂缓发送。
-
虚电路有一个致命的弱点,即当网络中的某个节点或某条链路出现故障而彻底失效时,所有经过该节点或该链路的虚电路将遭到破坏。因此面向连接的方法也不一定能完全保证数据的可靠传输,链路中的任何一个组成环节仍有可能失效,而这种失效是严重的,可能导致所有数据丢失。
-
分组首部不包含目的地址,包含的是虚电路号,相对于数据报方式,其开销小。
-
虚电路之所以是虚,是因为这条电路不是专用的,每个节点到其他节点之间的链路可能同时有若干条虚电路通过,也可能同时在多个节点之间建立虚电路。
1.5.3. 虚电路与数据报网络的比较
| 对比内容 | 虚电路服务 | 数据报服务 |
|---|---|---|
| 可靠传输的保证 | 可靠通信由网络保证 | 可靠通信由主机保证 |
| 连接的建立 | 必须要 | 不需要 |
| 地址 | 每个分组含有一个短的虚电路号 | 每个分组需要有源地址和目的地址 |
| 状态信息 | 建立好的虚电路要占用子网表空间 | 子网不存储状态信息 |
| 路由选择 | 分组必须经过建立好的路由发送 | 每个分组独立选择路由 |
| 分组顺序 | 总是按序到达 | 可能乱序 |
| 路由器失效 | 所有经过失效路由器的虚电路都要终止 | 失效结点可能丢失分组 |
| 差错处理和流量控制 | 网络或用户主机负责 | 用户主机负责 |
| 拥塞控制 | 容易控制 | 难控制 |
1.5.3.1. 从性能角度比较
- 假设总带宽100Mbps,有2个数据源共享带宽如果每个数据源按50Mbps的恒定速率发送数据,使用虚电路服务,结果如何?
答:带宽不浪费每个数据源发送数据的带宽都可被保证
- 假设总带宽100Mbps,有2个数据源共享带宽如果每个数据源都是突发流量,且最高可达70Mbps,使用虚电路服务,结果如何?
答:选择1:丢掉一部分数据
选择2:按预留带宽提供服务,若频繁流量突发,必定导致频繁过载
- 假设总带宽100Mbps,有2个数据源共享带宽如果每个数据源都是突发流量,且最高可达70Mbps,使用数据报服务,结果如何?
答:性能完全不受影响也不会过载
1.5.3.2. 从效率角度比较

假设不考虑 A 的发送时延和链路传播时延,在上图3个转接节点的情况下,链路上的数据传输速率B bps,每个分组的长度P bit,每个分组的开销H bit,虚电路分组交换的呼叫建立时间S s,每个转接点的转接延迟时间D s,则:
-
虚电路分组交换总时延T=S+3[D+(P+H)/B]
-
数据报分组交换总时延T=3[D+(P+H)/B]
二、路由器
Q:路由器和链路层交换机都被称为分组交换机. 路由器与链路层交换机间的根本区别是什么?
A:路由器和链路层交换机的根本区别是它们服务于不同的网络层协议. 链路层交换机基于链路层帧中的字段值做出转发决定, 位于第二层链路层; 路由器基于网络层数据报中的首部字段值做出转发决定, 位于第三层网络层。
2.1. 路由器的顶层架构
-
从结构上看,路由器由路由选择和分组转发两部分构成,如下图所示。
-
从模型的角度看,路由器是网络层设备,它实现了网络模型的下三层,即物理层、数据链路层和网络层。
-
路由选择部分也称控制部分,核心构件是路由选择处理机,其任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断更新和维护路由表。
-
分组转发部分由三部分组成:交换结构、一组输入端口和一组输出端口。
-
交换结构也称交换组织,其作用是根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。交换结构本身就是一个"在路由器中的网络"。
-
路由器的端口中都有物理层、数据链路层和网络层的处理模块。输入端口在物理层接收比特流,在数据链路层提取出帧,剥去帧的首部和尾部后,分组就被送入网络层的处理模块。输出端口执行相反的操作。端口在网络层的处理模块中都设有一个缓冲队列,用来暂存等待处理或已处理完毕待发送的分组,还可用来进行必要的差错检测。若分组处理的速率赶不上分组进入队列的速率,就会使后面进入队列的分组因缓冲区满而只能被丢弃。需要说明的是,路由器的端口一般都具有输入和输出的功能。
-

1. 路由器是互联网最主要的网络设备,包含2个核心功能:
-
控制层:运行各种路由协议:BGP、OSPF、RIP,学习去往不同目的的转发路径:路由表。(路由选择)
-
数据层:根据上述路由表,将收到的IP分组转发到正确的下一跳链路。(分组转发)
2. 路由器中IP报文转发核心功能:
-
链路层解封装,IP头部校验
-
获取报文目的IP地址
-
用目的IP地址,基于最长前缀匹配规则查询转发表
-
查询失败,丢弃报文
-
查询成功
-
获取转发出接口和下一跳IP地址
-
IP头部"TTL"字段值减1,重新计算IP头部"校验和"
-
重新进行链路层封装,发送报文
-
注: 普通IP报文转发过程中,路由器不查看传输层及以上层协议的内容
IP报文在路由器转发前后的变化:链路层封装更新,IP头部"TTL"减1,IP头部"校验和"更新。
3. 数据报在不同硬件单元的处理:
-
报文输入的接口卡
-
链路层解封装
-
转发表查询(该工作在输入接口卡处理)
-
通过交换结构将报文排队发往目的接口卡(发送过快将产生拥塞)
-
-
交换结构
- 从输入接口卡发往输出接口卡
-
报文输出的接口卡
-
从交换结构接收报文(排队进行后续处理,到达太快将产生拥塞)
-
链路层封装
-
从输出接口发送报文
-

2.2. 路由器的输入端口

其中基于目的地的转发使用最长前缀匹配规则,即当需要查找指定目标地址的转发表条目时,应采用与目标地址匹配的最长地址前缀。

最长前缀匹配通常使用三进制内容可寻址存储器(三态内容寻址存储器 ,TCAM)这个硬件执行。
2.3. 路由器的交换结构
-
用途:把数据报从输入缓存传送到合适的输出缓存
-
交换速率(rate at which packets can be transfer from inputs to outputs)
-
背板带宽:是交换机接口处理器或接口卡和数据总线间所能吞吐的最大数据量。
-
线速:指经过交换机处理的理想状态下最大数据率。端口在满负载的情况下,对帧进行无差错的转发称为线速转发。
-
-
三种类型的交换结构:

-
三种交换方式:
-
经内存交换:第一代路由器采用该方式,在CPU控制下完成交换功能,数据报首先拷贝到系统内存,其速度由内存带宽限制,每个数据报都经过总线2次。

-
经总线交换:经一根共享的总线传送到输出端;总线竞争(bus contention): 交换速率受到总线速度的限制。
-
经互联网交换:
-
路由器经互联网交换中的纵横式交换机,是一种通过2N条总线连接N个输入端口和N个输出端口的交换结构。其工作原理是通过控制交叉点的闭合来实现输入端口与输出端口之间的连接。这种交换机具有非阻塞特性,能够并行转发多个分组,提高交换效率。
-
Banyan Networks是传统的ATM交换机中采用的一种网络拓扑结构,它由多个交叉节点(crossbar)组成,每个交叉节点可以带缓存。这种网络结构具有自路由特性,能够通过特定的路由算法实现分组的快速转发。
-
Advanced Design方面,有一种改进方法是将长度变化的IP分组分片成固定长度的信元,通过互联网络进行交互。这种设计可以提高网络传输的效率和可靠性,同时便于实现高速交换和流量控制。
-
-
2.4. 路由器的输入缓存带来的问题
-
缓存溢出导致输入队列延时和丢包。
-
队列的第一个数据包(队头)受阻而导致整列数据包受阻,称为Head-of-the-Line (HOL) blocking(队头阻塞)。

2.5. 路由器的输出端口
2.5.1. 缓冲区

在路由器的输出端口,经常会发生通过交换结构的数据报到达速率超出了线路输出速率(到达的包快于要向下层传输的包),因此需要在输出端口设置缓冲区,在缓冲区中,通过合适的调度原则(scheduling discipline),选取合适的包进行传输。

排队时延和丢包源于缓冲区溢出。
2.5.2. 输出端口的缓冲区调度机制
调度机制的目的:choose next packet to send on link.
1. 先进先出
丢弃策略:如果数据包到达满队列:谁被丢弃?
-
尾部丢弃(弃尾):丢弃到达的数据包
-
优先级):按优先级丢弃或移除
-
随机:随机丢弃或移除
先进先出采用去尾策略。

2. 优先级调度
如何定义优先级:直接标记优先级或其他标头信息,例如 IP 源/目的、端口号等。
一般采用非抢占式优先权排队,如下图:

3. 循环排队规则
Round Robin (RR) scheduling.
分为多个类轮流扫描队列,从每个类中发送出一个分组:(下图中红色和绿色分别为两个分组)

4. 加权公平排队规则
Weighted Fair Queuing (WFQ)
generalized Round Robin(通用的循环队列调度,简单轮流服务,不允许空闲)
each class gets weighted amount of service in each cycle(每一个类在每一个循环中在总带宽中获得一定权重)

Q:路由器通常由输入端口、输出端口、交换结构和路由选择处理器组成。其中哪些是用硬件实现的,哪些是用软件实现的?为什么?转到网络层的数据平面和控制平面的概念哪些是用硬件实现的,哪些是用软件实现的?为什么?
A:输入端口,输出端口,交换结构是用硬件实现的。路由选择处理器是用软件实现的。
转到网络层的数据平面和控制平面的概念,数据平面是用硬件实现的,控制平面是用软件实现的。原因是在数据平面处理两个数据报之间的时间非常短,软件无法在这么短的时间内完成转发。控制平面则不同于数据平面的,它的主要功能是维护转发表,逻辑比数据平面复杂多了,而且它不需要短时间处理大量事件,只需要及时更新就行了,因此用软件实现。
三、IP: Internet Protocol

internet协议执行两个基本功能,即寻址 (addressing)和分片(fragmentation)。主要的版本包括IPv4协议,即网际协议版版本4,一种无连接的协议,是互联网的核心,也是使用最广泛的网际协议版本,其后继版本为IPv6。
3.1. IP数据报格式

整个数据报由两部分组成:
-
头部(Header):固定或可变长度,包含控制信息。
-
数据(Data):上层协议(如 TCP/UDP)的数据内容。
3.1.1. 头部字段详解(按32位字节对齐)
| 字段 | 说明 |
|---|---|
| ver (Version) | IP 协议版本号,这里是 IPv4(4位),表示使用的是第4版 IP 协议。 |
| head. len (Header Length) | 头部长度(单位:4字节),用于确定数据报的实际载荷从哪里开始。最小值为5(即20字节)。 |
| type of service (ToS) | 服务类型,共8位(4bit + 1bit),用于指定服务质量(QoS),如优先级、延迟、吞吐量等。 |
| length (Total Length) | 总长度(16位),表示整个数据报(头部+数据)的长度,单位是字节。最大为65535字节。 |
| 16-bit identifier | 标识符,用于分片重组时匹配同一数据报的不同片段。 |
| flags & fragment offset | 分片控制字段:flags为标志位,如"禁止分片"、"更多分片"等;offset为偏移量,指示该片段在原始数据报中的位置(以8字节为单位)。 |
| time to live (TTL) | 生存时间(8位),用可通过路由器的数量(跳数)来计量,每经过一个路由器减1,为0时丢弃,防止数据报无限循环。 |
| upper layer | 上层协议标识,如 TCP=6、UDP=17,告诉接收端如何处理数据部分。 |
| header checksum | 头部校验和,用于检测头部是否损坏(不包括数据部分)。 |
| source IP address | 32位源IP地址,发送方地址。 |
| destination IP address | 32位目的IP地址,接收方地址。 |
| options (if any) | 可选字段,如时间戳、记录路由、指定路径等(非必需)。 |
3.1.2. 数据部分(Data)
-
变长,通常包含 TCP 或 UDP 的数据段(segment)。
-
是应用层数据的封装。
3.1.3. 开销分析(Overhead)
-
TCP 头部:20 字节(TCP是传输层协议)
-
IP 头部:20 字节(IP是网络层协议)
-
合计:40 字节的协议开销
这意味着,即使发送一个很小的数据包,也需要至少40字节的头部开销,这在带宽受限或高延迟网络中可能造成效率损失。
📌 补充知识:
IP头部默认20字节(无选项),加上TCP的20字节,确实是40字节。
若启用选项(如安全、路由记录等),IP头部会更长。
现代网络常使用压缩技术(如ROHC)或减少小包传输来缓解此开销问题。
3.1.4. IPv4数据报格式

IP数据报由首部和数据两部分组成
-
版本(4bit):表示采用的IP协议版本(如IPv4)
-
首部长度(4bit):表示整个IP数据报首部的长度(单位为4字节),用于确定数据开始位置
-
区分服务(8bit):一般情况下不使用,用于指定服务质量(QoS)
-
总长度(16bit):表示整个IP数据报的长度(包括首部和数据),最大可表示65535字节
-
标识(16bit):由IP软件自动产生,用于标识同一数据报的分片,分片后各片共享此标识
-
标志(3bit):
-
MF(More Fragments):置1表示后面还有分片,置0表示是最后一个分片
-
DF(Don't Fragment):置1表示不能分片,置0表示允许分片
-
-
片偏移(13bit):表示该分片在原始数据报中的相对位置(以8字节为单位)
-
生存时间TTL(8bit):表示数据报在网络中的生命周期,每经过一个路由器减1,为0时丢弃
-
协议(8bit):标识上层协议类型(如TCP、UDP、ICMP等)
-
首部校验和(16bit):用于检验IP首部是否出错,不包含数据部分
-
源地址(32bit):发送方的IP地址
-
目的地址(32bit):接收方的IP地址
-
选项(可变长度):可选字段,用于扩展功能,如安全性、记录路由、时间戳等
-
填充:用全0填充,使首部长度为4字节的整数倍
3.1.5. IP数据报长度总结
-
在链路层
-
以太网物理特性决定数据帧长度范围为
(46+18) ~ (1500+18)字节。 -
其中18字节为帧头和帧尾,因此数据帧内容最大为 1500字节(不包括帧头尾)。
-
此值即为 MTU(Maximum Transmission Unit)= 1500 字节。
-
-
在网络层
-
IP包首部占用20字节,因此网络层可承载的数据最大为
1500 - 20 = 1480字节。 -
即网络层的 MTU 为 1480 字节。
-
-
在传输层
-
对于 UDP 包:UDP 首部占8字节,因此传输层数据最大为
1480 - 8 = 1472字节。 -
对于 TCP 包:TCP 层已对数据长度做限制,确保 IP 层数据不会超过 MTU,因此 IP 层无需分片。
-
-
在应用层
- 实际上,应用层数据(Data)的最大长度为 1472 字节(基于UDP计算,TCP类似但更复杂)。
✅ 总结:从链路层到应用层,每层协议头部都会占用一定空间,导致可用数据长度逐层递减。最终应用层实际可发送的最大数据长度通常为 1472 字节(以以太网 + UDP 为例)。
3.2. IP分片与重组
3.2.1. 分片原因

网络链路有最大的传输单元(MTU)(不同链路类型有不同的MTUs ),因此大的IP数据报需要被分片成两个或多个较小的数据报,仅在接收端进行重组,IP报头用于识别分段的顺序。
3.2.2. 分片后的首部

在分片的数据中,传输层的首部只会出现在第一个分片中,IP数据报分片后,只有第一片带有传输层首部(UDP或ICMP等),后续分片只有IP首部和应用数据,且原始报文和分片报文具有相同的IP标识(IP头部字段)。
3.2.3. IPv4分片

-
IPv4分组在传输途中可以多次分片,在源端系统,中间路由器(可通过标志位设定是否允许路由器分片)处都可能分片。
-
IPv4分片只在目的IP对应的目的端系统进行重组
-
IPv4分片、重组字段在基本IP头部(标识、标志、片偏移)
-
IPv6分片机制相较于IPv4有较大变化
3.2.4. 分片举例
示例一:(注意offset的计算)

示例二:
假设主机 1 向主机2 发送一个总长度为1500B的IP分组,主机1所处的子网的MTU是1500B,主机2所处的子网的MTU是800B,IP分组的头部长度为20B,路由器在通过接口F1转发该IP分组时进行了分片。若分片时尽可能分为最大片,则一个最大 IP分片封装数据的字节数是多少?至少需要分为几个分片?每个分片的片偏移量是多少?
解:进行分片的原因是在主机一所在的子网中,MTU足够大,可以容纳1500B的IP分组,但是到主机二所在的子网中,MTU只有800B,需要分片,最大IP分片封装数据的字节数理论上为800B - 20B = 780B,但是由于分片的字节数只能是8的倍数,因此应该取776B;至少需要两个分片,第一个分片的偏移量为0,第二个分片的偏移量为776/8=97。
-
第一个分片的内容:(total length=796, offset=0, fragflag=1)
-
第二个分片的内容:(total length=724, offset=97, fragflag=0)
IP报文格式的位偏移字段中分段长度的值为什么是8字节的倍数?
它是由IP头部格式中的"总长度(16bit)"和"偏移(13bit)"两个字段所决定的。
总长度定义了IP包的最大长度为2^{16}=64\text{KB},偏移说明了IP分片时它最多能表示2^{13}个偏移单位,来这样偏移单位就是2^{16}/2^{13}=2^3,即为8B了。
如果偏移单位不是8B,如选4B,则13bit的"偏移"就不能表示出IP的最大长度了,而如果选16B,只需要12bit的"偏移"就能表示出IP的最大长度了,即偏移单位小于8B时,"偏移"不能够表示出IP的最大长,偏移单位大于8时,"偏移"不会被完全利用。以8B做为偏移单位正好合适。
3.2.5. IP协议功能及报头字段总结
网络层基本功能
-
支持多跳寻路将IP数据报送达目的端:目的IP地址
-
表明发送端身份:源IP地址
-
根据IP头部协议类型,提交给不同上层协议处理:协议
其它相关问题
-
数据报长度大于传输链路的MTU的问题,通过分片机制解决:标识、标志、片偏移
-
防止循环转发浪费网络资源(路由错误、设备故障...),通过跳数限制解决:生存时间TTL
-
IP报头错误导致无效传输,通过头部校验解决:首部校验和
3.3. IPv4地址
3.3.1. IPv4地址的定义

-
IP address: 32-bit 主机、路由器接口的标示;
-
接口:interface: host/router 和physical link的连接;
-
路由器有很多接口;
-
主机有一个或两个接口 (e.g., wired Ethernet, wireless 802.11);
-
-
一个IP地址 和一个接口对应。
-
接口的连接方式如下:有线接口由交换机连接,无线WiFi接口通过WiFi基站连接

- 一个IP地址由四个字节(32位)构成,这些字节定义了主机与网络的连接。IP 地址由"网络标识(Netid)"和"主机标识(Hostid)"组成,其中"Class/Type"决定了两者如何划分。

3.3.2. IPv4逻辑地址分类
以下是一些常数:

-
A类地址:分配给具有大量主机而局域网络个数较少的大型网络。例如IBM公司的网络,默认网络掩码为:255.0.0.0;
-
B类地址:分配给一般的中型网络,默认网络掩码为:255.255.0.0;
-
C类地址:分配给小型网络,如一般的局域网和校园网,默认网络掩码为:255.255.255.0。

3.3.3. 子网
子网的定义

-
对IP地址来说,子网部分 -- 高位比特,主机部分 -- 低位比特。比如 223.1.3.1 和 223.2.3.2,高位都是 223.1.3表示在同一个子网中,低位的1和2代表不同主机。
-
同一子网的设备接口的子网号相同。
-
同一子网的主机之间可以通信,而不需要路由器。
-
路由器的不同接口一般连接不同子网,当然也可以连接同一个子网,但是实践中不建议这样操作。
子网掩码
不是所有的子网号都像上面的例子一样是24位的,那么如何划分子网号,即如何在网络中分出不同的子网?
答:使用子网掩码,标识IP地址的前多少位是子网号,比如上面例子的三个子网就可以表示为:223.1.1.0/24,223.1.2.0/24,223.1.3.0/24。
-
网络掩码:用于标识网络地址和主机地址的代码。
-
子网掩码是一个32位的二进制数 ,用于与IP地址进行按位与运算,从而分离出网络标识(Netid)和主机标识(Hostid)。通过比较目标IP地址与本机所在子网范围,可判断目标是否位于同一局域网内,或需要通过路由器转发至远程网络。
-
不同类型的网络(A、B、C)具有不同的网络掩码:(A)255.0.0.0(B)255.255.0.0(C)255.255.255.0
子网划分
-
子网划分(subnetting):在网络内部将一个网络块进行划分以供多个内部网络使用,对外仍是一个网络。
-
子网(subnet ):一个网络进行子网划分后得到的一系列结果网络称为子网。
-
子网掩码(subnet mask ):与 IP 地址一一对应,是32 bit 的二进制数,置1表示网络位,置0表示主机位。
-
子网划分减少了 IP 地址的浪费、网络的组织更加灵活、便于维护和管理。
举例:
某掩码为 255.255.255.192 的子网,已知其中某个主机的IPv4地址为 172.16.2.160
3.3.4. 一些特殊的IP地址
一、IPv4特殊地址

二、私有IP地址范围(内部网络专用)
从 A、B、C 类地址中保留以下范围作为内部网络地址(私有地址),不能在 Internet 上路由:
-
A类: 10.0.0.0 - 10.255.255.255
-
B类: 172.16.0.0 - 172.31.255.255
-
C类: 192.168.0.0 - 192.168.255.255
这些地址仅用于局域网内部通信,Internet 路由器不会转发目标地址在此范围内的数据包。
三、环回地址(Loopback Address)
-
地址范围:127.X.Y.Z(通常用 127.0.0.1)
-
作用:
-
为同一设备上运行的 TCP/IP 应用程序和服务提供通信捷径。
-
绕开物理网络和协议栈下层,直接在操作系统内通信。
-
通过
ping 127.0.0.1测试本机 TCP/IP 配置是否正常。
-
-
示意图说明:
-
数据包目的地址为
127.x.y.z→ 不会离开主机,不经过网络接口。 -
如图中
221.45.71.12的数据包若目标是127.x.y.z,则被本地处理,不发送到 Class C 网络。

-
环回地址是"本地测试"的利器,确保 TCP/IP 协议栈工作正常,且不占用外部网络资源。
四、IP广播地址
1. 指定网络广播地址(定向广播)
-
定义:主机号全为 1 的地址,但网络号是特定的。
-
示例 :在 Class C 网络
221.45.71.0中,广播地址为221.45.71.255。 -
特点:
-
路由器可以转发此类广播包到目标网络。
-
用于向"特定网络中的所有主机"发送消息。
-
所有主机和路由器都会接收并处理该数据包。

-
📌 图中说明:目的地址
221.45.71.255→ 路由器 R 将其转发至目标网络,所有主机接收。
2. 受限广播地址(有限广播)
-
定义 :
255.255.255.255 -
特点:
-
主机号和网络号全为 1。
-
路由器不会转发此类广播包。
-
仅限于当前本地网络内传播。
-
常用于主机配置初期(如 DHCP 请求)时,尚未知道本地网络地址。

-
📌 图中说明:目的地址
255.255.255.255→ 路由器 R 会阻断,广播仅限于本地网络。
3. 四种IP广播地址分类总结

✅ 关键点:
是否被路由器转发 是区分"受限广播"和"定向广播"的核心。
"指向特定子网"需结合子网掩码判断。
"指向所有子网"适用于大型网络中的多子网广播。
✅ 总结:
IPv4 广播分为"受限广播"(255.255.255.255,本地传播)和"定向广播"(主机号全1,可跨网络转发),后者又细分为指向网络、特定子网或所有子网三种形式。
3.3.5. IP地址分配策略: CIDR
一、子网划分的背景与问题
-
传统分类网络的局限性
-
IP地址分类:A类:1~126;B类:128~191;C类:192~223。
-
问题:B类地址不够用,基于"分类网络"的设计可扩充性不足。
-
-
路由表膨胀问题
-
每个网络都需要一个路由表目。
-
随着网络数量增长(如公司需要多个C类地址),路由表规模急剧增大,效率下降。
-
二、解决方案:CIDR(无类别域间路由)
✅ CIDR (Classless Inter-Domain Routing) ------ 无类别域间路由,是为解决上述问题而提出的革命性方案。
-
核心思想
-
将 Hostid 的一部分划归为 Netid 的延伸,实现更灵活的子网划分。
-
掩码格式:前 N 位为 1(网络部分),后 M 位为 0(主机部分),N + M = 32。
-
"掩码地址"与"IP地址"进行逻辑与运算,得到对应子网的"实际网络地址"。
-
- CIDR 地址格式
-
格式 :
a.b.c.d/x-
a.b.c.d是 IP 地址的前缀(Prefix) -
x是子网部分的比特数(即掩码中 1 的个数)
-
示例:
200.23.16.0/23
前 23 位为网络部分
后 9 位为主机部分
默认掩码:
A类:/8
B类:/16
C类:/24
- C类地址子网划分示例

可用主机数=理论主机数-2,减去的是全零和全1的两个地址
三、路由器采用的IP地址策略
-
有类路由(Classful)协议
-
宣告路由时不携带网络掩码。
-
假设网络类型(A/B/C),根据第一个字节判断。
-
❗ 缺点:不支持 CIDR,无法处理变长子网掩码(VLSM)。正在被逐步淘汰。
-
-
无类路由(Classless)协议
-
宣告路由时携带网络掩码。
-
支持任意长度的子网划分。
-
✅ 支持 CIDR 和 VLSM,是现代网络的标准。
-
传统分类网络存在地址浪费和路由表膨胀问题。CIDR 通过"无类别"方式,将 Hostid 的一部分用于扩展 Netid,实现了灵活的子网划分和路由聚合,显著提升了地址利用率和路由效率。现代网络中,无类路由协议(如 OSPF、BGP)已成为主流,而有类路由协议逐渐被淘汰。
四、最长前缀匹配
这是网络路由中用于决定数据包转发路径的关键机制,尤其在CIDR(无类别域间路由)和路由聚合的背景下。
-
定义 :当一个IP地址与多个路由表项匹配时,选择子网掩码位数最长(即前缀最具体、最精确)的那个表项。
-
应用场景:
-
路由器的转发决策
-
ACL(访问控制列表)规则匹配等
-


五、例题
例题1:
题目描述:
-
ISP 拥有地址块
200.0.64.0/18 -
某企业需要大约 1000 个 IP 地址(
2^10 = 1024,主机位需 10 位) -
因此,ISP 可分给该企业的地址块为:
200.0.64.0/22(网络位 22 位,主机位 10 位) -
子网划分需求:
-
A 公司:500 个 IP 地址
-
B 公司:250 个 IP 地址
-
C 公司:120 个 IP 地址
-
D 公司:120 个 IP 地址
-
解答过程
- 计算各子公司所需子网掩码长度
| 公司 | 所需地址数 | 最小可用子网大小 | 主机位数 | 子网掩码位数 (32 - 主机位) |
|---|---|---|---|---|
| A | 500 | 512 (2^9) |
9 | 23 |
| B | 250 | 256 (2^8) |
8 | 24 |
| C | 120 | 128 (2^7) |
7 | 25 |
| D | 120 | 128 (2^7) |
7 | 25 |
-
划分子网
200.0.64.0/22-
起始地址:
200.0.64.0→ 二进制:11001000.00000000.01000000.00000000 -
结束地址:
200.0.67.255→ 二进制:11001000.00000000.01000011.11111111
-
注意:
/22表示前 22 位是网络位,后 10 位是主机位,覆盖范围从200.0.64.0到200.0.67.255。
- 各子公司子网分配
A 公司:200.0.64.0/23
-
地址范围:
200.0.64.0 ~ 200.0.65.255 -
二进制表示:
-
起始:
11001000.00000000.01000000.00000000 -
结束:
11001000.00000000.01000001.11111111
-
-
网络位:前 23 位固定,第 23 位为
0
B 公司:200.0.66.0/24
-
地址范围:
200.0.66.0 ~ 200.0.66.255 -
二进制表示:
-
起始:
11001000.00000000.01000010.00000000 -
结束:
11001000.00000000.01000010.11111111
-
-
网络位:前 24 位固定
C 公司:200.0.67.0/25
-
地址范围:
200.0.67.0 ~ 200.0.67.127 -
二进制表示:
-
起始:
11001000.00000000.01000011.00000000 -
结束:
11001000.00000000.01000011.01111111
-
-
网络位:前 25 位固定,第 25 位为
0
D 公司:200.0.67.128/25
-
地址范围:
200.0.67.128 ~ 200.0.67.255 -
二进制表示:
-
起始:
11001000.00000000.01000011.10000000 -
结束:
11001000.00000000.01000011.11111111
-
-
网络位:前 25 位固定,第 25 位为
1
最终分配结果:
A 公司:
200.0.64.0/23B 公司:
200.0.66.0/24C 公司:
200.0.67.0/25D 公司:
200.0.67.128/25
3.3.6 IPv4 地址获取机制 + DHCP
🌐 网络中的主机如何获得 IP 地址?主要通过两种方式:静态配置 和 动态获取(DHCP)。
一、IPv4 地址分配体系
-
全球唯一性要求:公有 IP 地址必须在全球范围内唯一。
-
ICANN(Internet Corporation for Assigned Names and Numbers) → 负责向 ISP 分配地址块。
-
ISP(Internet Service Provider) → 向其下属机构或组织逐级分配地址。
二、IP 地址获取方式
| 方式 | 描述 | 适用场景 |
|---|---|---|
| 静态设定 | 手工配置固定 IP 地址 | 路由器、服务器等关键设备 |
| 动态获取 | 通过 DHCP 或其他协议自动获取 | 普通主机、移动设备 |
三、DHCP:动态主机配置协议 (Dynamic Host Configuration Protocol)
💡 目标 :允许主机在加入网络时,从 DHCP 服务器动态获取 IP 地址及其他网络参数,实现"即插即用"。
1. 基本特性
- 工作模式:客户端/服务器(C/S)(因此DHCP为应用层协议)

-
传输层协议:UDP
-
服务器端口:67
-
客户端端口:68
-

-
返回信息不仅限于 IP 地址:
-
默认网关(first-hop router)
-
DNS 服务器地址
-
子网掩码(network mask)
-
租约时间(lease time)
-

四、DHCP 工作流程(四步交互)
🔄 整个过程基于广播通信(因客户端初始无 IP 地址),但后续可转为单播。
| 步骤 | 报文类型 | 发送方 | 接收方 | 传输方式 | 主要作用 |
|---|---|---|---|---|---|
| 1 | DHCP Discover |
客户端 | 所有服务器 | 广播 | 寻找可用的 DHCP 服务器 |
| 2 | DHCP Offer |
服务器 | 客户端 | 单播或广播 | 提供一个可用的 IP 地址 |
| 3 | DHCP Request |
客户端 | 选定的服务器 | 广播 | 请求确认使用该 IP 地址 |
| 4 | DHCP ACK |
服务器 | 客户端 | 单播或广播 | 确认分配,完成配置 |
| 源MAC | 目标MAC | 源IP | 目标IP |
|---|---|---|---|
| PC机的MAC | 全FF | 0.0.0.0 | 255.255.255.255 |
| 服务器或中继MAC | 客户机MAC | 服务器IP | 准备分配的IP或255.255.255.255 |
| PC机的MAC | 全FF | 0.0.0.0 | 255.255.255.255 |
| 服务器或中继MAC | 客户机MAC | 服务器IP | 准备分配的IP |
1. DHCP Discover(发现)
-
客户端行为:
-
源 IP:
0.0.0.0 -
目标 IP:
255.255.255.255(广播) -
源端口:68
-
目标端口:67
-
MAC 地址:源 MAC 为本机,目标 MAC 为
FF:FF:FF:FF:FF:FF
-
-
目的:向网络中所有 DHCP 服务器广播请求:"谁可以给我一个 IP?"
2. DHCP Offer(提供)
-
服务器行为:
-
源 IP:服务器自身 IP(如
223.1.2.5) -
目标 IP:
255.255.255.255或客户端 MAC 对应的 IP(若已知) -
源端口:67
-
目标端口:68
-
包含信息:
-
提供的 IP 地址(yiaddr)
-
租约时间(lifetime)
-
网关、DNS、子网掩码等附加配置
-
-
-
目的:响应客户端请求,提供一个可用的 IP 地址。
3. DHCP Request(请求)
-
客户端行为:
-
源 IP:
0.0.0.0 -
目标 IP:
255.255.255.255(广播) -
源端口:68
-
目标端口:67
-
向选中的服务器发送确认请求:"我接受这个 IP!"
-
-
目的:正式请求所选服务器分配该 IP 地址。
4. DHCP ACK(确认)
-
服务器行为:
-
源 IP:服务器 IP
-
目标 IP:客户端将要使用的 IP 地址(或广播)
-
源端口:67
-
目标端口:68
-
包含最终确认信息及配置参数
-
-
目的:确认分配成功,客户端可使用该 IP 地址。
🔹 广播 vs 单播策略
初始化阶段(Discover / Request):必须使用广播(因客户端无 IP)。
Offer / ACK 阶段:可使用单播或广播,取决于客户端是否已设置"BROADCAST flag"。
若
BROADCAST flag = 1→ 使用广播若
BROADCAST flag = 0→ 使用单播(需客户端能接收单播报文)🔹 安全性考虑
- 客户端获得 IP 地址后,可发送 ARP 请求,检查是否有 IP 冲突(防止 DHCP 服务器地址池重叠导致冲突)。
3.4. NAT
Network Address Translation 网络地址转换
3.4.1. NAT 基本概念
-
网络地址转换 :用于将私有网络中的内部 IP 地址转换为公网 IP 地址,以便访问 Internet。
-
专用网(内网) 使用私有地址(如
10.0.0.0/8,192.168.0.0/16等)。 -
NAT 设备(通常为路由器)位于内网与 Internet 之间。
-
出站数据报:
- 源地址从
x1.x2.x3.x4→ 转换为公网地址a3.b3.c3.d3
- 源地址从
-
入站数据报:
- 目的地址从
a3.b3.c3.d3→ 转换回原内部地址x1.x2.x3.x4

- 目的地址从
3.4.2. NAT 的作用
-
节省公网IP地址:整个本地网络只需一个公网IP即可连接外网。
-
灵活性高:
-
可随意更改内部设备IP地址,无需通知外部世界。
-
更换ISP时,内部网络地址无需变更。
-
-
增强安全性:
- 内部设备地址对外不可见,隐藏了内部网络结构。
3.4.3. NAT 的实现机制
NAT 路由器必须执行以下操作:
-
出站数据报(Outgoing Datagrams)
-
替换每个出站数据报的 源IP地址和端口号 为:(NAT公网IP地址, 新端口号)
-
远程服务器响应时,会使用该(NAT IP, 新端口)作为目的地址。
-
-
记录映射关系
- 在 NAT转换表(Translation Table) 中记录:(原始源IP, 原始端口) ↔ (NAT IP, 新端口)
-
入站数据报(Incoming Datagrams)
- 将目的地址和端口从(NAT IP, 新端口)替换为:对应的(原始源IP, 原始端口)

3.4.4. NAT 的能力
-
16位端口号 = 65536 个可能值
-
实际可用约 60,000 个并发连接(减去保留端口)
-
✅ 单个公网IP地址可支持数万个内部主机同时上网!
3.4.5. NAT 的争议
-
违背"端到端"原则:路由器不应处理传输层(Layer 4),而应只到网络层(Layer 3)。
-
地址短缺应由 IPv6 解决:NAT 是权宜之计,非根本解决方案。
-
对应用层设计造成影响:
-
P2P 应用(如 BitTorrent)需特殊处理 NAT 穿透(NAT Traversal)。
-
如 STUN、TURN、ICE 等技术用于解决 NAT 问题。
-
NAT 通过在边界路由器上动态转换源/目的IP地址和端口号,使大量私有网络设备共享少量公网IP地址,解决了IPv4地址枯竭问题,但带来了安全、性能和应用兼容性方面的挑战。
3.5. IPv6
3.5.1. Pv6 的诞生背景:解决 IPv4 的根本性问题
-
地址空间枯竭:32位地址仅约 42.9 亿个,不足以支持全球设备。
-
NAT 的权宜之计:
-
虽然缓解了地址短缺,但带来:
-
端到端通信被破坏
-
应用层复杂性增加(如 P2P)
-
安全性和性能下降
-
-
✅ IPv6 是从根本上解决地址不足的长期方案。
3.5.2. IPv6 的核心改进
1. 地址空间巨大化
-
128 位地址 → 2^{128} 个地址 ≈ 3.4 \times 10^{38} 个
-
每平方米地球表面可分配数万亿个地址!完全足够。
2. 首部设计优化
-
固定长度 40 字节首部 → 加速路由器处理。
-
移除校验和 → 降低每跳处理开销。
-
禁止中间分片 → 分片由源主机完成,提升效率。
3. 新增功能支持
-
流标签(Flow Label):支持 QoS 和流量优先级管理。
-
扩展首部机制:通过"Next Header"灵活添加选项,不破坏主首部结构。
-
ICMPv6:ICMP的改进版,增强功能,如"Packet Too Big"和组播管理。
3.5.3. 数据报格式详解


3.5.4. IPv6 过渡技术(从 IPv4 到 IPv6)
1. 双栈技术(Dual Stack)
-
设备同时运行 IPv4 和 IPv6 协议栈。
-
适用于新建系统,平滑过渡。
2. 隧道技术(Tunneling)

-
将 IPv6 数据报封装在 IPv4 数据报中传输。
-
逻辑视图:A-B-E-F 为 IPv6 路由器,B-E 之间通过 IPv4 隧道连接。
-
物理视图:中间 C、D 为 IPv4 路由器,不理解 IPv6,只负责转发封装后的数据包。
-
如图:A 发送数据给 F → B 将 IPv6 数据封装进 IPv4 报文 → C、D 转发 → E 解封装 → 继续 IPv6 传输。

3. 地址协议转换技术(Translation)
-
实现 IPv4 与 IPv6 之间的协议转换。
-
适用于已上线系统,低成本实现。
3.5.5. IPv6 的部署现状与挑战
1. 当前采用情况
-
Google:8% 的客户端通过 IPv6 访问服务。
-
NIST:美国政府 1/3 域名支持 IPv6。
2. 部署缓慢的原因
-
长达 20 年的部署周期 → "Long (long!) time for deployment, use"
-
应用层变化巨大:过去 20 年出现了 WWW、Facebook、流媒体、Skype 等,网络架构持续演进。
-
兼容性与成本压力:现有设备、软件、网络基础设施需逐步升级。
-
IPv6 不是简单的"换地址",而是涉及整个网络生态的重构!
IPv6 通过 128 位地址空间、简化首部、支持 QoS 和多种过渡技术,解决了 IPv4 的根本性缺陷,但其部署因生态复杂性和历史惯性而进展缓慢。
路由器中的表
路由器里有几张核心的"表",它们分工明确,协同工作来确保数据能准确、快速地送达目的地。这些表主要包括路由表、转发表、ARP表和MAC地址表。你可以简单理解它们的关系:路由表负责"规划路径",转发表负责"加速转发",而ARP表和MAC地址表则负责在不同网络段中"找到具体的设备"。下面,我们来逐一深入了解它们各自的作用和区别。
🔍 一、路由表(Routing Table)
-
作用:存储所有已知路由信息(包括激活和未激活路由),是路由决策的核心依据。
-
内容:
-
目的网络地址、子网掩码、下一跳地址、出接口、路由优先级(Preference)和度量值(Cost)。
-
路由来源分为直连路由、静态路由和动态路由(如OSPF、BGP)。
-
-
特点:
- 包含Inactive路由(因优先级低未被选用的路由)。
-
通过
display ip routing-table命令查看激活路由,verbose参数可查看全部路由。
⚡ 二、转发表(Forwarding Information Base, FIB)
-
作用:基于路由表生成,仅包含激活路由,用于加速数据包转发。
-
特点:
-
与路由表同步更新,但查找效率更高(避免逐条匹配Inactive路由)。
-
支持硬件加速(如ASIC芯片),实现快速转发。
-
-
命令 :
display fib查看FIB表项。
🚀 三、快速转发表(Fast Forwarding Cache)
-
作用:基于数据流的五元组(源/目的IP、端口、协议号)缓存转发路径,避免重复查表。
-
工作流程:
-
首个数据包通过FIB表转发,并记录五元组到高速缓存(Cache)。
-
后续数据包直接匹配快速转发表,实现"一次路由,多次交换"。
-
-
特点:
- 缓存默认存活30秒,超时自动清除。
-
命令:
ip fast-forwarding启用功能,display ip fast-forwarding cache查看缓存。
📡 四、ARP表(Address Resolution Protocol Table)
-
作用:存储IP地址与MAC地址的映射关系,用于数据链路层封装。
-
工作原理:
-
通过ARP请求/响应动态学习MAC地址。
-
若表中无对应条目,则广播ARP请求解析地址。
-
-
典型场景:跨子网通信时,路由器需通过ARP获取下一跳的MAC地址。
🔗 五、MAC地址表(Media Access Control Table)
-
作用:记录MAC地址与交换机端口的映射关系,指导数据帧转发。
-
分类:
-
动态表项:自动学习,可老化(设备重启后丢失)。
-
静态表项:手工配置,不可老化(用于绑定合法设备)。
-
黑洞表项:丢弃指定MAC地址的报文(防御攻击)。
-
📊 四大核心表对比
| 表类型 | 工作层次 | 核心功能 | 典型设备 | 关键字段 |
|---|---|---|---|---|
| 路由表 | 网络层(L3) | 决定数据包跨网络路径 | 路由器 | 目的网络、下一跳、出接口 |
| 转发表(FIB) | 网络层(优化) | 加速数据包转发 | 路由器/三层交换机 | 目标网络→出口接口 |
| ARP表 | 网络层+链路层 | IP地址→MAC地址解析 | 主机/路由器 | IP地址、MAC地址 |
| MAC地址表 | 数据链路层(L2) | MAC地址→交换机端口映射 | 交换机 | MAC地址、端口号 |
💡 协作流程示例
当主机访问外部网络时:
-
路由表决策下一跳网关;
-
ARP表解析网关MAC地址;
-
MAC地址表指导交换机转发数据帧;
-
转发表/FIB加速路由器转发效率。
⚠️ 补充说明
-
协议专用表 :如BGP路由表(
display bgp routing-table)或VPN路由表(如Junos OS的bgp.l3vpn.0),用于特定路由协议或业务场景。 -
系统限制:部分设备支持多张路由表(如华为自定义路由表上限10张),需绑定交换机实例。
通过上述多表协同,路由器实现了从路径计算到高速转发的完整闭环,保障了网络通信的效率与可靠性。
