计算机网络 · 2027 考研计算机 408

第 4 章 网络层

目标院校:四川大学 / 电子科技大学 | 建议用时:概念 5 小时 + 例题练习 6 小时(网络科目分值最重的一章)

本章地位:网络层是计算机网络科目的分值重心:408 统考中通常贡献 4~8 分,选择题(首部字段、RIP / OSPF / BGP、ARP / DHCP / ICMP、IPv6)年年出现,子网划分 + 路由聚合 + 最长前缀匹配的综合大题一道 9 分起步——网络层计算大题拿不下,计算机网络部分就上不了高分。复习主线两条:计算线(掩码 → 网络 / 广播地址 / 可用主机数 → 分片 → 路由表匹配),按「化二进制 → 按位与 → 对齐块边界」练到条件反射;概念线(IPv4 / IPv6 首部字段、三个路由协议的算法与载体、ARP / DHCP / ICMP 分工),对比表背熟即可收割选择题。

考点常考题型热度本章位置
IPv4 首部字段与分片计算(DF / MF / 片偏移,8 B 单位)选择 / 计算★★★★★4.1.2 / 4.1.3
特殊地址与私有地址、NAT / NAPT选择★★★★4.2
子网划分:网络地址 / 广播地址 / 可用主机数大题 / 选择★★★★★4.3.1
CIDR、路由聚合与最长前缀匹配大题 / 选择★★★★★4.3.2 / 4.3.3
ARP(跨网段解析网关 MAC)、DHCP(DORA)与 ICMP选择★★★★★4.4
IPv6 地址表示、首部特点与过渡技术选择★★★★4.5
RIP / OSPF / BGP 对比与路由表更新、路由器与三层设备选择 / 计算★★★★★4.6
IP 组播地址与 MAC 映射、移动 IP 概念选择★★4.7

4.1 网络层的功能与 IPv4 分组

4.1.1 网络层的功能与两种服务:虚电路 vs 数据报

两大功能网络层的主要任务是把分组从源主机经过网络送达目的主机(主机到主机、可能跨多个网络),核心功能两个:
① 转发(forwarding):路由器收到分组后,根据转发表把分组从合适的端口搬出去——动作发生在单个路由器内部、微秒级;
② 路由选择(routing):路由协议(RIP / OSPF / BGP)在路由器之间跑,构造并更新路由表,回答「到每个网络该往哪走」——动作发生在整个网络范围、秒级以上。
此外网络层还可能承担拥塞控制、网络互连、异构网络抽象等功能。一句辨析:转发是数据平面的局部动作,路由选择是控制平面的全局计算;路由表算出来,转发表用来查。
两种服务网络层可以向运输层提供两种截然不同的服务:虚电路(Virtual Circuit)服务——通信前先建立一条源到目的的逻辑连接,所有分组沿同一条虚电路按序到达,可靠通信由网络负责(X.25、帧中继、ATM 的思路);数据报(datagram)服务——无需建立连接,每个分组独立选路、可能失序 / 丢失,网络只「尽最大努力交付」,可靠性交由端系统(主机)负责(TCP/IP 的选择,因特网据此而生)。
对比维度虚电路服务数据报服务
思路网络负责可靠通信(电信网的思路)主机负责可靠通信,网络尽最大努力
连接建立必须先建立虚电路(连接建立 → 传输 → 释放)无连接,随时直接发送
分组头携带地址只需携带虚电路号 VCID(短)每个分组携带完整源 / 目的 IP 地址
路由建电路时选一次路,所有分组走同一路径每个分组独立选路,路径可变
顺序与可靠性按序到达,网络保证可靠可能失序、丢失,端系统(TCP)负责恢复
故障影响虚电路经过的结点崩溃,整条电路中断绕开故障结点继续传,健壮性好
典型代表X.25、帧中继、ATM因特网 IP
考点提示这张对比表是选择题常客,记住两个「反直觉」点:① 虚电路是网络层提供的面向连接服务,但它不同于电路交换——虚电路是逻辑连接,链路并非独占(分组仍存储转发);② 因特网选数据报不是因为它「更好」,而是让网络层尽量简单、可靠性上移给端系统,换来了异构网络互连的扩展性。

4.1.2 IPv4 首部逐字段拆解(20~60 B)高频考点

IPv4 分组(IP 数据报)由首部与数据两部分组成。首部前一段长度固定 20 B,是所有字段必须过的关卡;后一段是可选字段(0~40 B,用于源路由、记录路由等),长度必须补齐为 4 B 的整数倍(填充)。因此首部总长 \(20\sim60\) B。

IPv4 首部(每行 32 bit = 4 B,前 5 行为固定首部 20 B) 0 4 8 16 31 版本4 bit 首部长度单位 4 B 区分服务一般不用 总长度16 bit,单位 1 B,最大 65535 标识同一数据报的各分片相同 标志DF/MF 片偏移13 bit,单位 8 B 生存时间 TTL每过一个路由器减 1 协议TCP=6, UDP=17, ICMP=1 首部校验和只查首部,每个路由器都要重算 源 IP 地址(32 bit)逐段链路不变 目的 IP 地址(32 bit)逐段链路不变 可选字段(长度可变 0~40 B)源路由、记录路由等 填充补齐 4 B 整数倍 首部长度字段:最小 5(×4 B = 20 B),最大 15(×4 B = 60 B) 数据报 = 首部(20~60 B)+ 数据;总长度 = 首部 + 数据,不能超过 65535 B
图 4-1 IPv4 首部格式:深色格为分片与转发关键字段(总长度 / 标志 / 片偏移 / TTL / 协议 / 首部校验和);首部校验和只校验首部、不校验数据,且因 TTL 逐跳递减而每经过一个路由器都要重算
必背字段
  1. 版本(4 bit):IPv4 为 4,IPv6 为 6。
  2. 首部长度(4 bit):单位 4 B,取值 5~15,对应首部 20~60 B(首部必为 4 B 的整数倍)。
  3. 总长度(16 bit):单位 1 B,指首部 + 数据,最大 \(2^{16}-1=65\,535\) B;不含链路层为凑最短帧长而填充的字节。
  4. 标识(16 bit):同一数据报所有分片标识相同,重组时据此归队(它不是序号,无「先后」含义)。
  5. 标志(3 bit):两位有用——DF(=1 不许分片,超长则丢弃并回 ICMP 不可达);MF(=1 后面还有分片,最后一片 MF=0)。
  6. 片偏移(13 bit):本片数据在原数据报数据区中的起点,单位 8 B——故除最后一片外各片数据长必须是 8 B 的整数倍。
  7. 生存时间 TTL(8 bit):可经过的路由器跳数上限,转发前减 1,减到 0 丢弃并回 ICMP 超时——防分组永久兜圈。
  8. 协议(8 bit):数据交给哪个上层协议。ICMP=1、IGMP=2、TCP=6、UDP=17、OSPF=89、IPv6=41。
  9. 首部校验和(16 bit):只校验首部、不校验数据;因 TTL 每跳变化,每过一个路由器都要重算。
  10. 源 / 目的 IP(各 32 bit):传输全程不变(NAT 时除外)——逐跳更换的是帧的 MAC 地址。
易错① 三个「单位」最容易混:首部长度以 4 B 为单位,总长度以 1 B 为单位,片偏移以 8 B 为单位——真题专门在这三处设陷阱;
② 首部校验和不是只算一次:TTL 变了校验和必须跟着重算;
③ 「IP 数据报长度超过 65535 B」不可能:总长度字段 16 bit 封顶;
④ TTL 减到 0 的分组被丢弃,同时路由器向源点发送 ICMP 超时差错报告(traceroute 正靠这一机制工作)。
例 1 真题风格 首部字段读数

某 IPv4 数据报首部长度字段的值为 5,总长度字段的值为 1500。(1) 首部是多少字节?可选字段是多少字节?(2) 数据部分是多少字节?(3) 若该数据报封装的数据是 TCP 报文段,协议字段的值是多少?(4) 该数据报经过 3 个路由器后,哪些首部字段一定发生了变化?

查看解答

(1) 首部 \(=5\times4=20\) B,即无可选字段(可选字段 0 B)。

(2) 数据 \(=1500-20=1480\) B。

(3) 封装 TCP,协议字段 \(=6\)。

(4) TTL 每过一路由器减 1(减 3),首部校验和随 TTL 变化必须重算;源 / 目的 IP、总长度、标识等均不变。

套路总结:首部长度字段值 ×4 = 首部字节数;总长度 − 首部 = 数据长度;「经过路由器哪些字段变化」固定答案——TTL 与首部校验和。

4.1.3 分片与重组:DF / MF 与片偏移 高频考点

为什么要分片链路层限制一帧能装的数据上限,即最大传送单元 MTU(以太网 MTU = 1500 B,指帧中数据字段的最大长度,也就是 IP 数据报的最大长度)。当数据报总长度超过下一跳链路的 MTU 时,路由器就把数据部分切开放进多个新数据报——每个分片都带一份完整的首部(标识相同),MF 与片偏移负责记录拼接信息;重组只在目的主机进行,中途路由器只拆不拼(DF=1 且超长则丢弃并回 ICMP「终点不可达」)。
分片三步算法① 每片最多携带数据 \(=\text{MTU}-20\),再向下取整到 8 的倍数;
② 依次切分,最后一片兜底(可不整除 8);
③ 第 \(k\) 片片偏移 \(=\dfrac{\text{该片数据在原数据区的起点字节数}}{8}\),该片总长度 \(=20+\) 该片数据长,前面各片 MF=1,最后一片 MF=0。
例 2 高频考点 4000 B 数据报过 MTU=1500 链路(完整推导)

一个总长度 4000 B(含 20 B 固定首部)的 IP 数据报要经过一条 MTU = 1500 B 的链路。(1) 将被分成几片?(2) 每片的片偏移、MF 标志、总长度各是多少?(3) 若第二片在传输中丢失,目的主机能否重组出部分数据?

查看解答

(1) 数据部分 \(=4000-20=3980\) B;每片最多装 \(1500-20=1480\) B,且 \(1480=8\times185\) 恰为 8 的倍数,直接可用。

需要的片数:\(3980=1480\times2+1020\),余数 1020 大于 0,故分 3 片。

(2) 逐片计算(片偏移单位为 8 B):

\[ \text{片 1:数据 }1480\text{ B,偏移}\ \frac{0}{8}=0,\ \text{MF}=1,\ \text{总长}=20+1480=1500\ \text{B} \]

\[ \text{片 2:数据 }1480\text{ B,偏移}\ \frac{1480}{8}=185,\ \text{MF}=1,\ \text{总长}=1500\ \text{B} \]

\[ \text{片 3:数据 }1020\text{ B,偏移}\ \frac{2960}{8}=370,\ \text{MF}=0,\ \text{总长}=20+1020=1040\ \text{B} \]

验证:数据 \(1480+1480+1020=3980\) ✓;\(370\times8+1020=3980\) ✓,与原数据区严丝合缝。

(3) 不能。IP 不做重传与部分重组:任一分片丢失,整个数据报作废(若上层是 TCP,由 TCP 重传整个数据部分;若是 UDP,应用自己想办法)——「分片降低可靠性」正是 IPv6 取消中途分片的动因之一。

易错:片偏移填 1480(忘了除以 8)或填 1500(把首部也计入偏移)都是经典错项;偏移的基准是「原数据报的数据区」,与首部无关。

练习 1

数据报总长度 3820 B(含 20 B 首部),经过 MTU = 1420 B 的链路。(1) 分几片?(2) 求每片的数据长度、片偏移与总长度。(3) 各片的标识字段之间是什么关系?

查看答案

(1) 数据 \(=3800\) B;每片最多 \(1420-20=1400\) B,\(1400=8\times175\) 是 8 的倍数 ✓;\(3800=1400\times2+1000\),分 3 片。

(2) 片 1:数据 1400 B,起点 0,偏移 0,总长 1420 B;片 2:数据 1400 B,起点 1400,偏移 \(1400\div8=175\),总长 1420 B;片 3:数据 1000 B,起点 2800,偏移 \(2800\div8=350\),总长 1020 B;MF 依次为 1、1、0。

验证:\(1400+1400+1000=3800\) ✓;\(350\times8+1000=3800\) ✓。

(3) 三片标识字段完全相同(继承原数据报的标识),目的主机据此识别它们属于同一数据报。

4.2 IPv4 地址与 NAT

4.2.1 点分十进制与两级地址结构

IP 地址IPv4 地址长 32 bit(4 B),由网络号与主机号两级组成:网络号标识所连的网络,主机号标识该网络中的主机。书写用点分十进制:每 8 bit 一组写成十进制,组间用点隔开,如 \[ \underbrace{192}_{11000000}\ .\ \underbrace{168}_{10101000}\ .\ \underbrace{1}_{00000001}\ .\ \underbrace{100}_{01100100} \] 每段取值 0~255。路由器转发时只看网络号(前缀)——网络号相同的主机在同一网络内,分组在网内直接交付,跨网才交给路由器。
传统分类地址(了解即可)早期按网络号位数分五类:A 类首位 0(网络号 8 位,1.0.0.0~126.255.255.255,每网主机 \(2^{24}-2\));B 类前两位 10(网络号 16 位,128.0~191.255);C 类前三位 110(网络号 24 位,192.0~223.255,每网 254 台);D 类 1110 组播(224.0.0.0~239.255.255.255);E 类 1111 保留。分类地址浪费严重,已被 CIDR 取代(4.3 节),但「D 类即组播地址段」仍常考。
特殊 IP 地址含义 / 用途
主机号全 0(如 192.168.1.0/24)网络地址,代表「本网络本身」,不能分配给主机
主机号全 1(如 192.168.1.255/24)直接(定向)广播地址,对本网络全体主机广播
255.255.255.255受限广播地址(本网络广播),路由器不转发;DHCP 发现阶段就用它
0.0.0.0「本主机」;在路由表中作默认路由条目 0.0.0.0/0(匹配一切地址)
127.x.x.x(127.0.0.1 环回地址)环回测试,分组不出协议栈、不上链路,永远 ping 自己
网络号全 0 + 主机号特定本网络上的某台主机
易错① 两个广播要分清:主机号全 1 是「某网络的定向广播」;255.255.255.255 是「受限广播」,仅在本网有效、路由器不转发;
② 127.0.0.1 既不是「本机硬件地址」也不占网络号 127 这个 A 类网的实际使用——它专供环回;
③ 主机号全 0 与全 1 都不能分配给主机,因此可用主机数要减 2。

4.2.2 私有地址与 NAT / NAPT

私有地址三段(必背)以下三段地址仅供内部网络(机构内)使用,因特网上不唯一、路由器不转发以它们为目的地址的分组:
  1. \(10.0.0.0/8\):10.0.0.0~10.255.255.255(10 开头);
  2. \(172.16.0.0/12\):172.16.0.0~172.31.255.255(第二字节 16~31);
  3. \(192.168.0.0/16\):192.168.0.0~192.168.255.255。
其余地址为公网地址,全球唯一。判断题给出一个 IP,先看是否落在三段内——172.20.1.1 是私有的,172.32.1.1 却是公有的(32 超出 12 位掩码覆盖的 16~31),这类边界是命题最爱。
NAT 与 NAPTNAT(网络地址转换):装有 NAT 软件的路由器在私网与公网的交界处,把流出分组的私有源 IP 替换成公网 IP(流入时查表换回),让大量主机共享少量公网地址——NAT 转换表记录「私有 IP : 端口 ↔ 公网 IP : 端口」的映射。NAPT(网络地址与端口转换)是 NAT 的主流形态:不同主机的连接映射到同一公网 IP 的不同端口,用端口号区分回程分组,一个公网地址即可支撑成百上千条连接。
要点:① NAT 修改 IP 首部(甚至传输层端口),因此首部校验和要重算;② NAT 破坏端到端透明性、外网不能主动访问内网主机(除非预先配置映射);③ 缓解了 IPv4 地址枯竭,是 IPv6 推迟普及的原因之一。
NAPT:内网两台主机共享 1 个公网地址,靠端口号区分 主机 A192.168.0.5:3000 主机 B192.168.0.6:3000 私有网络 192.168.0.0/24 NAT 路由器公网地址 61.144.5.2 NAT 转换表 私有侧     公网侧 192.168.0.5:3000 61.144.5.2:40001 192.168.0.6:3000 61.144.5.2:40002 同一公网 IP,端口不同 服务器 S202.118.1.8:80 出向改写源:→ 61.144.5.2:40001 / 40002 回向查表改回:→ 192.168.0.x:3000 ① A 发往 S:源 192.168.0.5:3000 ② 出路由器:源改写为 61.144.5.2:40001 ③ S 回给 61.144.5.2:40001 ④ 路由器查表改回 192.168.0.5:3000
图 4-2 NAPT 工作原理:路由器对流出分组改写源 IP 与源端口并登记映射,回程分组按表还原;目的地址(服务器)全程不变,被改写的只是「谁发的」这一侧
例 3 真题风格 NAT 报文改写

内网主机 192.168.0.5(端口 3000)经 NAT 路由器(公网地址 61.144.5.2)访问服务器 202.118.1.8:80,路由器为其分配公网端口 40001。(1) 服务器收到的分组的源 IP:端口、目的 IP:端口是什么?(2) 服务器回程分组进入内网后被改写成什么?(3) 若另一主机 192.168.0.6 也用本地端口 3000 访问同一服务器,会不会冲突?

查看解答

(1) 源 \(61.144.5.2:40001\),目的 \(202.118.1.8:80\)——私有地址被改写,目的地址不动。

(2) 回程分组源 \(202.118.1.8:80\)、目的 \(61.144.5.2:40001\);路由器查转换表把目的改回 \(192.168.0.5:3000\) 后送入内网。

(3) 不会。路由器为它分配另一个公网端口(如 40002),两连接在公网上靠端口区分,这正是 NAPT「端口复用」的本意。

套路总结:NAT 改「源侧」、方向反转后查表还原;判断题里「NAT 修改了目的 IP 地址」多半是错的(除非目标也在内网且配置了映射)。

练习 2

(1) 下列地址中属于私有地址的是:① 10.20.30.40 ② 172.32.1.1 ③ 172.20.1.1 ④ 192.169.1.1 ⑤ 192.168.100.1;(2) 内网主机 ping 公网服务器,服务器能否主动 ping 通该内网主机?为什么?

查看答案

(1) ①③⑤。② 172.32.1.1:172.16/12 只覆盖第二字节 16~31,32 不在内,是公有地址;④ 192.169.1.1 第三字节越界(私有段是 192.168/16),公有。

(2) 不能。NAT 表由内网发起的连接建立,服务器主动发来的分组在表中查不到映射,路由器无处还原、只能丢弃——外网不能主动访问纯 NAT 后的主机。

4.3 子网划分、CIDR 与路由聚合 高频考点

本节是整个网络科目的计算核心:408 网络层大题十有八九出自这里。所有题目共用一套底层动作——「IP 地址与子网掩码按位与 = 网络地址」;把这套动作练熟,再叠加「地址块对齐」「最长前缀匹配」「求公共前缀」三个技巧即可通杀。

4.3.1 三级地址与子网掩码(大题引擎)

从两级到三级分类地址两级(网络号 + 主机号)太粗,划分子网后变三级:网络号 + 子网号 + 主机号——从主机号高位借若干位作子网号,把一个大块切成若干小块,单位内部的路由器据此选路(对外仍表现为一个网络)。配套发明子网掩码(subnet mask):32 bit,网络号 + 子网号部分全 1、主机号部分全 0,例如借 3 位后掩码为 255.255.224.0。规则:IP 地址 AND 子网掩码 = 网络地址(子网地址)。
408 口径(易错)① 「子网号为全 0 / 全 1 的子网可否使用」——早期 RFC 950 禁止,现代路由器与 408 教材语境均视为可用:题目不特别声明时,划 \(n\) 位子网号就得到 \(2^n\) 个子网,不再减 2;
② 但主机号全 0(子网本身)与全 1(子网广播)依然不能分给主机,主机位 \(m\) 时可用主机数 \(=2^{m}-2\)——这一条永远减 2;
③ 子网掩码必须是一串连续 1 后接一串连续 0(255.255.255.160 这类「断续 1」不是合法掩码)。
万能三步(大题每问都用)已知 IP 与掩码 /n:
① 化二进制:只写掩码非 255/0 的那个字节(其余字节网络部分直接照抄或主机部分直接置 0);
② 按位与得网络地址:网络地址 = 所在地址块的起始地址;
③ 块大小推其余:块大小(地址总数)\(=2^{32-n}\),每个块的起始地址是块大小的整数倍;广播地址 = 网络地址 + \(2^{32-n}-1\)(主机号全 1);可用主机范围 = 网络地址 +1 ~ 广播地址 −1,数量 \(2^{32-n}-2\)。
速查表掩码字节 128 / 192 / 224 / 240 / 248 / 252 / 254 / 255 对应主机位 7 / 6 / 5 / 4 / 3 / 2 / 1 / 0,块大小 128 / 64 / 32 / 16 / 8 / 4 / 2 / 1。/n 前缀与掩码换算:/22 = 8+8+8+2 → 255.255.252.0;/26 → 255.255.255.192。看到 /29 就反应「块大小 8、可用主机 6」。
例 4 高频考点 求网络地址 / 广播地址 / 可用主机数

已知主机 IP 地址 180.80.77.55,子网掩码 255.255.252.0。(1) 网络地址是多少?(2) 广播地址是多少?(3) 该网络最多可接多少台主机?(4) IP 地址 180.80.79.200 是否与本机同网段?

查看解答

掩码 255.255.252.0 即 /22,只有第三字节要算:252 = 11111100,前 6 位是网络位、后 2 位是主机位。

(1) 第三字节按位与:\(77=01001101\),AND \(252=11111100\),得 \(01001100=76\)。网络地址 = 180.80.76.0。

(2) 主机位 10 位(第三字节 2 位 + 第四字节 8 位),块大小 \(2^{10}=1024\),广播地址 = \(180.80.76.0+1023\) = 180.80.79.255(76+3=79 ✓)。

(3) 可用主机数 \(=2^{10}-2=1022\) 台。

(4) 第三字节 79 在块 76~79 内,180.80.79.200 的网络地址同为 180.80.76.0,同网段;换算成「块对齐」验证:块大小 4,\(76\div4=19\) 整除,77、79 都落在第 19 块(76.0~79.255)✓。

套路总结:只需算「非整字节」那一列;网络地址=块起点,广播地址=块终点,两头掐掉就是可用范围。

例 5 真题风格 判断两 IP 是否同网段

两台主机的地址与掩码为:A = 192.168.75.20,B = 192.168.75.30,C = 192.168.75.45,掩码均为 255.255.255.240。判断 A 与 B、B 与 C、A 与 C 是否在同一网段,并给出各自所属子网的网络地址。

查看解答

/28 块大小 16,各块起点为 16 的倍数(第四字节):

\(20=00010100\) → 块起点 \(16\);\(30=00011110\) → 块起点 \(16\)(16~31);\(45=00101101\) → 块起点 \(32\)(32~47)。

A(192.168.75.16/28)与 B(192.168.75.16/28)同块 → 同网段,可直接通信;B 与 C、A 与 C 分属 16 块与 32 块 → 不同网段,通信必须经路由器。

陷阱提示:30 与 45 数值只差 15、感觉「很近」,但 /28 的边界正好切在 32——判断同网段唯一的依据是按位与的结果是否相同,与数值接近程度无关。

套路总结:块大小 = \(2^{主机位}\),起点 = 块大小 × 整数;「同块 = 同网段」。若两主机掩码不同,则分别与各自的掩码相与再比较(隐含题目常挖此坑)。

例 6 易错 按需求定掩码(划分方案设计)

某单位分到 202.118.1.0/24,需要划分若干子网,每个子网至少容纳 60 台主机。(1) 主机位至少多少位?子网掩码是多少?(2) 最多能分出几个这样的子网?(3) 若只要求分出 2 个等大小子网,写出各子网的网络地址与可用地址范围。

查看解答

(1) 需 \(2^{m}-2\ge60\):\(2^{5}-2=30\) 不够,\(2^{6}-2=62\ge60\) ✓,主机位 6 位;子网位 \(=24-6\)?不——原前缀 /24,主机位 8,借 2 位作子网位后主机位 6,前缀变 /26,掩码 255.255.255.192。

(2) 借 2 位 → \(2^{2}=4\) 个子网(408 口径不减 2):
202.118.1.0/26(0~63)、202.118.1.64/26(64~127)、202.118.1.128/26(128~191)、202.118.1.192/26(192~255),每个可用主机 62 台。

(3) 等分 2 个:借 1 位 → /25:
子网 1:202.118.1.0/25,可用 202.118.1.1~202.118.1.126(126 台);
子网 2:202.118.1.128/25,可用 202.118.1.129~202.118.1.254(126 台)。

验证:126+126=252,加上两个网络地址与两个广播地址共 256 ✓。

套路总结:需求反推两步走——先由「主机数 ≥ 需求」定主机位 \(m\),得前缀 /(32−m);再由「子网数」定借位 \(n\)(\(2^{n}\ge\) 需求,注意别把主机位挤占)。大题第 (1) 问几乎都是这一步。

4.3.2 CIDR 与地址块

CIDR无分类域间路由 CIDR(Classless Inter-Domain Routing)彻底抛弃 A/B/C 分类:IP 地址 = 网络前缀 /n + 主机号,斜线记法如 128.14.35.7/20。/n 地址块指「前 n 位固定、后 32−n 位任意」的一堆地址:块大小 \(2^{32-n}\),块内地址数、起始地址必须对齐(是块大小的整数倍)。CIDR 的两大好处:按需分配(要 500 个地址给个 /23,不再硬塞 B 类 6 万个)与路由聚合(多条路由合并成一条,压缩路由表)。
地址块术语128.14.35.7/20 所在块:最小地址 128.14.32.0(35=00100011,前 4 位 0010 → 32),最大地址 128.14.47.255,掩码 255.255.240.0,共 \(2^{12}=4096\) 个地址。习惯上「128.14.32.0/20」代表整个块(用最小地址 + 前缀)。全 0 与全 1 主机号一般不分配,可用地址 \(2^{12}-2=4094\) 个(CIDR 下不再细分「子网号」概念,/n 就是前缀)。
包含关系判断(高频小题)问「地址 X 是否属于块 A/n」:把 X 与掩码 /n 按位与,结果等于 A(块起点)就属于。等价判据:A 是块大小 \(2^{32-n}\) 的整数倍,且 X 落在 [A, A+块大小−1] 区间。例如 200.0.6.0 与 200.0.4.0/22:块大小 \(2^{10}=1024\),第三字节覆盖 4~7,6 在其中 → 属于;而 200.0.8.0/24 → 8 在 4~7 之外 → 不属于。

4.3.3 路由聚合与最长前缀匹配 高频考点

路由聚合(构成超网)把连续的多个小地址块合并成一个大块对外通告,方法:求各块网络地址二进制的最长公共前缀,公共前缀位数即聚合后的掩码长度,聚合块起点 = 公共前缀 + 后位全 0。例如 192.168.4.0/24 ~ 192.168.7.0/24 四个块,第三字节 00000100~00000111 仅最后 2 位不同、前 22 位全同 → 聚合为 192.168.4.0/22,恰覆盖 4 个连续块。聚合发生在「拥有这一堆块的出口路由器」上,作用是把 n 条路由表项压成 1 条;若被聚合的块不连续、或个数不是 2 的幂、或不对齐块边界,就无法聚合成恰好相等的单一前缀。
最长前缀匹配与默认路由路由表表项形如(目的网络, 掩码, 下一跳, 接口)。转发时把分组目的 IP 依次与各表项掩码相与,与目的网络相等即匹配;多条匹配时选前缀最长(掩码 1 最多)的那条——前缀越长越具体,粒度越小。全都不匹配时走默认路由 0.0.0.0/0(掩码全 0,与任何地址相与都得 0.0.0.0,即匹配一切),再没有就丢弃并回 ICMP 终点不可达。特定主机路由(/32)是最长的极限,永远优先。
例 7 真题风格 两块 /17 聚合

某 ISP 拥有地址块 206.1.0.0/17 和 206.1.128.0/17。(1) 两块能否聚合成一个地址块?结果是什么?(2) 若 ISP 只有 206.1.16.0/24 ~ 206.1.19.0/24 四个块,聚合结果又是什么?(3) 判断:聚合后的地址块一定恰好等于被聚合块之并集吗?

查看解答

(1) 第二字节 0 = 00000000、128 = 10000000,前 16 位(206.1)相同,第 17 位起不同 → 公共前缀 16 位,聚合为 206.1.0.0/16。两块恰是 /16 的上下两半(0~127、128~255),并集严丝合缝。

(2) 第三字节 16=00010000、17=00010001、18=00010010、19=00010011:前 6 位(000100)相同,公共前缀 = 16+6 = 22 位 → 206.1.16.0/22,覆盖 16~19 四个连续块。

(3) 不一定。聚合块总是 2 的幂对齐的大块:若被聚合的块不连续、或数量不是 2 的幂、或不与块边界对齐,聚合块就会「多带」别的地址(如 206.1.16.0/24 与 206.1.18.0/24 两块的公共前缀也是 22 位,但 206.1.16.0/22 会连带 17、19 两块)——做题时必须检查「聚合后多没多、少没少」。

套路总结:聚合 = 写出各块起点二进制 → 数公共前缀位 → 起点后位清零。验证:聚合块大小 \(2^{32-n}\) 应等于各块大小之和(连续且 2 的幂个)。

例 8 高频考点 最长前缀匹配转发(大题引擎)

路由器 R 的路由表如下,求目的地址为 ① 192.168.20.15 ② 192.168.20.17 ③ 192.168.20.33 ④ 192.168.21.5 的分组分别从哪里转发?

目的网络掩码下一跳 / 接口
192.168.20.0/24接口 m0
192.168.20.16/28接口 m1
192.168.20.32/28接口 m2
0.0.0.0/0路由器 R0(默认)
查看解答

逐个匹配(只查第三、四字节):

① 192.168.20.15:与 /24 匹配 ✓;与 192.168.20.16/28 相与得 192.168.20.0 ≠ 20.16(16/28 块为 16~31,15 不在内)✗;与 /0 匹配 ✓。匹配项 {/24, /0},取最长前缀 /24 → 接口 m0。

② 192.168.20.17:17 在 16~31 内,与 /28 匹配 ✓,也与 /24 匹配。取更长 /28 → 接口 m1。

③ 192.168.20.33:33 在 32~47 内 → 192.168.20.32/28 → 接口 m2(同时匹配 /24,但 /28 更长)。

④ 192.168.21.5:第三字节 21 与 20 不同,/24、两条 /28 全不匹配 → 只剩 默认 0.0.0.0/0 → R0。

套路总结:最长前缀匹配 = 「谁更具体听谁的」。书写步骤:列出所有命中项 → 比前缀长度 → 最长者胜出;一个都不命中走默认路由。注意 ①:15 恰在 16 块边界外,专门坑「看数字接近就选 /28」的人。

4.4 ARP、DHCP 与 ICMP

IP 协议负责「选路」,但它需要三个配套协议才能跑通一次真实通信:ARP 解决「下一跳的链路层地址是谁」,DHCP 解决「主机如何自动拿到 IP 地址」,ICMP 解决「出了差错如何报告、如何探测」。三者的分工与协议层级是选择题高频素材。

4.4.1 ARP:IP 地址 → MAC 地址 高频考点

ARP 原理帧要在链路上跑,必须填目的 MAC 地址;而网络层只认 IP。地址解析协议 ARP(Address Resolution Protocol)就是在同一局域网内把 IP 地址解析成 MAC 地址:主机维护一张 ARP 高速缓存(IP → MAC 映射,有生存期);缓存没有时广播 ARP 请求(目的 MAC 填全 F 的广播地址),目标主机(或其代理)以单播 ARP 响应回填自己的 MAC。ARP 请求走广播、响应走单播;请求分组中同时携带自己的 IP 与 MAC,接收方顺手更新缓存。
跨网段的关键结论源主机与目的主机不在同一网段时,ARP 解析的不是目的主机的 MAC,而是默认网关(路由器靠近本网接口)的 MAC。理由:帧是逐段链路传递的,每一跳的目的 MAC 只需要是「下一跳」——IP 数据报中源 / 目的 IP 始终是两台端主机,而帧的源 / 目的 MAC 每过一个路由器换一对。
跨网段通信的 ARP 四步(A:192.168.1.10 → B:10.0.0.8,网关 R:192.168.1.254 / 10.0.0.1) 主机 A192.168.1.10 路由器 R(网关)192.168.1.254|10.0.0.1 主机 B10.0.0.8 网段 1 网段 2 ① A 判断 B 与自己不同网段 → 在网段 1 广播 ARP 请求:「谁是 192.168.1.254(默认网关)?」 ② 网关 R 单播回应自己的 MAC_R1;A 把「目的 IP = B 的 IP、目的 MAC = MAC_R1」封装成帧发给 R ③ R 收帧、剥 MAC 头,查路由表知 B 在网段 2 → 在网段 2 广播 ARP 请求:「谁是 10.0.0.8?」 ④ B 单播回应 MAC_B;R 以「源 MAC = MAC_R2、目的 MAC = MAC_B」重新封装转发。全程 IP 头不变!
图 4-3 跨网段 ARP 四步流程:每一跳只解析「下一跳」的 MAC;IP 地址端到端不变,MAC 地址逐跳更换。若 A、B 同网段,则 A 直接广播解析 B 的 MAC,一步到位
易错与拓展① 「ARP 请求的目的 MAC 是目的主机的 MAC」——跨网段时错,是网关的 MAC(真题考过:主机 ping 外网服务器,其 ARP 请求询问的 IP 是默认网关的 IP);
② ARP 属于 TCP/IP 的网络层(IP 层配套协议),但它的报文直接封装在帧里发送,不封装在 IP 里;
③ ARP 欺骗:攻击者伪造 ARP 响应冒充网关,使他人流量流经自己(监听 / 篡改)——原理一句话:ARP 响应无认证、来者不拒;
④ ARP 解析「IP → MAC」;反过来「MAC → IP」用的是 RARP(已由 DHCP 取代)。

4.4.2 DHCP:DORA 四步取地址

DHCP 要点动态主机配置协议 DHCP让主机接入网络即自动获得 IP 地址、子网掩码、默认网关、DNS 服务器地址,免去手工配置;地址可重用(用完归还、租给下一家),支持租用期续约。
协议定位:DHCP 是应用层软件、采用客户 / 服务器方式、报文用 UDP 封装(服务器端口 67,客户进程端口 68)。
四步交互(DORA):Discover(客户广播「找 DHCP 服务器」)→ Offer(服务器广播提供可用地址)→ Request(客户广播正式请求选用某地址)→ Ack(服务器确认,附租用期与配置参数)。前几步用广播,因为客户此时还没有自己的 IP,只能以 0.0.0.0 为源、255.255.255.255 为目的通信。
记忆钩子「D-O-R-A:发现、提供、请求、确认」—— DHCP 服务器与客户可不在同一网段,靠中继代理(路由器)转发 Discover(单播转发给 DHCP 服务器)。选择题爱考两个数字:UDP 67 / 68;两个层次:DHCP 本身是应用层协议(别因「配 IP」就归到网络层——协议在哪一层看它封装在什么里)。
例 9 真题风格 DHCP 过程判断

下列关于 DHCP 的叙述中,错误的是( )
A. DHCP 的 Discover 报文以广播方式发送 B. 客户机与服务器之间的报文封装在 UDP 数据报中传输
C. DHCP 分配的 IP 地址可以重用 D. DHCP 服务器必须与客户机位于同一网络

查看解答

D。借助 DHCP 中继代理(路由器把 Discover 单播转发给远端服务器),服务器可跨网段服务,这正是大网络必备的功能。A、B、C 均正确:Discover / Offer / Request 前期都是广播(目的 255.255.255.255);UDP 端口 67(服务器)/ 68(客户);DHCP 按租用期分配、到期归还,地址池循环使用。

4.4.3 ICMP:差错报告与询问

ICMP 两大类报文ICMP(网际控制报文协议)让主机 / 路由器报告差错与异常,报文直接封装在 IP 数据报中(协议字段 = 1)。
  1. ICMP 差错报告报文(五类):① 终点不可达(无法交付:端口关闭、需分片但 DF=1 等);② 源点抑制(拥塞丢包,让源慢点发——现已弃用但教材仍列);③ 时间超过(超时)(TTL 减到 0,或分片重组超时);④ 参数问题(首部字段有错);⑤ 改变路由(重定向)(告诉主机有更优的下一跳)。
  2. ICMP 询问报文:回送请求 / 回送回答(Echo,ping 用它探测可达性与 RTT);时间戳请求 / 回答(对时钟)。
四种情况不应发送 ICMP 差错报告(必背)① 对 ICMP 差错报告报文本身不再发(防止差错报告互相追逐、无限循环);
② 对第一个分片之后的后续分片不发(每个数据报只报一次);
③ 对具有多播(组播)地址的数据报不发;
④ 对特殊地址(127.0.0.1 环回 / 0.0.0.0 本主机)的数据报不发。
两个常考应用ping:应用层直接使用 ICMP 回送请求 / 回送回答(不经过 TCP 或 UDP),测可达性与往返时延;traceroute / tracert:依次发送 TTL = 1, 2, 3, … 的分组,第 k 个分组恰好在第 k 个路由器处 TTL 归零,路由器回 ICMP 超时(暴露自己的地址),最后一个分组到达终点,终点回 ICMP 终点不可达(端口不可达)或回送回答——沿途每一跳由此显形。
例 10 高频考点 ICMP 应用与「不发」场景

(1) ping 利用了 ICMP 的哪类报文?traceroute 依赖哪类差错报告?(2) 路由器收到一个目的地址为 224.0.0.5 的分组因故障被丢弃,是否向源点发 ICMP 差错报告?(3) TTL 减为 0 被丢弃时路由器回什么报文?目的主机重组分片超时又回什么?

查看解答

(1) ping 用询问类的「回送请求 / 回送回答」,不使用 TCP/UDP;traceroute 依赖差错类的「时间超过(超时)」。

(2) 不发。目的地址 224.0.0.5 是组播地址,属于「对多播地址的数据报不发 ICMP 差错报告」。

(3) 转发途中 TTL 归零:路由器回时间超过(TTL 超时);目的主机分片重组超时:目的主机回时间超过(重组超时)——两种「超时」都是类型 11,但代码位不同。

套路总结:判断「发不发 ICMP」先扫四种豁免(ICMP 报文本身 / 后续分片 / 组播 / 特殊地址);判断「发哪类」抓触发事件:交付不了→终点不可达,TTL 或重组到时→超时,首部出错→参数问题,有更优路由→改变路由。

练习 3

(1) 主机 A(192.168.1.10/24,网关 192.168.1.1)ping 8.8.8.8 时发出的 ARP 请求询问的是谁的地址?(2) DHCP 客户在 Obtain 地址前发送的报文,其源 IP 和目的 IP 分别是什么?(3) 对一个 ICMP 差错报告报文再出差错,路由器如何处理?

查看答案

(1) 默认网关 192.168.1.1 的 MAC 地址——8.8.8.8 与 A 不同网段,帧只需送到网关。

(2) 源 IP = 0.0.0.0(还没有地址),目的 IP = 255.255.255.255(受限广播,谁都能收)。

(3) 不再发送 ICMP 差错报告(豁免情形①),避免报告风暴。

4.5 IPv6

4.5.1 128 位地址与冒号十六进制表示

地址表示IPv6 地址长 128 bit(16 B),写成 8 组、每组 4 位十六进制、组间冒号: \[ 4BF5:0000:0000:0000:BA5F:039A:000A:2176 \] 三条化简规则:① 每组前导 0 可省(000A → A);② 全 0 组可写成 0;③ 连续若干全 0 组可用双冒号「::」压缩,但整个地址中「::」最多出现一次: \[ 4BF5::BA5F:39A:A:2176 \] 此外 IPv6 还允许嵌入式 IPv4 点分十进制写法,如 ::127.0.0.1(等价于 0:0:0:0:0:0:127.0.0.1,即全 0 组 + IPv4 地址)。「只能压缩一次」是因为压缩次数多了就无法还原位数——例题最爱在这一点上做文章。
例 11 真题风格 IPv6 地址压缩判断

下列 IPv6 地址的写法中,错误的是( )
A. ::1(环回地址,共 128 位) B. 4BF5::BA5F::2176
C. 12AB:0:0:CD30:0:0:0:0/60 D. FE80::A:2176:0:1

查看解答

B。双冒号在一个地址里最多出现一次,B 用了两次,无法确定两组省略各占多少组,是非法写法。A:::1 是环回(其余 127 位全 0);C:/60 前缀 + 地址书写均合法;D:FE80:: 打头是链路本地单播地址,合法压缩。

还原验证(C):12AB:0:0:CD30 后还有 4 个 0 组,共 8 组 ✓。

4.5.2 基本首部、地址分类与过渡技术

基本首部(固定 40 B)IPv6 首部固定长度 40 B,字段大幅精简:版本(4 bit,=6)、流量类型(8 bit,区分服务)、流标号(20 bit)——支持「资源预分配」的流式业务(同一流的所有分组同一标号,路由器可特殊处理)、有效载荷长度(16 bit,指数据长度,不含 40 B 基本首部)、下一首部(指向第一个扩展首部或上层协议,取代 IPv4 的协议字段 + 可选字段)、跳数限制(8 bit,即 IPv6 的 TTL)、源 / 目的地址(各 128 bit)。选项功能全部挪到扩展首部(逐跳选项、路由、分片、鉴别、封装安全载荷等),路由器按需查看,转发更快。
IPv6 基本首部(固定 40 B = 10 个 4 B 字,与 IPv4 逐项对照) 版本 流量类型 流标号(20 bit)同一「流」的分组统一标识 有效载荷长度数据长度,不含基本首部 下一首部指向扩展首部/上层协议 跳数限制每过一个路由器减 1 源地址(128 bit) 目的地址(128 bit) 无首部校验和、无首部长度字段、无总长度字段(改为有效载荷长度) 分片信息挪入「分片扩展首部」——路由器不再分片,只在源端进行(路径 MTU 发现)
图 4-4 IPv6 基本首部:7 个字段、定长 40 B。取消首部校验和(逐跳重算太贵,差错交给链路层与运输层)、取消中途分片、取消首部长度 / 标识 / 标志 / 片偏移等字段,换来更快的转发
地址分类与过渡三类地址:单播(一对一,含环回 ::1、链路本地 FE80::/10、全球单播 2000::/3 等);组播(一对多,FF00::/8 打头);任播(anycast)(一对「最近之一」:发给同属一个地址的多台主机中的最近一台,常用于 DNS / CDN)。IPv6 没有广播——广播的职责全部由组播接管。
IPv4 → IPv6 三种过渡技术:① 双协议栈(主机 / 路由器同时跑 v4 与 v6 两套栈,按目的地址选用);② 隧道技术(v6 分组整体塞进 v4 数据报的数据区,穿过 v4 网络后在隧道另一端解出——「IP 装 IP」);③ NAT-PT(转换,已少用)。
易错① 「IPv6 首部有首部校验和」——错,为减轻路由器负担彻底取消;
② 「IPv6 路由器会分片」——错,分片只在源主机进行(源端先做路径 MTU 发现),路由器遇超大分组直接丢弃并回 ICMPv6「包太大」;
③ 「IPv6 有广播地址」——错,只有单播 / 组播 / 任播三类;
④ 有效载荷长度不含 40 B 基本首部(对比:IPv4 总长度含首部)。

4.6 路由协议与路由器

4.6.1 路由表结构与分组转发流程

路由表路由表由路由协议计算而来,表项四要素:(目的网络地址, 网络掩码, 下一跳地址 / 接口, 距离 / 度量)。特殊表项:直连网络(下一跳为「直接交付」)、特定主机路由 /32(对单台主机单独指路,优先级最高)、默认路由 0.0.0.0/0(兜底,优先级最低)。路由器转发分组的标准流程:
  1. 从数据报首部提取目的 IP 地址 D;
  2. 先查特定主机路由(/32)是否恰好匹配;
  3. 依次把 D 与各表项掩码相与,结果等于该表项目的网络即命中;多条命中取最长前缀;
  4. 命中条目的下一跳在直连网络上 → 直接交付(ARP 解析目的主机 MAC 后送帧);否则 → 间接交付(ARP 解析下一跳路由器的 MAC,把帧发过去);
  5. 全部不命中且有默认路由 → 走默认;连默认也没有 → 丢弃,并向源点发 ICMP 终点不可达。
一句辨析路由表是控制平面的(路由协议慢慢算),转发表是数据平面的(由路由表生成、供高速查表转发)——408 语境常混用,但「转发表由路由表导出」这半句要会说。

4.6.2 RIP:距离向量,「坏消息传得慢」

RIP 要点RIP(路由信息协议)是内部网关协议 IGP 的一种,基于距离向量算法:
  1. 度量是跳数:直连网络距离 1,每过一个路由器加 1;最大 15,16 即不可达——所以 RIP 只适合小网络;
  2. 仅和相邻路由器按固定周期(30 s)交换整张路由表(不是只交换变化);
  3. 收到邻居的路由表后逐项「加 1 比较」更新自己的表(距离向量算法);
  4. 报文封装在 UDP(端口 520)中传输——RIP 本身是应用层实体使用 UDP 的协议。
距离向量更新规则(必会计算)收到邻居 N 发来的表项(目的网 d, 距离 x): ① 本表无 d → 添加(d, x+1, 下一跳 N);
② 本表有 d 且下一跳就是 N → 无条件更新为 x+1(哪怕变大——真话必须听);
③ 本表有 d、下一跳是别人,且 x+1 小于现距离 → 更新(d, x+1, N);否则不动。
例 12 高频考点 RIP 路由表更新(完整推导)

路由器 R 的当前路由表如下。R 收到相邻路由器 C 发来的 RIP 报文,含表项:(net1, 3)、(net2, 3)、(net3, 4)、(net4, 7)。给出 R 更新后的路由表。

目的网络距离下一跳
net14C
net22D
net36C
net53E
查看解答

逐项执行「加 1 → 判来源 → 比较」:

net1:C 报 3,+1 = 4;本表下一跳正是 C → 无条件更新(距离 4,下一跳 C)——数值恰与原值相同,表项不变但「更新动作」发生了;

net2:C 报 3,+1 = 4;本表距离 2、下一跳 D,4 > 2 → 不更新(保持 2, D);

net3:C 报 4,+1 = 5;下一跳正是 C → 无条件更新为(5, C),比原 6 更优也顺理成章;

net4:本表没有 → 新增(net4, 7+1=8, C);

net5:C 未提及 → 保持不变(3, E)。

更新后:net1(4, C)、net2(2, D)、net3(5, C)、net4(8, C)、net5(3, E)。

易错:net2 是最常做错的一项——「下一跳不是 C 且新距离更大」坚决不更新;net1 说明「下一跳是 C 时哪怕变差也要改」——距离向量必须如实反映经 C 的真实代价,否则会形成陈旧路由。

RIP 的缺陷与对策RIP 的根本缺陷:「好消息传得快,坏消息传得慢」——链路断了的消息要一圈圈扩散(计数到无穷),收敛可能要几分钟。缓解手段:水平分割(从某接口学来的路由不再从该接口广告回去)、毒性逆转(把坏路由以距离 16 广告回去,加速「确诊不可达」)、触发更新、限制最大跳数 15。这些只能缓解、不能根治——链路状态协议 OSPF 应运而生。

4.6.3 OSPF:链路状态 + Dijkstra

OSPF 要点OSPF(开放最短路径优先)是另一种 IGP,基于链路状态算法:
  1. 用 Hello 分组发现邻居,测量链路开销(带宽、时延等可配,不再只是跳数);
  2. 链路状态变化时才用洪泛法向本区域所有路由器发送链路状态通告(每 30 min 才强制刷新一次),平时安静;
  3. 每台路由器都掌握全网拓扑(链路状态数据库 LSDB 全网一致),各自跑 Dijkstra 最短路径算法算路由——「地图人手一份,各自算路」,收敛快、无「坏消息传得慢」问题;
  4. 报文直接用 IP 数据报传送(协议字段 = 89),不经 TCP / UDP;
  5. 支持划分区域:洪泛限制在区域内,区域间靠主干区域(区域 0)中转,大网可扩展。
OSPF 五种分组类型(常考排序)① 问候(Hello):发现与维持邻居;② 数据库描述(DD):向邻居概要通报自己的 LSDB;③ 链路状态请求(LSR):发现自己缺哪些细节,向邻居要;④ 链路状态更新(LSU):洪泛链路状态通告(OSPF 的核心分组);⑤ 链路状态确认(LSAck):确认收到。记忆:问候 → 描述 → 请求 → 更新 → 确认,「先打招呼,再对账,缺啥补啥」。
RIP(只问邻居)vs OSPF(全网一张图) RIP:距离向量 R1 R2 R3 周期 30 s,只与相邻路由器交换整张路由表 「到 net X 距离 n」——只知结论、不知地图 坏消息传得慢(计数到无穷),最大 15 跳 载体:UDP 520 OSPF:链路状态 R1 R2 R3 链路变化时洪泛链路状态 → 全网 LSDB 一致 「我的哪条线断了」——人人拿到完整地图 各自跑 Dijkstra,收敛快、无环自愈 载体:直接装在 IP 数据报里(协议号 89) 一句话对照:RIP 是「向邻居打听路怎么走」,OSPF 是「自己拿到全国地图算路」; RIP 交换的是结论(整张路由表)且只给邻居,OSPF 洪泛的是原料(链路状态)且发给全网、各自计算
图 4-5 RIP 与 OSPF 的本质区别:信息交换的范围(邻居 vs 全网)、交换的内容(路由表 vs 链路状态)、计算位置(道听途说累加 vs 本地 Dijkstra)——这三个维度抓住了,对比题不再丢分

4.6.4 BGP 与三种路由协议对比

BGP 要点因特网把每个管理机构的天下调为一个自治系统 AS;AS 内部跑 IGP(RIP / OSPF),AS 之间跑外部网关协议 EGP,当今标准是 BGP-4(边界网关协议):
  1. 采用路径向量协议:通告的不是距离也不是链路状态,而是完整的 AS 路径序列(「到 X 要依次经过 AS2、AS5、AS7」),天然防环(看到自己 AS 号就不采纳);
  2. 目标是找到一条能到达且符合策略的较好路由(考虑政治、安全、计费),不追求最佳——域间路由「算得快不如选得对」;
  3. 交换的路由表规模巨大(全球 IPv4 前缀近百万条),故只增量更新变化部分,且只在建立 TCP 连接后传:BGP 报文封装在 TCP(端口 179)中;
  4. 邻居关系(BGP 发言人)是手工配置的,不是自动发现。
对比维度RIPOSPFBGP-4
类型内部网关协议 IGP内部网关协议 IGP外部网关协议 EGP(域间)
算法距离向量链路状态(Dijkstra)路径向量
度量跳数(≤15,16 不可达)开销(带宽 / 时延可配)策略 + 完整 AS 路径(非「最佳」)
交换对象 / 内容相邻路由器 / 整张路由表全网 / 链路状态(变化时洪泛)BGP 发言人 / 可达性 + 路径(增量)
更新方式周期 30 s 广播链路变化触发 + 定期刷新变化时增量更新
承载协议UDP 520IP 直接封装,协议号 89TCP 179
收敛慢(坏消息传得慢)快慢(策略协商),但域间无所谓
适用小网络中大网络、支持分区域因特网 AS 之间
三句话拿下对比题① 载体三件套:RIP 走 UDP、OSPF 裸奔在 IP 上、BGP 骑在 TCP 上——最常考;② 交换内容三件套:整张表 / 链路状态 / 可达路径;③ 算法三件套:距离向量 / 链路状态 + Dijkstra / 路径向量。每一行都能出一道选择。
例 13 真题风格 三协议综合判断

下列关于路由协议的叙述中,错误的是( )
A. RIP 规定最大跳数为 15,等于 16 表示不可达 B. OSPF 直接封装在 IP 数据报中传送
C. BGP-4 交换可达性信息时使用 TCP 连接 D. OSPF 与 RIP 都适合超大规模自治系统,BGP 只用于 AS 内部

查看解答

D,两个错:BGP 是 AS 之间(域间)的协议,不是 AS 内部;RIP 跳数上限 15 只适合小网络。A、B、C 均为教材原文——特别是 B:「OSPF 用 UDP 传送」是高频错误选项(那是 RIP)。

练习 4

(1) RIP、OSPF、BGP 分别封装在什么协议里传送?(2) 为什么 OSPF 没有「坏消息传得慢」的问题?(3) 某自治系统内 200 台路由器全互联式跑 RIP,最大的问题是什么?

查看答案

(1) RIP → UDP(520);OSPF → IP 数据报直接封装(协议号 89);BGP → TCP(179)。

(2) 链路状态变化通过洪泛迅速告知全网,每台路由器基于一致的 LSDB 本地重算,链路断掉的「坏消息」传播速度与好消息一样快——不存在计数到无穷。

(3) RIP 周期性交换整张路由表、跳数上限 15:200 台规模下开销大、收敛慢,还会超跳数上限——应换用 OSPF(并可分区域)。

4.6.5 路由器结构与三层设备对比

路由器结构路由器可看成两大部分:
  1. 路由选择部分(控制平面):路由选择处理机运行路由协议(RIP / OSPF / BGP),计算并维护路由表,再导出转发表给转发部分;
  2. 分组转发部分(数据平面):由输入端口 → 交换结构 → 输出端口组成。每个端口含物理层、链路层、网络层三级处理:信号进线路卡、帧校验剥头、IP 首部校验、查转发表定输出端口;若输入速率超过交换速率,分组在输入 / 输出队列排队(排队时延与丢包发生地)。交换结构三种实现:共享总线(慢)、共享存储器、交叉开关矩阵(crossbar,可并行、最快)。
路由表 vs 转发表:路由表由路由协议生成(软件、优化用),转发表由路由表导出(可用硬件实现、含 MAC 封装信息,转发用)。数据通路一句话:输入端口(排队)→ 交换结构 → 输出端口(排队),控制信息(转发表)由处理机下发到各端口——「慢算路由表,快查转发表」。
设备工作层次隔离碰撞域隔离广播域转发依据
集线器(中继器)物理层不能不能对信号再生放大、向所有端口转发
网桥 / 交换机数据链路层能(每端口一个碰撞域)不能(广播帧仍全网泛洪)MAC 地址表
路由器网络层能能(路由器不转发广播 / 组播)路由表(IP 前缀)
一句话记忆「交换机隔碰撞域,路由器隔广播域」——一个交换机全网仍是一个广播域(所以有广播风暴与 VLAN 的问题),路由器天然挡住广播与组播。判断设备该用哪层,看它依据什么转发:比特流、MAC 还是 IP。

4.7 IP 组播与移动 IP

组播概念组播(多播):一台源主机一次发送、一组目的主机同时接收,数据仅在分叉处复制——比单播逐台发省带宽、比广播全网扰民精准。组播地址即 D 类地址 224.0.0.0/4(224.0.0.0~239.255.255.255),只能作目的地址,不作源地址;组播数据报「尽最大努力交付」,不产生 ICMP 差错报告。
组播地址 → MAC 地址映射以太网组播 MAC 地址前 25 位固定为 01-00-5E-0(前缀 01-00-5E + 组播 IP 低 23 位前的 0),后 23 位取组播 IP 地址的低 23 位:IP 地址 32 位中 D 类前 4 位(1110)丢弃、第 5~8 位丢弃,余 23 位填入 MAC 后 23 位。由于只映射低 23 位(忽略 IP 第 5~8 位共 4 位),32 个不同的组播 IP 对应同一个组播 MAC——网卡收包后仍需由 IP 层核对完整组播地址。
例 14 易错 组播 MAC 映射计算

组播 IP 地址 224.128.64.5 映射到的以太网 MAC 地址是什么?224.0.64.5 映射到哪个 MAC?两者 MAC 相同吗?

查看解答

取低 23 位:第二字节低 7 位 + 第三字节 8 位 + 第四字节 8 位。

224.128.64.5:第二字节 128 = 10000000,低 7 位 = 0000000;第三字节 64 = 01000000;第四字节 5 = 00000101 → 后 23 位拼成 MAC 后三字节 00、0x40、0x05 → 01-00-5E-00-40-05。

224.0.64.5:第二字节 0 的低 7 位也是 0000000,后两字节同上 → 同样映射 01-00-5E-00-40-05。

两个不同的组播 IP 得到同一个 MAC——因为 IP 第 5~8 位(128 与 0 的差别就在第 8 位)被忽略,\(2^5=32\) 个 IP 共享一个 MAC,接收端 IP 层必须再比对完整组播地址。

套路总结:MAC = 01-00-5E + (第二字节 AND 0x7F)+ 第三字节 + 第四字节。验证:128 AND 127 = 0 ✓。

IGMP 与移动 IP(了解)IGMP(网际组管理协议):主机告知本地路由器「我加入了 / 退出了某组播组」(封装在 IP 中,协议号 2);路由器再靠 IGMP + 组播路由协议(PIM 等)把组播流量引到有成员的网段。
移动 IP:让主机换网后仍用原地址被找到。四个要素:本地地址(在本地网络的永久地址)、本地代理(留守家乡、代收发分组)、转交地址(漫游到外地网络获得的临时地址)、外地代理。通信对端仍发往本地地址,本地代理截获后经隧道(IP in IP 封装)把分组送到转交地址——间接路由;主机跨网移动期间通信不断。
练习 5

(1) 224.0.0.1 到 224.0.0.255 这段组播地址有什么特殊用途?(2) 移动 IP 中,通信对端发出的分组首先到达哪里?靠什么机制转到漫游主机?

查看答案

(1) 永久组播组 / 链路本地段:224.0.0.1(本子网所有主机)、224.0.0.2(本子网所有路由器)、224.0.0.5 / 224.0.0.6(OSPF)等,路由器不转发。

(2) 先到达本地代理(对端只知道本地地址);本地代理通过隧道技术(把原始分组再封装一个发往转交地址的外层 IP 头)转交给漫游主机。

4.8 章末自测 真题风格

限时 55 分钟,先做后看答案。难度:★★ 基础 / ★★★ 强化 / ★★★★ 冲刺。自检标准:11 题对 9 题以上;自测 4、8、10、11 涉及网络层最高频的计算与综合大题,必须全对——分片、子网 / 聚合、最长前缀匹配错任何一道,回看 4.1.3 与 4.3 重练。

自测 1(选择 · ★★★)

IPv4 首部中,首部长度字段和总长度字段的单位分别是( )
A. 1 B 和 1 B B. 4 B 和 1 B C. 1 B 和 4 B D. 4 B 和 4 B

查看答案

B。首部长度以 4 B 为单位(5~15 对应 20~60 B),总长度以 1 B 为单位(首部 + 数据,上限 65535 B);片偏移则以 8 B 为单位——三个单位是本章第一组必背数字。

自测 2(选择 · ★★★ 易错)

路由器转发 IP 数据报时,每经过一个路由器都要重新计算首部校验和,原因是( )
A. 数据部分可能被修改 B. 首部中的 TTL 字段减 1
C. 源地址和目的地址发生变化 D. 总长度字段发生变化

查看答案

B。转发途中不变的是源 / 目的 IP(NAT 除外);必然变的是 TTL(减 1),首部校验和只校验首部、TTL 一变就必须重算。数据部分路由器不碰,A、D 均不成立。

自测 3(选择 · ★★★)

主机 A(192.168.1.10/24)ping 位于另一网络的 DNS 服务器 8.8.8.8,默认网关为 192.168.1.1。A 发出的 ARP 请求询问的 IP 地址是( )
A. 8.8.8.8 B. 192.168.1.1 C. 255.255.255.255 D. 本地 DNS 服务器的地址

查看答案

B。跨网段通信时 ARP 解析的是默认网关的 MAC——帧只需送到第一跳路由器;IP 头里的目的地址仍是 8.8.8.8,MAC 逐跳更换、IP 端到端不变。

自测 4(选择 · ★★★★ 计算)

一个总长度 4000 B(含 20 B 首部)的 IP 数据报经过 MTU = 1500 B 的链路,分片后第 2 片的片偏移字段和 MF 标志分别为( )
A. 185,1 B. 185,0 C. 370,1 D. 1500,1

查看答案

A。每片最多数据 \(1500-20=1480\) B;第 2 片数据起点 1480 B,片偏移 \(=1480\div8=185\);后面还有第 3 片,MF = 1。C 的 370 是第 3 片的偏移,D 忘了除以 8 还带上了首部。

自测 5(选择 · ★★★★ 计算)

主机地址为 140.66.108.100,子网掩码为 255.255.248.0,该子网的广播地址是( )
A. 140.66.108.255 B. 140.66.111.255 C. 140.66.103.255 D. 140.66.112.255

查看答案

B。248 = 11111000,第三字节低 3 位是主机位:\(108=01101100\),与 248 相与得 \(01101000=104\),网络地址 140.66.104.0;块覆盖 104~111,广播地址 = 140.66.111.255。A 只把第四字节置 255(少算了主机位);C 是把网络地址当广播;D 的 112 已是下一块起点。

自测 6(选择 · ★★★)

DHCP 客户机与服务器协同获取 IP 地址的正确顺序是( )
A. 请求→提供→发现→确认 B. 发现→请求→提供→确认
C. 发现→提供→请求→确认 D. 提供→发现→请求→确认

查看答案

C。DORA:Discover(广播找服务器)→ Offer(服务器提供地址)→ Request(客户正式请求选用)→ Ack(确认 + 租用期)。DHCP 是应用层 C/S 协议,报文装在 UDP(67 / 68)里。

自测 7(选择 · ★★★ 易错)

下列哪种情况路由器 / 主机不应发送 ICMP 差错报告报文?( )
A. 收到 TTL 为 1 的数据报 B. 对一个 ICMP 终点不可达报文再次无法交付
C. 收到目的地址不存在的首部错误的单播数据报 D. 需要分片但 DF = 1

查看答案

B。四种「不发」:ICMP 差错报告本身、后续分片、组播目的、特殊地址(127/0.0.0.0)——B 属于第一种。A 发「时间超过」,C 首部错发「参数问题」(若错在字段致无法处理),D 发「终点不可达」(代码 4,需分片但 DF 置位)。

自测 8(选择 · ★★★★ 计算)

某路由器的路由表中有两条表项:① 目的网络 40.0.2.0/23,下一跳 R1;② 目的网络 40.0.2.0/24,下一跳 R2;另有默认路由指向 R0。目的地址为 40.0.2.200 的分组将被( )
A. 发给 R1 B. 发给 R2 C. 发给 R0 D. 丢弃

查看答案

B。/23 块:第三字节低 7 位为主机位,2 = 00000010 → 块覆盖 2~3,40.0.2.200 同时命中 ① ②;/24 更长(更具体),按最长前缀匹配选 R2。若目的地址是 40.0.3.7,则只命中 /23 → R1——同一张表两种走向,正是真题的命题方式。

自测 9(选择 · ★★★ 高频考点)

关于 RIP、OSPF 和 BGP,下列说法错误的是( )
A. RIP 使用 UDP 传送,最大跳数为 15
B. OSPF 直接用 IP 数据报传送,每个路由器拥有全网链路状态数据库
C. BGP 使用 TCP 传送,交换的是完整的 AS 路径可达性信息
D. 三种协议都使用跳数作为度量

查看答案

D。只有 RIP 用跳数;OSPF 用可配置的开销(带宽 / 时延),BGP 用策略 + 路径向量信息。A、B、C 逐一对应「UDP 520 / IP 协议号 89 / TCP 179」,是网络层协议题的固定考点。

自测 10(综合 · ★★★★ 冲刺 · 15 分)

某公司分到地址块 208.66.200.0/24,拓扑为:公司路由器 R 的接口 m0 连接部门甲(约 120 台主机),接口 m1 连接部门乙(约 50 台主机),接口 m2 连接 ISP 路由器 S。甲、乙各划分一个子网。
(1)(5 分)给出甲、乙两个子网的网络地址、前缀长度与可用主机地址范围(要求不留浪费且留有少量余量);
(2)(4 分)写出 R 的路由表(目的网络、掩码、接口 / 下一跳);
(3)(3 分)主机 208.66.200.100 与 208.66.200.150 通信,分组是否经过 R?两者发出的帧的目的 MAC 是谁的?
(4)(3 分)ISP 路由器 S 对外通告覆盖公司全部地址的路由,应通告哪一条?若相邻块 208.66.201.0/24 也由该 ISP 分配给另一公司,S 可将其与公司路由聚合为一条,结果是什么?

查看解答

(1) 甲 120 台:需 \(2^{m}-2\ge120\),\(2^7-2=126\ge120\) ✓ → 主机位 7 → /25:
208.66.200.0/25,可用 208.66.200.1 ~ 208.66.200.126(126 台)。
乙 50 台:\(2^6-2=62\ge50\) ✓ → /26:208.66.200.128/26,可用 208.66.200.129 ~ 208.66.200.190(62 台);
剩余 208.66.200.192/26 留作备用。验证:126 + 62 + 62(备用)+ 4(网络 / 广播地址)+ 2(备用块的网 / 广)= 256 ✓。

(2) R 的路由表:

目的网络掩码接口 / 下一跳
208.66.200.0/25(255.255.255.128)m0,直接交付
208.66.200.128/26(255.255.255.192)m1,直接交付
0.0.0.0/0(0.0.0.0)m2,下一跳 S(默认路由)

(3) 100 在 0~127 内 → 属甲子网 .0/25;150 在 128~191 内 → 属乙子网 .128/26;不同子网,分组必须经 R 转发(甲 → R → 乙)。两者发出帧的目的 MAC 都是各自默认网关(R 的 m0 / m1 接口)的 MAC 地址,IP 头中的源 / 目的 IP 保持两台主机不变。

(4) 子网划分是公司内部事务,对外整块仍是 /24 → 通告 208.66.200.0/24 一条即可覆盖全部地址。若 208.66.201.0/24 也归该 ISP:200 = 11001000、201 = 11001001,前 23 位相同 → 聚合为 208.66.200.0/23(恰好覆盖 200~201 两个 /24,无多余)。验证:块大小 \(2^{9}=512\),第三字节覆盖 200~201 ✓。

套路总结:这是网络层大题的「全家桶」模板——按需求定前缀 → 列路由表(直连 + 默认)→ 判断归属 / 转发接口 → 边界聚合。每一步都只用到 4.3 节的「按位与 + 块对齐」两招。

自测 11(综合 · ★★★ 冲刺)

路由器 B 的当前路由表为:N1 距离 8、下一跳 A;N2 距离 3、下一跳 C;N3 距离 2、下一跳 D;N4 距离 6、下一跳 C。B 收到相邻路由器 C 发来的 RIP 报文,其中表项为:N1 距离 4、N2 距离 3、N4 距离 5。
(1) 逐项写出 B 更新后的路由表并说明理由;(2) 该 RIP 报文到达 B 时被封装在哪一层什么协议的报文中?(3) 若网络改用 OSPF,C 的链路开销变化时它向谁、发送什么?B 收到后如何得到新路由?

查看解答

(1) 距离向量更新(全部 +1 后比较):

N1:C 报 4 → 5;本表 8、下一跳 A(非 C),5 小于 8 → 更新为(N1, 5, C);

N2:C 报 3 → 4;本表下一跳正是 C → 无条件更新为(N2, 4, C)(变大了也要改,如实反映经 C 的代价);

N3:C 未提及 → 保持(N3, 2, D);

N4:C 报 5 → 6;下一跳正是 C → 无条件更新为(N4, 6, C),数值恰与原值相同,表项不变。

更新后:N1(5, C)、N2(4, C)、N3(2, D)、N4(6, C)。

(2) RIP 是应用层协议,其报文封装在 UDP 数据报(端口 520)中传输,外层再封 IP、再封帧。

(3) C 用洪泛法向本区域(全网)所有路由器发送链路状态更新分组(LSU,携带链路状态通告);B(及所有路由器)据此更新链路状态数据库,使全网拓扑一致,然后 B 在本地用 Dijkstra 算法重新计算最短路径树得到新路由——不是被动接收别人算好的结论。

套路总结:RIP 三判据「无则加、C 则更、小则换」;RIP / OSPF 的载体与交换内容两两对照,综合题常把 (2)(3) 合成一小问考「协议工程细节」。

4.9 本章考点总结

考点常考题型热度核心方法 / 一句话结论
虚电路 vs 数据报选择★★★虚电路:先建连接、走同路、带 VCID、网络保可靠;数据报:无连接、独立选路、带完整 IP、端系统保可靠(因特网的选择)
IPv4 首部字段选择★★★★首部长度单位 4 B(20~60 B)、总长度单位 1 B(≤65535)、TTL 逐跳减 1、协议 TCP=6 / UDP=17 / ICMP=1、校验和只查首部且每跳重算;源 / 目的 IP 全程不变
分片计算计算 / 选择★★★★★每片数据 ≤ MTU−20 且为 8 的倍数;片偏移 = 数据区起点 ÷ 8;前片 MF=1、末片 MF=0;标识各片相同;重组只在目的主机
特殊 / 私有地址与 NAT选择★★★★主机号全 0 = 网络地址、全 1 = 定向广播、255.255.255.255 受限广播(路由器不转发)、127.0.0.1 环回;私有三段 10/8、172.16/12、192.168/16;NAPT 改源 IP:端口、靠端口复用区分连接
子网划分(网络 / 广播地址、主机数)大题 / 选择★★★★★IP AND 掩码 = 网络地址;块大小 \(2^{32-n}\),广播 = 网络 + 块大小 −1,可用主机 \(2^{32-n}-2\)(子网全 0 / 全 1 可用,408 不减);需求反推:\(2^m-2\ge\) 主机数定前缀
CIDR / 路由聚合 / 最长前缀大题 / 选择★★★★★聚合 = 求最长公共前缀,块须连续且 2 的幂个;默认路由 0.0.0.0/0 匹配一切;多条命中取前缀最长(最具体)者
ARP选择★★★★★同一局域网内 IP→MAC;请求广播、响应单播;跨网段解析的是默认网关的 MAC;IP 端到端不变、MAC 逐跳更换
DHCP选择★★★★应用层 C/S、UDP 67/68;DORA:发现→提供→请求→确认;前期源 0.0.0.0、目的 255.255.255.255;地址可重用、有租用期、支持中继
ICMP选择★★★★差错五类:终点不可达 / 源点抑制 / 超时 / 参数问题 / 改变路由;四种不发:ICMP 本身、后续分片、组播、特殊地址;ping 用回送请求应答(不经 TCP/UDP),traceroute 用 TTL 超时
IPv6选择★★★★128 bit 冒号十六进制,:: 只能压缩一次;首部固定 40 B、无校验和、路由器不分片(源端分片);单播 / 组播 / 任播、无广播;过渡:双协议栈、隧道
RIP计算 / 选择★★★★★距离向量、跳数 ≤15(16 不可达)、UDP 520、周期与邻居交换整表;更新三判据「无则加、下一跳是他则必更、更小才换」;坏消息传得慢 → 水平分割 / 毒性逆转
OSPF选择★★★★★链路状态、洪泛 LSU + 各自 Dijkstra、IP 直接封装协议号 89、变化触发、收敛快、可分区域;五类分组:Hello / DD / LSR / LSU / LSAck
BGP选择★★★★域间 EGP、路径向量、通告完整 AS 路径、TCP 179、重策略不追求最佳、增量更新
路由器与三层设备选择★★★★输入端口→交换结构→输出端口,排队在输入 / 输出队列;路由表算、转发表查;交换机隔碰撞域,路由器隔碰撞域 + 广播域
组播与移动 IP选择★★组播 = D 类 224.0.0.0/4,MAC = 01-00-5E + IP 低 23 位(32 个 IP 共 1 个 MAC);移动 IP:本地地址 / 转交地址 + 隧道
下一步本章过关标准:例题 14 道独立重做;自测 11 题对 9 题以上;三件事脱口而出——「4000 B 过 MTU=1500 分几片、第 2 片偏移多少?」(3 片、185)、「跨网段 ARP 问的是谁?」(默认网关)、「RIP / OSPF / BGP 的载体?」(UDP 520 / IP 89 / TCP 179)。随后进入 第 5 章 传输层——端到端可靠传输的主战场:TCP 连接管理三次握手、滑动窗口与拥塞控制、报文段首部与 UDP,是仅次于本章的第二大分值高地,而本章的 IP 编址正是 TCP 两端「寻址到家」的地基。