第 4 章 网络层
408 计算机网络第 4 章 网络层复习讲义,涵盖核心概念、重点考点与典型题型。
Last updated on
一、先建立整章框架
网络层最核心的问题其实只有一句话:
一个 IP 分组,怎样从源主机跨越若干不同网络,最终到达目的主机?
围绕这句话,本章可以拆成 8 块:
网络层
│
├─ 4.1 网络层功能
│ ├─ 异构网络互连
│ ├─ 路由选择 vs 分组转发
│ ├─ 数据报 vs 虚电路
│ ├─ SDN
│ └─ 拥塞控制
│
├─ 4.2 IPv4 ★★★★★
│ ├─ IPv4 首部 ★★★★
│ ├─ IP 分片 ★★★★★
│ ├─ IPv4 地址
│ ├─ 子网划分 ★★★★★
│ ├─ CIDR ★★★★★
│ ├─ 路由聚合 ★★★★★
│ ├─ 最长前缀匹配 ★★★★★
│ ├─ NAT ★★★★
│ ├─ ARP ★★★★★
│ ├─ DHCP ★★★
│ └─ ICMP ★★★★
│
├─ 4.3 IPv6 ★★★
│
├─ 4.4 路由算法与路由协议 ★★★★★
│ ├─ 距离向量
│ ├─ 链路状态
│ ├─ RIP
│ ├─ OSPF
│ └─ BGP
│
├─ 4.5 IP 多播 ★★
├─ 4.6 移动 IP ★★
└─ 4.7 路由器 ★★★★从资料中的“考点追踪”看,CIDR、路由聚合、子网划分、IP 分片、ARP、RIP/OSPF/BGP 都反复出现在历年题目中。尤其路由聚合标注了 2009、2011、2013、2014、2018,最长前缀匹配标注 2013、2015,定长/变长子网划分也多次出现。
二、4.1 网络层到底负责什么?
网络层提供的是:
主机到主机的通信。
这一点和另外几层一定区分开:
| 层 | 大致负责 |
|---|---|
| 数据链路层 | 相邻节点之间 |
| 网络层 | 主机到主机、跨网络 |
| 传输层 | 进程到进程 |
网络层最核心的两个功能:
1. 路由选择 Routing
解决:
“从这里到目的网络,应该走哪条路?”
它是一个全局问题。
路由器之间运行 RIP、OSPF、BGP 等协议,生成、维护路由表。
2. 分组转发 Forwarding
解决:
“这个已经来到我路由器的分组,具体应该从哪个接口发出去?”
它是一个局部动作。
所以要记住:
路由选择:算路
分组转发:走路路由表偏向“控制和计算”,转发表偏向“快速查询和真正转发”。资料对此进行了明确区分。
三、异构网络互连
互联网并不是一个巨大的同构局域网,而是:
以太网
Wi-Fi
光纤网络
PPP 网络
各种运营商网络
……通过路由器互连。
按设备最高工作层:
物理层:中继器、集线器
数据链路层:网桥、交换机
网络层:路由器
网络层以上:网关其中真正意义上实现不同网络互连的核心设备是:
路由器。
路由器让不同底层网络统一表现成一个 IP 网络。
四、数据报服务 vs 虚电路服务
这是一个很容易混的概念。
1. 数据报
Internet 的 IP 网络采用:
无连接、尽最大努力交付的数据报服务。
通信前不用建立连接。
每个 IP 数据报:
- 独立携带目的地址;
- 独立查路由表;
- 可以走不同路径;
- 可能乱序;
- 可能丢失;
- 可能重复;
- IP 不保证可靠。
例如:
A → R1 → R2 → B
A → R1 → R3 → B
A → R4 → R5 → B同一批 IP 数据报完全可能走不同路线。
2. 虚电路
虚电路先:
建立连接
↓
传输数据
↓
释放连接连接建立阶段先确定路径。
之后分组不必携带完整目的地址,而可以使用:
VCID,虚电路号。
因此同一虚电路上的分组通常走相同路径、有序到达。
3. 必考对比
| 特征 | 数据报 | 虚电路 |
|---|---|---|
| 建立连接 | 不需要 | 需要 |
| 路由 | 每个分组独立选择 | 建立时确定 |
| 分组携带 | 完整目的地址 | VCID |
| 顺序 | 可能乱序 | 通常有序 |
| 故障适应 | 强 | 较差 |
| 网络可靠性 | 尽力而为 | 网络可提供更多保障 |
| Internet IP | 是 | 否 |
资料特别指出 TCP/IP 网络层采取的是简单、灵活、无连接、尽最大努力交付的数据报服务。
五、SDN:控制平面和数据平面
这是现在考纲中的新考点。
传统路由器内部同时存在:
控制平面
↓
生成路由表/转发表
↓
数据平面
↓
真正转发数据传统模式下,每台路由器自己运行路由协议。
而 SDN:
SDN 控制器
控制平面
│
南向接口
OpenFlow
│
┌─────────┼─────────┐
交换机 交换机 交换机
数据平面 数据平面 数据平面核心:
控制平面与数据平面分离。
三类接口
北向接口
应用程序
↓
控制器上层应用访问控制器。
南向接口
控制器
↓
交换机典型 OpenFlow。
这个是真题点:
SDN 控制器向交换机下发流表:南向接口。
东西向接口
控制器和控制器之间。
资料还指出,OpenFlow 流表匹配字段可涉及链路层、网络层和传输层。模拟题中对应答案为 II、III、IV。
六、拥塞控制
先区分:
流量控制
解决:
发送方太快,接收方吃不消。
本质:
发送方 ↔ 接收方是点到点问题。
拥塞控制
解决:
整个网络中的分组太多,路由器、链路顶不住。
本质:
整个网络是全局问题。
拥塞严重时会出现:
负载 ↑
但
吞吐量 ↓这是典型拥塞信号。
方法:
- 开环控制:事先预防;
- 闭环控制:检测 → 反馈 → 调整。
七、4.2 IPv4 —— 本章核心
这是整章最重要的部分。
八、IPv4 数据报首部
IPv4 首部最小:
最大:
资料列出的字段中,高频字段尤其包括首部长度、总长度、标识、DF/MF、片偏移、TTL 和协议字段。
1. 三个“长度单位”是大坑
必须背:
| 字段 | 单位 |
|---|---|
| 首部长度 | 4B |
| 总长度 | 1B |
| 片偏移 | 8B |
这是非常典型的选择题陷阱。
2. 首部长度
4 bit。
所以最大:
没有选项字段:
因此看到:
45IPv4 首部很常见。
其中:
4 → IPv4
5 → 5×4 = 20B首部九、TTL —— 高频
TTL 即 Time To Live。
虽然叫“生存时间”,IPv4 实际上主要按:
跳数
处理。
经过一个路由器:
若减为 0:
丢弃 IP 数据报
↓
向源主机发送 ICMP 时间超过报文为什么要 TTL?
为了防止路由环路:
R1 → R2 → R3
↑ ↓
└─────────┘否则数据报可能无限循环。
这也是 traceroute 的基础。
十、协议字段
告诉 IP:
“数据部分应该交给谁?”
典型:
ICMP 也直接封装在 IP 中。
十一、IPv4 分片 —— ★★★★★
这是大重点。
资料明确标记 IP 分片字段在 2011、分片原理在 2021 等年份出现。
1. 为什么分片?
假设:
IP 数据报:4000B
↓
某条链路 MTU:1500B4000B 放不进帧。
所以:
IP 数据报必须拆成多个更小的 IP 数据报。
2. MTU 是什么?
Maximum Transmission Unit:
链路层帧的数据部分能装的最大长度。
比如典型以太网:
注意:
这里的 1500B 包括整个 IP 数据报,即 IP 首部 + IP 数据。
十二、分片最重要的三个字段
1. Identification 标识
同一个原始数据报产生的所有分片:
标识相同。
目的主机靠它判断:
这些分片是不是一家人?模拟题里就有:
第一次 UDP 数据报分成 4 片,只收到后两片;重传后只收到前两片。能不能拼起来?
不能。
因为这是两次不同的 IP 数据报:
标识字段不同。
2. MF
More Fragment。
MF=1:后面还有
MF=0:最后一片注意:
第一片、中间片通常 MF=1。
只有最后一片:
3. DF
Don't Fragment。
DF=1:禁止分片
DF=0:允许分片十三、片偏移 —— 最容易算错
片偏移单位:
不是 1B。
因此:
注意是:
数据部分的位置,不包括 IP 首部。
十四、分片通用算法
假设:
- 原 IP 数据报总长度
- IP 首部长度
- 链路 MTU 为
每一个非最后分片允许携带的最大数据量:
这是建议你直接记住的公式。
为什么还要除 8 再乘 8?
因为除最后一片之外:
数据长度必须是 8B 整数倍。
例题
原数据报:
首部:
所以原数据:
MTU:
每片最多:
而:
所以很好。
数据分:
1480
1480
1020第一片
数据:
总长度:
片偏移:
MF:
第二片
前面已经有 1480B:
MF:
总长:
第三片
前面已经有:
所以:
最后一片:
总长度:
最终表:
| 片 | 数据 | 总长 | Offset | MF |
|---|---|---|---|---|
| 1 | 1480 | 1500 | 0 | 1 |
| 2 | 1480 | 1500 | 185 | 1 |
| 3 | 1020 | 1040 | 370 | 0 |
和资料示例一致。
十五、谁负责分片、谁负责重组?
IPv4:
源主机:可以分片
中间路由器:可以继续分片
目的主机:重组重点:
中间路由器绝不重组。
否则:
分片可能走不同路线路由器没办法确定后面的分片都会经过它。
408 模拟资料也专门强调:
IP 分片重组属于目的主机网络层的工作,而乱序 TCP 数据则由传输层重新排序。
十六、IPv4 地址 —— 一定理解“接口”
IPv4:
最重要的一句话:
IP 地址严格来说标识的是网络接口,不是整台主机。
例如一个路由器:
R
/ \
接口1 接口2
IP1 IP2会有多个 IP 地址。
因为每个接口处于不同网络。
十七、传统 A/B/C 类
现在实际网络更多使用 CIDR,但考试仍然要会。
| 类 | 第一字节 | 默认前缀 |
|---|---|---|
| A | 1~126 | /8 |
| B | 128~191 | /16 |
| C | 192~223 | /24 |
| D | 224~239 | 多播 |
| E | 240~255 | 保留 |
几个特殊地址:
网络地址
主机号全 0。
例如:
192.168.1.0/24广播地址
主机号全 1:
192.168.1.255/24环回
127.x.x.x未指定地址
0.0.0.0DHCP 初始阶段常用。
受限广播
255.255.255.255十八、子网掩码 —— ★★★★★
这是你做网络层计算题的核心工具。
假设:
IP:
192.168.1.130
掩码:
255.255.255.192二进制:
192 = 11000000因此掩码:
11111111.11111111.11111111.11000000也就是:
网络地址怎么求?
公式:
130:
10000010192:
11000000AND:
10000000 = 128所以网络地址:
192.168.1.128/26十九、一个前缀有多少地址?
若前缀:
主机位:
地址总数:
传统情况下可用主机地址数:
减掉:
- 网络地址;
- 广播地址。
例如:
主机位:
总地址:
可用:
二十、快速算地址块:块大小法
这个方法非常适合考场。
例如掩码:
255.255.255.224最后一个有效字节:
块大小:
所以网络地址按 32 跳:
0
32
64
96
128
160
192
224即:
192.168.1.0/27
192.168.1.32/27
192.168.1.64/27
...假设 IP:
192.168.1.77/2777 落在:
64 ~ 95因此:
网络地址 192.168.1.64
广播地址 192.168.1.95
可用地址 192.168.1.65 ~ 94二十一、定长子网划分 FLSM —— ★★★★★
假设:
192.168.5.0/24现在使用:
255.255.255.248248:
11111000所以:
原来:
借了:
位做子网号。
子网数:
剩余主机位:
每子网地址:
可用:
所以:
32 个子网,每子网最多 6 个可分配地址。
这正是资料列出的 2010 真题类型。
二十二、VLSM 变长子网划分 —— ★★★★★
这是现在非常重要的题型。
核心原则:
按需求从大到小分。
例如获得:
192.168.1.0/24三个部门分别需要:
100
50
201. 100 台
找最小 :
所以前缀:
分:
192.168.1.0/25范围:
0 ~ 1272. 50 台
所以:
接着从 128 开始:
192.168.1.128/26范围:
128 ~ 1913. 20 台
所以:
接:
192.168.1.192/27范围:
192 ~ 223所以最终:
100台 → /25
50台 → /26
20台 → /27最关键:
不要先给小子网分。
资料给出的 VLSM 示例也是按“先分配最大子网”的原则处理。
二十三、CIDR —— ★★★★★
CIDR 的核心:
不再死板地分 A/B/C 类。
而是:
IP地址/前缀长度例如:
128.14.32.5/20说明:
前 20 位:网络前缀
后 12 位:主机掩码:
255.255.240.0/20 地址范围怎么求?
第三字节掩码:
240块大小:
32 落在:
32 ~ 47所以:
网络地址:
128.14.32.0
广播地址:
128.14.47.255总地址:
二十四、路由聚合 —— ★★★★★
也叫:
supernetting / route aggregation
核心思想:
多个连续小网络,用一个更大前缀表示。
例如:
206.1.0.0/17
206.1.128.0/17前 16 位相同:
206.1第 17 位不同。
所以可以聚合:
206.1.0.0/16资料正是用这个例子解释路由聚合。
二十五、路由聚合题万能算法
给一组网络地址:
第一步
全部写成二进制。
第二步
从左向右找:
公共前缀。
第三步
公共前缀长度就是聚合后的 /n。
例如:
192.168.4.0
192.168.5.0
192.168.6.0
192.168.7.0第三字节:
4 = 00000100
5 = 00000101
6 = 00000110
7 = 00000111共同:
000001前面已有:
这里再相同:
所以:
聚合:
192.168.4.0/22二十六、最长前缀匹配 —— ★★★★★
这是 CIDR 转发题的灵魂。
假设路由表:
10.0.0.0/8 → R1
10.1.0.0/16 → R2
10.1.2.0/24 → R3
0.0.0.0/0 → R4目的:
10.1.2.100它同时匹配:
/8
/16
/24
/0应该选:
/24 → R3原则:
前缀最长 = 范围最小 = 信息最具体。
资料称之为“最长前缀匹配/最佳匹配”。
二十七、特殊路由
主机路由
某一台具体主机:
192.168.1.7/32前缀最长:
所以优先级很高。
默认路由
0.0.0.0/0匹配所有地址。
但:
优先级最低。
可以理解:
实在找不到路了,就往这里发。二十八、直接交付 vs 间接交付
假设 A 发给 B。
A 首先判断:
和:
是否相同。
相同
同子网:
A
↓ ARP查B
B直接获取 B 的 MAC。
不相同
跨网:
A
↓
默认网关
↓
其他路由器
↓
BA 此时:
ARP 查询的不是 B 的 MAC。
而是:
默认网关接口的 MAC。
这是超级高频易错点。
二十九、NAT —— ★★★★
NAT 解决:
私有地址如何共享少数公网 IP 上网。
三个私有地址块必须背:
10.0.0.0/8
172.16.0.0/12
即 172.16.0.0 ~ 172.31.255.255
192.168.0.0/16资料指出这些私有地址不能直接在公网路由,而要通过 NAT 映射成公网地址。
三十、PAT/NAPT 的本质
例如:
内网:
10.0.0.1:3345
公网:
138.76.29.7NAT 可以改成:
138.76.29.7:5001建立:
10.0.0.1:3345
↕
138.76.29.7:5001服务器返回:
138.76.29.7:5001NAT 查表:
↓
10.0.0.1:3345所以:
一个公网 IP 可以依靠大量不同端口映射许多内网连接。
普通路由器转发一般不修改端到端 IP 地址;NAT 路由器会修改地址,并通常还会涉及端口,因此功能涉及网络层和传输层信息。
三十一、ARP —— ★★★★★
ARP 解决:
已经知道下一跳 IP,但不知道下一跳 MAC。
所以可以记:
IP → MAC资料将 ARP 工作原理、解析过程和跨局域网解析都列作高频考点。
三十二、ARP 完整过程
A:
IP_A
MAC_A想找 B:
IP_B
MAC_B = ?首先查:
ARP Cache若没有:
ARP Request
目的 MAC:
FF:FF:FF:FF:FF:FF广播:
“谁是 IP_B?请告诉 IP_A。”
整个广播域收到。
B 发现:
目标IP = 自己于是返回:
ARP Reply
通常单播:
B → A告诉:
IP_B ↔ MAC_BA 存入 ARP Cache。
三十三、跨网络 ARP —— 必须彻底理解
假设:
H1 —— R1 —— R2 —— H4H1 要发送给 H4。
H1 已知:
目的 IP = IP_H4但 H4 不在同一网络。
所以 H1 不会问:
“IP_H4 的 MAC 是什么?”
因为 ARP 广播过不了路由器。
而是:
“我的默认网关 R1 的 MAC 是什么?”
于是第一跳帧:
源 MAC:MAC_H1
目的 MAC:MAC_R1但 IP 数据报:
源 IP:IP_H1
目的 IP:IP_H4到了 R1:
拆帧
↓
看 IP
↓
查路由
↓
找下一跳 R2
↓
ARP 找 R2 MAC
↓
重新封帧第二跳:
源MAC:R1出口MAC
目的MAC:R2入口MACIP 仍是:
IP_H1 → IP_H4最后:
R2 → H4才解析 H4 的 MAC。
资料专门强调:每经过一台路由器,外层 MAC 帧的源、目的地址都可能改变。
三十四、需要形成的“跨网通信脑图”
这是整章最重要的综合理解:
应用数据
↓
TCP/UDP
↓
IP数据报
源IP = A
目的IP = B
↓
第一跳以太网帧
源MAC = A
目的MAC = 默认网关R1
↓
R1拆帧
↓
查目的IP
↓
R1重新封帧
源MAC = R1出口
目的MAC = R2入口
↓
R2
↓
……
↓
最后一跳
源MAC = 最后一台路由器
目的MAC = B绝大多数普通情况下:
端到端:
源IP、目的IP基本不变
逐跳:
源MAC、目的MAC不断变化
另外:
TTL 每过一台路由器减1NAT 是 IP 地址可能被修改的重要例外。
三十五、DHCP —— ★★★
解决:
新主机怎么自动得到 IP、掩码、网关、DNS?
DHCP:
应用层协议,使用 UDP。
模拟题也直接考过“DHCP 属于哪一层”,答案为应用层。
三十六、DHCP 四步:DORA
必须会:
Discover
Offer
Request
ACK简称:
DORA
第一步 Discover
主机刚开机:
我是谁不知道
DHCP服务器是谁也不知道所以:
源 IP:
0.0.0.0目的:
255.255.255.255广播。
第二步 Offer
DHCP Server:
“我可以给你 192.168.1.100。”
并提供:
- IP;
- 子网掩码;
- 默认网关;
- DNS;
- 租期。
第三步 Request
客户端:
“我要接受这台 DHCP 服务器给我的地址。”
为什么仍常广播?
因为可能同时收到了:
Server A Offer
Server B Offer
Server C Offer广播 Request 可以让其他 Server 知道:
我没有选择你们,可以释放预留资源。
第四步 ACK
服务器确认:
这个 IP 正式租给你。三十七、DHCP 端口
常考:
Server:UDP 67
Client:UDP 68三十八、ICMP —— ★★★★
ICMP:
Internet Control Message Protocol
功能:
网络层差错报告和控制。
它不是 TCP/UDP 上面的应用协议。
而是:
ICMP
↓
IP即:
ICMP 报文封装在 IP 数据报中。
模拟题中就考到:ICMP 不由 TCP 提供服务,而是直接由 IP 承载。
三十九、ICMP 五类差错报告
资料列出的主要类型:
1. 终点不可达
无法到达目标。
2. 时间超过
典型:
也包括分片重组超时。
3. 参数问题
IP 首部字段有问题。
4. 重定向
路由器告诉主机:
“以后去那个网络别先给我,直接发给另一个更合适的路由器。”
5. 源点抑制
资料中保留这一传统 ICMP 类型,用于让源端降低发送速率。
四十、什么时候不能产生 ICMP 差错报告?
非常适合选择题。
资料列出:
- ICMP 差错报告报文本身出错;
- 非第一个 IP 分片;
- 目的地址为广播或多播;
- 某些特殊地址。
核心思想:
防止 ICMP 错误导致新的 ICMP 错误,无限套娃。
四十一、PING 原理
PING:
ICMP Echo Request
↓
ICMP Echo Reply主要测试:
- 主机是否可达;
- RTT。
注意:
ping 不用 TCP,也不用 UDP。
四十二、Traceroute 原理
非常经典。
先发:
第一台路由器:
TTL 1→0
丢弃
返回 ICMP 时间超过于是知道第一跳。
再:
第二台返回。
然后:
这样逐跳得到路径。
四十三、IPv6 —— 中等重点
IPv6 地址:
IPv4:
所以地址空间扩大:
倍。
四十四、IPv6 相比 IPv4 的重点变化
资料总结得非常适合考试:
IPv6 基本首部固定
IPv4:
20~60BIPv6 取消首部校验和
为什么?
路由器每跳都要改 Hop Limit。
如果存在首部校验和:
每经过一跳
↓
修改首部
↓
重算校验和很浪费。
所以 IPv6 去掉。
IPv6 路由器不负责分片
IPv6:
只有源主机分片。
不同于 IPv4。
TTL 改名
IPv4:
TTLIPv6:
Hop Limit更准确。
Protocol 改为
Next Header因为它可能指向:
扩展首部也可能直接指向:
TCP
UDP
ICMPv6资料指出 IPv6 基本首部固定 40B、取消首部检验和,且路由器不再分片。
四十五、IPv6 地址书写
128 bit:
xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx8 组,每组:
前导零可以省
039A → 39A
000A → A但是:
只能省前导零。
比如:
D000不能写:
D0因为值已经变了。
连续全 0 组
可以:
::例如:
4BF5:0:0:0:BA5F:39A:A:2176写成:
4BF5::BA5F:39A:A:2176一个 IPv6 地址:
::最多只能出现一次。
否则无法恢复到底省略了几组。
四十六、IPv6 三种通信地址
单播
一对一多播
一对多任播
一个地址代表一组节点
但只交给其中“最近”的一个任播是 IPv6 中很重要的新概念。
四十七、IPv4 → IPv6 过渡
两个重点:
双协议栈
设备同时:
IPv4
+
IPv6根据目标选择。
隧道
IPv6 网络之间隔着 IPv4 网络:
IPv6
↓
封装进 IPv4
↓
穿越 IPv4 网络
↓
解封装
↓
IPv6资料把双协议栈和隧道技术列为主要过渡策略。
四十八、4.4 路由算法 —— 第二核心
这一块的总框架:
动态路由
│
├─ Distance Vector
│ ↓
│ Bellman-Ford
│ ↓
│ RIP
│
└─ Link State
↓
Dijkstra
↓
OSPF
不同AS之间:
BGP资料明确说明,DV 基于 Bellman-Ford,LS 需要掌握全网拓扑并使用 Dijkstra。
四十九、静态路由 vs 动态路由
静态
管理员手工填:
Network X → Router Y优点:
- 简单;
- 无协议开销。
缺点:
- 网络变了不会自动调整。
动态
路由器自己交换信息。
例如:
链路断了
↓
协议检测
↓
重新计算
↓
更新路由表适合大型网络。
五十、距离向量算法 DV —— ★★★★★
Distance Vector:
每个路由器不需要知道完整网络拓扑。
只需要知道:
- 我的邻居是谁;
- 到邻居费用多少;
- 邻居告诉我:“它到各目标多远”。
核心 Bellman-Ford:
意思:
x 去 y,可以先经过某个邻居 。
把:
x→v的成本:
加上邻居告诉你的:
v→y成本:
然后所有邻居中取最小。
五十一、DV 举例
假设:
2
X ------- Y
\ /
\7 1/
\ /
ZX 到 Z:
直接:
通过 Y:
所以:
下一跳:
Y这就是 DV 的本质。
五十二、链路状态算法 LS —— ★★★★★
Link State:
每个路由器最终都知道完整拓扑。
每台路由器先告诉大家:
我连接谁?
每条链路代价是多少?通过:
洪泛 Flooding
传播到整个区域。
于是大家得到相同:
LSDB
链路状态数据库之后每台路由器自己运行:
Dijkstra
得到最短路径树。
五十三、Dijkstra 在网络中的做法
假设从节点 出发。
维护:
N':已确定最短路径的节点集合
D(v):当前到v的最小估计距离初始化:
对于与 直接相连的:
其余:
重复:
第一步
从未确定节点中选:
最小的 。
加入:
第二步
松弛:
直到所有节点处理完成。
五十四、DV vs LS
| DV | LS | |
|---|---|---|
| 典型 | RIP | OSPF |
| 算法 | Bellman-Ford | Dijkstra |
| 拓扑知识 | 只知道邻居提供信息 | 完整拓扑 |
| 信息发送给 | 邻居 | 洪泛到整个区域 |
| 信息内容 | 距离向量/路由信息 | 自己的链路状态 |
| 收敛 | 较慢 | 较快 |
| 路由环路 | 可能 | 较少 |
| 适合 | 小网络 | 大网络 |
五十五、为什么要自治系统 AS?
Internet 太大。
不可能:
全世界所有路由器运行一个算法,共享所有详细拓扑。
所以划成:
AS1
AS2
AS3
……AS:
Autonomous System,自治系统。
AS 内
使用:
IGP
例如:
RIP
OSPFAS 间
使用:
EGP
现在最重要:
BGP五十六、RIP —— ★★★★★
RIP:
Routing Information Protocol
典型:
Distance Vector。
1. 距离单位
RIP 用:
跳数。
经过一个路由器:
2. 最大距离
最大有效:
所以:
这是经典考点。
3. RIP 使用 UDP
RIP:
应用层协议
↓
UDP端口:
这个和 OSPF、BGP 特别爱一起考。模拟资料也专门提醒:不能笼统说 RIP、OSPF、BGP 都是网络层协议。
五十七、RIP 路由表更新算法 —— 一定掌握
假设:
R1 收到相邻 R2 的 RIP 表第一步:
所有距离先 +1。
因为从 R1 去任何 R2 报告的网络,首先要走:
R1 → R2然后对于目的网络 :
情况 1:我没有 N
直接加入。
情况 2:原本也是通过 R2
无论新距离:
更大
还是
更小都更新。
因为:
我的这条路本来就依赖 R2,R2 告诉我状态变了,我就应该相信最新信息。
这个是最容易做错的地方。
情况 3:原下一跳不是 R2
比较:
新路线 < 原路线才替换。
情况 4
新路线不更好:
不更新。
五十八、资料中的 RIP 题
R1 原表:
| 网络 | 距离 | 下一跳 |
|---|---|---|
| 10 | 0 | 直接 |
| 20 | 7 | R2 |
| 30 | 4 | R2 |
R2 发来:
| 网络 | 距离 |
|---|---|
| 10 | 3 |
| 20 | 4 |
| 30 | 3 |
先:
得到:
10 → 4
20 → 5
30 → 4但是:
10
本地直连:
不会换成 4。
20
原本下一跳就是 R2。
所以即便:
更新。
30
也是 R2:
保持 4。
结果:
0, 5, 4答案 D。资料中的模拟选择题正是这类 RIP 更新题。
五十九、RIP 最大问题:坏消息传播慢
假设:
R1 —— N
|
R2原来:
R1 到 N = 4
R2 到 N = 5,经R1后来 N 断了。
R1:
N不可达但是 R2 还不知道,告诉 R1:
“我到 N 距离 5。”
R1 误以为:
“那我可以经过 R2 去 N。”
于是:
随后 R2 又听 R1 说:
于是认为:
循环:
6
7
8
9
...
16直到:
才认定不可达。
这叫:
count to infinity,无穷计数。
资料称:
好消息传播快,坏消息传播慢。
六十、OSPF —— ★★★★★
OSPF:
Open Shortest Path First
采用:
链路状态算法
+
DijkstraOSPF 和 RIP 的关键区别
RIP
告诉邻居:
“我到所有网络分别多远。”
OSPF
告诉大家:
“我直接连接了哪些邻居,这些链路代价是多少。”
非常重要。
六十一、OSPF 信息传播
OSPF 使用:
洪泛。
假如 R1 产生新链路状态:
R1
↓ ↓ ↓
邻居
↓ ↓ ↓
邻居的邻居
...直到区域内所有路由器都拥有副本。
最终:
所有路由器 LSDB 基本一致然后每台自己运行 Dijkstra。
六十二、OSPF 不走 UDP/TCP
OSPF:
直接封装在 IP 中。
IP Protocol:
对比:
RIP → UDP 520
OSPF → IP protocol 89
BGP → TCP 179这张表一定背。
六十三、OSPF 为什么适合大网络?
因为:
- 收敛快;
- 没有 RIP 15 跳限制;
- 链路变化立即传播;
- 支持 CIDR/VLSM;
- 支持区域 Area;
- 可做等价路径负载均衡。
模拟资料也把 RIP 与 OSPF 的区别整理为:RIP 适合规模较小、较稳定网络;OSPF 更适合大型、动态网络。
六十四、OSPF Area
大 AS 仍然太大。
所以:
AS
│
├─ Area 1
├─ Area 2
├─ Area 3
└─ Backbone Area核心:
链路状态洪泛限制在区域内部。
否则所有路由器频繁向整个 AS 洪泛,开销太大。
六十五、OSPF 五种报文 —— 选择题高频
按工作流程理解,不要死背。
Hello
你还活着吗?
我是你的邻居。发现/维护邻居。
DD
Database Description。
这是我数据库的大纲。不是完整内容。
LSR
Link State Request。
你这个LSA我没有/太旧,给我完整版本。LSU
Link State Update。
这是你要的完整链路状态信息。核心更新报文。
LSAck
我收到了。确认。
所以顺序逻辑:
Hello
↓
DD
↓
LSR
↓
LSU
↓
LSAck六十六、BGP —— ★★★★
BGP:
Border Gateway Protocol
作用:
不同 AS 之间交换路由。
BGP 为什么不能简单用 Dijkstra?
因为 AS 之间不仅考虑技术性能。
还考虑:
- 商业;
- 政策;
- 安全;
- 运营商关系;
- 哪些 AS 可以经过。
所以 BGP 的目标不是:
数学意义上的绝对最短。
而是:
策略允许条件下的一条较好的、可达、无环路径。
六十七、BGP 是路径向量
RIP:
距离向量OSPF:
链路状态BGP:
路径向量核心属性:
AS-PATH
NEXT-HOP资料明确把 BGP 定义为基于 TCP 的应用层路径向量协议。
六十八、AS-PATH 为什么能防环?
假设路由:
AS1 → AS2 → AS3 → XAS-PATH:
AS1 AS2 AS3如果 AS2 收到一个路由通告,发现:
AS-PATH 已经含有 AS2说明:
这条路会绕回来。
直接拒绝。
六十九、BGP 使用 TCP
端口:
所以三大协议:
| 协议 | 类型 | 算法 | 承载 |
|---|---|---|---|
| RIP | IGP | DV | UDP 520 |
| OSPF | IGP | LS | IP 89 |
| BGP | EGP | Path Vector | TCP 179 |
这张表价值非常高。
七十、eBGP 与 iBGP
eBGP
不同 AS:
AS1 ↔ AS2iBGP
同一 AS 内部,把外部 BGP 路由传播给本 AS 的其他 BGP 路由器。
所以:
BGP 不只是“边界路由器之间有一个协议”这么简单。
AS 内部也需要 iBGP。
七十一、BGP 路由选择
按资料的考研框架,主要顺序理解成:
第一
优先:
LOCAL-PREF 更高。
代表管理员的策略。
第二
若本地偏好相同:
AS-PATH 更短。
第三
仍相同:
热土豆路由。
即:
尽快把数据丢出自己的 AS。
利用 IGP 比较到不同出口的代价。
第四
最后还相同:
进一步根据标识等规则决策。
对于 408,理解前面三项尤其重要。
七十二、BGP 四种报文
Open
建立 BGP 会话。
Update
增加/撤销路由。
Keepalive
保持连接。
Notification
报告错误。
记:
Open → 建关系
Update → 说路由
Keepalive → 还活着
Notification → 出错了七十三、RIP / OSPF / BGP 一张终极表
| RIP | OSPF | BGP | |
|---|---|---|---|
| 范围 | AS 内 | AS 内 | AS 间为核心 |
| 类型 | IGP | IGP | EGP |
| 算法 | 距离向量 | 链路状态 | 路径向量 |
| 底层 | UDP | IP | TCP |
| 端口/协议号 | UDP 520 | IP 89 | TCP 179 |
| 度量 | 跳数 | 链路代价 | 策略、AS-PATH 等 |
| 最大跳数 | 15 | 无 RIP 式限制 | 不这样衡量 |
| 信息交换 | 邻居 | 区域内洪泛 | BGP 对等体 |
| 内容 | 路由信息/距离向量 | 直连链路状态 | BGP 路由、AS-PATH 等 |
| 收敛 | 慢 | 快 | 强调策略稳定性 |
| 典型规模 | 小 | 大 | Internet AS 间 |
资料中的模拟题也集中考这些区别。
七十四、IP 多播 —— 理解即可
单播:
服务器 → A
服务器 → B
服务器 → C发三份。
多播:
┌→ A
服务器 → 网络
├→ B
└→ C服务器只需发一份。
在分叉处复制。
七十五、IPv4 多播地址
D 类:
224.0.0.0
~
239.255.255.255即:
注意:
多播地址只能作为目的地址。
不能作为源地址。
七十六、IP 多播和 MAC 多播映射
以太网多播 MAC 范围前缀:
01-00-5EIPv4 多播有:
位标识组。
MAC 这里只映射:
位。
因此:
个不同 IP 多播地址:
可能映射到同一个 MAC 多播地址。
因此收到 MAC 多播帧后:
IP 层还要进一步检查目的 IP。
资料对此给出了完整映射说明。
七十七、IGMP
IGMP:
管理主机加入、离开多播组。
它回答的是:
“这个局域网里还有没有某个组的成员?”
不是:
“全互联网某个组到底有多少成员?”
这是典型辨析。
七十八、移动 IP —— 理解
核心问题:
假设手机/笔记本:
网络 A
↓
移动
↓
网络 B普通 DHCP:
IP地址也变化但 TCP 连接会因为 IP 变化而受到影响。
移动 IP 希望:
移动以后仍保留永久地址。
七十九、三个实体
Mobile Node
移动节点。
Home Agent
归属代理。
Foreign Agent
外地代理。
八十、移动 IP 通信过程
假设移动主机永久 IP:
131.8.6.7现在跑到另一个网络。
获得:
Care-of Address,转交地址。
归属代理记录:
永久IP
↓
现在实际在哪里
↓
转交地址外部主机 B 仍然发给:
永久IP分组先到:
Home Agent然后:
封装
↓
IP隧道
↓
Foreign Agent
↓
解封装
↓
移动主机资料将这个过程概括为“邮件转寄”模型。
八十一、路由器 —— ★★★★
路由器内部核心:
路由选择处理机
控制平面
│
路由表
↓
转发表
│
输入端口 → 交换结构 → 输出端口
数据平面资料明确把路由器分为路由选择/控制平面和分组转发/数据平面。
八十二、路由器收到一个帧到底做什么?
假设:
以太网帧进入路由器。
1. 物理层
接收比特。
2. 数据链路层
检查帧,并:
去掉 MAC 帧头/帧尾得到:
IP 数据报3. 网络层
读取:
目的 IP查转发表。
TTL:
必要时更新 IPv4 首部校验和。
4. 找下一跳
得到:
下一跳IP5. ARP
得到:
下一跳MAC6. 重新封装
新的:
MAC帧7. 输出
从对应接口发送。
八十三、交换机与路由器:广播域/冲突域
集线器
不能隔离冲突域
不能隔离广播域交换机
每端口一个冲突域
但默认不隔离广播域路由器
隔离冲突域
隔离广播域因此:
路由器每个接口通常属于不同广播域。
资料也把冲突域/广播域作为 2010、2020 的考点。
八十四、整章最重要的综合通信过程
假设:
H1
|
SW1
|
R1
|
R2
|
SW2
|
H2H1 向 H2 发 TCP 数据。
你做综合题时按下面顺序分析。
第一步:H1 判断 H2 是否同网段
计算:
和:
若不同:
发给默认网关 R1。
八十五、第二步:H1 ARP 默认网关
H1 不知道 R1 MAC:
ARP Request交换机:
广播R1 回复:
ARP Reply
单播H1 得到:
IP_R1 ↔ MAC_R1八十六、第三步:第一跳帧
IP:
Src IP = H1
Dst IP = H2MAC:
Src MAC = H1
Dst MAC = R1八十七、第四步:R1 转发
R1:
拆 MAC 帧
↓
读取 H2 的 IP
↓
查路由表
↓
最长前缀匹配
↓
找到下一跳 R2
↓
ARP 找 R2 MAC新的 MAC:
Src MAC = R1出口
Dst MAC = R2而 IP 仍然是:
H1 → H2TTL:
八十八、第五步:R2 到目的 LAN
R2 判断:
H2网络是直连ARP:
H2 IP → H2 MAC最后一跳:
Src MAC = R2
Dst MAC = H2
Src IP = H1
Dst IP = H2最终送到 H2。
八十九、如果中间有 NAT?
那么会出现额外变化:
普通路由:
IP 源/目的地址一般保持NAT:
会修改 IP 地址
甚至修改 TCP/UDP 端口所以遇到综合题一定先看:
有没有 NAT。
九十、整章最值得熟练到“秒杀”的计算公式
1. 主机位
2. 地址块大小
3. 普通可分配主机数
4. 从原 /m 借 位
新前缀:
子网数:
5. 网络地址
6. IPv4 分片每片最大数据
7. 片偏移
8. 距离向量
九十一、几个特别容易错的点
错误 1
ARP 查最终目的主机 MAC。
只有同一广播域才是。
跨网:
查下一跳 MAC。
错误 2
IP 地址标识主机。
更准确:
标识接口。
错误 3
MAC 地址端到端不变。
反了。
通常:
MAC逐跳变
IP端到端基本不变错误 4
路由器重组 IPv4 分片。
不。
目的主机重组。
错误 5
MF=0 表示没分片。
不一定。
它只表示:
后面没有更多分片。
最后一个分片同样是:
错误 6
Offset 单位是 B。
错:
错误 7
RIP 的 16 跳还能到。
不。
错误 8
RIP、OSPF、BGP 都用 UDP/TCP。
不。
RIP → UDP
OSPF → IP
BGP → TCP错误 9
默认路由优先匹配。
恰恰相反。
是最短前缀:
最后兜底。
错误 10
最长前缀匹配选网络最大的。
恰恰相反:
前缀越长
↓
地址块越小
↓
路由越精确
↓
越优先九十二、408 复习优先级
如果准备考试,建议这一章分三档。
第一档:必须做到计算题基本不失分
- 子网掩码;
- CIDR;
- 网络地址、广播地址;
- FLSM;
- VLSM;
- 路由聚合;
- 最长前缀匹配;
- IPv4 分片;
- 路由表转发;
- RIP 更新算法。
这些是全章真正的核心。
第二档:必须能够画出完整通信过程
- ARP;
- 跨网 ARP;
- 默认网关;
- IP 地址与 MAC 地址变化;
- NAT;
- DHCP;
- ICMP;
- RIP/OSPF/BGP。
尤其要能够回答:
“H1 给不同网段的 H2 发一个 HTTP/TCP/IP 数据,DNS、ARP、交换机、路由器、MAC、IP、TCP 分别发生什么?”
这类题可以横跨网络几乎所有章节。
第三档:选择题级理解
- SDN;
- IPv6;
- IP 多播;
- IGMP;
- 移动 IP。
不需要像子网划分一样大量算题,但概念不能混。
九十三、最后用一张“大图”把第 4 章串起来
应用要把数据发给另一台主机
│
▼
得到目的 IP 地址
│
▼
判断是否处于同一子网
IP AND Mask 比较
/ \
是 否
│ │
│ 下一跳=默认网关
│ │
└──────┬───────┘
▼
ARP:下一跳IP→MAC
│
▼
封装 MAC 帧
│
▼
发送
│
▼
路由器
│
解开链路层帧
│
▼
读取目的 IP 地址
│
▼
TTL = TTL - 1
│
▼
查路由表 / 最长前缀匹配
│
▼
得到下一跳 IP
│
▼
ARP 获取 MAC
│
▼
重新封装 MAC 帧
│
▼
下一路由器
│
...
│
▼
目的主机所在 LAN
│
▼
ARP 得到目的 MAC
│
▼
最终交付主机这张流程如果真正理解,第 4 章至少有一半已经打通了。
资料本章的总结也特别强调了两个关键联系:一是路由表给出下一跳 IP 后,还需要 ARP 将它解析为 MAC 地址;二是路由器转发时会解封装输入链路的帧、处理 IP 数据报,再针对下一链路重新封装,因此它能够互连底层技术不同的网络。
最需要反复练的顺序建议是:
把这 7 组题型吃透,第 4 章就从“知识很多很杂”变成了一套非常有规律的地址计算 + 逐跳转发 + 路由生成体系。