408 计算机网络 精讲零基础到真题
408 · 计算机网络(25 分)

计算机网络精讲

写给没学过计算机网络的同学:从“一个比特怎么从一根线上传过去”讲起,到能独立做 2009—2026 年全部 163 道计网真题。

计算机网络在 408 里占 25 分:8 道选择题(第 33~40 题,每题 2 分)加 1 道综合题(一般是第 47 题,9 分)。分值不如计组、操作系统多,但它的题目套路最固定:子网划分、信道利用率、CSMA/CD 最短帧长、TCP 拥塞窗口……每年换个数字再考一遍。把这些套路学透,25 分是最容易拿满的一门。

怎么用这份讲义
  1. 按顺序读。第 0 篇补单位换算和二进制,第 1 篇搭起“分层”的框架,第 2~6 篇从物理层一层层往上讲,每一层都用到下面几层。
  2. 每遇到 真题卡 先自己做,再点「展开解析」。解析会写出每一步的依据,并逐个说明错误选项错在哪里。
  3. 每个小节标题下面有一条“真题标签”:★★★ 高频 表示这一节考得多;后面的题号点一下就弹出题目和讲解,点「逐题做」可以连续做完这一节挂的全部真题。
  4. 每个考过选择题的小节末尾都有「选择题变式」(虚线框):每道都由一道真题改动一两个条件而来,解析后面的“变化点”告诉你改了什么、答案为什么跟着变。没考过的考纲知识点也配了标“考纲补充(尚无真题)”的自编题。
  5. 每篇末尾有“本篇真题闯关”,把这一篇涉及的真题按小节排好;第 8 篇可以按年份刷完 2009—2026 年全部计网真题。
  6. 标 融合 的地方要把几层串起来想,是综合题的高发区,读两遍。
  7. 带 ⚙ 的是可以动手的小工具(子网计算器、CRC 计算、信道利用率、TCP 拥塞窗口……),改数字就能看到结果。
  8. 第 7 篇「大题满分训练营」把 19 道综合题分成 7 类,每类讲“这类题长什么样 → 必须会的几件事 → 解题模板 → 完整示范 → 两道自编模拟大题 → 举一反三变式表 → 丢分点”,部分类别附“预测小题”(考纲有、大题还没考过的点),最后有三套整卷模拟。
  9. 第 9 篇「满分冲刺」给想拿满 25 分的同学:先看 9.0 的考频热力图,再做 9.1 新考点、9.2 判断组、9.3 计算题型,然后用 9.4 ~ 9.6 三套卷限时 35 分钟(交卷才显示答案和错题),最后在 9.7 细目表里逐条打勾。

一张图看懂:这份讲义讲的是什么

主机 A 交换机 路由器 主机 B 应用层 HTTP、DNS 传输层 TCP、UDP 网络层 IP 数据链路层 以太网 物理层 比特 应用层 传输层 网络层 数据链路层 物理层 数据链路层 物理层 网络层 数据链路层 物理层 传输介质(第 2 篇) 一跳一跳地转发 应用层协议:端到端(第 6 篇) 传输层:进程到进程、可靠传输(第 5 篇) 网络层:主机到主机、选路由(第 4 篇) 链路层:一段链路、一跳(第 3 篇) 主机实现全部 5 层;路由器只实现到网络层(看 IP 地址转发),交换机只实现到数据链路层(看 MAC 地址转发), 集线器、中继器只在物理层(只放大、复制比特)。数据在发送端从上往下一层层封装,在接收端从下往上一层层拆封, 中间设备只拆到自己那一层,处理完再重新封装往下发。第 1 篇讲这张图背后的“分层”思想。
图 0-1 全书地图。左右两台主机各有 5 层,中间的交换机和路由器只实现下面两三层。橙色粗线是数据真正走的路:先在主机 A 里一路往下,到物理层变成信号,经过交换机、路由器一跳一跳地转发,最后在主机 B 里一路往上。虚线表示对等层之间“好像直接在对话”——这就是协议。
篇内容选择题真题数
第 0 篇导读与必备基础:本书地图与 21 分目标、单位换算、科学计数法、dB、2 的幂、二进制与点分十进制、封装全景(剥洋葱)所有计算题的地基
第 1 篇体系结构:网络的组成与分类、三种交换方式、性能指标、协议与分层、OSI 与 TCP/IP19
第 2 篇物理层:码元与波特率、奈奎斯特与香农、编码与调制、传输介质15
第 3 篇数据链路层:组帧、CRC、停等/GBN/SR、CSMA/CD、CSMA/CA、以太网、VLAN、交换机37(最多)
第 4 篇网络层:IPv4 分组与分片、子网划分与 CIDR、路由聚合、NAT、ARP/DHCP/ICMP、IPv6、RIP/OSPF/BGP32
第 5 篇传输层:UDP、TCP 首部、三次握手与四次挥手、滑动窗口、拥塞控制23
第 6 篇应用层:C/S 与 P2P、DNS、FTP、电子邮件、HTTP、融合 一次网页访问的全过程18
第 7 篇大题满分训练营:19 道综合题分 7 类,每类有模板、示范、两道模拟题和变式表;6 道预测小题;三套整卷模拟综合题专项
第 8 篇考场手册:公式速查、端口与封装速查、易错清单、按年份刷题考前冲刺
第 9 篇满分冲刺:考纲里还没考过的新考点 32 题、判断组 16 题、计算题型 42 题、三套 25 分限时卷(计时、判分、错题)、152 条知识点细目表冲 25 分
关于“高频”标记和真题来源

小节标题下的星级按“这一小节挂了多少道真题”自动算(选择题算 1、综合题算 3:≥9 为三星,≥4 为两星)。每道题挂在哪个小节、讲解怎么写,都是对照题目逐道确定的。题干和答案来自本机题库(2009—2026 年计算机网络共 163 题:选择题 144 道、综合题 19 道,其中 2014 年综合题是第 42、43 两题)。原题带图的,题干里的图按原卷重画。

第 0 篇 · 开始之前

导读与必备基础:单位、二进制和“封装”

计网的计算题几乎都卡在两件小事上:单位换算(bit 还是 Byte?K 是 1000 还是 1024?)和二进制(IP 地址、掩码、按位与)。这一篇先把这两件事练熟,再用一张图把“数据从一台电脑到另一台电脑”的全过程过一遍,后面每一篇都在细讲这张图的某一层。

对应:王道计算机网络第 1 章之前的预备知识难度:★用时:1~2 小时

0.1计算机网络在 408 里考什么

基础铺垫

408 试卷的第 33~40 题是计网选择题(每题 2 分),第 47 题是计网综合题(9 分,2014 年是第 42、43 两题,2016 年是第 41 题),合计 25 分。18 年 144 道选择题按层分布如下,数据链路层和网络层加起来占了将近一半:

层选择题综合题 (按主要考点归属)最常考的东西
体系结构(第 1 篇)19—OSI 各层功能、交换方式的时间计算、性能指标
物理层(第 2 篇)15—奈奎斯特、香农定理算速率;编码波形
数据链路层(第 3 篇)375GBN/SR 窗口与信道利用率、CSMA/CD 最短帧长、802.11 地址、交换机
网络层(第 4 篇)328子网划分、路由聚合、最长前缀匹配、分片、NAT、RIP/OSPF
传输层(第 5 篇)234TCP 序号与确认号、三次握手四次挥手、拥塞窗口
应用层(第 6 篇)182DNS 查询次数、HTTP 需要几个 RTT、邮件协议、FTP

本书地图:分值都在哪

本书各篇(从上到下 = 协议栈)每年平均能拿多少分(2009—2026,满分 25)选择题综合题第 1 篇 体系结构(总纲)2.1 分第 6 篇 应用层2.9 分第 5 篇 传输层4.5 分第 4 篇 网络层7.3 分第 3 篇 数据链路层6.5 分第 2 篇 物理层1.7 分数据链路层 + 网络层 ≈ 13.8 分,超过一半;综合题 19 道里有 13 道出在这两层
图 0-2 本书地图与分值。年均分值 = 选择题数 × 2 ÷ 18 年 + 综合题数 × 9 ÷ 19 道(2014 年有两道综合题)。第 1 篇是“总纲”,后面五篇正好是五层协议栈,自上而下排在左边,右边的条越长,这一篇越值得多花时间。

综合题只有 7 类(第 7 篇逐类讲):IP 地址规划与路由表、路由协议、报文首部分析、局域网与设备、链路层可靠传输、TCP 连接与拥塞控制、一次访问的全过程。其中“IP 地址 + 路由表”是出现次数最多的一类(2009、2013、2014、2018 年作为主考点,2025 年也考了一问),而且别的类型也常顺带考一问地址或路由表,是必须拿满的。各类的出题年份见第 9 篇 9.0 的轮换图。

目标 21 分:分数从哪里来

北京考生 408 要上 125,计网拿到 21 / 25 就够了:选择题最多错 1 道,综合题丢不超过 2 分。

部分满分目标怎么拿
选择题 8 道1614体系结构、物理层、应用层每年各约 1 道,概念 + 简单计算,必须全对;链路层、网络层、传输层约 5 道,计算题多,最多错 1 道。
综合题 1 道97“IP 地址规划 + 路由表”和“TCP 序号 / 拥塞窗口”两类出现最多,必须拿满;其余类型(链路层可靠传输、局域网、一次访问全过程)至少拿下前两问。
合计2521相当于每年只允许丢 4 分:一道选择题 + 综合题的一个小问。

21 分是保底。想冲 25 分,第三轮把第 9 篇做完:9.1 补考纲里有、真题还没考过的点,9.2、9.3 把判断和计算练成固定步骤,9.4 ~ 9.6 三套卷限时 35 分钟,9.7 细目表逐条打勾——每一条都能说出“在哪一节、怎么考”,才算没有死角。

学习路线:三轮

① 第一轮:按篇通读第 0 → 1 → 2 → … → 6 篇每篇:正文 → 跟我算 → 真题 → 自测约 40 小时② 第二轮:大题训练营第 7 篇:7 类综合题每类:示范 → 模拟 → 变式表约 15 小时③ 第三轮:手册 + 整卷第 8 篇公式、端口、易错清单第 9 篇冲刺:三套限时卷 + 细目表一直到考前
图 0-3 三轮学习路线。第一轮求“懂”,第二轮求“会做大题”,第三轮求“又快又不丢分”。

时间特别紧时,按分值从高到低:第 4 篇(网络层)→ 第 3 篇(链路层)→ 第 5 篇(传输层)→ 第 1 篇 → 第 6 篇 → 第 2 篇。但第 0 篇的单位和二进制无论如何先过一遍——后面每篇都要用。

计网要会算的 10 类题(先有个印象)
  1. 发送时延、传播时延、分组交换的总时间(1.2、1.3)
  2. 奈奎斯特、香农定理求最大数据传输率(2.2)
  3. CRC 校验码(3.2)
  4. 停等、GBN、SR 的信道利用率和序号位数(3.3)
  5. CSMA/CD 的最短帧长、最远距离、退避时间(3.5)
  6. 子网划分、可分配地址数、广播地址(4.3)
  7. 路由聚合、最长前缀匹配(4.4)
  8. IP 分片的片偏移(4.2)
  9. TCP 序号、确认号、窗口和拥塞窗口(第 5 篇)
  10. HTTP、DNS 需要多少个 RTT(第 6 篇)

2026 年考纲原文与本书的对应

下表左列是 2026 年 408 考纲计网部分的条目(按原文顺序,原文措辞略有合并),右列是本书讲它的小节。每一条都要能说出本书哪一节讲过——这是“不留死角”的底线。2026 年考纲与 2025 年相比只改了一处措辞(“TCP/IP 模型”改称“TCP/IP 参考模型”),内容没有变化。

考纲部分考纲条目(原文)本书
一、概述计算机网络的定义、组成与功能;分类;主要性能指标1.1、1.3
分层结构;协议、接口、服务等概念;ISO/OSI 参考模型和 TCP/IP 参考模型1.4、1.5
二、物理层通信基础:信道、信号、带宽、码元、波特、速率、信源与信宿;奈奎斯特定理与香农定理;编码与调制;电路交换、报文交换与分组交换;数据报与虚电路2.1 ~ 2.3;交换方式与数据报 / 虚电路在 1.2
传输介质:双绞线、同轴电缆、光纤与无线传输介质;物理层接口的特性2.4、2.5
物理层设备:中继器、集线器2.5
三、数据链路层数据链路层的功能;组帧;差错控制(检错编码、纠错编码)3.1、3.2
流量控制与可靠传输机制:滑动窗口机制;停止-等待、后退 N 帧(GBN)、选择重传(SR)3.3
介质访问控制:信道划分(频分、时分、波分、码分);随机访问(ALOHA、CSMA、CSMA/CD、CSMA/CA);轮询访问(令牌传递)3.4、3.5、3.6
局域网:基本概念与体系结构;以太网与 IEEE 802.3;IEEE 802.11 无线局域网;VLAN 基本概念与基本原理3.7、3.6、3.8
广域网:基本概念;PPP 协议3.7
数据链路层设备:以太网交换机及其工作原理3.9
四、网络层网络层的功能:异构网络互连;路由与转发;SDN 基本概念;拥塞控制4.1
路由算法:静态路由与动态路由;距离-向量;链路状态;层次路由4.8
IPv4:分组;地址与 NAT;子网划分、路由聚集、子网掩码与 CIDR;ARP、DHCP、ICMP4.2 ~ 4.6
IPv6:主要特点;地址4.7
路由协议:自治系统;域内路由与域间路由;RIP、OSPF、BGP4.8
IP 组播:组播的概念;IP 组播地址4.10
移动 IP:概念;通信过程4.11
网络层设备:路由器的组成和功能;路由表与路由转发4.9、4.4
五、传输层传输层的功能;传输层寻址与端口;无连接服务与面向连接服务5.1
UDP:UDP 数据段;UDP 校验5.2
TCP:TCP 段;连接管理;可靠传输;流量控制;拥塞控制5.3 ~ 5.6
六、应用层网络应用模型:客户 / 服务器(C/S)、对等(P2P);DNS 系统:层次域名空间、域名服务器、域名解析过程6.1、6.2
FTP:工作原理、控制连接与数据连接;电子邮件:系统组成、格式与 MIME、SMTP 与 POP3;WWW:概念与组成结构、HTTP 协议6.3 ~ 6.5
考纲没写、本书却讲了的内容,该怎么对待
  • IGMP 与组播路由:考纲 IP 组播只写“组播的概念、IP 组播地址”两条。IGMP、组播路由讲到“知道它干什么”即可(4.10 标“拓展”);组播地址和组播 MAC 映射才是重点。
  • 网桥:考纲的链路层设备只写“以太网交换机”。网桥是交换机的前身,原理相同(自学习、存储转发),本书在 3.9 作为铺垫讲;真题 2010-38、2015-37 考过网桥。
  • 标准化组织、IMAP、DNS 资源记录、HTTPS / HTTP/2:教材里有或有助于理解,考纲未单列。IMAP 常和 POP3 一起作选项(2025-40),要会区分;其余了解即可。

0.2单位与换算:计网计算题的第一道坎

基础铺垫

计网的数字里有三组最容易搞混的单位。每道计算题动笔之前,先把题目里的数字都换成“比特”和“秒”,就不会错。

① bit 和 Byte

b(bit,比特)是一位 0 或 1;B(Byte,字节)是 8 位。速率一律用 bit/s(bps),而帧长、分组、文件大小常用 Byte 给出。所以算发送时间时,要先把字节乘以 8:

发送时延 = 数据长度(bit)÷ 数据传输速率(bit/s)例:1000B 的帧在 100Mbps 的链路上发送:1000 × 8 ÷ (100 × 106) = 80μs

② K、M、G 到底是 1000 还是 1024

出现在哪里K / M / G 的含义例子
速率、频率(bps、Hz)103、106、109100Mbps = 108 bit/s;4kHz = 4000Hz
存储容量、缓存、窗口通常 210、220、230,但题目常会写明2016-41:“20KB(K = 1024)”;2013-35:“8Mb(1M = 106)”
文件大小(与速率一起算时)看题目说明;没说明时两种算法的结果常常只差一点,选项会拉开2023-33、2025-33 都写明 M = 106

口诀:“速率看 10,容量看 2,题目写了听题目”。

③ 时间单位

1s = 103ms = 106μs = 109ns。信号在电缆和光纤中的传播速度约为 2 × 108m/s,换个写法就是 200m/μs、200 000km/s——这个数字在 CSMA/CD 题里几乎每年出现。

要记住的几个数结果
64B(以太网最短帧)在 10Mbps 上的发送时间512bit ÷ 107 = 51.2μs(以太网的“争用期”)
1500B 在 100Mbps 上12 000bit ÷ 108 = 120μs
1000B 在 1Gbps 上8000bit ÷ 109 = 8μs
信号走 2km2000m ÷ (2 × 108m/s) = 10μs

④ 分贝(dB)

香农定理里的信噪比常用分贝给出:信噪比(dB)= 10 × log10(S/N)。反过来:S/N = 10dB/10。

dB102030403
S/N10100100010 000约 2

香农公式里要算 log2(1 + S/N)。S/N = 1000 时,log21001 ≈ 9.97,考试里直接按 10 算(2016-34、2017-34);若题目给的 S/N = 1023,则 log21024 = 10 恰好整(2026-34)。

⑤ 科学计数法:乘除就是指数加减

补课:10 的幂怎么乘除
  • a × 10m × b × 10n = (a × b) × 10m + n;a × 10m ÷ (b × 10n) = (a ÷ b) × 10m − n。
  • 结果换成好读的单位:10−3 s = 1 ms,10−6 s = 1 μs。例:1.2 × 10−4 s = 120 × 10−6 s = 120 μs(小数点右移 2 位,指数加 2)。
例跟我算
(1) 64 B 的帧在 1 Gb/s 的链路上发送要多久?(2) 6.4 × 105 bit 的数据在 3.2 × 108 b/s 的链路上发送要多久?
跟我算

(1) 64 × 8 = 512 bit = 5.12 × 102 bit;5.12 × 102 ÷ 109 = 5.12 × 10−7 s = 0.512 μs。(2) (6.4 ÷ 3.2) × 105 − 8 = 2 × 10−3 s = 2 ms。

单位:bit ÷ (bit/s) = s。先算系数(6.4 ÷ 3.2 = 2),再算指数(5 − 8 = −3),最后换单位。

例单位换算
主机甲向乙发送一个 2MB(1M = 106)的文件,链路速率为 100Mbps,链路长 2000km,信号传播速度 2 × 108m/s。发送时延和传播时延各是多少?
展开解析

发送时延 = 2 × 106 × 8bit ÷ 108bit/s = 0.16s = 160ms。

传播时延 = 2 × 106m ÷ (2 × 108m/s) = 0.01s = 10ms。

两个时延的“分母”不同:发送时延除以速率(每秒能推出去多少比特),传播时延除以传播速度(信号每秒跑多远)。第 1 篇 1.3 专门讲。

0.3二进制与点分十进制:IP 地址的底子

基础铺垫

一个 IPv4 地址是 32 位二进制数。为了好读,把它分成 4 个字节,每个字节写成一个 0~255 的十进制数,中间用点隔开,这就是点分十进制:

11000000 10101000 00000001 00001010 ⟶ 192.168.1.10

① 一个字节里 8 位的“权”

位第 1 位第 2 位第 3 位第 4 位第 5 位第 6 位第 7 位第 8 位
权1286432168421

十进制转二进制:从 128 开始往下“能减就减、减了写 1”。例:200 = 128 + 64 + 8 → 1100 1000;77 = 64 + 8 + 4 + 1 → 0100 1101。

② 掩码:前面连续的 1

子网掩码也是 32 位,前面一串 1、后面一串 0,1 的个数叫前缀长度,写成“/n”。一个字节里可能出现的掩码值只有 9 种,一定要背熟:

这一字节里 1 的个数012345678
掩码值0128192224240248252254255
块大小 = 256 − 掩码值2561286432168421

例:255.255.252.0 = 8 + 8 + 6 = /22;/26 = 255.255.255.192。

③ 按位与:求网络地址

IP 地址和掩码按位与(两个都是 1 才得 1),得到的就是网络地址——把主机号部分清零。手工算时只需看掩码不是 255 也不是 0 的那个字节:

  • 掩码是 255 的字节:地址原样保留;掩码是 0 的字节:变成 0。
  • 中间那个字节:块大小法——块大小 = 256 − 掩码值,把地址的这个字节向下取到块大小的整数倍。
例块大小法
主机 180.80.77.55,掩码 255.255.252.0。它所在网络的网络地址和广播地址是什么?
展开解析

第 3 字节的掩码是 252,块大小 = 256 − 252 = 4。77 向下取到 4 的倍数是 76。第 4 字节掩码是 0,变成 0。网络地址 = 180.80.76.0。

这个网络占第 3 字节的 76、77、78、79 四个值,广播地址是主机号全为 1:180.80.79.255(2012-39 就考这个)。

用二进制验证:77 = 0100 1101,前 6 位是网络号,保留 0100 11,后 2 位清零 → 0100 1100 = 76。

④ 十六进制和 MAC 地址

一个十六进制数字正好是 4 位二进制(0~9、A~F 表示 0~15),所以 1 字节 = 2 个十六进制数字。以太网的 MAC 地址是 48 位 = 6 字节,写成 00-15-C5-C1-5E-28 这样的 6 组。抓包题(2011-47、2012-47)给的是一串十六进制字节,要会把 “C0 A8 00 08” 读成 192.168.0.8(C0 = 192,A8 = 168)。

⑤ 2 的幂与 log2:“要几位”的问题

n12345678910162032
2n248163264128256512102465 536约 106约 4.3 × 109
补课:log2 是什么

log2x 就是“2 自乘几次得到 x”:log28 = 3,log264 = 6,log21024 = 10。x 不是 2 的整数次幂时,结果在两个整数之间,如 log21000 ≈ 9.97——问“至少要几位”时向上取整,得 10。

计网里用到 2 的幂的地方只有四处,记住“几位 ↔ 几种”这一对关系就够了:

  1. 码元:有 V 种状态,每个码元携带 log2V 位(第 2 篇)。16 种状态 → 4 位。
  2. 序号:用 n 位编号,就有 2n 个序号(第 3 篇滑动窗口、第 5 篇 TCP 序号)。3 位序号 → 0 ~ 7。
  3. 主机数:主机号 n 位,可分配 2n − 2 个地址(去掉全 0、全 1,第 4 篇)。要容纳 1000 台主机:29 − 2 = 510 不够,210 − 2 = 1022 够 → 主机号至少 10 位;500 台 → 9 位。
  4. 子网数:要划出 N 个子网,至少借 ⌈log2N⌉ 位。5 个子网:22 = 4 不够,23 = 8 够 → 借 3 位。

0.4一张图看懂:数据是怎样从一台电脑到另一台的

基础铺垫

你在浏览器里打开一个网页,背后发生的事可以用“寄快递”来想:

打个比方:寄一封信

你写好信(应用层的数据)→ 装进信封写上收件人的房间号(传输层加上端口号,交给对方电脑里的哪个程序)→ 再套一个大袋子写上城市和街道地址(网络层加上 IP 地址,决定走哪条路)→ 快递员每送一站都贴一张“从这个站点到下个站点”的运单(数据链路层加上 MAC 地址,只管一站)→ 最后装上车跑起来(物理层变成信号)。每经过一个中转站,运单换一张,但信封里的地址不变。

这就是封装:每往下一层,就在前面(有的层还在后面)加一段本层的“控制信息”,叫首部(和尾部)。接收方从下往上一层层去掉首部,叫拆封(解封装)。

应用层 应用数据(报文) 传输层 TCP 首部 数据 报文段 segment 网络层 IP 首部 数据(整个 TCP 报文段) IP 数据报 / 分组 数据链路层 帧首部(MAC) 数据(整个 IP 数据报) 帧尾 帧 frame 物理层 0110 1001 1100 0101 0011 1010 …… 按位变成电信号、光信号或电磁波 发送方:一层层加首部(封装) 接收方反过来,从下往上一层层去掉首部(拆封),每层只看属于自己的那部分首部。
图 0-4 封装。每一层把上一层交下来的整个东西(含上层首部)当作自己的“数据”,再加上本层首部。数据链路层还要加帧尾(放差错检测用的 CRC)。各层数据单元的名字要记住:报文 → 报文段(UDP 叫用户数据报)→ IP 数据报(分组)→ 帧 → 比特。

剥洋葱:一次网页访问在每层加了什么

上面的图是“抽象的”。下面换成一次真实的访问:你的电脑(192.168.1.10)用浏览器访问 www.example.com(203.0.113.80)上的首页,第一个发出去的 HTTP 请求在网线上长这样——一层套一层,像洋葱:

以太网帧(第 3 篇) 首部 14 B + 尾部 4 B目的 MAC = 网关 R 的 MAC 源 MAC = 本机网卡的 MAC 类型 = 0x0800(里面装的是 IP)FCSCRC 4 BIP 数据报(第 4 篇) 首部 20 B源 IP = 192.168.1.10 目的 IP = 203.0.113.80 协议 = 6(里面装的是 TCP) TTL = 64TCP 报文段(第 5 篇) 首部 20 B源端口 = 50123(浏览器临时端口) 目的端口 = 80(HTTP) 序号、确认号、窗口……HTTP 请求(第 6 篇) 400 BGET /index.html HTTP/1.1 Host: www.example.com ……
图 0-5 一次网页访问的“洋葱”。由外向内依次是以太网帧、IP 数据报、TCP 报文段、HTTP 报文。每一层首部里都有一个字段告诉接收方“里面装的是谁”:帧的类型(0x0800 = IP)、IP 的协议(6 = TCP)、TCP 的目的端口(80 = HTTP)——这就是 1.4 节说的服务访问点。
例跟我算
上图中 HTTP 请求 400 B,TCP、IP 首部各 20 B,以太网首部 14 B、尾部 4 B。各层数据单元多长?线路上有用数据占多少?
跟我算

TCP 报文段 = 400 + 20 = 420 B;IP 数据报 = 420 + 20 = 440 B;以太网帧 = 440 + 14 + 4 = 458 B。效率 = 400 ÷ 458 ≈ 87.3%。

单位:全部用字节。每一层的长度 = 上一层的整个长度 + 本层首部(和尾部)。第 1 篇 2017-33 就是这种题。

一路上,谁会变、谁不变

这个帧要经过家里的交换机、路由器 R,再经过运营商的很多台路由器才能到服务器。每经过一台设备,洋葱的哪几层会被改动?

经过MAC 地址(帧)IP 地址端口号HTTP 内容
交换机不变(只看目的 MAC 决定从哪个口转发)不变不变不变
每一台路由器换掉:源 MAC = 路由器出口的 MAC,目的 MAC = 下一跳的 MAC不变(但 TTL 减 1、首部检验和重算)不变不变
做 NAT 的路由器换掉私有源 IP 换成公网 IPNAPT 时源端口也换不变
记一句话

MAC 地址“一站一换”,管的是“这一段路从哪到哪”;IP 地址“一路不变”(NAT 除外),管的是“起点和终点”。第 4 篇 4.6 的 ARP、第 7 篇的“一次访问全过程”大题,都在考这句话。

本书的主线,就是把这张图的每一层拆开讲:物理层怎么把比特变成信号(第 2 篇);链路层怎么在一段链路上可靠地传一帧、多台电脑怎么共用一根线(第 3 篇);网络层怎么给全世界的电脑编地址、路由器怎么选路(第 4 篇);传输层怎么在不可靠的网络上做到可靠、怎么不把网络挤爆(第 5 篇);应用层的 DNS、HTTP 怎么工作(第 6 篇)。第 6 篇最后用一次网页访问把所有层串起来。

第 0 篇自测
  1. 1500B 的帧在 10Mbps 的链路上的发送时延是多少?
    答案
    12 000bit ÷ 107bit/s = 1.2ms。
  2. 信噪比 20dB,S/N 是多少?
    答案
    1020/10 = 100。
  3. /27 的掩码是多少?这样的子网有多少个地址?
    答案
    255.255.255.224;25 = 32 个地址,可分配 30 个。
  4. 主机 183.80.72.48,掩码 255.255.192.0,网络地址是多少?
    答案
    第 3 字节掩码 192,块大小 64,72 向下取到 64 的倍数是 64:183.80.64.0(2022-35)。
  5. IP 数据报在数据链路层被封装成什么?帧的“数据”部分包含 IP 首部吗?
    答案
    帧;包含——整个 IP 数据报(首部 + 数据)都是帧的数据部分。
  6. 210、216 各是多少?
    答案
    1024;65 536。
  7. 要给 60 台主机分配地址,主机号至少要几位?
    答案
    25 − 2 = 30 不够,26 − 2 = 62 够,至少 6 位。
  8. 1.25 × 105 bit 的数据在 2.5 × 107 b/s 的链路上发送要多久?
    答案
    (1.25 ÷ 2.5) × 105 − 7 = 0.5 × 10−2 s = 5 × 10−3 s = 5 ms。
  9. 一个帧经过两台路由器到达目的主机,帧里的源 MAC 地址被换了几次?IP 首部里的源 IP 地址呢(没有 NAT)?
    答案
    源 MAC 换了 2 次(每台路由器转发时都换成自己出口的 MAC);源 IP 不变。

第 1 篇 · 计算机网络体系结构

体系结构:网络由什么组成、数据怎么交换、为什么要分层

这一篇是整门课的“地图”。先认识网络的组成和分类,再比较电路交换、报文交换、分组交换三种“搬运数据”的办法(要会算时间),然后学衡量网络好坏的性能指标(时延、吞吐量、时延带宽积),最后讲分层:协议、服务、接口是什么,OSI 七层和 TCP/IP 四层各层干什么。OSI 各层的功能几乎每年必考一道选择题。

对应:王道计算机网络第 1 章难度:★★选择题真题 19 道

本篇地图:先看全貌,再逐节攻克

第 1 篇是整门课的“总纲”:后面五篇(物理层 → 应用层)就是把这里的分层模型一层一层展开。19 道真题集中在两处:1.5 各层的功能(9 道,几乎每年一道)和 1.2、1.3 的时间计算(6 道)。

体系结构1.1 概念与分类边缘 / 核心 · 通信子网 / 资源子网 · WAN / MAN / LAN / PAN · 标准化1.2 交换方式 ★★电路 / 报文 / 分组 · (N + k − 1)·P/R · 数据报 vs 虚电路1.3 性能指标 ★★速率 · 带宽 · 吞吐量 · 四种时延 · 时延带宽积 · RTT · 利用率1.4 协议与分层 ★三要素 · 服务 vs 协议 · SAP · 原语 · PDU = PCI + SDU · 封装效率1.5 OSI 与 TCP/IP ★★★七层功能 · 设备工作在哪层 · 两种模型的服务差别
图 1-1 体系结构知识树。红框是真题最密的两节。1.5 的“某功能在哪一层”是送分题,但字眼要抠准;1.2、1.3 的时间计算要和第 3 篇的信道利用率一起练。
小节选择题一句话说清考什么
1.1 概念与分类0边缘 / 核心、通信子网 / 资源子网、按范围分类(给后面打底)
1.2 交换方式4三种交换的总时间(2010-34、2013-35、2025-33);虚电路的特点(2020-34)
1.3 性能指标2发送时延 + 传播时延(2023-33);吞吐量看瓶颈(2024-33)
1.4 协议与分层4体系结构不含实现(2010-33);封装效率(2017-33);协议三要素(2020-33);分层的利弊(2026-33)
1.5 OSI 与 TCP/IP9某功能、某设备、某协议在哪一层;TCP/IP 的网络层只提供无连接服务
建议的学习顺序与学时
  1. 1.1 → 1.4 → 1.5(约 2.5 小时):先建立“分层”的整体观念,把七层的功能和设备背熟。
  2. 1.2 → 1.3(约 2 小时):交换方式与时延计算,每个公式至少做两道题。
  3. 学完第 2 ~ 6 篇后回头再读一遍 1.5,会有“原来如此”的感觉。

1.1计算机网络是什么:组成、功能与分类

基础铺垫

计算机网络就是把分散在各地、各自独立工作的计算机,用通信线路和通信设备连接起来,按照共同的规则(协议)交换信息、共享资源的系统。几个关键词:自治(每台计算机都能独立工作,不是“主机 + 终端”的关系)、互连(用链路和设备连起来)、协议(大家说同一种“语言”)。

把多个网络再用路由器连起来,就成了互连网(internet,小写),“网络的网络”;全世界最大的那个互连网专名叫因特网(Internet,大写),它采用 TCP/IP 协议族。

从三个角度看网络的组成

角度分成哪几部分说明
组成部分硬件、软件、协议硬件:主机、链路、交换机、路由器;软件:应用程序;协议是网络的核心,规定了通信的规则。
工作方式边缘部分 + 核心部分边缘部分是连在网上的主机(端系统),用户直接使用,通信方式有 C/S 和 P2P;核心部分是大量网络和路由器,为边缘部分提供连通和交换服务。
功能通信子网 + 资源子网通信子网负责把数据传过去,对应 OSI 的下三层(物理层、数据链路层、网络层);资源子网负责数据处理、提供服务,对应上三层。
核心部分:网络 + 路由器 R1 R2 R3 R4 主机(PC) 主机(手机) 服务器 主机 边缘部分边缘部分 主机之间通信要穿过核心部分;核心部分用“分组交换”一跳一跳地转发(1.2 节)
图 1-2 边缘部分与核心部分。边缘部分是用户直接使用的主机,核心部分是路由器和它们连成的网络。“主机 A 的某个程序和主机 B 的某个程序通信”是边缘部分的事;“把分组从 A 送到 B”是核心部分的事。
通信子网:结点交换机 / 路由器 + 链路主机终端服务器主机资源子网:主机、终端及其上的软件和数据(负责数据处理、提供服务)
图 1-3 通信子网与资源子网。按 OSI 的说法,通信子网对应下三层(物理、数据链路、网络),资源子网对应上三层(会话、表示、应用);传输层只在主机里,起承上启下的作用。

口径提醒:有的资料(如 simple408)一处说“传输层既不属于通信子网也不属于资源子网”,另一处又把传输层划进资源子网,前后矛盾。王道的说法是:下三层是通信子网,上三层是资源子网,传输层承上启下——按这个答。换成 TCP/IP 四层来说:网络接口层 + 网际层对应通信子网(路由器、交换机都有这两层),应用层对应资源子网,传输层同样只在主机里。若题目问到传输层,多半是在考“它只在端系统中、是端到端的”。

功能

数据通信(最基本的功能,其他功能都建立在它之上)、资源共享(硬件、软件、数据)、分布式处理(一个大任务分给多台计算机做)、提高可靠性(一台坏了别的顶上)、负载均衡。

分类

按什么分类别要点
分布范围广域网 WAN、城域网 MAN、局域网 LAN、个人区域网 PAN广域网是因特网的核心部分,用交换技术;局域网常用广播技术。区分局域网和广域网的根本在于所用的技术,而不只是距离。
传输技术广播式网络、点对点网络广播式:所有计算机共享一个信道,一台发、其他都收到,靠分组里的目的地址判断要不要收(总线形以太网、无线局域网)。点对点:每条物理线路连一对计算机,分组要经过中间结点存储转发和路由选择。是否使用存储转发和路由选择,是两者的主要区别。
拓扑结构总线形、星形、环形、网状广域网多用网状(可靠);以太网物理上多是星形(中心是交换机)。
使用者公用网、专用网—
交换技术电路交换、报文交换、分组交换见 1.2 节。
传输介质有线网络、无线网络—
总线形星形环形网状总线一断全网瘫;有冲突好管理;中心是瓶颈令牌环、FDDI可靠,多用于广域网
图 1-4 四种基本拓扑。拓扑只看“谁连谁”,不看距离和走线。用集线器连起来的以太网物理上是星形、逻辑上是总线(第 2、3 篇)。

按作用范围细分:广域网 WAN(几十到几千千米,跨城市、国家)、城域网 MAN(一个城市,5 ~ 50 km,现在多用以太网技术)、局域网 LAN(一栋楼、一个校园,约 1 km 以内)、个人区域网 PAN(个人工作区内把手机、耳机、手表等电子设备连起来,约 10 m,如蓝牙;无线的也叫 WPAN)。

标准化工作与标准化组织

问题:不同厂家生产的电脑、路由器、网卡,为什么插上就能互相通信?因为大家都按同一套标准来做。标准有两种:法定标准(权威机构制定,如 OSI)和事实标准(市场上大家都在用、事实上成了标准,如 TCP/IP)。

组织做什么本课程里的例子
ISO(国际标准化组织)各领域的国际标准OSI 参考模型
ITU-T(国际电信联盟的电信标准化部门)电信领域的标准电话网、调制解调器的建议书
IEEE(电气和电子工程师学会)电气、电子领域的标准802 系列:802.3 以太网、802.11 无线局域网、802.1Q VLAN
IETF(因特网工程任务组)因特网协议的研究和制定TCP、IP、HTTP……都以 RFC 文档发布

因特网的标准都以 RFC(Request For Comments,请求评论)的形式发布,但并不是所有 RFC 都是标准。一个协议要成为正式的因特网标准,要经过三个阶段:

① 因特网草案有效期 6 个月,还不是 RFC② 建议标准从这一步起成为 RFC③ 因特网标准分配 STD 编号(早期还有“草案标准”一级,2011 年起合并,现在是两级 RFC)
图 1-5 RFC 成为因特网标准的三个阶段。考纲没有要求背 RFC 编号,记住“RFC 是因特网标准的发布形式”“IEEE 802 管局域网”即可。

拓展 因特网的发展经历了三个阶段:单个网络 ARPANET → 三级结构(主干网、地区网、校园网)→ 多层次 ISP 结构。现在用户上网要经过 ISP(因特网服务提供者),ISP 之间再通过因特网交换点 IXP 直接交换流量。

真题怎么考

1.1 在 2009—2026 年还没有单独出过选择题,它是后面各篇的基础。可能的考法:① 按作用范围分类(WAN、MAN、LAN、PAN,蓝牙属于 PAN),或按传输技术(广播式 / 点对点)、拓扑、交换方式分类;② 通信子网、资源子网各对应 OSI 的哪几层(通信子网是下三层);③ 网络的组成(边缘部分、核心部分)与功能(数据通信最基本,还有资源共享、分布式处理、提高可靠性、负载均衡)。标准化组织(IEEE、ISO、IETF)2026 考纲未单列,了解即可。

选择题变式:考纲补充

1.1 还没有出过选择题真题。下面是针对考纲知识点自编的题,做完看“考点”回到对应的讲解。

变式计网考纲补充(尚无真题)
制定以太网(802.3)、无线局域网(802.11)等局域网标准的组织是( )。
  • A. IEEE
  • B. ISO
  • C. IETF
  • D. ITU-T
展开解析

AIEEE 的 802 委员会制定局域网、城域网标准;ISO 制定 OSI 参考模型;IETF 制定因特网协议(以 RFC 发布);ITU-T 管电信标准。

  • A 对对:IEEE 的 802 委员会制定局域网、城域网标准(802.3 以太网、802.11 无线局域网)。
  • B 错ISO 制定的是 OSI 参考模型等国际标准;802.3、802.11 是 IEEE 802 委员会制定的。
  • C 错IETF 制定因特网协议(TCP、IP、HTTP 等,以 RFC 发布),不制定局域网的物理层和 MAC 层标准。
  • D 错ITU-T 是国际电信联盟的电信标准化部门,管电信网标准(电话网、调制解调等),不是局域网标准。

考点:1.1 节“标准化工作与标准化组织”。

变式计网考纲补充(尚无真题)
下列关于 RFC 和因特网标准的叙述中,正确的是( )。
  • A. 所有 RFC 文档都是因特网标准
  • B. 因特网草案已经是 RFC 文档
  • C. 因特网标准由 IEEE 负责制定
  • D. 协议从“建议标准”阶段起成为 RFC 文档
展开解析

D三个阶段:因特网草案(有效期 6 个月,还不是 RFC)→ 建议标准(成为 RFC)→ 因特网标准。RFC 里还有很多信息性文档,并非都是标准;因特网标准由 IETF 制定。

  • A 错RFC 里还有大量信息性、实验性文档,只有走完三个阶段的才是因特网标准。
  • B 错因特网草案有效期 6 个月,还不是 RFC 文档;到“建议标准”阶段才成为 RFC。
  • C 错因特网标准由 IETF 制定并以 RFC 发布;IEEE 管的是 802 系列局域网标准。
  • D 对对:建议标准阶段起成为 RFC,最后才成为因特网标准。

考点:1.1 节 RFC 三阶段图。

变式计网考纲补充(尚无真题)
按 OSI 参考模型的划分,通信子网包括的层次是( )。
  • A. 物理层、数据链路层、网络层
  • B. 数据链路层、网络层、传输层
  • C. 网络层、传输层、会话层
  • D. 会话层、表示层、应用层
展开解析

A通信子网负责数据传输,对应下三层;资源子网负责数据处理,对应上三层;传输层承上启下。

  • A 对对:通信子网负责数据传输,对应下三层。
  • B 错传输层只在主机中实现,起“承上启下”的作用,不属于通信子网;而且漏了物理层。
  • C 错会话层属于资源子网,传输层承上启下,三层里只有网络层属于通信子网。
  • D 错会话层、表示层、应用层负责数据处理,是资源子网,不是通信子网。

考点:1.1 节“通信子网与资源子网”图。

变式计网考纲补充(尚无真题)
用蓝牙把手机、耳机和手表连起来,组成的网络按作用范围属于( )。
  • A. 广域网 WAN
  • B. 城域网 MAN
  • C. 局域网 LAN
  • D. 个人区域网 PAN
展开解析

D个人区域网是个人工作区内(约 10 m)把电子设备连起来的网络,蓝牙是典型例子,无线的也叫 WPAN。

  • A 错广域网覆盖几十到几千千米,跨城市甚至国家;蓝牙只连身边约 10m 内的设备。
  • B 错城域网覆盖一个城市(约 5 ~ 50km);蓝牙的范围只有约 10m。
  • C 错局域网覆盖一栋楼、一个校园(约 1km 以内);只把个人身边的设备连起来、约 10m 的是个人区域网。
  • D 对对:个人区域网 PAN,无线的也叫 WPAN。

考点:1.1 节“按作用范围细分”。

变式计网考纲补充(尚无真题)
广播式网络与点对点网络的主要区别在于( )。
  • A. 覆盖的地理范围不同
  • B. 是否使用存储转发和路由选择
  • C. 使用的传输介质不同
  • D. 是否采用 TCP/IP 协议
展开解析

B广播式网络共享一个信道,一台发、大家都收,靠目的地址决定要不要;点对点网络的分组要经中间结点存储转发和路由选择。

  • A 错覆盖范围是另一种分类(WAN、MAN、LAN、PAN);广播式与点对点是按传输技术分的。
  • B 对对:点对点网络的分组要经中间结点存储转发和路由选择,广播式网络共享一个信道、不需要。
  • C 错广播式、点对点网络都可以用双绞线、光纤或无线信道,传输介质不是区分它们的依据。
  • D 错两种网络都可以运行 TCP/IP,是否采用 TCP/IP 不是按传输技术分类的依据。

考点:1.1 节“分类”表。

1.2三种交换方式:电路交换、报文交换、分组交换

★★ 常考选择题

核心部分要把数据从一台主机送到另一台,中间要经过若干个交换结点。“交换”就是在结点上把数据从一条线路转到另一条线路。历史上有三种做法:

打个比方:从北京运一车货到广州

电路交换像打电话:先把沿途每一段路都“包下来”(建立连接),专车专道一路开到底,用完再退(释放连接)。报文交换像整车托运:整车货开到每个中转站都要卸下来、检查、再整车发往下一站。分组交换像把货分成很多小箱子:每个小箱子到了中转站马上就转发,第 1 箱已经往下一站走了,第 2 箱才刚到——多个站点同时在干活,就像流水线。

三种方式的比较

电路交换报文交换分组交换
过程建立连接 → 传数据 → 释放连接整个报文存储转发报文切成分组(每个加首部),逐个存储转发
传送单位比特流(不分组)整个报文(长度不定)分组(长度有上限)
结点何时转发不存储,信号直通收完整个报文才转发收完一个分组就转发
差错控制结点不做(只是接通线路)每个结点可校验每个结点可校验
线路通信期间独占一条物理通路动态分配,线路利用率高动态分配,线路利用率高
优点建好连接后时延小、实时性好;按序到达;没有冲突不需建立连接;可靠性高(可改走别的路);可以一对多发(同一报文发往多个目的);结点可做速率、码制转换无建立时延;各结点流水作业,比报文交换快;分组定长,简化缓存管理;出错只重发一个分组
缺点建立连接耗时;线路独占,利用率低;灵活性差;不同速率、不同编码的设备难以直接通信每个结点要存整个报文,时延大、要大缓存;报文大小不定每个分组要加首部(额外开销);存在存储转发时延;数据报方式可能失序、丢失、重复
适合传大量、连续、实时的数据(电话)—(已很少用)计算机数据(突发性强),因特网采用

三种方式的时间怎么算

设报文长 L 比特,链路速率 R,从源到目的共经过 k 段链路(k − 1 个中间结点),分组长 P 比特(共 N = L/P 个分组)。先忽略传播时延和结点处理时间:

电路交换 报文交换 分组交换 A结点B 建立连接 整个报文 一次传完 释放 A结点B 整个报文 再整个转发 结点要等报文全部到齐 2L/R A结点B 1234 1234 结点收到一个分组就转发一个 两段链路同时在工作 L/R + P/R 纵轴是时间,向下增长。同样的报文、两段同样速率的链路:报文交换约 2L/R,分组交换约 L/R + P/R。
图 1-6 三种交换方式的时间线(2 段链路,忽略传播时延)。电路交换多了建立连接的时间,但之后一路直通;报文交换在每个结点都要等整个报文到齐;分组交换第 1 个分组到了结点就往下转发,结点和 A 同时在发,所以最快。
电路交换:T = 建立连接时间 + L/R(+ 传播时延) 报文交换:T = k × L/R(+ k × 传播时延)  每一段都要把整个报文发一遍 分组交换:T = L/R + (k − 1) × P/R = (N + k − 1) × P/R(+ k × 传播时延)

分组交换公式怎么来的:源主机把 N 个分组发完要 N × P/R,此时最后一个分组刚离开源主机;它还要被 k − 1 个中间结点各转发一次,每次 P/R。这和流水线“(k + n − 1) × Δt”是同一个道理。各段速率不同时,按“最后一个分组”跟着走一遍:源主机发完全部分组的时间,再加上最后一个分组在后面每一段上的发送时间(前提是后面的链路不比前面慢,2025-33)。

例跟我算
主机 A 经两个结点交换机向主机 B 发送 L = 106 bit 的报文,共 3 段链路,每段速率 1 Mb/s、传播时延 1 ms;分组交换时分组长 1000 bit(忽略首部);电路交换建立连接要 10 ms。分别求三种交换方式的总时间。
跟我算

先把单位换好:报文发一段 = 106 ÷ 106 = 1 s = 1000 ms;分组发一段 = 1000 ÷ 106 = 1 ms;分组数 N = 106 ÷ 1000 = 1000;k = 3。

  • 电路交换:建连 10 + 一次发完 1000 + 3 段传播 3 = 1013 ms(结点不存储,信号一路直通)。
  • 报文交换:每段都要把整个报文发一遍,3 × 1000 + 3 × 1 = 3003 ms。
  • 分组交换:(N + k − 1) × P/R + 传播 = (1000 + 2) × 1 + 3 = 1005 ms。

单位:bit ÷ (bit/s) = s;1 Mb/s = 106 b/s(网络里的 M 是 106,不是 220)。结论:分组交换最快;电路交换只多了建连的 10 ms,报文越长两者越接近——这正是“大量连续数据适合电路交换”的原因。

2013-35计网
主机甲通过 1 个路由器(存储转发方式)与主机乙互联,两段链路的数据传输速率均为 10Mbps,主机甲分别采用报文交换和分组大小为 10kb 的分组交换向主机乙发送 1 个大小为 8Mb(1M = 106)的报文。若忽略链路传播延迟、分组头开销和分组拆装时间,则两种交换方式完成该报文传输所需的总时间分别为( )。
  • A. 800ms、1600ms
  • B. 801ms、1600ms
  • C. 1600ms、800ms
  • D. 1600ms、801ms
展开解析

考点1.2 三种交换方式的时间

D路由器是存储转发的,两段链路都要算。忽略传播时延。

  1. 报文交换:整个报文在每段链路上各发一次。一次 = 8Mb ÷ 10Mbps = 800ms,两段 = 1600ms。
  2. 分组交换:分组数 N = 8Mb ÷ 10kb = 800,每个分组的发送时间 = 10kb ÷ 10Mbps = 1ms。甲发完全部分组要 800ms,此时最后一个分组刚到路由器,路由器再用 1ms 把它转发出去:800 + 1 = 801ms。也可以直接套公式 (N + k − 1) × P/R = (800 + 2 − 1) × 1ms。
  • A 错A 是 800ms、1600ms。按题目顺序读,报文交换 800ms = 8Mb ÷ 10Mbps 只算了第一段链路,路由器存下整个报文后还要在第二段再发一次;分组交换 1600ms 比报文交换还慢,不可能。若看成两个数写反了,分组交换 800ms 又漏了路由器转发最后一个分组的 1ms。
  • B 错B 是 801ms、1600ms:两个数都算对了,但顺序反了——题目先问报文交换(1600ms),后问分组交换(801ms)。
  • C 错分组交换写成 800ms,漏了最后一个分组在第二段链路上的 1ms。
  • D 对1600ms、801ms。

报文交换 = 段数 × L/R;分组交换 = L/R + (段数 − 1) × P/R。分组越小,比报文交换快得越多。

2010-34计网
在下图所示的采用“存储-转发”方式的分组交换网络中,所有链路的数据传输速率为 100Mbps,分组大小为 1000B,其中分组头大小为 20B。若主机 H1 向主机 H2 发送一个大小为 980 000B 的文件,则在不考虑分组拆装时间和传播延迟的情况下,从 H1 发送开始到 H2 接收完为止,需要的时间至少是( )。 H1 S1 S2 H2 S3 S1~S3 为存储转发的分组交换结点
  • A. 80ms
  • B. 80.08ms
  • C. 80.16ms
  • D. 80.24ms
展开解析

考点1.2 分组交换的时间

C“至少”要走最短的路 H1 → S1 → S2 → H2:3 段链路,中间 2 个结点。

  1. 每个分组 1000B,其中数据 980B,文件 980 000B 正好分成 1000 个分组。
  2. 每个分组的发送时间 = 1000 × 8bit ÷ 100Mbps = 0.08ms。
  3. H1 发完 1000 个分组要 80ms;最后一个分组还要被 S1、S2 各转发一次:80 + 2 × 0.08 = 80.16ms。
  • A 错80ms 只是 H1 自己发完的时间,没算中间结点的转发。
  • B 错80.08ms = 80 + 0.08:只加了一次转发,好像中间只有 1 个结点;最短路 H1 → S1 → S2 → H2 上有 S1、S2 两个结点,最后一个分组要被转发 2 次。
  • C 对80.16ms。
  • D 错80.24ms = 80 + 3 × 0.08:走了 H1 → S1 → S3 → S2 → H2 这条较长的路(中间 3 个结点),不是“至少”。

分组数要按“每个分组能装多少数据”算(1000B − 20B 头部 = 980B);发送时间要按“整个分组”算(1000B)。

2025-33计网
如下图所示,主机 H1 向 H2 发送一个 2MB(1MB = 106B)的文件有三种方式:① 电路交换,建立时间为 32μs,速度为 10Mbps;② 分组交换,分组长度为 400B,忽略首部;③ 报文交换。电路交换的时间为 Tcs,报文交换的时间为 Tms,分组交换的时间为 Tps,则三者的大小关系是( )。
H1R1R2H210Mbps100Mbps1000Mbps
  • A. Tcs > Tms > Tps
  • B. Tms > Tps > Tcs
  • C. Tms > Tcs > Tps
  • D. Tps > Tms > Tcs
展开解析

考点1.2 三种交换方式的时间(各段速率不同)

B文件 L = 2 × 106 × 8 = 1.6 × 107bit。三段速率 10、100、1000Mbps 逐段变快。

  1. 电路交换:Tcs = 32μs + L ÷ 10Mbps = 1.6s + 32μs。
  2. 报文交换:整个文件在三段上各发一次:Tms = 1.6s + 0.16s + 0.016s = 1.776s。
  3. 分组交换:分组 P = 400B = 3200bit。H1 发完全部分组要 1.6s;此时最后一个分组还要在 100Mbps、1000Mbps 两段上各发一次:3200 ÷ 108 + 3200 ÷ 109 = 32μs + 3.2μs = 35.2μs。Tps = 1.6s + 35.2μs。
  4. 比较:Tms(1.776s)> Tps(1.6s + 35.2μs)> Tcs(1.6s + 32μs),Tps 只比 Tcs 多 3.2μs。
  • A 错电路交换虽然要建立连接,但只多 32μs,并不是最慢的。
  • B 对Tms > Tps > Tcs。
  • C 错分组交换还要多出最后一个分组在后两段的转发时间(35.2μs),比电路交换的建立时间 32μs 略长。
  • D 错D 说 Tps > Tms,把两者的大小说反了:分组交换 Tps = 1.6s + 35.2μs ≈ 1.600 04s,报文交换 Tms = 1.776s,分组交换反而快了约 0.176s(报文交换要在后两段把整个文件再各发一遍)。

各段速率不同时,分组交换的时间 = 源主机发完全部分组 + 最后一个分组在后面各段的发送时间(后面的链路不比前面慢时成立)。

2025-33 的关键是三段速率不同(10、100、1000 Mb/s)。电路交换只受最慢一段限制:1.6 s + 建连 32 μs;报文交换每段都发整个报文:1.6 + 0.16 + 0.016 = 1.776 s;分组交换在 H1 发完全部分组(1.6 s)后,最后一个分组再走两段快链路(32 μs + 3.2 μs)。所以 Tms > Tps > Tcs,三者里电路交换反而最快——它没有“每段都存一次”的代价。

数据报与虚电路:分组交换的两种方式

分组交换又分两种。数据报方式:不建立连接,每个分组都带完整的目的地址,各自独立选路,可能走不同的路、不按顺序到达,因特网的 IP 就是这种。虚电路方式:先建立一条逻辑连接(虚电路),之后所有分组都沿这条路走,分组只带一个很短的虚电路号,按序到达。

数据报:各走各的ABS1S2S3S4132每个分组带完整目的地址,独立选路;B 可能先收到 2,再收到 1、3(失序)虚电路:先建路,再沿路走ABS1S2S3S4123VC 号 = 5分组只带短短的虚电路号,都走同一条路;按序到达,但这条路上的结点坏了就要重建
图 1-7 数据报与虚电路的走法。两者都是分组交换、都存储转发、都不独占带宽;区别在于“要不要先把路定下来”。虚电路是逻辑上的路,链路仍被许多条虚电路共享(统计复用),这一点和电路交换的“独占”不同。
数据报虚电路
建立连接不需要需要(建立时做一次路由选择)
分组带的地址完整的源地址、目的地址虚电路号(短)
路由选择每个分组独立选路建立虚电路时选一次,之后都走这条
到达顺序不保证保证(走同一条路)
结点出故障影响小,分组可以改走别的路经过该结点的虚电路都不能用了
差错控制、流量控制由主机负责可由网络负责,也可由主机负责
典型网络因特网(IP)X.25、帧中继、ATM(都已很少用)
带宽两者都不预先分配带宽——虚电路只是“逻辑”连接,链路仍被多条虚电路统计复用。独占带宽的是电路交换(2020-34)。
2020-34计网
下列关于虚电路网络的叙述中,错误的是( )。
  • A. 可以确保数据分组传输顺序
  • B. 需要为每条虚电路预分配带宽
  • C. 建立虚电路时需要进行路由选择
  • D. 依据虚电路号(VCID)进行数据分组转发
展开解析

考点1.2 数据报与虚电路

B虚电路是逻辑连接:建立时选好一条路,之后分组沿这条路走,但链路仍被多条虚电路统计复用,不为每条虚电路预留带宽。预先分配(独占)带宽的是电路交换。

  • A 对同一条虚电路的分组走同一条路,按发送顺序到达。
  • B 错虚电路不预分配带宽。
  • C 对建立虚电路时做一次路由选择,之后不再选路。
  • D 对分组只带虚电路号,结点按虚电路号转发。

虚电路 = 分组交换 + 事先定好路线;它仍然是存储转发,不是电路交换。

真题怎么考:1.2 的 4 道选择题

计算 3 道:报文交换 = 段数 × L ÷ R(2013-35);分组交换 = (N + k − 1) × P ÷ R,“至少”要先选最短路径,分组数按每组能装的数据算、发送时间按整个分组算(2010-34);三种交换比较且各段速率不同时,逐段跟着最后一个分组(或整个报文)走(2025-33)。概念 1 道:虚电路只是逻辑连接,不预分配带宽(2020-34)。挂在 1.3 的 2023-33 用的也是分组交换公式,只是每段再加传播时延。可能的新考法:电路交换的建立时间很长时三者谁快;数据报与虚电路对比表里的“是否按序”“结点故障的影响”。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2010-34 改
在 2010-34 的网络中(H1 到 H2 经过 3 段链路,存储转发),分组大小仍为 1000B(其中分组头 20B),文件仍为 980 000B,但所有链路速率改为 10Mbps,忽略传播时延和拆装时间,所需时间至少是( )。
  • A. 800ms
  • B. 800.8ms
  • C. 801.6ms
  • D. 802.4ms
展开解析

C980 000 ÷ 980 = 1000 个分组,每个 1000B 在 10Mbps 上发送需 0.8ms。流水线:(1000 + 3 − 1) × 0.8ms = 801.6ms。

  • A 错800ms = 1000 × 0.8ms:只算了 H1 发完 1000 个分组,漏了最后一个分组在后两段链路上的 2 × 0.8ms。
  • B 错800.8ms = 1001 × 0.8ms:只加了一次转发,好像中间只有 1 个结点;H1 → S1 → S2 → H2 有 2 个中间结点。
  • C 对对:(1000 + 3 − 1) × 0.8ms = 801.6ms。
  • D 错802.4ms = 1003 × 0.8ms:把 3 段链路都当成额外转发;最后一个分组在第 1 段的发送已算在 H1 的 800ms 里。

变化点:速率降为 1/10,每个分组的发送时间乘 10,总时间也乘 10:80.16ms → 801.6ms。

变式计网由 2013-35 改
主机甲通过 1 个路由器(存储转发)与主机乙互联,两段链路速率均为 10Mbps,甲向乙发送一个 8Mb(1M = 106)的报文。若分组大小改为 20kb,忽略传播时延、分组头开销和拆装时间,报文交换和分组交换所需时间分别为( )。
  • A. 1600ms、802ms
  • B. 1600ms、801ms
  • C. 800ms、802ms
  • D. 1602ms、802ms
展开解析

A报文交换:8Mb 在两段链路上各发送一次,2 × 800ms = 1600ms。分组交换:400 个分组,每个 2ms,(400 + 2 − 1) × 2ms = 802ms。

  • A 对对:报文交换 2 × 800ms = 1600ms;分组交换 (400 + 2 − 1) × 2ms = 802ms。
  • B 错801ms 是原题分组 10kb 时的结果;分组改为 20kb 后每个分组发 2ms,最后一个分组在第二段多花 2ms,应为 802ms。
  • C 错报文交换写成 800ms,只算了第一段链路;路由器存下整个报文后还要在第二段再发 800ms。
  • D 错报文交换多加了 2ms:整个 8Mb 报文在两段链路上各发一次就是 1600ms,报文交换没有“最后一个分组”的问题。

变化点:分组变大,“最后一个分组在第二段链路上多花的时间”从 1ms 变成 2ms;分组越小,流水线越充分。

变式计网由 2020-34 改
下列关于数据报网络的叙述中,正确的是( )。
  • A. 通信前需要建立连接
  • B. 每个分组独立选择路由
  • C. 分组一定按发送顺序到达
  • D. 依据虚电路号进行转发
展开解析

B数据报方式不建立连接,每个分组带完整目的地址、独立选路,可能失序;按虚电路号转发的是虚电路网络。

  • A 错数据报方式不建立连接,有分组就发;通信前要先建立连接的是虚电路。
  • B 对对:每个分组带完整目的地址,独立选路。
  • C 错各分组独立选路,可能走不同路径,先发的不一定先到,可能失序;保证按序的是虚电路。
  • D 错数据报分组按目的地址查表转发;依据虚电路号转发的是虚电路网络。

变化点:把“虚电路网络”换成“数据报网络”:要会对比两种方式的四个特点(是否连接、是否独立选路、是否按序、依据什么转发)。

1.3性能指标:速率、带宽、吞吐量、时延、时延带宽积

★ 考过选择题

速率、带宽、吞吐量

  • 速率(数据率、比特率、数据传输速率):每秒传送的比特数,单位 bit/s(bps)。
  • 带宽:本来是信号的频带宽度,单位 Hz(物理层的奈奎斯特、香农公式里用的就是这个意思);在计算机网络中常指通信线路能传送数据的最高数据率,单位 bps。
  • 吞吐量:单位时间内实际通过某个网络(或接口、链路)的数据量。一条路径的吞吐量受瓶颈链路(速率最小的那段)限制;有多条并行路径时,看的是“最多能同时流过多少”,就像水管网里的最大流量(2024-33)。
补课:网络题里的单位
  • 速率的 k、M、G 是 103、106、109:1 Mb/s = 106 bit/s。
  • 存储容量的 KB、MB 在计算机组成里是 210、220 字节;计网真题一般会写明“1M = 106”(2013-35、2023-33、2025-33),没写时按 10 的幂算,答案通常也只差一点点。
  • B 和 b:大写 B 是字节,小写 b 是比特,1 B = 8 bit。算时延前先把字节乘 8。
  • 时间:1 ms = 10−3 s,1 μs = 10−6 s,1 ns = 10−9 s。例:1000 bit ÷ 108 b/s = 10−5 s = 10 μs。

时延:四个组成部分

路由器 处理 输出队列 分组到达 发送 传播中 信号以 2 × 10⁸m/s 前进 ① 处理时延查表、校验 ② 排队时延等前面的分组发完 ③ 发送时延 = L / R把比特推上线路 ④ 传播时延 = d / v信号在线路上跑
图 1-8 一个分组经过一个结点的四种时延。总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延。考试中处理时延和排队时延一般忽略,要算的是前两个。
发送时延(传输时延)= 数据帧长度(bit)÷ 数据传输速率(bit/s) 传播时延 = 信道长度(m)÷ 电磁波在信道上的传播速率(m/s)

处理时延与排队时延:处理时延是路由器检查首部、检验差错、查表决定从哪个口转发的时间,通常很小。排队时延是分组在输出队列里等前面的分组发完的时间,取决于这条链路有多忙。衡量“多忙”的量叫流量强度 = La ÷ R(a 是每秒到达的分组数,L 是分组长度,R 是链路速率):La ÷ R 接近 1 时排队时延急剧增大,大于 1 时到达比发出快,队列越排越长,最后缓存溢出丢包——这就是下面 D = D0 ÷ (1 − U) 曲线和“丢包率”背后的原因。考试计算题一般忽略这两项。

最容易混的一对

发送时延由数据长度和速率决定,与线路多长无关;传播时延由距离和传播速度决定,与数据多长、速率多高都无关。“提高带宽”只能减少发送时延,不能让信号跑得更快。比方:车队通过收费站所用的时间是“发送时延”,车在高速公路上跑的时间是“传播时延”。

例跟我算
主机 A 经一台路由器(存储转发)向 B 发送一个 1500 B 的分组。两段链路都是 100 Mb/s、长 2 km,信号传播速度 2 × 108 m/s,忽略处理和排队时延。求总时延。
跟我算

每段发送时延 = 1500 × 8 ÷ 108 = 120 μs;每段传播时延 = 2000 ÷ (2 × 108) = 10 μs。存储转发:路由器要收完整个分组才开始往下发,所以两段各花一次发送 + 一次传播,总时延 = 2 × (120 + 10) = 260 μs。

单位:B × 8 = bit;100 Mb/s = 108 b/s;1 μs = 10−6 s。注意这里发送时延(120 μs)比传播时延(10 μs)大得多——局域网里通常是这样;跨洋光缆则反过来。

时延带宽积、往返时间、利用率

  • 时延带宽积 = 传播时延 × 带宽,单位 bit。它表示链路上“正在路上”的最多比特数:发送方发出的第一个比特到达终点时,链路里已经塞满了这么多比特。它也叫“以比特为单位的链路长度”。例:传播时延 10μs、带宽 100Mbps,时延带宽积 = 1000bit(2023-33 就是这样给出传播时延的)。
管道长度 = 传播时延截面= 带宽管道里的比特数= 时延带宽积
图 1-9 时延带宽积是“管道的容积”。例:跨洋光缆长 6000 km,传播时延 = 6 × 106 ÷ (2 × 108) = 30 ms;带宽 1 Gb/s,时延带宽积 = 0.03 × 109 = 3 × 107 bit——发送方连续发出 30 Mb,第一个比特才刚到对岸。这就是第 3、5 篇里“停等协议在长肥管道上利用率很低”的原因。
  • 往返时间 RTT:从发送方发出数据开始,到收到接收方的确认为止的时间(确认是一个很短的分组,接收方收到数据后立即发回)。它主要由一来一回两段传播时延构成(因特网上还包括沿途的处理、排队时延),不含数据本身的发送时延(那一段单独算)。计算题里一般就取 RTT = 2 × 单向传播时延;若题目给出了确认帧的长度,确认帧的发送时延 TA 也单独加,不算在 RTT 里。所以停等协议一个周期 = 数据发送时延 TD + RTT + TA(确认帧很短时 TA 忽略,第 3 篇);TCP、HTTP 的计算题大多直接以 RTT 为单位。
  • 利用率:信道利用率 = 信道有数据通过的时间 ÷ 总时间;网络利用率是全网各信道利用率的加权平均。利用率不是越高越好:设空闲时时延为 D0,利用率为 U,则 D = D0 / (1 − U),U 接近 1 时时延急剧增大。U = 50% 时时延是空闲时的 2 倍,U = 90% 时是 10 倍(见下图)。
  • 丢包率:一段时间内丢失的分组数 ÷ 发送的分组总数。如发 1000 个丢 10 个,丢包率 = 10 ÷ 1000 = 1%。分组丢失大多是因为路由器的缓存满了(拥塞),少数是传输差错被丢弃。丢包率高说明网络拥塞,TCP 就据此减速(5.6 节)。
利用率 UD / D₀10151020U = 0.5:2 倍0.5U = 0.8:5 倍0.8U = 0.9:10 倍0.9
图 1-10 D = D0 / (1 − U)。利用率不是越高越好:前半段时延增长平缓,过了 0.8 以后急剧上升。所以信道或网络的利用率一般不能太高(大 ISP 常把骨干网利用率控制在 50% 左右)。

吞吐量看瓶颈:一条路径上 H1 → R1 是 100 Mb/s、R1 → R2 是 10 Mb/s、R2 → H2 是 1 Gb/s,端到端吞吐量最多 10 Mb/s——像水管,最细的那段决定流量。2024-33 中间有三条并行路径,先把三条路径各自的瓶颈加起来(上 1000 + 中 1 + 下 100 = 1101 Mb/s),再和两头的 10 Mb/s 比,取小。

2023-33计网
如图所示,2 段链路的数据传输速率为 100Mbps,时延带宽积(即单向传播时延 × 带宽)均为 1000bit。若 H1 向 H2 发送 1 个大小为 1MB 的文件,分组长度为 1000B,则从 H1 开始发送时刻起到 H2 收到文件全部数据时刻止,所需的时间至少是(注:M = 106)( )。 H1 R H2 100Mbps100Mbps
  • A. 80.02ms
  • B. 80.08ms
  • C. 80.09ms
  • D. 80.10ms
展开解析

考点1.3 时延带宽积1.2 分组交换的时间

D先由时延带宽积反推传播时延:1000bit ÷ 100Mbps = 10μs = 0.01ms。

  1. 分组数 = 106B ÷ 1000B = 1000;每个分组的发送时间 = 8000bit ÷ 100Mbps = 0.08ms。
  2. H1 发完全部分组:1000 × 0.08 = 80ms。
  3. 最后一个分组:第一段传播 0.01ms → 路由器转发 0.08ms → 第二段传播 0.01ms。
  4. 总时间 = 80 + 0.01 + 0.08 + 0.01 = 80.10ms。
  • A 错80.02ms:只加了两段传播时延,漏了路由器的转发。
  • B 错80.08ms:只加了转发,漏了两段传播。
  • C 错80.09ms = 80 + 0.08 + 0.01:路由器的转发算了,但只加了一段传播时延,漏了第二段的 0.01ms。
  • D 对80.10ms。

跟着“最后一个分组”走一遍:每段链路都要加传播时延,每个中间结点都要加一次发送时延。

2024-33计网
若分组交换网络及每段链路的带宽如下图所示,则 H1 到 H2 的最大吞吐量约为( )。 H1 S1 S3 S4 S2 H2 10Mbps 10Mbps 1Mbps 1000Mbps 1000Mbps 100Mbps 100Mbps
  • A. 1Mbps
  • B. 10Mbps
  • C. 100Mbps
  • D. 1000Mbps
展开解析

考点1.3 吞吐量与瓶颈链路

BH1 发出的所有数据都要先经过 H1—S1 这段 10Mbps 的链路,最后也都要经过 S2—H2 这段 10Mbps 的链路。不管中间的路多宽,每秒最多也只能通过 10Mb,吞吐量约为 10Mbps。

  • A 错1Mbps 是中间一条直连路径的速率,但数据可以走另外两条更宽的路径。
  • B 对两端的接入链路是瓶颈。
  • C 错100Mbps 是下方路径的速率,受两端 10Mbps 限制达不到。
  • D 错1000Mbps 只是经 S3 那条路径中间两段的速率;数据进出都要经过两端各 10Mbps 的接入链路,不管中间多宽,整条路径每秒最多只能通过 10Mb,到不了 1000Mbps。

吞吐量看“最窄的地方”:串联取最小值,并联的几条路可以相加,但总量不能超过两端接入链路的速率。

真题怎么考:1.3 的 2 道选择题

2024-33 求端到端吞吐量:串联看最慢的一段,并联先把各路径的瓶颈相加,再与两端的接入链路取小。2023-33 只给了时延带宽积,先除以带宽反推单程传播时延(1000bit ÷ 100Mbps = 10μs),再加进分组交换的总时间。可能的新考法:时延带宽积 = 链路上最多“在途”的比特数;利用率与时延 D = D0 ÷ (1 − U);短帧、长链路时传播时延远大于发送时延。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2023-33 改
在 2023-33 中,若两段链路的时延带宽积都改为 2000bit,其余不变(速率 100Mbps,1MB 文件,分组 1000B),所需时间至少是( )。
  • A. 80.10ms
  • B. 80.14ms
  • C. 80.12ms
  • D. 80.16ms
展开解析

C单向传播时延 = 2000bit ÷ 100Mbps = 20μs。1000 个分组各 80μs,再加最后一个分组在第二段链路上的 80μs 和两段传播时延 40μs:80 000 + 80 + 40 = 80 120μs = 80.12ms。

  • A 错80.10ms 是原题时延带宽积为 1000bit 时的结果,传播时延没有跟着翻倍(每段应为 20μs)。
  • B 错80.14ms = 80 + 0.08 + 3 × 0.02:传播时延按 3 段算了;图中 H1—R—H2 只有 2 段链路。
  • C 对对:80 + 0.08 + 2 × 0.02 = 80.12ms。
  • D 错80.16ms = 80 + 0.08 + 2 × 0.04:每段传播时延算成了 40μs,多乘了 2;单程传播时延 = 2000bit ÷ 100Mbps = 20μs。

变化点:时延带宽积翻倍 → 传播时延翻倍,只影响最后那一小段(多 20μs)。

变式计网由 2023-33 改
若 2023-33 中链路速率改为 1Gbps,时延带宽积仍为 1000bit,其余不变,所需时间至少是( )。
  • A. 8.00ms
  • B. 8.02ms
  • C. 80.01ms
  • D. 8.01ms
展开解析

D分组发送时间 8000bit ÷ 1Gbps = 8μs;传播时延 1000bit ÷ 1Gbps = 1μs。总时间 = 1000 × 8 + 8 + 2 × 1 = 8010μs = 8.01ms。

  • A 错8.00ms = 1000 × 8μs:只算了 H1 发完 1000 个分组,漏了最后一个分组的转发 8μs 和两段传播 2μs。
  • B 错8.02ms 比正确的 8010μs 多了约 10μs,例如把最后一个分组的转发算了 2 次(8000 + 2 × 8 + 2 × 1 = 8018μs ≈ 8.02ms);图中只有 1 个路由器。
  • C 错80.01ms = 1000 × 80μs + 8μs + 2μs:1000 个分组仍按 100Mbps 时的 80μs 算,只把最后一段改成了新速率。
  • D 对对:1000 × 8 + 8 + 2 × 1 = 8010μs = 8.01ms。

变化点:速率提高 10 倍,发送时间和(由时延带宽积推出的)传播时延都变为 1/10。

变式计网由 2024-33 改
主机 H1 经 3 段链路到达 H2,三段链路的带宽依次为 100Mbps、10Mbps、1000Mbps,只有这一条路径,则 H1 到 H2 的最大吞吐量约为( )。
  • A. 10Mbps
  • B. 100Mbps
  • C. 370Mbps
  • D. 1110Mbps
展开解析

A端到端吞吐量由路径上最慢的一段(瓶颈链路)决定:min(100, 10, 1000) = 10Mbps。

  • A 对对:串联取最慢的一段,min(100, 10, 1000) = 10Mbps。
  • B 错100Mbps 是第一段的速率,但数据还要经过 10Mbps 的第二段,整条路径被它卡住。
  • C 错370 = (100 + 10 + 1000) ÷ 3,取了三段的平均;吞吐量看最慢的一段,不是平均。
  • D 错1110 = 100 + 10 + 1000,把三段串联的速率加起来了;串联只能取最小值,相加只适用于并联的几条路径。

变化点:吞吐量看瓶颈:不是求和,也不是平均。

变式计网考纲补充(尚无真题)
某路由器输出链路的利用率从 60% 升到 90%,按 D = D0/(1 − U) 估算,该链路上的时延变为原来的( )。
  • A. 1.5 倍
  • B. 3 倍
  • C. 4 倍
  • D. 9 倍
展开解析

C60% 时 D = D0/0.4 = 2.5D0;90% 时 D = D0/0.1 = 10D0;10 ÷ 2.5 = 4。利用率只升了 1.5 倍,时延却升了 4 倍。

  • A 错1.5 = 90% ÷ 60%,只比了利用率;时延与 1/(1 − U) 成正比:(1 − 0.6) ÷ (1 − 0.9) = 4。
  • B 错3 = (90% − 60%) ÷ (1 − 90%):分子用了利用率的增量 0.3;应比较 1 − U:0.4 ÷ 0.1 = 4。
  • C 对对:2.5D₀ → 10D₀,是原来的 4 倍。
  • D 错9 = 0.9 ÷ 0.1,是 U ÷ (1 − U) 在 90% 时的值;题目要的是前后两个时延之比 10D₀ ÷ 2.5D₀ = 4。

考点:1.3 节 D–U 曲线。

变式计网考纲补充(尚无真题)
一条长 2000 km 的链路,信号传播速度 2 × 108 m/s,带宽 10 Mb/s。链路上最多能同时容纳的比特数是( )。
  • A. 104 bit
  • B. 105 bit
  • C. 106 bit
  • D. 2 × 105 bit
展开解析

B传播时延 = 2 × 106 ÷ (2 × 108) = 0.01 s;时延带宽积 = 0.01 × 107 = 105 bit。

  • A 错10⁴bit 相当于传播时延 1ms,多除了 10;2 × 10⁶m ÷ (2 × 10⁸m/s) = 0.01s。
  • B 对对:0.01s × 10⁷bit/s = 10⁵bit。
  • C 错10⁶bit 相当于传播时延 0.1s,把距离多算了一位(2 × 10⁷m);正确是 0.01s。
  • D 错2 × 10⁵bit 是往返时间 0.02s 乘带宽;链路上“同时容纳”看单程:时延带宽积 = 单程传播时延 × 带宽。

考点:1.3 节“时延带宽积”管道图。

变式计网考纲补充(尚无真题)
下列关于丢包率的叙述中,错误的是( )。
  • A. 只要提高链路带宽,丢包率就一定降为 0
  • B. 丢包率 = 丢失的分组数 ÷ 发送的分组总数
  • C. 路由器缓存溢出是分组丢失的主要原因之一
  • D. 丢包率可以在一定程度上反映网络的拥塞程度
展开解析

A丢包主要来自拥塞(缓存满)和传输差错;提高某条链路的带宽不能消除别处的拥塞,也不能消除差错。

  • A 选错误:丢包还来自别处的拥塞和传输差错,提高一条链路的带宽消除不了。
  • B 不选正确:丢包率就是丢失的分组数占发送分组总数的比例。
  • C 不选正确:路由器缓存满了,新到的分组只能丢弃,这是丢包最主要的原因之一。
  • D 不选正确:丢包多往往说明路由器队列经常溢出,网络在拥塞。

考点:1.3 节“丢包率”。

1.4协议、服务、接口与分层

★★ 常考选择题

网络通信要解决的问题太多:信号怎么传、出错怎么办、走哪条路、怎么保证不丢、交给哪个程序……全放在一起设计会一团乱麻。办法是分层:把大问题分成若干层,每层只解决一部分问题,上层利用下层提供的服务,自己再向更上层提供服务。

分层的好处分层的代价
各层独立,一层的实现变了,只要接口不变,其他层不受影响;灵活、易于实现和维护;便于标准化;每层功能边界清楚(2026-33)有些功能会在多层重复出现(如差错控制);每层都要加首部、做处理,层数越多开销越大、效率越低,所以层数要适当(2026-33 的错误选项就是“层次越多效率越高”)
打个比方:两国公司的老板寄合同

北京的老板只会中文,柏林的老板只会德文。北京老板写好合同交给翻译,翻译译成英文交给秘书,秘书装进信封、写上地址交给快递公司;快递公司一站一站地运到柏林;那边的秘书拆信封,翻译把英文译成德文,老板读到合同。

注意三件事:① 两边的翻译之间有约定——“都用英文”,这就是协议(同一层之间,水平的);② 翻译不关心快递怎么运,只要“交给秘书就能寄到”,这就是服务(下层为上层,垂直的);③ 每一层都往信上加自己的东西(译文、信封、运单),到了对方再一层层拿掉,这就是封装与解封。换掉快递公司(下层实现变了),老板和翻译都不受影响——这就是分层的好处。

几个基本概念

系统 A系统 B 第 n+1 层实体 第 n 层实体 第 n−1 层实体 第 n+1 层实体 第 n 层实体 第 n−1 层实体 SAPSAP 第 n 层协议(水平的) 服务(垂直的) 实际的数据走向:先下再上 n-PCI(首部) n-SDU(上层交下来的数据) = n-PDU,交给下层后又成了 (n−1)-SDU
图 1-11 实体、协议、服务、服务访问点。对等实体之间“好像直接对话”,遵守的规则是协议(水平方向);下层通过层间接口上的服务访问点 SAP 向上层提供服务(垂直方向)。
  • 实体:任何能发送或接收信息的硬件或软件进程。两台机器同一层的实体叫对等实体。
  • 协议:控制对等实体之间通信的规则的集合,是水平的。协议有三个要素(2020-33):
    • 语法:数据与控制信息的格式,“怎么讲”(例:首部哪几个字节是什么字段);
    • 语义:各部分的含义,要发出什么控制信息、完成什么动作、做出什么应答,“讲什么”;
    • 同步(时序):事件实现顺序的详细说明,“什么时候讲、先讲什么后讲什么”(例:先请求、再应答)。
  • 服务:下层为紧邻的上层提供的功能调用,是垂直的。第 n 层实体在实现本层协议时要使用第 n−1 层的服务,协议的实现保证了能向上一层提供服务。上层只能看见服务,看不见下层的协议(协议对上层是透明的)。
  • 接口与服务访问点 SAP:相邻两层交换信息的地方,上层通过它找到下层的服务,下层通过它把数据交给正确的上层协议。王道的例子(按此口径作答):数据链路层的 SAP 是帧首部的“类型”字段(0800 交给 IP,0806 交给 ARP),网络层的 SAP 是 IP 首部的“协议”字段(6 交给 TCP,17 交给 UDP),传输层的 SAP 是端口号。(SAP 不是“本层的地址”:不要说成网络层 SAP = IP 地址、链路层 SAP = MAC 地址。)
  • 服务原语:上层使用下层服务时交换的命令,有四类:请求、指示、响应、证实。有确认的服务四类都要用;无确认的服务只用请求和指示(见下图)。
  • 数据单元:SDU(服务数据单元,上层交下来要传的数据)+ PCI(协议控制信息,本层加的首部)= PDU(协议数据单元,本层对等实体之间交换的单位)。第 n 层的 PDU 交给下一层,就成了第 n−1 层的 SDU。
服务用户 A(第 n+1 层)服务提供者(第 n 层)服务用户 B(第 n+1 层)① 请求(request)A 要下层做某件事,如“建立连接”② 指示(indication)下层通知 B:有人要和你建连③ 响应(response)B 回答:同意④ 证实(confirm)下层告诉 A:对方已同意
图 1-12 四种服务原语(有确认的服务)。①④ 在发起方一侧,②③ 在接收方一侧。打电话就是这个过程:你拨号(请求)→ 对方电话响(指示)→ 对方接起(响应)→ 你听到对方说“喂”(证实)。无确认的服务只有 ①②。
跟我判断:题目问的是协议、服务还是接口
题目里的字眼考的是判断依据
“对等实体”“同一层之间”“两台主机的第 n 层之间的约定”“格式、含义、顺序”协议水平方向,双方同层
“第 n 层为第 n + 1 层提供……”“下层向上层”“原语”服务垂直方向,只在紧邻的上下两层之间
“相邻两层交换信息的地方”“SAP”接口上下两层的边界

服务的分类

面向连接(先建连接、再传数据、最后释放,如 TCP)与无连接(直接发,如 IP、UDP);可靠(有确认、重传,保证送到)与不可靠(尽最大努力交付);有应答与无应答。注意“面向连接”和“可靠”是两回事:面向连接不一定可靠(如 PPP 先建链路却不重传),无连接也不一定不可靠(可靠性可以交给上层)。

各层常见协议:连接与可靠性一览

协议 / 方式层连接可靠性由谁保证
电路交换物理层面向连接不做差错控制,独占线路
报文交换—无连接逐结点存储转发,可由网络校验
分组交换 · 数据报网络层无连接网络尽最大努力交付,可靠性靠端系统(如 TCP)
分组交换 · 虚电路网络层面向连接可由网络保证(按序、可做差错和流量控制)
以太网(802.3)链路层无连接不可靠:CRC 检错后丢弃,不确认、不重传(2012-35)
PPP链路层先建立链路(LCP)不可靠:只检错,无确认、无重传、无序号
802.11链路层无连接链路层有确认(ACK),丢了要重传(第 3 篇 3.6)
IP网络层无连接不可靠,尽最大努力交付(2011-33)
TCP传输层面向连接可靠:确认、重传、序号、流量控制、拥塞控制
UDP传输层无连接不可靠,需要时由应用层自己保证
HTTP应用层无状态(靠 TCP 连接传送)依托 TCP 的可靠传输

网络体系结构与封装效率

网络体系结构 = 分层结构 + 各层协议的集合,是对网络应完成的功能的精确定义。它是抽象的,不涉及具体实现——协议怎样用硬件、软件实现,属于“实现”,不属于体系结构(2010-33)。

每层封装都要加首部,所以真正有用的数据占的比例会下降:传输效率 = 有效数据 ÷(有效数据 + 各层首部、尾部)。2017-33:OSI 中除物理层和应用层外还有 5 层各加 20B,400B 数据的效率 = 400 ÷ (400 + 5 × 20) = 80%。

2010-33计网
下列选项中,不属于网络体系结构所描述的内容是( )。
  • A. 网络的层次
  • B. 每一层使用的协议
  • C. 协议的内部实现细节
  • D. 每一层必须完成的功能
展开解析

考点1.4 网络体系结构

C网络体系结构 = 分层结构 + 各层协议的集合,说明“分几层、每层做什么、用什么协议”。它是抽象的功能定义,协议具体怎样用硬件或软件实现属于“实现”,不在体系结构的描述范围内。

  • A、B、D网络的层次、每层使用的协议、每层必须完成的功能,都属于体系结构。
  • C协议的内部实现细节不属于体系结构。

体系结构回答“做什么”,不回答“怎么做”。

2017-33计网
假设 OSI 参考模型的应用层欲发送 400B 的数据(无拆分),除物理层和应用层之外,其他各层在封装 PDU 时均引入 20B 的额外开销,则应用层数据传输效率约为( )。
  • A. 80%
  • B. 83%
  • C. 87%
  • D. 91%
展开解析

考点1.4 封装与传输效率

AOSI 共 7 层,除去应用层(产生数据)和物理层(不加首部),还剩表示层、会话层、传输层、网络层、数据链路层 5 层,每层加 20B。

  1. 总开销 = 5 × 20 = 100B。
  2. 效率 = 400 ÷ (400 + 100) = 80%。
  • A 对80%。
  • B 错83%:只算了 4 层(400 ÷ 480)。
  • C 错87%:只算了 3 层(400 ÷ 460)。
  • D 错91%:只算了 2 层(400 ÷ 440)。

效率 = 有效数据 ÷ 实际发出的总长度,数清楚有几层加了首部。

2026-33计网
下列关于分层网络体系结构的叙述中,错误的是( )。
  • A. 每层都有明确的功能边界
  • B. 层次越多效率越高
  • C. 有利于各层技术独立演化
  • D. 上层无需关心下层的具体实现细节
展开解析

考点1.4 分层的优缺点

B层次越多,每层都要加首部、做一次处理,开销越大、效率越低。所以层数不是越多越好,要适当。

  • A 对每层只负责一部分功能,边界清楚。
  • B 错层次越多效率越高是错的。
  • C 对只要层间接口不变,一层的技术可以独立更新。
  • D 对上层只使用下层提供的服务,不关心它怎么实现。

分层的代价:重复的功能和额外的首部、处理开销。

例跟我算
在 TCP/IP 中,应用层交给 TCP 1000 B 数据,TCP 首部 20 B、IP 首部 20 B,再封装成以太网帧(首部 14 B + 尾部 FCS 4 B,不算前导码)。线路上真正有用的数据占多少?
跟我算

帧长 = 1000 + 20 + 20 + 14 + 4 = 1058 B;效率 = 1000 ÷ 1058 ≈ 94.5%。若每次只发 100 B,效率 = 100 ÷ 158 ≈ 63%——数据越短,首部占的比例越大。

单位:分子分母都用字节(B)即可,比例与单位无关。和 2017-33 的区别:2017-33 是 OSI 七层、5 层各加 20 B;这里是 TCP/IP、各层首部长度不同,要逐层加。

2020-33计网
下图描述的协议要素是( )。Ⅰ. 语法 Ⅱ. 语义 Ⅲ. 时序 发送方接收方 时间
  • A. 仅Ⅰ
  • B. 仅Ⅱ
  • C. 仅Ⅲ
  • D. Ⅰ、Ⅱ和Ⅲ
展开解析

考点1.4 协议三要素

C图中画的是两条时间线上消息的先后顺序:发送方先发,接收方再回,发送方收到后再发下一个。它描述的是“什么时候讲、谁先谁后”,属于时序(同步)。

  • Ⅰ 语法规定数据的格式(哪个字段放在哪),图中看不出格式。
  • Ⅱ 语义规定每条消息的含义和要做的动作,图中也没有。
  • Ⅲ 时序事件发生的顺序,就是这张图。

语法 = 格式(怎么讲),语义 = 含义(讲什么),时序 = 顺序(什么时候讲)。

真题怎么考:1.4 的 4 道选择题

概念 3 道:体系结构 = 层次 + 各层协议 + 功能,不含协议的实现细节(2010-33);协议三要素中描述“先后顺序”的是时序,描述格式的是语法,描述含义和动作的是语义(2020-33);层次越多首部越多、处理越多,效率越低(2026-33)。计算 1 道:封装效率 = 数据 ÷ (数据 + 各层开销),要数清哪些层加首部——2017-33 中 OSI 去掉应用层和物理层还剩 5 层,400 ÷ (400 + 5 × 20) = 80%。可能的新考法:协议是“水平的”、服务是“垂直的”;服务访问点 SAP;各层协议面向连接还是无连接、可靠还是不可靠(上面的一览表)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2017-33 改
在 TCP/IP 四层模型中,应用层要发送 400B 数据(不拆分),传输层和网际层各加 20B 首部,网络接口层加 18B 的首部和尾部,则应用层数据的传输效率约为( )。
  • A. 80%
  • B. 87%
  • C. 83%
  • D. 91%
展开解析

B400 ÷ (400 + 20 + 20 + 18) = 400 ÷ 458 ≈ 87%。

  • A 错80% = 400 ÷ 500,是 OSI 中 5 层各加 20B 的原题结果;这里只有 3 层加开销,共 58B。
  • B 对对:400 ÷ (400 + 20 + 20 + 18) = 400 ÷ 458 ≈ 87%。
  • C 错83% = 400 ÷ 480,按 4 层各加 20B 算了;TCP/IP 中只有传输层、网际层、网络接口层三层加开销。
  • D 错91% = 400 ÷ 440,只算了传输层和网际层的 40B,漏了网络接口层的 18B。

变化点:把 OSI 七层换成 TCP/IP 四层:加开销的层少了,效率变高。注意题目说的是哪几层加开销。

变式计网由 2010-33 改
下列属于网络体系结构所描述内容的是( )。
I. 网络的层次划分 II. 每一层使用的协议 III. 协议的内部实现细节 IV. 每一层必须完成的功能
  • A. 仅 I、II
  • B. 仅 II、III
  • C. 仅 I、II、IV
  • D. I、II、III、IV
展开解析

C体系结构 = 层次 + 各层协议 + 各层功能,是抽象的;协议如何实现属于具体实现,不在体系结构之内。

  • A 错A 漏了 IV:每一层必须完成的功能也是体系结构描述的内容。
  • B 错B 含 III 又漏了 I:协议的内部实现细节属于“实现”,不在体系结构之内;层次划分则正是体系结构的核心。
  • C 对对:层次、各层协议、各层功能。
  • D 错D 把 III 也选了:体系结构是抽象的功能描述,不涉及协议用什么软硬件实现。

变化点:从“不属于”改成“属于”,并把四个说法都列出来逐条判断。

变式计网由 2020-33 改
协议的三要素中,规定“事件实现顺序、何时发送、何时应答”的是( )。
  • A. 语法
  • B. 语义
  • C. 服务原语
  • D. 时序(同步)
展开解析

D语法:数据与控制信息的格式;语义:各控制信息的含义、要完成什么动作;时序:事件的先后顺序。

  • A 错语法规定数据与控制信息的格式(哪个字段放在哪、多长),不管事件的先后顺序。
  • B 错语义规定每条控制信息的含义、要完成什么动作、作出什么响应,不管何时发送。
  • C 错服务原语是上下层交互用的(请求、指示、响应、证实),不是协议三要素之一。
  • D 对对:时序(同步)规定事件的实现顺序。

变化点:2020-33 用一张收发时序图考“时序”,这里直接问定义。

变式计网考纲补充(尚无真题)
在有确认的服务中,出现在接收方一侧的两种服务原语是( )。
  • A. 请求、证实
  • B. 指示、响应
  • C. 请求、指示
  • D. 响应、证实
展开解析

B发起方:请求(发出)、证实(收到对方同意);接收方:指示(被告知有请求)、响应(作出回答)。

  • A 错请求、证实都在发起方一侧:发起方发出请求,最后收到证实。
  • B 对对:接收方先被“指示”有请求,再作出“响应”。
  • C 错请求在发起方,指示在接收方,一边一个,不是“接收方的两种”。
  • D 错响应在接收方,证实在发起方,同样是一边一个。

考点:1.4 节四原语时序图。

变式计网考纲补充(尚无真题)
下列关于协议与服务的叙述中,错误的是( )。
  • A. 协议是控制对等实体之间通信的规则
  • B. 服务是下层向紧邻的上层提供的
  • C. 上层能够看见下层的协议
  • D. 协议的实现保证了能够向上层提供服务
展开解析

C协议是水平的(对等实体之间),服务是垂直的(下层对上层)。上层只看得见服务,下层的协议对上层是透明的。

  • A 不选正确:协议是对等实体之间(水平方向)通信的规则。
  • B 不选正确:服务是下层通过层间接口向紧邻的上层提供的(垂直方向)。
  • C 选错误:上层只看得见下层提供的服务,下层的协议对上层是透明的。
  • D 不选正确:本层协议的实现保证了本层能向上一层提供服务。

考点:1.4 节“几个基本概念”。

1.5OSI 七层模型与 TCP/IP 模型

★★★ 高频选择题

分层可以有不同的分法。国际标准化组织 ISO 提出的是七层的 OSI 参考模型(法律上的国际标准,但没有流行起来);因特网实际使用的是四层的 TCP/IP 模型(事实上的国际标准);教材为了讲清楚原理,采用两者折中的五层模型。

OSI 七层 五层(教学) TCP/IP 四层 数据单元 / 典型协议 7 应用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 应用层 传输层 网络层 数据链路层 物理层 应用层 传输层 网际层 网络接口层 报文:HTTP、FTP、SMTP、DNS、DHCP 报文段:TCP;用户数据报:UDP IP 数据报(分组):IP、ICMP、IGMP 帧:以太网、PPP、802.11 比特 红色虚线以上(传输层及以上)是端到端,只有两端主机才有;以下三层是点到点,路由器、交换机也有 下三层合称通信子网,上三层合称资源子网,传输层承上启下
图 1-13 三种模型对照。OSI 的会话层、表示层在 TCP/IP 中并入应用层;OSI 的数据链路层和物理层在 TCP/IP 中合成网络接口层(TCP/IP 对这一层几乎不做规定,可以用任何网络,“IP over everything”)。
主机 A路由器主机 B应用层传输层网络层数据链路层物理层网络层数据链路层物理层应用层传输层网络层数据链路层物理层传输介质应用层协议:端到端TCP / UDP:端到端IP:逐跳IP:逐跳A:自上而下逐层封装(加首部)路由器:拆到网络层、查表,再封装B:自下而上逐层解封
图 1-14 数据经过一台路由器时走过的层。路由器只有下三层,所以它“看得见” IP 地址、看不见端口号;交换机只有下两层(看得见 MAC 地址),集线器只有物理层(只认比特)。这就是 2016-33 “R1、Switch、Hub 实现的最高层分别是 3、2、1”的来历,也是“传输层是第一个端到端的层”(2009-33)的意思。

OSI 各层的功能(考选择题的核心)

层主要功能关键词 / 设备
7 应用层为用户的应用程序提供服务(文件传输、电子邮件、网页)HTTP、FTP、SMTP
6 表示层处理两个系统间交换信息的表示方式:数据格式转换、加密解密、压缩解压“数据格式转换”(2013-33)
5 会话层建立、管理、终止会话(进程之间的对话);同步:在数据中插入检查点,出错时从检查点恢复“会话管理、对话管理”(2019-33)
4 传输层端到端(进程到进程)的通信:可靠传输、流量控制、差错控制、复用与分用;第一个端到端的层端口;TCP、UDP(2009-33、2014-33)
3 网络层把分组从源主机送到目的主机:路由选择、分组转发、拥塞控制、网际互连;OSI 的网络层还可以做差错控制、流量控制(面向连接的虚电路时)IP 地址;路由器(2021-33)
2 数据链路层在相邻结点之间的链路上传送帧:组帧、差错控制、流量控制、介质访问控制MAC 地址;交换机、网桥(2022-33)
1 物理层在传输介质上透明地传输比特流;规定接口的机械、电气、功能、过程特性集线器、中继器
几个容易混的说法
  • 流量控制在数据链路层(相邻结点之间,2022-33)和传输层(端到端)都有;题目说“相邻结点间”就是数据链路层,说“端到端”就是传输层。
  • 差错控制也在数据链路层和传输层都有;“可靠数据传输”一般指传输层(TCP),但 OSI 的数据链路层也提供可靠传输。
  • “路由选择”一定是网络层,“会话/对话管理”一定是会话层,“数据格式转换、加密、压缩”一定是表示层。
  • 设备工作的最高层:集线器、中继器 → 物理层;交换机、网桥 → 数据链路层;路由器 → 网络层(2016-33)。

OSI 与 TCP/IP 的比较

OSITCP/IP
层数7 层4 层
网络层的服务面向连接和无连接两种只有无连接(IP 提供无连接、不可靠的数据报服务,2011-33)
传输层的服务只有面向连接面向连接(TCP)和无连接(UDP)两种
先有什么先有模型、后有协议,模型通用性强先有协议、后有模型,模型只描述了 TCP/IP 自己
服务、接口、协议明确区分没有明确区分

TCP/IP 协议族:谁在哪一层、谁为谁服务

TCP/IP 的结构像一个沙漏:上面是各种应用层协议,下面是各种物理网络,中间最细的腰是 IP——“一切运行在 IP 之上,IP 运行在一切网络之上”。几个层间关系常考:

  • ICMP、IGMP 的报文封装在 IP 数据报中传送,所以直接为 ICMP 提供服务的是 IP(2012-33);但 ICMP 仍属于网络层。
  • ARP 通常归入网络层(它为 IP 服务),但它的报文直接封装在帧里,不经过 IP。
  • 路由协议:RIP 用 UDP,BGP 用 TCP(它们都算应用层协议);OSPF 直接用 IP(2017-37,第 4 篇详讲)。
  • TCP/IP 中传输层下面相邻的一层是网际层,主要功能是路由选择(2021-33);TCP/IP 没有会话层,“对话管理”不属于它的任何一层。
2009-33计网
在 OSI 参考模型中,自下而上第一个提供端到端服务的层次是( )。
  • A. 数据链路层
  • B. 传输层
  • C. 会话层
  • D. 应用层
展开解析

考点1.5 OSI 各层功能

BOSI 的下三层(物理层、数据链路层、网络层)都是点到点的,路由器、交换机上也有这几层,它们处理的是相邻结点之间的事。从传输层开始,只有两端的主机才有,它直接在源主机和目的主机的进程之间通信,是第一个端到端的层。

  • A 错数据链路层负责相邻结点之间的链路,是点到点的。
  • B 对传输层是自下而上第一个端到端的层。
  • C 错会话层也是端到端的,但不是第一个。
  • D 错应用层也是端到端的,但它在第 7 层;从第 4 层传输层起往上(会话层、表示层、应用层)都是端到端的,“自下而上第一个”是传输层,不是应用层。

下三层点到点,传输层及以上端到端。

2013-33计网
在 OSI 参考模型中,下列功能需由应用层的相邻层实现的是( )。
  • A. 对话管理
  • B. 数据格式转换
  • C. 路由选择
  • D. 可靠数据传输
展开解析

考点1.5 OSI 各层功能

B应用层的相邻层是表示层,它负责处理信息的表示方式:数据格式转换、加密解密、压缩解压。

  • A 错对话管理是会话层(第 5 层)的功能;应用层(第 7 层)的相邻层是表示层(第 6 层),会话层还隔着一层。
  • B 对数据格式转换是表示层的功能。
  • C 错路由选择是网络层(第 3 层)的功能,离应用层(第 7 层)还隔着表示层、会话层、传输层三层,不相邻。
  • D 错可靠数据传输是传输层(以及数据链路层)的功能。

从上往下:应用 → 表示(格式、加密、压缩)→ 会话(会话管理、同步)→ 传输(端到端)→ 网络(路由)→ 链路(帧、相邻结点)→ 物理(比特)。

2014-33计网
在 OSI 参考模型中,直接为会话层提供服务的是( )。
  • A. 应用层
  • B. 表示层
  • C. 传输层
  • D. 网络层
展开解析

考点1.5 OSI 层次顺序

C第 n 层由它下面的第 n − 1 层提供服务。会话层是第 5 层,它下面紧挨着的是第 4 层传输层。

  • A 错应用层在会话层之上(隔着表示层)。
  • B 错表示层在会话层之上,是会话层为它服务。
  • C 对传输层。
  • D 错网络层是第 3 层,它直接服务的是紧挨在上面的第 4 层传输层;会话层(第 5 层)要隔着传输层才间接用到它。

“直接为第 n 层提供服务”就是第 n − 1 层;背熟 7 层的顺序:物、链、网、传、会、表、应。

2019-33计网
OSI 参考模型的第 5 层(自下而上)完成的主要功能是( )。
  • A. 差错控制
  • B. 路由选择
  • C. 会话管理
  • D. 数据表示转换
展开解析

考点1.5 OSI 各层功能

C自下而上第 5 层是会话层,功能是会话管理:建立、管理和终止会话,并用检查点实现同步。

  • A 错差错控制是数据链路层和传输层的功能。
  • B 错路由选择是第 3 层网络层的功能。
  • C 对会话管理。
  • D 错数据表示转换是第 6 层表示层的功能。

1 物理、2 链路、3 网络、4 传输、5 会话、6 表示、7 应用。

2022-33计网
在 ISO/OSI 参考模型中,实现两个相邻结点间流量控制功能的是( )。
  • A. 物理层
  • B. 数据链路层
  • C. 网络层
  • D. 传输层
展开解析

考点1.5 OSI 各层功能

B“两个相邻结点之间”的流量控制由数据链路层完成(例如停等协议、滑动窗口协议控制发送速度,第 3 篇)。

  • A 错物理层只传比特,不做流量控制。
  • B 对数据链路层。
  • C 错网络层做的是拥塞控制(针对整个网络),不是相邻结点间的流量控制。
  • D 错传输层的流量控制是端到端的,不是相邻结点之间的。

相邻结点之间 → 数据链路层;端到端 → 传输层。

2016-33计网
在 2016 年题 33~41 所示的网络中(图见 3.5 节 2016-36),R1 是路由器,Switch 是 100BaseT 以太网交换机,Hub 是 100BaseT 集线器。在 OSI 参考模型中,R1、Switch、Hub 实现的最高功能层分别是( )。
  • A. 2、2、1
  • B. 2、2、2
  • C. 3、2、1
  • D. 3、2、2
展开解析

考点1.5 各层的设备

C路由器按 IP 地址转发,实现到网络层(第 3 层);交换机按 MAC 地址转发帧,实现到数据链路层(第 2 层);集线器只是把比特再生、放大后转发到所有端口,只在物理层(第 1 层)。

  • A 错A 说路由器只到第 2 层:可路由器要读 IP 地址、查路由表转发分组,实现到第 3 层网络层;只到第 2 层的是交换机。
  • B 错集线器没有数据链路层的功能(它不认识帧和 MAC 地址)。
  • C 对3、2、1。
  • D 错D 前两个数 3、2 对了,错在把集线器写成第 2 层(与 B 的错误相同):集线器只把比特再生后转发到所有端口,不认识帧和 MAC 地址,只到第 1 层。

集线器、中继器 → 1;交换机、网桥 → 2;路由器 → 3。

2011-33计网
TCP/IP 参考模型的网络层提供的是( )。
  • A. 无连接不可靠的数据报服务
  • B. 无连接可靠的数据报服务
  • C. 有连接不可靠的虚电路服务
  • D. 有连接可靠的虚电路服务
展开解析

考点1.5 OSI 与 TCP/IP 的比较

ATCP/IP 的网络层(网际层)只有 IP 一种服务:无连接(不建立连接,每个分组独立转发)、不可靠(尽最大努力交付,不保证不丢、不乱序),称为数据报服务。可靠性交给上面的 TCP 负责。

  • A 对无连接、不可靠的数据报服务。
  • B 错B 的“可靠”错了:IP 只尽最大努力交付,分组可能丢失、重复、乱序,IP 本身既不确认也不重传;可靠传输要靠上面的 TCP。
  • C、D 错TCP/IP 的网络层没有面向连接的虚电路服务(OSI 的网络层两种都有)。

TCP/IP:网络层只有无连接;传输层两种都有。OSI:网络层两种都有;传输层只有面向连接。

2021-33计网
在 TCP/IP 参考模型中,由传输层相邻的下一层实现的主要功能是( )。
  • A. 对话管理
  • B. 路由选择
  • C. 端到端报文段传输
  • D. 结点到结点流量控制
展开解析

考点1.5 TCP/IP 模型各层

BTCP/IP 模型自下而上是网络接口层、网际层、传输层、应用层。传输层相邻的下一层是网际层,它的主要功能是路由选择和分组转发。

  • A 错对话管理是 OSI 会话层的功能,TCP/IP 没有会话层。
  • B 对路由选择。
  • C 错端到端报文段传输是传输层自己的功能。
  • D 错结点到结点的流量控制是数据链路层(网络接口层)的功能。

题目说“TCP/IP 模型”时,层名要按四层来找:传输层下面是网际层(IP)。

2012-33计网
在 TCP/IP 体系结构中,直接为 ICMP 提供服务的协议是( )。
  • A. PPP
  • B. IP
  • C. UDP
  • D. TCP
展开解析

考点1.5 TCP/IP 协议族的层间关系

BICMP 报文作为 IP 数据报的数据部分,封装在 IP 数据报中传送,所以直接为 ICMP 提供服务的是 IP。ICMP 本身仍然属于网络层。

  • A 错PPP 是数据链路层协议,它为 IP 服务,不直接为 ICMP 服务。
  • B 对IP。
  • C、D 错UDP、TCP 在 IP 之上,ICMP 不使用它们。

ICMP、IGMP 用 IP 封装;ARP 直接用帧封装;RIP 用 UDP;BGP 用 TCP;OSPF 直接用 IP。

跟我判断:看到这个字眼,就是这一层
题目里的字眼层
透明传输比特流;接口的机械 / 电气 / 功能 / 过程特性;中继器、集线器物理层
组帧;相邻结点间的差错控制、流量控制;介质访问控制;MAC 地址;交换机、网桥数据链路层
路由选择;分组转发;拥塞控制;网际互连;IP 地址;路由器网络层
端到端、进程到进程;端口;报文段;可靠传输(TCP)传输层
会话管理、对话管理;同步(插检查点)会话层
数据格式转换;加密解密;压缩解压表示层
直接为用户的应用程序服务应用层
真题怎么考:1.5 的 9 道选择题

全是“某功能 / 某设备 / 某协议在哪一层”。三步:① 用上表把字眼对号入座;② 看清问的是 OSI 还是 TCP/IP(TCP/IP 没有会话层、表示层,网络层只提供无连接服务,2011-33、2021-33);③ “直接为某层提供服务的”是它下面紧邻的那一层(2014-33:会话层下面是传输层),但 ICMP 这类封装在 IP 数据报里的协议,直接为它服务的是 IP(2012-33)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2021-33 改
在 TCP/IP 参考模型中,由网际层相邻的上一层实现的主要功能是( )。
  • A. 端到端的报文段传输
  • B. 路由选择
  • C. 对话管理
  • D. 结点到结点的流量控制
展开解析

A网际层的上一层是传输层,提供端到端(进程到进程)的传输。

  • A 对对:网际层的上一层是传输层,提供端到端的报文段传输。
  • B 错路由选择是网际层自己的功能,题目问的是网际层的上一层(传输层)。
  • C 错对话管理是 OSI 会话层的功能,TCP/IP 模型没有会话层。
  • D 错结点到结点(相邻结点间)的流量控制是网络接口层的功能,在网际层下面。

变化点:2021-33 问传输层的下一层(网际层:路由选择),这里反过来问网际层的上一层。

变式计网由 2014-33 改
在 OSI 参考模型中,直接为网络层提供服务的是( )。
  • A. 物理层
  • B. 数据链路层
  • C. 传输层
  • D. 会话层
展开解析

B每一层为上一层提供服务:网络层下面是数据链路层。

  • A 错物理层直接为数据链路层服务,和网络层之间隔着一层。
  • B 对对:第 N 层由第 N − 1 层直接服务,网络层下面是数据链路层。
  • C 错传输层在网络层上面,是网络层为它服务,方向反了。
  • D 错会话层在传输层之上,离网络层隔了一层,也是被服务的一方。

变化点:把“会话层”换成“网络层”:第 N 层由第 N − 1 层直接提供服务。

变式计网由 2016-33 改
在 OSI 参考模型中,二层交换机、中继器、路由器实现的最高功能层分别是( )。
  • A. 2、2、3
  • B. 1、1、3
  • C. 2、1、3
  • D. 2、1、2
展开解析

C交换机是链路层(第 2 层)设备,中继器是物理层(第 1 层),路由器是网络层(第 3 层)。

  • A 错中继器写成第 2 层:它只对信号整形放大,不认识帧,只到第 1 层物理层。
  • B 错二层交换机写成第 1 层:交换机按 MAC 地址转发帧,到第 2 层数据链路层。
  • C 对对:交换机 2、中继器 1、路由器 3。
  • D 错路由器写成第 2 层:路由器要按 IP 地址查路由表转发,到第 3 层网络层。

变化点:把集线器换成中继器、顺序打乱:中继器和集线器都是第 1 层。

变式计网由 2022-33 改
在 ISO/OSI 参考模型中,实现端到端流量控制的是( )。
  • A. 物理层
  • B. 数据链路层
  • C. 网络层
  • D. 传输层
展开解析

D相邻结点之间的流量控制是数据链路层的事;端到端(两台主机之间)的流量控制由传输层实现。

  • A 错物理层只负责传比特,不做任何流量控制。
  • B 错数据链路层的流量控制在相邻两个结点之间,不是端到端。
  • C 错网络层关心的是路由选择和整个网络的拥塞,不负责两台主机之间的流量控制。
  • D 对对:传输层在两台主机(进程)之间做端到端的流量控制。

变化点:“相邻结点间”换成“端到端”,答案从数据链路层变成传输层。

第 1 篇自测
  1. 分组交换比报文交换快的根本原因是什么?
    答案
    分组小,结点收到一个分组就可以转发,各段链路同时工作(流水);报文交换要在每个结点等整个报文到齐。
  2. 一个 1500B 的帧在 1Gbps、长 1km 的光纤上传输,发送时延和传播时延哪个大?
    答案
    发送时延 = 12 000 ÷ 109 = 12μs;传播时延 = 1000 ÷ (2 × 108) = 5μs。发送时延大。
  3. 时延带宽积的单位是什么?它表示什么?
    答案
    比特。表示链路上“正在传播中”的最多比特数(以比特为单位的链路长度)。
  4. 协议和服务有什么区别?
    答案
    协议是对等实体之间的规则,水平的;服务是下层给上层提供的功能,垂直的。上层只看得见服务,看不见下层的协议。
  5. 虚电路要不要为每条虚电路预先分配带宽?
    答案
    不要。虚电路只是逻辑连接,链路由多条虚电路统计复用;预先分配带宽的是电路交换(2020-34)。
  6. 在 TCP/IP 模型中,提供无连接服务的有哪些层?
    答案
    网际层(IP,只有无连接)和传输层(UDP;TCP 是面向连接的)。
  7. 报文 1 Mb 经 2 段 1 Mb/s 的链路(1 个中间结点)。分组交换的分组长 1 kb(忽略首部和传播时延),总时间是多少?报文交换呢?
    答案
    分组交换:N = 1000,(1000 + 2 − 1) × 1 ms = 1001 ms;报文交换:2 × 1000 ms = 2000 ms。
  8. 利用率从 50% 升到 90%,时延变为原来的几倍?
    答案
    D = D0/(1 − U):50% 时为 2D0,90% 时为 10D0,是原来的 5 倍。
  9. 协议的三要素是什么?“先请求、后应答”属于哪一个?
    答案
    语法、语义、同步(时序);“先后顺序”属于同步。
  10. 四种服务原语中,哪两个出现在接收方一侧?
    答案
    指示和响应。请求和证实在发起方一侧。
  11. IEEE 和 IETF 分别制定哪类标准?成为因特网标准要经过哪三个阶段?
    答案
    IEEE:802 系列局域网标准(以太网、无线局域网等);IETF:因特网协议,以 RFC 发布。阶段:因特网草案 → 建议标准 → 因特网标准。
  12. 路由器、交换机、集线器分别最高工作在 OSI 的哪一层?
    答案
    网络层(3)、数据链路层(2)、物理层(1)。

一页总结与必会题型

主题核心结论必背数字 / 字眼真题
概念与分类边缘部分(主机)+ 核心部分(路由器);通信子网(下三层)+ 资源子网(上三层);WAN / MAN / LAN / PAN;广播式 vs 点对点IEEE 802;IETF → RFC—
交换方式电路:建连 + 独占;报文:每段存整个报文;分组:(N + k − 1)·P/R;虚电路按序、不预分配带宽各段速率不同 → 跟着最后一个分组走2010-34、2013-35、2020-34、2025-33
性能指标发送时延 = L/R,传播时延 = d/v;时延带宽积 = 传播时延 × 带宽;吞吐量看瓶颈;D = D0/(1 − U);丢包率介质中约 2 × 108 m/s;M = 1062023-33、2024-33
协议与分层协议水平、服务垂直;三要素语法 / 语义 / 同步;体系结构不含实现;层越多开销越大请求、指示、响应、证实2010-33、2017-33、2020-33、2026-33
OSI 与 TCP/IP七层功能见“跟我判断”表;传输层是第一个端到端的层;TCP/IP 网络层只提供无连接服务集线器 1、交换机 2、路由器 32009、2011、2012、2013、2014、2016、2019、2021、2022 年第 33 题
本篇必会题型(能独立做对才算过关)
  1. 三种交换方式的总时间,含各段速率不同的情况(1.2)。
  2. 发送时延、传播时延、时延带宽积、吞吐量(1.3)。
  3. 封装效率(1.4)。
  4. 某功能 / 设备 / 协议在 OSI 或 TCP/IP 的哪一层(1.5)。

1.✎本篇真题闯关(19 题)

本篇各小节挂的真题全部在这里,按小节排好。可以展开后一道道做,也可以用弹窗模式连续做。做题记录(对/错)只保存在你这台电脑的浏览器里,小节标题下的题号会随之变绿或变红。

第 2 篇 · 物理层

物理层:比特怎样变成信号,一条线最多能传多快

物理层的任务只有一个:在传输介质上透明地传送比特流——上层交下来一串 0 和 1,它负责把它们变成电信号、光信号或电磁波送到对方,再还原成 0 和 1。这一篇回答三个问题:一个信号能携带几个比特(码元与波特率);一条信道最快能传多快(奈奎斯特定理和香农定理,几乎每年一道计算题);0 和 1 具体画成什么波形(编码与调制,考看图识码)。

对应:王道计算机网络第 2 章难度:★★选择题真题 15 道

本篇地图:先看全貌,再逐节攻克

物理层的 15 道真题里,有 7 道是奈奎斯特 / 香农的计算,4 道是编码与调制——这两块占了大半。其余是概念:码元与波特、传输介质、接口特性、中继器和集线器。

物理层2.1 通信基础 ★码元 · 比特率 = 波特率 × log₂V · 单工 / 半双工 / 全双工 · 基带 / 频带2.2 信道极限 ★★★奈奎斯特 2W·log₂V · 香农 W·log₂(1 + S/N) · dB 换算 · 两者取小2.3 编码与调制 ★★NRZ · NRZI · 曼彻斯特 · 差分曼彻斯特 · RZ · ASK / FSK / PSK / QAM · PCM2.4 传输介质双绞线 · 同轴电缆 · 光纤(单模 / 多模)· 无线电、微波、卫星2.5 接口与设备机械 · 电气 · 功能 · 过程特性 · 中继器 · 集线器
图 2-1 物理层知识树。红框的两节合计 11 道选择题;计算题只要记住两个公式、会换算 dB,再看清题目给的是“无噪声”还是“信噪比”。
小节选择题一句话说清考什么
2.1 通信基础1比特率与波特率互换
2.2 信道极限7奈奎斯特、香农、两者取小;哪些因素影响速率
2.3 编码与调制4看波形识别编码、反推比特;FSK 用两个频率
2.4 传输介质1以太网标准用什么介质
2.5 接口与设备2四个特性各管什么;物理地址不属于物理层
建议的学习顺序与学时
  1. 2.1 → 2.2(约 2 小时):先分清码元、波特、比特,再把两个定理和 dB 换算练熟——这是本篇的分数大头。
  2. 2.3(约 1.5 小时):五种编码各画一遍,再练“看波形反推比特”。
  3. 2.4 → 2.5(约 1 小时):介质、接口特性、设备,以记忆为主。
物理层到底管什么

物理层考虑的是怎样在连接各种计算机的传输介质上传输比特流,而不是具体的传输介质本身。它要做的事:① 规定接口的机械、电气、功能、过程特性(2.5 节);② 把比特变成适合介质的信号——编码或调制(2.3 节);③ 决定比特的传输方式——单工 / 双工、串行 / 并行、同步 / 异步(2.1 节);④ 让信道尽量接近它的速率极限(2.2 节)。它向上提供“透明的比特流”:上层不必知道底下是双绞线、光纤还是无线电。

2.1通信基础:数据、信号、码元、波特率

★ 考过选择题

数据通信系统的模型

问题:你家的电脑通过光猫上网,屏幕上的一个字从你的电脑“走”到远方的服务器,中间经过了哪些环节?物理层要研究的,就是“比特怎样在线路上变成信号、又变回比特”。

信源发送器传输系统接收器信宿数据信号信号数据噪声源系统目的系统如 PC如调制解调器如电话网、光纤如调制解调器如服务器
图 2-2 数据通信系统的三部分。发送器把数据变成适合传输的信号,接收器把信号还原成数据;噪声在传输途中混进来,是限制速率的根本原因之一(香农定理)。
  • 源系统:信源(产生数据的一端)+ 发送器(把数据编码 / 调制成信号)。目的系统:接收器(把信号还原成数据)+ 信宿(接收数据的一端)。中间是传输系统(传输介质和中间设备)。
  • 数据是有意义的符号(如一串比特),信号是数据的电气或电磁表现。信号分模拟信号(取值连续,如话筒输出的电压)和数字信号(取值离散,只有有限几种状态,如计算机输出的方波)。
  • 信道:向某一个方向传送信息的通道。一条通信线路往往包含一条发送信道和一条接收信道。按传的信号分模拟信道和数字信道,按介质分有线信道和无线信道。
  • 本篇里的带宽取它的本义:信号能通过的频率范围(最高频率 − 最低频率),单位 Hz。到了其他篇,“带宽”常指数据率(bit/s),注意区分。

码元、波特率与比特率

比喻:举旗子

两座山头之间用旗子传话,每秒举一次旗(每秒 1 个码元)。只有红旗、白旗两种(V = 2),每次只能表达 1 位(是 / 否);有红、白、黄、绿四种旗(V = 4),每次就能表达 2 位(00、01、10、11)。举旗的频率就是波特率,每秒传了多少位就是比特率。哪里不像:旗子颜色看得清清楚楚,而电信号的“状态”越多,相邻状态越接近,越容易被噪声弄混。

码元是用一个固定时长的信号波形来表示一位 k 进制数字。如果信号有 V 种可区分的状态(电平、相位、频率……),一个码元就能携带 log2V 比特。

二进制码元V = 2,每个码元 1 比特 01011 四进制码元V = 4,每个码元 2 比特 11100100 同样每秒 5 个码元(5 波特): 二进制 → 5bit/s 四进制 → 5 × log₂4 = 10bit/s
图 2-3 码元携带的比特数。让一个码元有更多种状态,同样的码元速率就能传更多比特。
波特率(码元传输速率):每秒传送的码元数,单位 Baud(波特) 比特率(信息传输速率):每秒传送的比特数,单位 bit/s 比特率 = 波特率 × log2V  (V 是码元的状态数)
补课:log₂ 与 2 的幂

log2V 就是“2 的几次方等于 V”:log22 = 1,log24 = 2,log28 = 3,log216 = 4,log232 = 5,log264 = 6,log21024 = 10。V 不是 2 的幂时(如 log21001),取最接近的:210 = 1024,所以 log21001 ≈ 10(略小于 10)。

例跟我算
(1) 某链路波特率 2400,采用 16 种状态的调制,比特率是多少?(2) 要以 9600 b/s 传数据,采用 4 相位调制,波特率是多少?
跟我算

(1) log216 = 4,比特率 = 2400 × 4 = 9600 b/s。(2) 4 相位 → V = 4,每个码元 2 bit,波特率 = 9600 ÷ 2 = 4800 Baud。

口诀:比特率 ÷ 每码元比特数 = 波特率。只有二进制(V = 2)时,两者在数值上才相等。

2011-34计网
若某通信链路的数据传输速率为 2400bps,采用 4 相位调制,则该链路的波特率是( )。
  • A. 600 波特
  • B. 1200 波特
  • C. 4800 波特
  • D. 9600 波特
展开解析

考点2.1 波特率与比特率

B4 相位调制:码元有 4 种状态,每个码元携带 log24 = 2 比特。

  1. 比特率 = 波特率 × log2V。
  2. 波特率 = 2400 ÷ 2 = 1200 波特。
  • A 错600:除以了 4(把 4 相位当成每码元 4 比特)。
  • B 对1200 波特。
  • C 错4800:乘了 2,方向反了。
  • D 错9600 = 2400 × 4:错了两处——把“除以每码元的比特数”做成了乘法,又把状态数 4 当成了每码元的比特数(实际 log₂4 = 2)。

比特率 ≥ 波特率;两者之比是每个码元携带的比特数 log2V。

通信方式与传输方式

单工AB只能 A → B(广播、电视)半双工AB双向,但不能同时(对讲机)全双工AB双向同时(电话、交换机端口)
图 2-4 单工、半双工、全双工。单工需要 1 条信道;半双工、全双工都需要 2 条信道(或 1 条信道轮流用 / 用两个频段)。
  • 串行传输:一次传 1 位,一位接一位(远距离通信都用串行);并行传输:一次传多位,每位一条线(计算机内部、短距离)。
  • 异步传输:以字符为单位,每个字符前加 1 位起始位(0)、后加停止位(1),字符之间的间隔不定;收方靠起始位对准每个字符(字符内部同步,字符之间异步)。同步传输:以数据块为单位,收发双方的时钟严格同步(如从编码中提取时钟),效率高。

跟我算:异步传输一个 8 位字符加 1 位起始、1 位停止,共 10 位,有效数据占 8 ÷ 10 = 80%。

基带传输与频带传输

  • 来自信源的信号叫基带信号(如计算机输出的方波,含有从直流开始的低频分量)。基带信号直接在线路上传叫基带传输,只要做编码(变成合适的数字波形),局域网常用。
  • 很多信道(无线、电话线)不能传低频或直流,就要把基带信号调制到较高频率的载波上再传,叫频带(带通)传输。若一条线路上用多个不同频段同时传多路信号,叫宽带传输(如有线电视、ADSL)。
真题怎么考:2.1 的 1 道选择题

2011-34:比特率 = 波特率 × log2V,4 相位调制每个码元 2 比特,2400b/s → 2400 ÷ 2 = 1200 波特。V 是码元的状态数(如“4 个相位 × 4 种振幅”就是 16)。可能的新考法:单工、半双工、全双工各举一例;串行与并行、同步与异步;基带传输与频带(宽带)传输;曼彻斯特编码的波特率是比特率的 2 倍(2.3 节)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2011-34 改
若某通信链路的数据传输速率为 3600bps,采用 8 相位调制,则该链路的波特率是( )。
  • A. 1200 波特
  • B. 450 波特
  • C. 1800 波特
  • D. 10800 波特
展开解析

A每个码元携带 log28 = 3 比特,波特率 = 3600 ÷ 3 = 1200 波特。

  • A 对对:每码元 log₂8 = 3 比特,3600 ÷ 3 = 1200 波特。
  • B 错450 = 3600 ÷ 8:直接除以了状态数 8;应除以每码元的比特数 log₂8 = 3。
  • C 错1800 = 3600 ÷ 2:按 4 相位每码元 2 比特算了;8 相位每码元 3 比特。
  • D 错10800 = 3600 × 3:方向反了,比特率 = 波特率 × 3,求波特率应除以 3。

变化点:相位数从 4 变 8,每码元比特数从 2 变 3。

变式计网由 2011-34 改
某链路的码元速率为 1200 波特,每个码元有 16 种状态,则其数据传输速率是( )。
  • A. 1200bps
  • B. 4800bps
  • C. 2400bps
  • D. 19200bps
展开解析

B比特率 = 1200 × log216 = 4800bps。

  • A 错1200bps 把波特率直接当成了比特率;16 种状态每码元携带 4 比特。
  • B 对对:1200 × log₂16 = 4800bps。
  • C 错2400 = 1200 × 2:每码元比特数按 2 算了(那是 4 种状态);16 种状态是 log₂16 = 4。
  • D 错19200 = 1200 × 16:把状态数 16 当成了每码元的比特数。

变化点:反过来由波特率求比特率。

变式计网考纲补充(尚无真题)
通信双方都可以发送信息,但不能双方同时发送的通信方式是( )。
  • A. 单工
  • B. 半双工
  • C. 全双工
  • D. 并行
展开解析

B对讲机就是半双工;单工只能一个方向(广播),全双工两个方向可以同时(电话)。并行是“一次传多位”的传输方式,不是通信方式。

  • A 错单工只能一个方向传(如无线电广播),接收方根本不能发送。
  • B 对对:半双工双方都能发,但同一时间只能一方发(对讲机)。
  • C 错全双工两个方向可以同时传(如电话),题目说的是“不能同时”。
  • D 错并行是“一次同时传多位”的传输方式,和“谁能发、能否同时发”的通信方式是两回事。

考点:2.1 节“通信方式与传输方式”。

变式计网考纲补充(尚无真题)
把计算机输出的数字信号直接在线路上传送(只做编码、不调制到载波上)的传输方式称为( )。
  • A. 频带传输
  • B. 宽带传输
  • C. 基带传输
  • D. 模拟传输
展开解析

C基带信号直接传送叫基带传输(局域网常用);调制到载波上叫频带传输;一条线路用多个频段同时传多路叫宽带传输。

  • A 错频带传输要先把数字信号调制到载波上,题目说的是“不调制”。
  • B 错宽带传输是把线路分成多个频段同时传多路信号,同样要调制。
  • C 对对:只编码、不调制,直接传数字信号就是基带传输。
  • D 错模拟传输传的是模拟信号;直接传送数字信号(只做编码)的是基带传输。

考点:2.1 节“基带传输与频带传输”。

2.2信道的极限:奈奎斯特定理与香农定理

★★ 常考选择题

码元为什么不能无限快

信号经过任何实际信道都会失真:信道只让一定频率范围的成分通过(带宽有限),方波的陡峭边沿被“磨圆”,一个码元的波形会拖出尾巴,压到下一个码元上。码元传得越快,尾巴压得越厉害,接收端就分不清前后码元——这叫码间串扰。

码元慢101101码元之间还分得清码元快一倍101101波形糊在一起,分不清 0 和 1虚线:发出的方波;实线:经过带宽有限的信道后,接收端看到的“圆滑”波形(同样的信道,展宽程度一样)
图 2-5 码间串扰。同一条信道把每个脉冲“磨圆”的程度是固定的;码元越快,相邻码元的波形重叠越多。所以信道带宽决定了码元速率的上限。
补课:方波是由许多正弦波叠出来的

任何周期信号都可以分解成一系列频率不同的正弦波之和(傅里叶分析)。方波的边沿越陡,里面高频成分越多。信道就像一个“筛子”,只让带宽范围内的频率通过:高频成分被滤掉,方波就被“磨圆”。所以带宽(能通过的频率范围)越窄,波形越圆,码元就不能太密——这就是上一张图里码间串扰的根源。

奈奎斯特定理:无噪声时的极限

理想低通信道(无噪声、带宽 W Hz):极限码元传输速率 = 2W 波特 极限数据传输速率 = 2W log2V(bit/s)  V 是每个码元的离散状态数

为什么是 2W:带宽 W 的信道能通过的最高频率约为 W,一个周期 1/W 内信号最多“一上一下”变化两次,每次变化就是一个码元,所以每秒最多 2W 个码元——每个码元至少要占 1/(2W) 秒。电话线 W = 4 kHz 时,码元最短 125 μs。

要在带宽固定时提高速率,只能增加 V,让每个码元携带更多比特(多电平、多相位、QAM)。理论上 V 越大越好,但实际上状态越多越难分辨——这就要看香农定理了。

例跟我算
(1) 电话线带宽约 4 kHz(无噪声),用二进制码元最多能传多快?用 16 种状态呢?(2) 无噪声信道带宽 200 kHz,要达到 1.2 Mb/s,每个码元至少要几种状态?
跟我算

(1) 码元速率上限 2 × 4000 = 8000 Baud。二进制:8000 × 1 = 8 kb/s;16 种状态:8000 × 4 = 32 kb/s。

(2) 码元速率上限 2 × 200 k = 400 kBaud;每个码元要携带 1.2 M ÷ 400 k = 3 bit;V ≥ 23 = 8。

香农定理:有噪声时的极限

补课:信噪比与分贝 dB

信噪比 S/N = 信号平均功率 ÷ 噪声平均功率,是个比值(没有单位)。它常用分贝表示:信噪比(dB)= 10 log10(S/N)。反过来 S/N = 10dB ÷ 10。

dB310203040
S/N约 210100100010000

考试最常见的是 30 dB → S/N = 1000,log2(1 + 1000) ≈ 10。注意代入香农公式的是 S/N 本身,不是 dB 数。

带宽 W Hz、信噪比 S/N 的信道:极限数据传输速率 C = W log2(1 + S/N)(bit/s)

香农定理给出的是不管用什么编码、调制方法都不可能突破的上限。它只和带宽、信噪比有关:带宽越宽、信噪比越大,极限速率越高;与码元状态数 V 无关。但信噪比不可能无限提高(信号功率有限、噪声总是存在),所以有噪声信道的极限速率也不可能无限增大;而且速率只随 log2(1 + S/N) 缓慢增长:带宽一定时,S/N 从 1000 提高到 2000,极限速率只增加约 10%。它的意义在于:只要实际速率低于 C,就一定存在某种编码方法能实现无差错传输。

例跟我算
(1) 带宽 3 kHz、信噪比 30 dB 的信道,极限数据率约为多少?(2) 带宽 1 MHz 的信道要传 10 Mb/s,信噪比至少要多少(dB)?
跟我算

(1) 30 dB → S/N = 1000;C = 3000 × log21001 ≈ 3000 × 9.97 ≈ 29.9 kb/s(约 30 kb/s)。

(2) 10 M = 1 M × log2(1 + S/N) → log2(1 + S/N) = 10 → S/N = 210 − 1 = 1023 → 10 log101023 ≈ 30.1 dB。

两个定理一起用

奈奎斯特定理香农定理
适用条件理想低通信道,无噪声有高斯白噪声
结论码元速率 ≤ 2W;数据率 ≤ 2W log2V数据率 ≤ W log2(1 + S/N)
提高速率的办法增大 W,增大 V增大 W,提高信噪比
两个都给了时两个上限同时成立,实际最大速率取两者中较小的
例两个定理一起用
某信道带宽 4kHz,信噪比 30dB,采用 8 种电平的调制。该信道的最大数据传输速率是多少?
跟我算

奈奎斯特:2 × 4k × log28 = 24kbps。香农:4k × log2(1 + 1000) ≈ 40kbps。两个限制同时存在,取小的:24kbps。要想逼近 40kbps,就得增加电平数:2W log2V ≥ W log21001 → log2V ≥ 4.98,即至少 32 种电平(2017-34 就是这样出题的)。

和速率无关的东西

信号的传播速度只影响传播时延,不影响一条信道每秒能传多少比特(2014-35)。能影响数据传输速率的是:带宽、信噪比、码元状态数(调制方法)、调制速度(波特率)。

2009-34计网
在无噪声情况下,若某低通通信链路的带宽为 3kHz,采用 4 个相位、每个相位具有 4 种振幅的 QAM 调制技术,则该通信链路的最大数据传输速率是( )。
  • A. 12kbps
  • B. 24kbps
  • C. 48kbps
  • D. 96kbps
展开解析

考点2.2 奈奎斯特定理2.3 QAM

B无噪声 → 用奈奎斯特定理。4 个相位 × 4 种振幅 = 16 种状态,V = 16。

  1. 极限码元速率 = 2W = 2 × 3k = 6k 波特。
  2. 每个码元 log216 = 4 比特。
  3. 最大数据传输速率 = 6k × 4 = 24kbps。
  • A 错12kbps:忘了乘 2(码元速率是 2W,不是 W)。
  • B 对24kbps。
  • C 错48kbps:多乘了一个 2,例如把每个码元算成 8 比特(4 相位 × 4 振幅不是 4 + 4 位)。
  • D 错96kbps:直接用 2W × 16,把状态数当成了比特数。

奈奎斯特:C = 2W log2V。QAM 的状态数 = 相位数 × 振幅数。

2014-35计网
下列因素中,不会影响信道数据传输速率的是( )。
  • A. 信噪比
  • B. 频率带宽
  • C. 调制速度
  • D. 信号传播速度
展开解析

考点2.2 影响数据传输速率的因素

D数据传输速率由奈奎斯特和香农定理决定:和带宽、信噪比、码元速率(调制速度)、码元状态数有关。信号的传播速度只决定传播时延(信号跑多快),与每秒能传多少比特无关。

  • A信噪比:香农公式中的 S/N,会影响。
  • B频率带宽:两个公式中的 W,会影响。
  • C调制速度:即波特率,比特率 = 波特率 × log2V,会影响。
  • D信号传播速度不影响。

“传得多快”(速率)和“跑得多快”(传播速度)是两回事。

2016-34计网
若连接 R2 和 R3 链路的频率带宽为 8kHz,信噪比为 30dB,该链路实际数据传输速率约为理论最大数据传输速率的 50%,则该链路的实际数据传输速率约是( )。
  • A. 8kbps
  • B. 20kbps
  • C. 40kbps
  • D. 80kbps
展开解析

考点2.2 香农定理

C给了信噪比 → 用香农定理。30dB → S/N = 103 = 1000。

  1. 理论最大速率 C = 8k × log2(1 + 1000) ≈ 8k × 10 = 80kbps。
  2. 实际速率是它的 50%:40kbps。
  • A 错8kbps 恰好是带宽 8kHz 的数值:相当于把 log₂(1 + 1000) 当成 1,又没乘 50%;实际 log₂1001 ≈ 10,理论值约 80kbps,实际约 40kbps。
  • B 错20kbps:多除了一个 2。
  • C 对40kbps。
  • D 错80kbps:是理论最大值,忘了乘 50%。

dB 换 S/N:S/N = 10dB/10;30dB → 1000,log21001 ≈ 10。

2017-34计网
若信道在无噪声情况下的极限数据传输速率不小于信噪比为 30dB 条件下的极限数据传输速率,则信号状态数至少是( )。
  • A. 4
  • B. 8
  • C. 16
  • D. 32
展开解析

考点2.2 奈奎斯特与香农定理

D设带宽 W、状态数 V。要求“无噪声极限 ≥ 30dB 时的极限”。

  1. 无噪声(奈奎斯特):2W log2V。
  2. 30dB(香农):W log2(1 + 1000) ≈ 10W。
  3. 2W log2V ≥ 10W → log2V ≥ 5 → V ≥ 32。
  • A 错V = 4:2W × 2 = 4W,远小于 10W。
  • B 错V = 8:2W × log₂8 = 6W,仍小于 30dB 时的香农极限 W × log₂1001 ≈ 10W,不满足“不小于”。
  • C 错V = 16:8W,仍小于 10W。
  • D 对V = 32:10W,刚好达到。

两个定理比大小时,带宽 W 在两边都出现,可以约掉。

2022-34计网
在一条带宽为 200kHz 的无噪声信道上,若采用 4 个幅值的 ASK 调制,则该信道的最大数据传输速率是( )。
  • A. 200kbps
  • B. 400kbps
  • C. 800kbps
  • D. 1600kbps
展开解析

考点2.2 奈奎斯特定理2.3 ASK

C无噪声 → 奈奎斯特。4 个幅值的 ASK,V = 4,每个码元 2 比特。

  1. 极限码元速率 = 2 × 200k = 400k 波特。
  2. 最大数据传输速率 = 400k × 2 = 800kbps。
  • A 错200kbps:码元速率写成 W 且每码元只算 1 比特。
  • B 错400kbps:只算了码元速率,没乘每码元的比特数。
  • C 对800kbps。
  • D 错1600kbps:把 4 当成了每码元的比特数。

V 种状态 → 每码元 log2V 比特,不是 V 比特。

2023-34计网
某无噪声理想信道带宽为 4MHz,采用 QAM 调制,若该信道的最大数据传输率是 48Mbps,则该信道采用的 QAM 调制方案是( )。
  • A. QAM-16
  • B. QAM-32
  • C. QAM-64
  • D. QAM-128
展开解析

考点2.2 奈奎斯特定理2.3 QAM

C无噪声理想信道,用奈奎斯特定理倒推 V。

  1. 48M = 2 × 4M × log2V → log2V = 6。
  2. V = 26 = 64,即 QAM-64。
  • A 错QAM-16:每码元 4 比特,只能 32Mbps。
  • B 错QAM-32:每码元 5 比特,40Mbps。
  • C 对QAM-64:每码元 6 比特,48Mbps。
  • D 错QAM-128:每码元 7 比特,56Mbps。

QAM-n 的 n 就是状态数 V,每码元携带 log2n 比特。

2026-34计网
若在带宽 200kHz、信噪比 S/N = 1023 的信道上,发送一个长度为 1500B 的分组,则发送该分组的传输时延至少是( )。
  • A. 1ms
  • B. 2ms
  • C. 3ms
  • D. 6ms
展开解析

考点2.2 香农定理1.3 发送时延

D给了信噪比 → 香农定理求出极限速率,再用它算发送时延(“至少”就是用最大速率发)。

  1. C = 200k × log2(1 + 1023) = 200k × 10 = 2Mbps。
  2. 分组 1500B = 12 000bit,传输时延 = 12 000 ÷ (2 × 106) = 6ms。
  • A、B 错1ms、2ms 对应的速率是 12 000bit ÷ 1ms = 12Mbps、12 000bit ÷ 2ms = 6Mbps,都超过了这条信道的香农极限 200k × log₂1024 = 2Mbps——信道每秒最多传 2Mb,发 1500B 不可能比 6ms 更快。
  • C 错3ms:速率按 4Mbps 算了,把奈奎斯特公式里的“2W”错用到香农公式上。
  • D 对6ms。

1 + S/N 凑成 2 的幂(1024)是出题人故意给的,log2 直接取整。

真题怎么考:2.2 的 7 道选择题
  • “无噪声” → 奈奎斯特(2009-34、2022-34、2023-34):2W log2V,反求 V 时 log2V = 速率 ÷ 2W。
  • “信噪比” → 香农(2016-34、2026-34):先把 dB 换成 S/N;2026-34 还把速率代入发送时延 = 长度 ÷ 速率(1500 B = 12000 bit,12000 ÷ 2 Mb/s = 6 ms)。
  • 两个都给 / 比较(2017-34):列不等式,或两者取小。
  • 概念(2014-35):传播速度不影响数据率。

这个方法失效的情形:题目说的是“带宽 W”但信道是带通的(非低通),奈奎斯特仍按 2W 算(408 不区分);题目给的“带宽”若指数据率(bit/s),就不能套这两个公式。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2009-34 改
在无噪声情况下,某低通信道带宽为 4kHz,采用 8 个相位、每个相位 2 种振幅的 QAM 调制,最大数据传输速率是( )。
  • A. 16kbps
  • B. 24kbps
  • C. 32kbps
  • D. 64kbps
展开解析

C状态数 V = 8 × 2 = 16,C = 2 × 4k × log216 = 32kbps。

  • A 错16kbps = 4k × 4:码元速率只取了 W,漏了奈奎斯特公式里的 2(极限码元速率 2W = 8k 波特)。
  • B 错24kbps = 2 × 4k × 3:只按 8 个相位算(log₂8 = 3),漏乘了 2 种振幅;状态数 V = 8 × 2 = 16。
  • C 对对:2 × 4k × log₂16 = 32kbps。
  • D 错64kbps = 2 × 4k × 8:把相位数 8 当成了每码元的比特数,实际 log₂16 = 4。

变化点:带宽和相位/振幅组合都变了,状态数仍是“相位数 × 振幅数”。

变式计网由 2016-34 改
若某链路带宽为 4kHz,信噪比为 20dB,实际数据传输速率约为理论最大值的 60%,则实际速率约为( )。
  • A. 8kbps
  • B. 16kbps
  • C. 24kbps
  • D. 27kbps
展开解析

B20dB → S/N = 100;C = 4k × log2101 ≈ 4k × 6.66 ≈ 26.6kbps;× 60% ≈ 16kbps。

  • A 错8kbps = 2 × 4k,相当于按奈奎斯特二进制信号算(每码元 1 比特);题目给的是信噪比,要用香农定理。
  • B 对对:4k × log₂101 ≈ 26.6kbps,乘 60% ≈ 16kbps。
  • C 错24kbps ≈ 4k × log₂1001 × 60%:把 20dB 换算成了 S/N = 1000(那是 30dB);20dB 对应 S/N = 10² = 100。
  • D 错27kbps ≈ 4k × log₂101 ≈ 26.6kbps,是理论最大值,忘了乘 60%。

变化点:dB 换算:S/N = 10dB/10,20dB 对应 100。

变式计网由 2023-34 改
某无噪声理想信道带宽为 4MHz,采用 QAM 调制,若最大数据传输率为 32Mbps,则采用的调制方案是( )。
  • A. QAM-32
  • B. QAM-64
  • C. QAM-16
  • D. QAM-128
展开解析

C32M = 2 × 4M × log2V → log2V = 4 → V = 16,QAM-16。

  • A 错QAM-32 每码元 5 比特:2 × 4M × 5 = 40Mbps,超过了 32Mbps。
  • B 错QAM-64 每码元 6 比特:2 × 4M × 6 = 48Mbps,那是原题 2023-34 的数据。
  • C 对对:log₂V = 32M ÷ 8M = 4,V = 16。
  • D 错QAM-128 每码元 7 比特:2 × 4M × 7 = 56Mbps。

变化点:速率从 48Mbps 改为 32Mbps,每码元比特数从 6 变 4。

变式计网由 2026-34 改
在带宽 100kHz、信噪比 S/N = 255 的信道上发送一个 1500B 的分组,传输(发送)时延至少是( )。
  • A. 7.5ms
  • B. 12ms
  • C. 15ms
  • D. 30ms
展开解析

CC = 100k × log2256 = 800kbps;1500 × 8 ÷ 800k = 15ms。

  • A 错7.5ms 对应 1.6Mbps:把香农公式写成了 2W log₂(1 + S/N),多乘了 2;香农公式里没有 2。
  • B 错12ms = 12 000bit ÷ 1Mbps:把 log₂256 当成了 10(套用 1024 的习惯);log₂(1 + 255) = 8,C = 800kbps。
  • C 对对:100k × 8 = 800kbps,12 000bit ÷ 800kbps = 15ms。
  • D 错30ms 对应 400kbps,只有香农极限 800kbps 的一半;“至少”的发送时延要按极限速率算。

变化点:S/N 取 2k − 1 的形式,log2(1 + S/N) 正好是整数。

变式计网考纲补充(尚无真题)
某无噪声信道带宽为 200 kHz,要达到 1.2 Mb/s 的数据率,每个码元至少要有的离散状态数是( )。
  • A. 4
  • B. 16
  • C. 6
  • D. 8
展开解析

D码元速率上限 2 × 200k = 400 kBaud;每个码元要携带 1.2M ÷ 400k = 3 bit;V ≥ 23 = 8。

  • A 错4 种状态每码元 2 比特:400k × 2 = 800kb/s,达不到 1.2Mb/s。
  • B 错16 种状态能达到(1.6Mb/s),但题目问“至少”,8 种就够了。
  • C 错6 种状态时每码元 log₂6 ≈ 2.58 比特,400k × 2.58 ≈ 1.03Mb/s,达不到 1.2Mb/s。
  • D 对对:每码元要 3 比特,V ≥ 2³ = 8。

考点:2.2 节“奈奎斯特定理”的跟我算。

变式计网考纲补充(尚无真题)
带宽为 1 MHz 的信道要达到 10 Mb/s 的极限数据率,信噪比至少约为( )。
  • A. 30 dB
  • B. 10 dB
  • C. 20 dB
  • D. 40 dB
展开解析

A10M = 1M × log2(1 + S/N) → S/N = 210 − 1 = 1023 → 10 log101023 ≈ 30 dB。

  • A 对对:S/N = 2¹⁰ − 1 = 1023,约 30dB。
  • B 错10dB 即 S/N = 10:1M × log₂11 ≈ 3.46Mb/s,远不到 10Mb/s。
  • C 错20dB 即 S/N = 100:1M × log₂101 ≈ 6.66Mb/s,不够 10Mb/s。
  • D 错40dB(S/N = 10⁴)能到约 13.3Mb/s,但不是“至少”;约 30dB 就够了。

考点:2.2 节“香农定理”的跟我算。

2.3编码与调制:0 和 1 画成什么样

★★ 常考选择题

把数据变成信号有两类做法:编码把数据变成数字信号(基带传输,局域网用);调制把数据加载到载波上,变成模拟信号(带通传输,无线、电话线用)。数据和信号各有数字、模拟两种,组合起来共四种:

转换方法例子
数字数据 → 数字信号编码:NRZ、曼彻斯特等以太网
数字数据 → 模拟信号调制:ASK、FSK、PSK、QAM调制解调器、Wi-Fi
模拟数据 → 数字信号PCM:采样、量化、编码数字电话、录音
模拟数据 → 模拟信号调制到不同频段(调幅、调频广播),频分复用收音机、早期电话网

数字数据 → 数字信号:五种编码

10110010NRZ高 = 1,低 = 0NRZI翻转 = 0,不变 = 1曼彻斯特前高后低 = 1差分曼彻斯特开头跳变 = 0RZ(归零)正脉冲 = 1,负脉冲 = 0
图 2-6 比特串 10110010 的五种编码。虚线是码元的边界。NRZI 和差分曼彻斯特假设第一位之前是低电平。曼彻斯特、差分曼彻斯特每个码元中间都有跳变,这个跳变可以当作时钟(自同步),代价是一个码元要跳变两次,所需带宽是 NRZ 的 2 倍。RZ 用三种电平,每个码元后半段都回到零。
编码规则(408 真题采用的约定)特点
RZ 归零正脉冲表示 1,负脉冲表示 0,每个码元的后半段都回到零电平(“归零”)每位都有跳变,接收方可以据此调整时钟(自同步);但“归零”占用了一部分带宽,传输效率低。只考概念,不考看图
NRZ 不归零高电平表示 1,低电平表示 0,一个码元内电平不变简单、效率高;连续多个 0 或 1 时没有跳变,接收方无法提取时钟(不能自同步)
NRZI 反向不归零电平翻转表示 0,保持不变表示 1连续的 0 有跳变;USB 使用。也有教材规定相反(翻转表示 1),做题以题目为准
曼彻斯特每个码元中间都跳变;前高后低表示 1,前低后高表示 0(2013-34、2015-34 都按这个约定)自同步;以太网(10BaseT)使用。一个码元两个电平,调制速率是数据率的 2 倍(10 Mb/s 以太网的码元速率是 20 MBaud)
差分曼彻斯特每个码元中间都跳变(只作时钟);看码元开始处:有跳变表示 0,没有跳变表示 1(2021-34)抗干扰更强;令牌环网使用
编码能否自同步每比特跳变所需带宽典型应用
NRZ否(长串 0 或 1 没有跳变)最多 1 次最小计算机内部、短距离
NRZI部分(连续 0 有跳变,连续 1 没有)最多 1 次小USB;配合 4B/5B 用于 FDDI
RZ是2 次大概念
曼彻斯特是1 ~ 2 次NRZ 的 2 倍10 Mb/s 以太网
差分曼彻斯特是1 ~ 2 次NRZ 的 2 倍令牌环网;信号整体反相也不影响解码,抗干扰更好
看图识码的三步
  1. 码元中间有没有跳变?都没有 → NRZ 或 NRZI;都有 → 曼彻斯特或差分曼彻斯特。
  2. 没有中间跳变时:电平直接对应比特 → NRZ;电平“翻转/不变”对应比特 → NRZI。
  3. 有中间跳变时:看中间跳变的方向能否对上比特 → 曼彻斯特;看码元开始处有无跳变能否对上比特 → 差分曼彻斯特。
跟我做:从波形反推比特
  • 曼彻斯特:逐个码元看“前半 → 后半”:高 → 低写 1,低 → 高写 0。2013-34 的波形依次是 低高、低高、高低、高低、低高、高低、高低、低高 → 0011 0110。
  • 差分曼彻斯特:从第 2 位起,比较“上一位的后半电平”和“本位的前半电平”:相同(开头不跳)写 1,不同(开头跳)写 0。第 1 位之前的电平不知道时先跳过,用后 7 位去对选项(2021-34:后 7 位 011 1001 → 选 1011 1001)。
  • NRZI:从第 2 位起看与前一位相比是否翻转:翻转写 0,不变写 1。

4B/5B 编码(拓展):把每 4 位数据换成 5 位编码(从 32 个码组里挑出“0 不太多”的 16 个),保证有足够的跳变,编码效率 80%,用于 100BASE-TX 等快速以太网:100 Mb/s 的数据实际以 125 MBaud 发送,比曼彻斯特(要 200 MBaud)省带宽。

2013-34计网
若下图为 10BaseT 网卡接收到的信号波形,则该网卡收到的比特串是( )。
  • A. 0011 0110
  • B. 1010 1101
  • C. 0101 0010
  • D. 1100 0101
展开解析

考点2.3 曼彻斯特编码

A10BaseT 以太网使用曼彻斯特编码:每个码元中间都有跳变,前高后低表示 1,前低后高表示 0。

  1. 逐格看中间跳变的方向:低高、低高、高低、高低、低高、高低、高低、低高。
  2. 对应比特:0 0 1 1 0 1 1 0,即 0011 0110。
  • A 对0011 0110。
  • B 错1010 1101:第 1 位中间是前低后高,应为 0。
  • C 错0101 0010:第 2 位中间是前低后高,应为 0。
  • D 错1100 0101:前 4 位是用相反约定(前低后高 = 1)读出来的,后 4 位也对不上。

看到“以太网、10BaseT”就想到曼彻斯特编码;只看每个码元中间跳变的方向。

2015-34计网
使用两种编码方案对比特流 01100111 进行编码的结果如下图所示,编码 1 和编码 2 分别是( )。
01100111编码 1编码 2
  • A. NRZ 和曼彻斯特编码
  • B. NRZ 和差分曼彻斯特编码
  • C. NRZI 和曼彻斯特编码
  • D. NRZI 和差分曼彻斯特编码
展开解析

考点2.3 四种数字编码

A按“看图识码的三步”来判断。

  1. 编码 1:码元中间都没有跳变,而且高电平正好对应 1、低电平对应 0 → NRZ。(若是 NRZI,第 2、3 位的 1 应该保持前一电平,第 1 位 0 后的“翻转”也对不上。)
  2. 编码 2:每个码元中间都跳变。看中间跳变的方向:前低后高、前高后低、前高后低、前低后高、前低后高、前高后低、前高后低、前高后低,按“前高后低 = 1”正好读出 01100111 → 曼彻斯特编码。
  3. 再验证不是差分曼彻斯特:第 3 位是 1,按差分曼彻斯特码元开始处不应跳变,但图中第 3 位开始处有跳变,所以不是。
  • A 对NRZ 和曼彻斯特编码。
  • B 错B 的编码 1(NRZ)对了,错在编码 2:第 3 位是 1,按差分曼彻斯特码元开始处不应跳变,可图中第 3 位开始处有跳变;而按“前高后低 = 1”读编码 2 正好得到 01100111,它是曼彻斯特编码。
  • C、D 错编码 1 的电平直接对应比特,是 NRZ 而不是 NRZI。

曼彻斯特看码元中间的跳变方向;差分曼彻斯特看码元开始处有没有跳变。

2021-34计网
若下图为一段差分曼彻斯特编码信号波形,则其编码的二进制位串是( )。
  • A. 1011 1001
  • B. 1101 0001
  • C. 0010 1110
  • D. 1011 0110
展开解析

考点2.3 差分曼彻斯特编码

A差分曼彻斯特:每个码元中间都跳变(只用作时钟),数据看码元开始处:有跳变表示 0,没有跳变表示 1。

  1. 第 1 位之前的电平不知道,先跳过。
  2. 从第 2 位起逐位比较“上一位的后半电平”和“本位的前半电平”:第 2 位 低 → 高,有跳变,0;第 3 位 低 → 低,无跳变,1;第 4 位 高 → 高,1;第 5 位 低 → 低,1;第 6 位 高 → 低,0;第 7 位 高 → 低,0;第 8 位 高 → 高,1。
  3. 后 7 位是 011 1001,只有 A(1011 1001)符合。
  • A 对1011 1001。
  • B 错1101 0001:第 2 位是 1,但第 2 位开始处有跳变,应为 0。
  • C 错0010 1110:第 4 位是 0,但第 4 位开始处没有跳变,应为 1。
  • D 错1011 0110:前 4 位对,第 5 位是 0,但第 5 位开始处没有跳变,应为 1。

差分曼彻斯特第 1 位常常无法确定,先读后面的位,再用选项排除。

数字数据 → 模拟信号:调制

载波是一个正弦波,它有三个可以改变的“旋钮”:振幅、频率、相位。调制就是用数据去拧这几个旋钮:

1 0 1 1 ASK 调幅1 有载波 FSK 调频1、0 用两种频率 PSK 调相1、0 相位差 180°
图 2-7 比特 1011 的三种基本调制。调幅只改变载波的幅度,调频只改变频率,调相只改变相位。FSK 需要两个不同频率的载波(2024-34)。
  • ASK(调幅):用载波的有无或不同振幅表示 0、1。实现简单,但抗噪声差。
  • FSK(调频):用两个不同频率的载波表示 0、1。抗干扰较好。
  • PSK(调相):用载波的不同相位表示 0、1;DPSK(差分调相)用相对前一个码元的相位变化表示。三种基本调制里 PSK 抗干扰能力最强,FSK 次之,ASK 最差。
  • QAM(正交振幅调制):幅度和相位结合起来,一个码元可以有很多种状态,在同样的波特率下传更多比特。
同相正交4 种相位 × 4 种振幅 = 16 个点星座图上每个点代表一种码元状态:点到原点的距离 = 振幅,连线的角度 = 相位。V = 16 → 每个码元携带 log₂16 = 4 bit。QAM-64:V = 64,每个码元 6 bit(2023-34)。点越多,相邻点越近,越怕噪声——所以 V 不能无限增大,这正是香农定理的意思。
图 2-8 16-QAM 的星座图。4 种相位 × 4 种振幅 = 16 种状态(2009-34 就是这种);每个码元携带 4 bit。拓展 实际系统给相邻的星座点分配只差 1 位的比特组合(格雷码),噪声让接收方误判成相邻点时只错 1 位。

QPSK(四相位调制)是 PSK 的扩展:用 4 种相位(如 45°、135°、225°、315°)表示 00、01、10、11,每个码元 2 bit——2011-34 的“4 相位调制”就是它:数据率 2400 b/s 时,波特率只要 2400 ÷ 2 = 1200 Baud。调制解调器(modem)的名字就来自“调制 + 解调”:发送时把数字信号调制成适合电话线的模拟信号,接收时再解调回来。

2024-34计网
在下列二进制数字调制方法中,需要 2 个不同频率载波的是( )。
  • A. ASK
  • B. PSK
  • C. FSK
  • D. DPSK
展开解析

考点2.3 调制

CFSK(频移键控、调频)用两个不同频率的载波分别表示 0 和 1。

  • A 错原卷印作 ASP,应指 ASK(调幅):只改变一个载波的振幅,用一个频率。
  • B 错PSK(调相):一个载波,改变相位。
  • C 对FSK。
  • D 错DPSK(差分调相):也只用一个载波,用相对相位变化表示数据。

ASK 改幅度、FSK 改频率、PSK 改相位;只有 FSK 需要两个频率。

模拟数据 → 数字信号:PCM

把声音这样的模拟数据变成数字信号用脉冲编码调制 PCM,分三步:采样(每隔一段时间取一个值)、量化(把取值归到有限个等级上,这一步会引入“量化误差”)、编码(把等级写成二进制)。

000001010011100101110111101110110110100001001001010101110110编码:① 采样:每隔固定时间取一个值(竖线) ② 量化:归入所在的等级(红块,本图 8 级) ③ 编码:等级写成 3 位二进制
图 2-9 PCM 的三步。本图 12 个样值依次编码为 101 110 110 110 100 001 001 001 010 101 110 110。等级越多(每个样值的位数越多),量化误差越小,数据率也越大。

采样定理(奈奎斯特采样定理):采样频率至少是信号最高频率的 2 倍,才能无失真地恢复原信号。

例跟我算
电话话音最高频率按 4 kHz 计,用 PCM 数字化,每个样值量化为 128 级。求采样频率和数据率。
跟我算

采样频率 ≥ 2 × 4 kHz = 8000 次/秒;128 级 = 27,每个样值 7 bit;数据率 = 8000 × 7 = 56 kb/s。若量化为 256 级(8 bit),就是电话网标准的 64 kb/s。

拓展 CD 音质:人耳能听到约 20 kHz,采样 44.1 kHz(略大于 40 kHz),每个样值 16 bit,双声道:44100 × 16 × 2 ≈ 1.41 Mb/s。

模拟数据 → 模拟信号:例如把话音信号调制到不同频段上,用频分复用在一条线路上传多路(第 3 篇 3.4)。

真题怎么考:2.3 的 4 道选择题

2013-34、2021-34 给波形反推比特;2015-34 给比特和两种波形,判断是哪种编码(先看码元中间有没有跳变);2024-34 问哪种调制要两个频率。可能的新考法:哪种编码能自同步(曼彻斯特、差分曼彻斯特、RZ);曼彻斯特编码的码元速率是数据率的几倍(2 倍);QAM-N 每个码元几比特(log2N);采样频率至少多少。

易错辨析
  • 曼彻斯特“前高后低 = 1”是 408 真题的约定;教材里也有相反的写法,题目给了约定就照题目。
  • 差分曼彻斯特的数据只看码元开头,中间那次跳变永远存在,只当时钟。
  • 4 种相位 × 4 种振幅是 16 种状态(乘法),不是 8 种。
  • 采样频率是信号最高频率的 2 倍,不是带宽的 2 倍(话音 300 ~ 3400 Hz 时一般仍按 4 kHz × 2 = 8 kHz 采样)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2013-34 改
比特串 0110 采用曼彻斯特编码(本讲义约定:前高后低表示 1),第 4 个码元的前半个周期是( )。
  • A. 高电平
  • B. 无信号
  • C. 与第 3 个码元的前半周期相同
  • D. 低电平
展开解析

D第 4 位是 0,按约定 0 为“前低后高”,前半周期是低电平。

  • A 错高电平是“1”的前半周期;第 4 位是 0,按“前低后高 = 0”,前半周期是低电平。
  • B 错曼彻斯特编码每个码元都有高、低两半,不会出现“无信号”的时段。
  • C 错第 3 个码元是 1,前半周期是高电平;第 4 个码元是 0,前半周期是低电平,两者不同。
  • D 对对:0 是前低后高。

变化点:由波形读比特,反过来由比特画波形。

变式计网由 2021-34 改
差分曼彻斯特编码中,若某码元开始处没有电平跳变,则该码元表示( )。
  • A. 1
  • B. 0
  • C. 由中间跳变方向决定
  • D. 无法确定
展开解析

A差分曼彻斯特:每个码元中间都跳变(只作同步);码元开始处有跳变表示 0,没有跳变表示 1。

  • A 对对:开始处无跳变表示 1。
  • B 错开始处有跳变才表示 0,题目说的是没有跳变。
  • C 错差分曼彻斯特码元中间的跳变只作同步时钟,方向不代表数据;按中间跳变方向读数据的是曼彻斯特编码。
  • D 错规则是确定的:开始处无跳变 = 1、有跳变 = 0,不需要别的信息就能判断。

变化点:2021-34 由波形读位串,这里直接问规则。

变式计网由 2024-34 改
在下列数字调制方法中,用载波的不同相位表示不同数据的是( )。
  • A. ASK
  • B. PSK
  • C. FSK
  • D. 曼彻斯特编码
展开解析

BASK 调幅、FSK 调频(需要两个频率)、PSK 调相;曼彻斯特编码是基带编码,不是调制。

  • A 错ASK(调幅)用载波的不同振幅表示数据,频率和相位都不变。
  • B 对对:PSK 调相。
  • C 错FSK(调频)用两个不同频率的载波表示 0 和 1,不改相位。
  • D 错曼彻斯特编码是基带编码,不用载波,根本不是调制。

变化点:由“两个频率”(FSK)换成“不同相位”(PSK)。

变式计网考纲补充(尚无真题)
10 Mb/s 以太网采用曼彻斯特编码,则其信号的码元传输速率(调制速率)是( )。
  • A. 5 MBaud
  • B. 10 MBaud
  • C. 20 MBaud
  • D. 40 MBaud
展开解析

C曼彻斯特编码每个比特中间都跳变,一个比特对应两个电平段,码元速率是数据率的 2 倍。

  • A 错5MBaud = 10M ÷ 2:方向反了,曼彻斯特一个比特占两个码元,码元速率是数据率的 2 倍。
  • B 错10MBaud 把码元速率当成了数据率;曼彻斯特每位中间跳变,一位分成两个码元。
  • C 对对:2 × 10M = 20MBaud。
  • D 错40MBaud = 10M × 4:多乘了一个 2;一个比特只分前后两半。

考点:2.3 节“五种编码”。

变式计网考纲补充(尚无真题)
最高频率为 8 kHz 的模拟信号用 PCM 数字化,每个样值量化为 256 级,则数据率至少是( )。
  • A. 64 kb/s
  • B. 128 kb/s
  • C. 256 kb/s
  • D. 16 kb/s
展开解析

B采样频率 ≥ 2 × 8 kHz = 16000 次/秒;256 级 = 8 bit;16000 × 8 = 128 kb/s。

  • A 错64kb/s = 8000 × 8:采样频率只取了 8kHz(等于最高频率);按采样定理至少要 2 × 8k = 16 000 次/秒。
  • B 对对:16 000 × 8 = 128kb/s。
  • C 错256kb/s 是正确值的 2 倍:采样频率多乘了 2(32 000 次/秒),或每个样值按 16 位算;256 级只要 8 位。
  • D 错16kb/s = 16 000 × 1:每个样值只按 1 位算了;256 级要 log₂256 = 8 位。

考点:2.3 节“模拟数据 → 数字信号:PCM”。

变式计网考纲补充(尚无真题)
下列编码中,不能从信号本身提取同步时钟的是( )。
  • A. NRZ
  • B. 曼彻斯特编码
  • C. 差分曼彻斯特编码
  • D. 归零编码 RZ
展开解析

ANRZ 遇到长串 0 或 1 时电平不变,接收方无法据此校准时钟;其余三种每个码元内都有跳变,能自同步。

  • A 对对:NRZ 遇到长串 0 或 1 时电平不变,没有跳变可用来校准时钟。
  • B 错曼彻斯特编码每个码元中间都有跳变,接收方可以从中提取时钟,能自同步。
  • C 错差分曼彻斯特每个码元中间也都跳变,同样能自同步。
  • D 错归零编码每个码元中间都要回到零电平,有跳变可提取时钟。

考点:2.3 节编码对比表。

2.4传输介质

★ 考过选择题

传输介质是发送器和接收器之间的物理通路。严格说它不属于物理层(在物理层之下,被叫作“第 0 层”),但物理层要规定怎样和它打交道。分两大类:

介质结构与特点用在哪里
导向传输介质(信号沿固体介质传播)
双绞线两根绝缘铜线绞合在一起;分屏蔽 STP(外加金属屏蔽层,抗干扰好、贵)和非屏蔽 UTP。便宜,距离一般不超过 100m局域网最常用:10BASE-T、100BASE-T 中的 T 就是双绞线(2019-34)
同轴电缆内导体、绝缘层、网状外导体屏蔽层;抗干扰比双绞线好。50Ω 基带同轴电缆传数字信号,75Ω 宽带同轴电缆传模拟信号早期以太网(10BASE5 粗缆、10BASE2 细缆)、有线电视
光纤利用光的全反射传光脉冲;带宽极大、损耗小、抗电磁干扰、保密性好、重量轻主干网、远距离
非导向传输介质(自由空间)
无线电波向所有方向传播,穿透力强,可远距离传输;低频、中频沿地面传播,高频(短波)靠电离层反射无线局域网、手机、广播
微波频率高、带宽大,直线传播;地面微波接力要每隔几十千米设中继站—
卫星通信用同步卫星转发微波;3 颗相隔 120° 的同步卫星就能覆盖几乎全球。优点:容量大、距离远、覆盖广、天然广播;缺点:传播时延大(单向约 250~270ms)、保密性差、受天气影响、成本高2015-35、2025-47 的卫星链路
红外线、激光直线传播,要求对准—

光纤为什么能导光:(结构:纤芯外包一层包层,包层外径约 125μm;多模光纤纤芯约 50μm 或 62.5μm,单模光纤纤芯只有 8~10μm,接近光的波长。发送端用发光二极管或半导体激光器把电脉冲变成光脉冲,接收端用光电二极管把光脉冲还原成电脉冲。)纤芯的折射率比外面包层高,光线以足够大的入射角射到纤芯与包层的界面上时会发生全反射,被关在纤芯里一路向前。光纤传的是光脉冲:有光表示 1,无光表示 0。光纤的带宽可达几十 THz,远超铜线;但光纤本身脆,接续和分路要专门设备。

跟我算:卫星的时延为什么大。同步卫星离地面约 36000 km,信号上去再下来走 72000 km,以光速 3 × 105 km/s 计,单向就要 72000 ÷ 300000 = 0.24 s(240 ms)。这和信道带宽多大无关——所以卫星链路的“时延带宽积”很大,停等协议在上面极其低效(3.3 节)。

双绞线为什么要“绞”:两根线紧挨着平行走,外界的电磁干扰会在两根线上感应出电流;绞合以后,相邻两个“绞距”里感应的干扰方向相反、互相抵消,同时也减少了对相邻线对的干扰(串扰)。绞得越密,抗干扰越好(5 类、6 类线绞距越来越小)。

多模光纤(纤芯粗,约 50 μm)多条光线角度不同、走的路程不同 → 脉冲展宽单模光纤(纤芯细,约 8 ~ 10 μm)光基本沿直线前进,衰减小、可传几十千米
图 2-10 多模与单模光纤。多模光纤便宜、用发光二极管作光源,适合楼内、园区;单模光纤贵、要用半导体激光器,适合远距离主干。
2019-34计网
100BaseT 快速以太网使用的导向传输介质是( )。
  • A. 双绞线
  • B. 单模光纤
  • C. 多模光纤
  • D. 同轴电缆
展开解析

考点2.4 传输介质

A以太网标准名中的“T”表示 Twisted pair(双绞线)。100BaseT 快速以太网使用双绞线。

  • A 对双绞线。
  • B、C 错光纤对应 100Base-FX 等带“F”的标准。
  • D 错同轴电缆用于早期的 10Base5、10Base2。

“速率 Base 介质”:T 双绞线、F 光纤、5 和 2 是同轴电缆的长度(约 500m、200m)。

三种导向介质对比

双绞线同轴电缆光纤
传的信号电信号电信号光脉冲
抗电磁干扰一般(STP 较好)较好(有屏蔽层)完全不受电磁干扰
距离短(以太网约 100m)较长(10BASE5 500m)远(单模可达几十千米)
带宽较低(随线缆类别提高)中等极高
成本低中高(连接、分路要专门设备)
能否全双工能:收、发用不同的线对早期总线式以太网所有站共用一根导体,只能半双工能:一般成对使用,一根发、一根收

双绞线的衰减随信号频率升高而增大;传模拟信号时用放大器补偿,传数字信号时用中继器整形再生(2.5 节)。

以太网标准的名字怎么读

命名规则:“速率 BASE 介质”。前面的数字是速率(Mb/s);BASE 表示基带传输;后缀表示介质——T 是双绞线,F / S / L 是光纤,C 是铜缆,后缀是数字时是同轴电缆,数字约等于最长段长的百米数。

名字速率介质与段长
10BASE510 Mb/s粗同轴电缆,每段最长 500m
10BASE210 Mb/s细同轴电缆,每段最长 185m(约 200m)
10BASE-T10 Mb/s非屏蔽双绞线,最长 100m(2019-34 的 100BaseT 同理)
10BASE-F10 Mb/s光纤
100BASE-TX100 Mb/s2 对 5 类 UTP 或 STP,100m
100BASE-T4100 Mb/s4 对 3 类 UTP,100m
100BASE-FX100 Mb/s2 根光纤(一收一发)
1000BASE-T1000 Mb/s4 对 5 类 UTP,100m
1000BASE-SX / LX1000 Mb/s光纤:S = 短波长激光(多模),L = 长波长激光(单模或多模)
1000BASE-CX1000 Mb/s屏蔽铜缆,最长约 25m(机房内设备互连)

高速以太网(100 Mb/s 以上)的细节在第 3 篇 3.7 节。

真题怎么考:2.4 的 1 道选择题

2019-34:以太网名称里的 T 是双绞线,100BaseT 用双绞线;带 F 的(如 100Base-FX)用光纤,10Base5、10Base2 用粗、细同轴电缆。可能的新考法:屏蔽双绞线 STP 与非屏蔽 UTP;单模与多模光纤(单模纤芯只有 8 ~ 10μm,适合长距离;多模纤芯粗,用于短距离);卫星通信传播时延大。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2019-34 改
10BASE-T 中的 “T” 表示所用的传输介质是( )。
  • A. 同轴电缆
  • B. 多模光纤
  • C. 双绞线
  • D. 单模光纤
展开解析

CT = Twisted pair,双绞线;10BASE5、10BASE2 用同轴电缆;100BASE-FX 用光纤。

  • A 错同轴电缆对应 10BASE5(粗缆)、10BASE2(细缆),名称末尾是数字,不是 T。
  • B 错光纤的名称带 F(如 10BASE-F、100BASE-FX),T 只表示双绞线。
  • C 对对:T = Twisted pair,双绞线。
  • D 错单模光纤同样属于光纤,名称里用 F 或 LX 等表示,不用 T。

变化点:速率从 100 改为 10,介质不变。

变式计网由 2019-34 改
下列传输介质中,纤芯最细、适合远距离传输的是( )。
  • A. 双绞线
  • B. 同轴电缆
  • C. 多模光纤
  • D. 单模光纤
展开解析

D单模光纤纤芯直径与光波长同量级,光线沿轴向传播,衰减小,适合远距离。

  • A 错双绞线是两根绞合的铜线,没有纤芯,衰减大,一般不超过 100m。
  • B 错同轴电缆也是铜导线,没有纤芯,传输距离远不如光纤。
  • C 错多模光纤纤芯较粗(约 50μm 或 62.5μm),多条光线反射造成脉冲展宽,只适合近距离。
  • D 对对:单模光纤纤芯只有 8 ~ 10μm,衰减小,适合远距离。

变化点:从“以太网用哪种介质”换到“各介质的特点”。

变式计网考纲补充(尚无真题)
下列关于单模光纤和多模光纤的叙述中,正确的是( )。
  • A. 多模光纤纤芯更细
  • B. 单模光纤更适合远距离传输
  • C. 多模光纤中光线只沿轴线传播
  • D. 单模光纤一般用发光二极管作光源
展开解析

B单模光纤纤芯细,光几乎沿直线传播,没有多条路径造成的脉冲展宽,适合远距离,需用半导体激光器;多模光纤纤芯粗,多条光线以不同角度反射,适合近距离。

  • A 错说反了:多模光纤纤芯约 50 ~ 62.5μm,单模只有 8 ~ 10μm,单模更细。
  • B 对对:单模光纤没有多路径造成的脉冲展宽,适合远距离。
  • C 错多模光纤中多条光线以不同角度在纤芯里反射前进;几乎只沿轴线传播的是单模光纤。
  • D 错单模光纤要用方向性好的半导体激光器作光源;发光二极管一般配多模光纤。

考点:2.4 节“多模与单模光纤”。

2.5物理层接口特性与物理层设备

★ 考过选择题

物理层接口的四个特性

物理层的协议也叫物理层规程,它规定的是“接口”——设备和传输介质之间的插头插座、电压、引脚、时序。这些特性最早是为 DTE(数据终端设备,如计算机)和 DCE(数据电路端接设备,如调制解调器)之间的接口制定的:DTE 产生和接收数据,DCE 负责把数据变成能在线路上传的信号。用一根网线的 RJ-45 接口来理解四个特性:

特性规定什么以 RJ-45 网口为例
机械特性接口的形状、尺寸、引脚数目和排列、固定和锁定装置水晶头宽约 11.7 mm,8 个引脚,有卡扣(2018-34 A“接口形状”)
电气特性接口电缆各条线上的电压范围、传输速率、距离限制差分信号的电压幅度、最大传输距离 100 m(2018-34 D“信号电平”)
功能特性某条线上出现某一电平的含义,各引脚的功能10/100BASE-T:1、2 脚发送,3、6 脚接收,其余备用(2018-34 B“引脚功能”)
过程特性(规程特性)实现各种功能的事件出现顺序连上网线后先自动协商速率和双工方式,再开始收发(2012-34)

物理地址(MAC 地址)不属于物理层,它是数据链路层的概念(2018-34)。

2012-34计网
在物理层接口特性中,用于描述完成每种功能的事件发生顺序的是( )。
  • A. 机械特性
  • B. 功能特性
  • C. 过程特性
  • D. 电气特性
展开解析

考点2.5 物理层接口特性

C规定“完成每种功能的事件发生顺序”的是过程特性(规程特性)。

  • A 错机械特性:接口形状、尺寸、引脚数。
  • B 错功能特性:各条线上电平的含义、引脚的功能。
  • C 对过程特性。
  • D 错电气特性:电压范围、速率、距离。

机械 = 长什么样,电气 = 电压多少,功能 = 每根线干什么,过程 = 先后顺序。

2018-34计网
下列选项中,不属于物理层接口规范定义范畴的是( )。
  • A. 接口形状
  • B. 引脚功能
  • C. 物理地址
  • D. 信号电平
展开解析

考点2.5 物理层接口特性

C物理地址(MAC 地址)是数据链路层的概念,物理层接口规范不定义它。

  • A接口形状属于机械特性(插头的形状、尺寸、引脚数目和排列),是物理层接口规范的内容,不选。
  • B引脚功能属于功能特性(某条线上出现的某一电平表示什么意义),是物理层接口规范的内容,不选。
  • C物理地址不属于物理层。
  • D信号电平属于电气特性(电压范围、阻抗匹配、传输速率和距离限制),是物理层接口规范的内容,不选。

“物理地址”名字里有“物理”,却属于数据链路层。

中继器和集线器

  • 中继器:把衰减、失真的信号整形、放大后再转发,用来延长网络距离。它只认识比特,两端的网段必须使用同一种协议、同一速率;它不能隔离冲突,连起来的仍是同一个冲突域。
  • 集线器(Hub):实质上是一个多端口的中继器。从一个端口收到的比特,放大后从所有其他端口发出去。所以用集线器连接的所有主机在同一个冲突域里,同一时刻只能有一台发送(半双工),大家平分带宽。
  • 中继器与放大器的区别:放大器放大的是模拟信号,把衰减的信号连同噪声一起放大;中继器处理的是数字信号,把失真的波形重新整形成标准的 0、1 再发出,噪声不会累积。
物理上:星形(接线像星星)集线器ABCD逻辑上:总线(大家听同一根线)ABCDA 发出的比特 B、C、D 都收到;两台同时发就冲突
图 2-11 集线器:物理星形,逻辑总线。所以用集线器连成的以太网仍要用 CSMA/CD;换成交换机后,每个端口才各自独立(3.9 节)。
放大器中继器集线器
处理的信号模拟信号数字信号数字信号
做什么放大(噪声一起放大,会累积)整形再生(不累积噪声)多端口中继:一个端口进、所有端口出
端口数22多个
隔离冲突域都不能;都工作在物理层,不认识帧、不看地址,两侧必须同一速率、同一协议

拓展 中继器、集线器“再生”信号也有代价:它们会带来时延,连得越多,冲突检测越难保证。所以 10Mbps 以太网有 5-4-3 规则:两台主机之间最多 5 个网段、4 个中继器(集线器),其中只有 3 个网段可以接主机。考题一般直接给出设备时延,让你按 3.5 节的方法算最远距离(2016-36、2022-47)。

冲突域、广播域和交换机、路由器的比较在第 3 篇 3.9 节集中讲。

真题怎么考

2.4、2.5 的 3 道题都是概念:2019-34(100BaseT 用双绞线)、2012-34(事件顺序 = 过程特性)、2018-34(物理地址不属于物理层)。可能的新考法:单模与多模光纤的区别;双绞线为什么要绞;中继器能否连接不同速率的网段(不能);集线器连接的主机有几个冲突域(1 个);放大器与中继器的区别。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2012-34 改
在物理层接口特性中,规定接口形状、尺寸和引脚数目、排列的是( )。
  • A. 机械特性
  • B. 电气特性
  • C. 功能特性
  • D. 过程特性
展开解析

A机械特性:形状、尺寸、引脚数目和排列;电气特性:电压范围;功能特性:各引脚的含义;过程特性:事件顺序。

  • A 对对:机械特性管形状、尺寸、引脚数目和排列。
  • B 错电气特性规定电压范围、阻抗匹配、传输速率和距离,不管接口的形状尺寸。
  • C 错功能特性规定各条线上电平的含义(引脚功能),不管引脚的数目和排列。
  • D 错过程特性规定各种事件出现的顺序,不管接口的物理外形。

变化点:四个特性各对应一句话,换一个问法。

变式计网由 2018-34 改
用一台集线器连接 6 台主机,这 6 台主机构成的冲突域个数是( )。
  • A. 2
  • B. 1
  • C. 6
  • D. 7
展开解析

B集线器是多端口中继器,把所有端口连成同一个冲突域。

  • A 错集线器不分隔冲突域,6 台主机全在同一个冲突域里,不会分成 2 个。
  • B 对对:集线器把所有端口连成同一个冲突域。
  • C 错6 是用交换机连接时的冲突域个数(每个端口一个);集线器把所有端口连成一个冲突域。
  • D 错7 = 6 + 1,好像把集线器本身也算成了一个冲突域;冲突域只有 1 个,包括全部 6 台主机。

变化点:物理层设备不隔离冲突域。

变式计网由 2018-34 改
下列设备中,工作在物理层、能对信号整形放大但不能隔离冲突域的是( )。
I. 中继器 II. 集线器 III. 交换机
  • A. 仅 I
  • B. 仅 II、III
  • C. 仅 I、II
  • D. I、II、III
展开解析

C中继器、集线器是物理层设备,只放大转发比特;交换机是链路层设备,每个端口是一个冲突域。

  • A 错A 漏了 II:集线器就是多端口中继器,同样在物理层、不隔离冲突域。
  • B 错B 选了 III 又漏了 I:交换机工作在链路层,每个端口一个冲突域;中继器则正是物理层设备。
  • C 对对:中继器、集线器。
  • D 错D 多选了 III:交换机是链路层设备,能隔离冲突域。

变化点:从“接口规范”延伸到物理层设备。

变式计网考纲补充(尚无真题)
下列关于中继器和放大器的叙述中,正确的是( )。
  • A. 放大器把衰减的数字信号整形后再转发
  • B. 中继器会把噪声连同信号一起放大并逐级累积
  • C. 中继器能够隔离冲突域
  • D. 中继器对数字信号整形再生,噪声不会逐级累积
展开解析

D放大器处理模拟信号,连噪声一起放大;中继器把失真的数字波形重新整形成标准的 0、1。两者都工作在物理层,不隔离冲突域。

  • A 错整形再生数字信号的是中继器;放大器处理模拟信号,把噪声连同信号一起放大。
  • B 错这说的是放大器:中继器把失真的数字波形重新整形成标准的 0、1,噪声不会逐级累积。
  • C 错中继器工作在物理层,它连起来的网段仍在同一个冲突域,不能隔离。
  • D 对对:中继器整形再生,噪声不逐级累积。

考点:2.5 节“中继器和集线器”。

第 2 篇自测
  1. 某信道波特率 1200,采用 8 相位调制,比特率是多少?
    答案
    1200 × log28 = 3600bit/s。
  2. 带宽 6kHz 的无噪声信道,采用 4 种电平,最大数据率是多少?
    答案
    2 × 6k × 2 = 24kbps。
  3. 20 dB 对应的信噪比是多少?40 dB 呢?
    答案
    1020÷10 = 100;104 = 10000。
  4. 带宽 3kHz,信噪比 30dB,最大数据率约为多少?
    答案
    3k × log21001 ≈ 30kbps。
  5. 为什么提高码元的状态数 V 不能无限提高速率?
    答案
    V 越大,相邻状态越接近,越容易被噪声弄混;有噪声时速率受香农定理限制,与 V 无关。
  6. 曼彻斯特编码为什么能自同步?代价是什么?
    答案
    每个码元中间都有跳变,接收方可以从跳变中提取时钟;代价是每个码元有两个电平,所需带宽是 NRZ 的 2 倍。
  7. 一段曼彻斯特波形依次是 高低、低高、低高、高低,对应的比特是什么(前高后低 = 1)?
    答案
    1001。
  8. QAM-64 的每个码元携带几比特?波特率 1000 时比特率是多少?
    答案
    log264 = 6 bit;6000 b/s。
  9. 最高频率 8 kHz 的信号用 PCM 数字化、每个样值 8 bit,数据率至少多少?
    答案
    采样 16000 次/秒 × 8 bit = 128 kb/s。
  10. 单模光纤和多模光纤哪个适合远距离?为什么?
    答案
    单模:纤芯细,光几乎直线传播,没有多条路径造成的脉冲展宽,衰减小。
  11. 描述“某条引脚上出现高电平表示什么”的是接口的哪个特性?
    答案
    功能特性。
  12. 用集线器连接的 5 台主机,有几个冲突域?
    答案
    1 个。集线器把所有端口连成同一个冲突域。
  13. QAM-16 每个码元携带几比特?若码元速率为 2400 波特,数据率是多少?
    答案
    QAM-16 有 16 种码元状态,每码元 log216 = 4 bit;数据率 2400 × 4 = 9600 b/s。

一页总结与必会题型

主题核心结论必背数字真题
通信基础比特率 = 波特率 × log2V;单工 1 条信道,半双工 / 全双工 2 条;基带传输编码,频带传输调制—2011-34
信道极限无噪声:2W log2V;有噪声:W log2(1 + S/N);都给时取小;传播速度不影响数据率30 dB = 1000;log21001 ≈ 102009-34、2014-35、2016-34、2017-34、2022-34、2023-34、2026-34
编码调制曼彻斯特前高后低 = 1;差分曼彻斯特看开头;ASK / FSK / PSK / QAM;PCM 采样 ≥ 2 倍最高频率曼彻斯特 2 倍带宽;4B/5B 效率 80%2013-34、2015-34、2021-34、2024-34
传输介质双绞线(T)、同轴、光纤(单模远、多模近)、无线双绞线 100 m2019-34
接口与设备机械、电气、功能、过程四特性;中继器 / 集线器工作在物理层,不隔离冲突域RJ-45 8 针2012-34、2018-34
本篇必会题型清单(能独立做对才算过关)
  1. 波特率 ↔ 比特率互换(2.1)。
  2. 奈奎斯特求最大速率、反求 V;香农求最大速率、反求信噪比;dB 换算;两者取小(2.2)。
  3. 看波形识别编码、反推比特(2.3)。
  4. QAM 状态数与每码元比特数;PCM 的采样频率与数据率(2.3)。
  5. 接口四特性的判断(2.5)。

2.✎本篇真题闯关(15 题)

本篇各小节挂的真题全部在这里,按小节排好。可以展开后一道道做,也可以用弹窗模式连续做。做题记录(对/错)只保存在你这台电脑的浏览器里,小节标题下的题号会随之变绿或变红。

第 3 篇 · 数据链路层

数据链路层:一段链路上怎样可靠地传一帧、大家怎样共用一根线

物理层只管把比特送过去,不管对错、不管谁先发。数据链路层在它上面做三件事:把比特流切成一个个帧;发现并处理差错;控制发送速度、保证可靠传输(停等、GBN、SR)。对于多台主机共用一条信道的广播信道,还要解决“谁来发”的问题——介质访问控制(CSMA/CD、CSMA/CA)。这一篇是计网考题最多的一篇:18 年 37 道选择题、5 道综合题。

对应:王道计算机网络第 3 章难度:★★★选择题真题 37 道

本篇地图:先看全貌,再逐节攻克

数据链路层的内容可以挂在两条线上。第一条线:一段链路上怎么把帧可靠地送过去——组帧(3.1)、检错纠错(3.2)、确认重传和滑动窗口(3.3)。第二条线:很多主机共用一条信道时谁来发——信道划分(3.4)、随机访问(3.5)、无线局域网(3.6),以及在这条线上发展出来的以太网、VLAN 和交换机(3.7~3.9)。

数据链路层3.1 功能与组帧链路 vs 数据链路 · 三种服务 · 四种组帧方法 · 透明传输3.2 差错控制 ★★奇偶校验 · CRC 模 2 除法 · 海明码 · 码距与检错纠错3.3 可靠传输 ★★★停等 · GBN · SR · 窗口上限 · 信道利用率与序号位数3.4 信道划分 ★FDM · TDM 与统计时分 · WDM · CDMA 内积3.5 随机访问 ★★★ALOHA · CSMA 三种坚持 · CSMA/CD 最短帧长与退避 · 令牌3.6 无线局域网 ★★CSMA/CA · 帧间间隔 · RTS/CTS 与 NAV · 四个地址3.7 以太网与 PPPMAC 地址 · 帧格式 64 ~ 1518 B · 高速以太网 · PPP3.8 VLAN ★按端口划分 · 802.1Q 4 B 标签 · 跨 VLAN 要经过路由器3.9 设备与域 ★★★自学习 · 直通 / 存储转发 · 冲突域与广播域
图 3-1 数据链路层知识树。红框是高频区:3.3(10 道选择 + 2 道大题)、3.5(6 道 + 1 道大题)、3.9(7 道 + 2 道大题)。
小节选择题综合题一句话说清考什么
3.1 功能与组帧1—零比特填充
3.2 差错控制2—CRC 余数;码距与检纠错能力
3.3 可靠传输102017-47、2025-47窗口上限;重传哪些帧;信道利用率与序号位数
3.4 信道划分2—哪些会冲突;CDMA 内积
3.5 随机访问62010-47最短帧长与距离;指数退避最长等待
3.6 无线局域网6—RTS/CTS、IFS、NAV 计算;802.11 地址
3.7 以太网与 PPP1—以太网提供的服务;帧长范围
3.8 VLAN2—帧能到达哪些主机;ARP 表里有谁
3.9 设备与域72019-47、2022-47交换机转发端口;冲突域 / 广播域个数;直通时延
建议的学习顺序与学时
  1. 3.1 → 3.2(约 2.5 小时):组帧和 CRC 是手算题,海明码和计组的校验码一节相通。
  2. 3.3(约 3 小时):先把停等的四种情况、GBN 与 SR 的区别画清楚,再练利用率和序号位数的计算。
  3. 3.4 → 3.5 → 3.6(约 3.5 小时):先分清三大类介质访问控制,再分别吃透 CSMA/CD(以太网)和 CSMA/CA(无线)。
  4. 3.7 → 3.8 → 3.9(约 2.5 小时):以太网帧、VLAN、交换机自学习,最后用数冲突域 / 广播域收尾。

3.1数据链路层的功能与组帧

★ 考过选择题

链路、数据链路与帧

问题:物理层送过去的只是一串 0 和 1。接收方怎么知道哪些比特是一个“包”?这一串里有没有错?对方忙不过来时怎么办?这些都是数据链路层的事。

比喻:火车车厢

物理层是铁轨上滚动的车轮,只管“动起来”。数据链路层把货物(IP 数据报)装进一节节车厢(帧),车厢前后各有车钩(首部、尾部),车厢里还附一张“清点单”(检验码),到站后对一对货有没有损坏。一段铁轨只连两个相邻车站,车厢到站后要拆开、换车厢再走下一段——每一段链路都要重新封装成帧。哪里不像:火车车厢的长度是固定的,帧的长度是可变的,所以要专门“标出”帧从哪开始、到哪结束。

  • 链路:从一个结点到相邻结点的一段物理线路,中间没有任何其他交换结点。
  • 数据链路:链路 + 实现通信协议的硬件和软件(网卡里的控制电路和驱动程序)。
  • 帧:数据链路层的传送单位。发送方把网络层交下来的 IP 数据报加上首部和尾部封装成帧;接收方检查无误后取出 IP 数据报交给网络层,有错就丢弃。

数据链路层向网络层提供三种服务:无确认的无连接服务(以太网:不编号、不确认,错帧直接丢弃,靠上层重传;适合误码率低的有线信道);有确认的无连接服务(无线局域网:每帧都要确认,因为无线信道误码率高);有确认的面向连接服务(先建立数据链路,帧编号、确认,适合可靠性要求高的场合)。

它的功能:组帧、差错控制、流量控制与可靠传输(相邻结点之间)、链路管理(面向连接时建立、维持、释放链路),以及广播信道上的介质访问控制。链路层的信道有两种:点对点信道(一对一,代表协议 PPP)和广播信道(一对多,代表协议 CSMA/CD 以太网、CSMA/CA 无线局域网)。

帧为什么有最大长度:帧越长,出错的概率越大(一个比特错整帧作废),占用信道的时间也越长、别人等得越久;所以每种链路层都规定了帧的数据部分最多多少字节,叫最大传送单元 MTU(以太网 1500 B)。网络层的 IP 数据报超过下一段链路的 MTU,就要在网络层分片(4.2 节)。链路层与网络层的分工:链路层只负责“这一段”,网络层负责“一路到底”。

组帧:接收方怎么知道一帧从哪开始、到哪结束

帧的数据部分可能出现任意比特组合。如果其中恰好出现和“帧开始 / 结束标志”一样的比特,接收方就会把帧切错。透明传输指不管数据部分是什么比特组合,都能原样、正确地通过数据链路层——“透明”是说这层对上层来说就像不存在一样。常用的四种组帧方法,各用一个例子说明:

① 字符计数法:帧首部用一个计数字段写明本帧共有多少字节(含计数字段本身)。

正确的字节流:红格是计数字段,写明本帧共几个字节(含它自己)512343564789帧 1帧 2帧 3第 2 帧的计数 3 错成 4 之后,接收方这样切512344564789✕帧 1 ✓帧 2 ✗ 多吞一字节“7”当计数 ✗计数字段只要错一个,后面所有帧的边界都跟着错,接收方自己发现不了、也恢复不了——所以这种方法很少单独使用。
图 3-2 字符计数法的致命弱点。正常时,接收方读到 5 就数 5 个字节为一帧;计数字段一旦出错,从这一帧开始全部错位。

② 字节填充法(字符填充):用特定的控制字符 SOH、EOT 作帧的开始和结束;数据中若出现控制字符,在它前面插入一个转义字符 ESC;数据里本来就有的 ESC 前面也要再插一个 ESC。接收方删除每个转义字符,保留紧跟其后的那个字节。

要发送的数据(中间恰好有控制字符 EOT 和 ESC)AEOTBESCC发出的帧:首尾加 SOH、EOT;数据里的每个控制字符前插一个 ESC(红)SOHAESCEOTBESCESCCEOT帧的数据部分接收方:看到 ESC 就删掉它,把紧跟的那个字节当普通数据;没有 ESC 在前的 EOT 才是帧尾。
图 3-3 字节填充。PPP 在异步线路上用的就是这种方法(帧界 7E,转义字符 7D,3.7 节)。

③ 零比特填充法:用 01111110 作帧的开始和结束标志(HDLC、同步线路上的 PPP)。发送方在数据中每遇到连续 5 个 1,就在后面插入一个 0;接收方遇到连续 5 个 1 后面的 0 就删掉。这样数据中永远不会出现 6 个连续的 1,不会被误认为标志。

零比特填充:跟我做一遍

从左往右数连续的 1,数到 5 个就插一个 0,计数清零后接着数(插入的 0 不参与计数,它后面的 1 重新从 1 数起)。

原数据:0110111111111100
填充后:011011111011111000

原数据第 5 ~ 14 位是 10 个连续的 1:数到第 5 个插一个 0,再数到第 10 个又插一个 0。共插 2 个 0,填充后 18 位。接收方的规则对称:看到 11111 后面跟着 0,就删掉这个 0。

反过来问“接收方收到 0111110101111100,原数据是什么”:删掉每个 11111 后面的 0,得 01111110111110。

2013-37计网
HDLC 协议对 01111100 01111110 组帧后对应的比特串为( )。
  • A. 01111100 00111110 10
  • B. 01111100 01111101 01111110
  • C. 01111100 01111101 0
  • D. 01111100 01111110 01111101
展开解析

考点3.1 零比特填充

AHDLC 用 01111110 作帧定界符,数据中每出现连续 5 个 1,就在后面插入一个 0,不管下一位是什么。

  1. 第一个字节 01111100:5 个 1 后插 0 → 011111000。
  2. 第二个字节 01111110:5 个 1 后插 0 → 011111010。
  3. 拼起来:011111000 011111010,按 8 位一组写就是 01111100 00111110 10(18 位,比原来多 2 位)。
  • A 对接收方删掉每组 5 个 1 后面的 0,正好还原 01111100 01111110。
  • B 错前 16 位与 C 相同(第一组 5 个 1 后面没插 0),末尾又接了一个标志 01111110,还原不出原数据。
  • C 错只在第二组后插了 0。第一组 5 个 1 后面原本就是 0,但规则照样要插;漏插后接收方会把原有的那个 0 当成填充位删掉,得到 011111001111110,少了一位。
  • D 错前 16 位就是原数据,没做填充;其中 01111110 和帧标志一样,接收方会误以为帧在这里结束。

数连续的 1:够 5 个就插 0,插完从头数。填充后的串中不会出现 6 个连续的 1。

④ 违规编码法:用物理层编码中不会出现的信号表示帧的边界。例如曼彻斯特编码每个码元中间都有一次跳变,那么“整个码元保持高电平”或“整个码元保持低电平”就是违规的,正好用作帧的起止。

违规:高—高1011违规:低—低帧开始帧结束正常码元:中间都有跳变曼彻斯特编码的每个码元中间必有一次跳变;“整个码元不跳”在数据里不可能出现,正好拿来当帧边界。
图 3-4 违规编码法。本图按“码元中间由高到低表示 1”画;教材也有相反的约定,不影响原理。这种方法不需要任何填充,但只能用在采用冗余编码的物理层上(局域网 IEEE 802 标准用过)。
方法帧界透明传输靠什么优缺点 / 谁在用
字符计数法首部的计数字段不需要(数据不会被误认为帧界)计数字段一错全错,很少单独使用
字节填充法控制字符(SOH / EOT,PPP 为 7E)数据中的控制字符前插 ESC面向字节;异步 PPP
零比特填充法01111110每 5 个连续 1 后插 0面向比特,开销小、硬件易实现;HDLC、同步 PPP
违规编码法编码规则里不可能出现的信号编码规则本身保证无需填充;只适用于冗余编码

实际中常把字符计数法与其他方法结合使用。以太网是另一种思路:帧前有 8 字节前导码让接收方同步,帧与帧之间至少空 96 比特时间,靠“信道上没有信号了”判断帧结束,所以以太网帧没有帧结束定界符(3.7 节)。

真题怎么考

2013-37 考零比特填充:数连续的 1,第 5 个后插 0。可能的变化:给出填充后的比特串求原数据(反向删 0);问“透明传输”的含义;问 PPP 异步、同步线路各用哪种填充;问字符计数法的缺点。判别要点:插的 0 是在“第 5 个 1 之后”,不是“遇到 6 个 1 才插”。

易错辨析
  • 零比特填充是对帧的数据部分做的,首尾的标志 01111110 本身不填充。
  • 插入的 0 不参与计数:11111 0 1111 1 → 新插 0 后的 1 重新从 1 数起。
  • 数据中原本就有的 0 会让计数清零,不需要插。
  • “透明传输”不是“看得见数据”,而是“任何数据都能原样通过”。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2013-37 改
HDLC 协议对比特串 01111110 01111100 组帧(零比特填充)后对应的比特串是( )。
  • A. 01111110 01111100
  • B. 011111100 011111000
  • C. 011111010 01111100
  • D. 011111010 011111000
展开解析

D每遇到连续 5 个 1 就插入 0:01111110 → 011111010;01111100 → 011111000。合起来 011111010 011111000(18 位)。

  • A 错没有填充:第一个字节 01111110 与帧定界标志完全相同,接收方会误以为帧在这里结束。
  • B 错第一个字节的 0 插晚了:011111100 在第 6 个 1 之后才插 0,里面仍有 6 个连续的 1;规则是数到 5 个 1 就插。
  • C 错第一个字节填对了,但第二个字节 01111100 里也有连续 5 个 1,后面原本是 0 也要再插一个 0。
  • D 对对:两个字节各插一个 0,共 18 位。

变化点:第一个字节本身就是标志模式 01111110,填充后它不再有 6 个连续的 1。

变式计网由 2013-37 改
PPP 在异步线路上采用字节填充。若信息字段中出现字节 7E,发送时应变为( )。
  • A. 7E 7E
  • B. 7D 5E
  • C. 7D 7E
  • D. 7D 5D
展开解析

B7E 是标志字节,数据中出现时换成 7D 5E;数据中的 7D 换成 7D 5D。

  • A 错7E 7E:PPP 没有“重复一遍”的规则,接收方见到 7E 仍会当成帧的边界。
  • B 对对:7E 换成 7D 5E(7E 异或 20H)。
  • C 错7D 7E:转义后第二个字节要异或 20H 变成 5E;原样留下 7E,接收方仍会把它当成帧界。
  • D 错7D 5D 是数据中出现转义字节 7D 本身时的替换,不是 7E 的。

变化点:零比特填充(面向比特)换成字节填充(面向字节)。

变式计网考纲补充(尚无真题)
采用零比特填充的 HDLC 帧,接收方在帧的数据部分收到比特串 0111110101111100,则发送方原来的数据是( )。
  • A. 0111110101111100
  • B. 01111110111110
  • C. 011111101111100
  • D. 0111111011111
展开解析

B接收方每遇到连续 5 个 1,就删掉其后的 0:0111110101111100 → 01111110111110。

  • A 错没有删除填充位,把收到的比特串原样当成了原数据。
  • B 对对:删掉两处“5 个 1 后面的 0”。
  • C 错只删了第一处填充位,第二组 5 个 1 后面的 0 没删,比原数据多 1 位。
  • D 错多删了末尾的 0:只该删紧跟在 5 个 1 后面的那一个 0,最后的 0 是原数据。

考点:3.1 节“零比特填充:跟我做一遍”。

变式计网考纲补充(尚无真题)
字符计数法组帧的主要缺点是( )。
  • A. 不能传送二进制数据
  • B. 帧长受到严格限制
  • C. 计数字段一旦出错,后续帧的边界都无法确定
  • D. 需要在数据中插入转义字符
展开解析

C计数字段错了,接收方就按错误的长度切帧,后面全部错位,而且无法自行恢复。D 是字节填充法的做法。

  • A 错字符计数法只靠首部的计数字段定界,数据内容是什么都可以,能传二进制数据。
  • B 错帧长只受计数字段位数的限制,这不是它的主要问题;主要问题是计数一错就全部错位。
  • C 对对:计数字段出错后,接收方按错误长度切帧,后面全部错位且无法恢复。
  • D 错在数据中插入转义字符是字节填充法的做法,字符计数法不需要。

考点:3.1 节“组帧”中的字符计数法。

3.2差错控制:CRC 检错与海明码纠错

★ 考过选择题

差错从哪来,怎么对付

信号在线路上受噪声干扰,比特会出错(0 变 1、1 变 0),这叫位错;整帧丢失、重复、失序叫帧错。传错的比特占总比特数的比例叫误码率 BER(有线信道一般 10−9 以下,无线信道可能到 10−5 甚至更高)。对付位错有两种思路:

  • 检错编码:只发现“有错”,然后丢弃或要求重传。奇偶校验、CRC。
  • 纠错编码(前向纠错 FEC):不但发现有错,还能指出哪一位错并改正,不用重传。海明码。代价是冗余位更多,适合重传代价很大的场合(卫星、深空通信)。

两种编码的共同思路是冗余:在数据后面附加一些按规则算出来的比特,接收方按同样的规则检查。帧错(丢失、重复、失序)则要靠 3.3 节的编号、确认和重传来解决。

奇偶校验:只能查出奇数个错

在数据后加一位校验位,使整个码字里 1 的个数为奇数(奇校验)或偶数(偶校验)。例:数据 1011001 有 4 个 1,偶校验码字是 10110010,奇校验码字是 10110011。

它只能发现奇数个比特出错:偶校验码字 10110010 若第 1、3 位同时出错,变成 00010010,1 的个数仍是偶数(2 个),接收方查不出来。也不能纠错——知道错了,不知道错在哪一位。漏检率约 50%(错奇数位和偶数位的情况大致各占一半)。

拓展 二维奇偶校验:把数据排成矩阵,每行、每列各加一个校验位。一位错时行、列校验各有一个出错,交叉点就是错位,能纠正 1 位错。

循环冗余校验 CRC(考计算)

补课:模 2 运算与多项式

模 2 加减就是异或:0 ⊕ 0 = 0,0 ⊕ 1 = 1,1 ⊕ 0 = 1,1 ⊕ 1 = 0,不进位、不借位,加和减一样。比特串和多项式一一对应:从左到右是从高次到 0 次的系数。1101 ↔ x3 + x2 + 1(x 的一次项系数是 0);10011 ↔ x4 + x + 1。多项式的最高次 r 叫它的阶,对应的比特串有 r + 1 位。

收发双方事先约定一个生成多项式 G(x),阶为 r。CRC 的想法是:在数据后面接上 r 位,使整个码字恰好能被 G(x) “模 2 整除”。

  1. 发送方:在数据后面补 r 个 0,用模 2 除法除以生成多项式(每一步看当前最高位:是 1 就商 1、异或 G;是 0 就商 0、不异或;然后落下一位),得到 r 位余数,这就是帧检验序列 FCS,把它接在数据后面一起发送。
  2. 接收方:把收到的整串直接除以生成多项式,余数全 0 就认为没出错,否则丢弃这一帧。
例 1CRC
数据为 101001,生成多项式 G(x) = x3 + x2 + 1,求 FCS 和实际发送的比特串。
跟我算

G(x) 写成 1101,r = 3。数据后补 3 个 0:101001000。模 2 除以 1101(商依次为 110101):

101001000     ← 数据 101001 后面补 3 个 0
1101          ← 首位是 1:商 1,异或 1101
────
 1110         ← 余 0111,去掉首位 0,再落下一位 0
 1101         ← 首位 1:商 1,异或
 ────
  0111        ← 余 0011 去掉首位,落下 1;首位 0:商 0,不异或
   1110       ← 再落下一位 0
   1101       ← 商 1,异或
   ────
    0110      ← 余 0011 去掉首位,落下 0;首位 0:商 0
     1100     ← 再落下一位 0
     1101     ← 商 1,异或
     ────
      001     ← 余数 = FCS(3 位)

FCS = 001,发送 101001001。接收方用 101001001 除以 1101,余数 000,判为无错。下面的小工具可以看到每一步。

例 2CRC
数据 11010110,生成多项式 G(x) = x4 + x + 1。求发送的比特串;若传输中第 4 位(从左数)出错,接收方能否发现?
跟我算

G = 10011,r = 4,被除数 110101100000(12 位)。只有“当前最高位是 1”时才异或,只需做三次:

  1. 前 5 位 11010 ⊕ 10011 = 01001;去掉首位 0,落下一位 1 → 10011。
  2. 10011 ⊕ 10011 = 00000;接下来落下的几位首位都是 0(商 0),直到凑出 10000。
  3. 10000 ⊕ 10011 = 00011;去掉首位、落下最后一位 0 → 0110,首位 0,结束。

余数 FCS = 0110,发送 110101100110。接收方把第 4 位翻转后的 110001100110 除以 10011,余数不为 0,能发现错误。验证时也可以只看结论:G(x) 至少有两项,就能检出所有单个比特错误。

2023-37计网
若甲向乙发送数据时采用 CRC 校验,生成多项式为 G(x) = x4 + x + 1(即 G = 10011),则乙接收到下列比特串时,可以断定其在传输过程中未发生错误的是( )。
  • A. 101110000
  • B. 101110100
  • C. 101111000
  • D. 101111100
展开解析

考点3.2 CRC 校验

D接收方把收到的整串直接用模 2 除法除以 G = 10011,余数全 0 才认为没出错。

  1. D:101111100 的前 5 位 10111 ⊕ 10011 = 00100,得 001001100;再从第 3 位起 10011 ⊕ 10011 = 00000,余数 0000。
  2. 其余三项按同样方法算,余数都不为 0(见下)。
  3. 小技巧:四个选项只有第 6、7 位不同。算出 A 的余数 1100 后,B 比 A 多一个 x2,余数再异或 0100 得 1000;C 多一个 x3,异或 1000 得 0100;D 两者都多,1100 ⊕ 1100 = 0000。
  • A 错101110000 余数 1100。
  • B 错101110100 余数 1000。
  • C 错101111000 余数 0100。
  • D 对101111100 余数 0000。

发送方补 r 个 0 再除,余数作 FCS;接收方不补 0,整串直接除,看余数是否全 0。

生成多项式为什么首尾都是 1
  • 最高位是 1:它决定了阶 r,也就是 FCS 的位数。
  • 最低位(常数项)是 1:若 G(x) 没有常数项,比如 1110(x3 + x2 + x),算出的余数最低位永远是 0,等于白白浪费一位;更重要的是它会漏掉一些短的突发错误——例如连续 3 位出错 0000111000,恰好能被 1110 整除,接收方查不出来。含常数项的 r 阶多项式能检出所有长度 ≤ r 的突发错误(连续出错的一段),1101 就能检出上面这个错误。

实际使用的生成多项式(以太网用 CRC-32,PPP 用 CRC-CCITT)检错能力更强:在规定的帧长范围内,所有 1 位错、2 位错和长度 ≤ r 的突发错误都能检出;其中含 (x + 1) 因子的(CRC-16、CRC-CCITT)还能检出所有奇数个比特的错误。

拓展 常见的标准生成多项式:CRC-16 = x16 + x15 + x2 + 1;CRC-CCITT = x16 + x12 + x5 + 1(HDLC、PPP);CRC-32(以太网)是 32 阶、15 项的多项式。它们首尾都是 1。CRC-16、CRC-CCITT 各有 4 项(偶数项),能被 (x + 1) 整除,所以能检出所有奇数个比特的错误;CRC-32 有 15 项,不含 (x + 1) 因子,它靠更高的阶数保证检错能力。考试不要求背,知道“阶数 = FCS 位数”即可。

CRC 为什么查错能力强:把出错看成在发送的码字上“异或”了一个错误串 E。接收方算的是“(码字 ⊕ E) 除以 G 的余数”,码字本来能被 G 整除,所以余数就是“E 除以 G 的余数”——只要 E 不是 G 的倍数,余数就不为 0,错误就被发现。G 选得好,常见的错误(一位错、两位错、奇数个错、短的突发错误)都不是它的倍数。反过来,如果错误恰好是 G 的倍数,CRC 就会漏检,只是概率极小(r 位 CRC 约为 1/2r)。

CRC 在数据链路层只能做到“无差错接受”:凡是接收的帧都认为没有传输差错(概率极接近 1),有差错的帧直接丢弃。它不等于可靠传输——丢了的帧怎么补回来,要靠确认和重传。CRC 也不能纠错:余数不为 0 只说明有错,不说明错在哪里。

海明码与码距

  • 海明距离(码距):两个等长码字对应位不同的个数,如 10110 与 11100 的距离是 2。一个编码集合的码距是其中任意两个合法码字距离的最小值 d。
  • 要检测 t 位错,需要 d ≥ t + 1;要纠正 t 位错,需要 d ≥ 2t + 1。反过来:码距为 d 的编码最多能检测 d − 1 位错、纠正 ⌊(d − 1) / 2⌋ 位错(2025-34)。
码距 d = 3AA 错 1 位纠成 AA 错 2 位纠成 BB错 1、2 位都落在“不是码字”的点上 → 能检出 d − 1 = 2 位错 1 位时离 A 最近 → 能纠正 ⌊(d − 1)/2⌋ = 1 位码距 d = 4AA 错 1 位纠成 AA 错 2 位离 A、B 一样近A 错 3 位纠成 BB错 1~3 位都能检出(d − 1 = 3)错 2 位时离 A、B 一样近 → 只能纠 1 位
图 3-5 码距决定检错、纠错能力。A、B 是两个合法码字,中间的点是“错了几位”后得到的非法码字。检错只要“没错到另一个合法码字上”;纠错是“把收到的码字改成离它最近的合法码字”,所以要离 A 比离 B 更近。

海明码能纠正 1 位错(码距 3):数据 k 位、校验位 r 位,要满足 2r ≥ k + r + 1——r 位校验能组合出 2r 种结果,要能指出“哪一位错了(k + r 种)”或“没错(1 种)”。所以 4 位数据要 3 位校验,8 位数据要 4 位,16 位数据要 5 位。海明码怎么编,分四步(偶校验):

  1. 定校验位数 r:取满足 2r ≥ k + r + 1 的最小 r。
  2. 排位置:从 1 开始给各位编号,1、2、4、8……(2 的幂)号位放校验位 P1、P2、P3……,其余位置依次放数据位。
  3. 分组求校验位:把每个位置号写成二进制。第 i 个校验位负责“位置号二进制第 i 位为 1”的所有位,让这一组里 1 的个数为偶数(即 P = 组内数据位的异或)。
  4. 接收方纠错:每一组重新做异或得到 Si(含校验位本身),把 …S2S1 拼成二进制数:为 0 表示无错,否则它就是出错位的位置号,把那一位取反即可。
例海明码
数据 1010 采用海明码(偶校验),求编码后的码字。若接收方收到 1011000,哪一位出错?
跟我算

k = 4:23 = 8 ≥ 4 + 3 + 1,r = 3。7 位的排列:位置 1、2、4 放校验位,3、5、6、7 放数据 1、0、1、0。

位置1234567
二进制001010011100101110111
内容P1P2D1 = 1P3D2 = 0D3 = 1D4 = 0

P1 管最低位为 1 的位置 3、5、7:1 ⊕ 0 ⊕ 0 = 1;P2 管 3、6、7:1 ⊕ 1 ⊕ 0 = 0;P3 管 5、6、7:0 ⊕ 1 ⊕ 0 = 1。码字(位置 1~7)= 1011010。

收到 1011000:S1 = 位 1、3、5、7 = 1 ⊕ 1 ⊕ 0 ⊕ 0 = 0;S2 = 位 2、3、6、7 = 0 ⊕ 1 ⊕ 0 ⊕ 0 = 1;S3 = 位 4、5、6、7 = 1 ⊕ 0 ⊕ 0 ⊕ 0 = 1。S3S2S1 = 110 = 6,第 6 位出错,取反得 1011010,数据 1010。

更快的求校正子方法:把所有为 1 的位置号做异或。1011000 中为 1 的位置是 1、3、4,1 ⊕ 3 ⊕ 4 = 001 ⊕ 011 ⊕ 100 = 110 = 6。

例海明码 · 8 位
数据 10011010(8 位)用海明码(偶校验)编码。若接收时第 9 位出错,接收方怎样发现并改正?
跟我算

r:24 = 16 ≥ 8 + 4 + 1 = 13,r = 4,码长 12。校验位在位置 1、2、4、8,数据依次放在 3、5、6、7、9、10、11、12:

位置123456789101112
内容P1P21P3001P41010
结果011100101010
  • P1 管位置号最低位为 1 的 3、5、7、9、11:1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 0。
  • P2 管 3、6、7、10、11:1 ⊕ 0 ⊕ 1 ⊕ 0 ⊕ 1 = 1。
  • P3 管 5、6、7、12:0 ⊕ 0 ⊕ 1 ⊕ 0 = 1。
  • P4 管 9、10、11、12:1 ⊕ 0 ⊕ 1 ⊕ 0 = 0。

码字 = 0111 0010 1010。第 9 位出错后,含第 9 位的组是 S1(9 = 1001 的最低位)和 S4(最高位),这两组的异或都变成 1,S4S3S2S1 = 1001 = 9,把第 9 位取反即可。

2025-34计网
某差错编码的编码集为 { 10011010,01011100,11110000,00001111 },其检错和纠错能力是( )。
  • A. 可以检测不超过 2 位错,检错率 100%;可纠正不超过 1 位错
  • B. 可以检测不超过 2 位错,检错率 100%;可纠正不超过 2 位错
  • C. 可以检测不超过 3 位错,检错率 100%;可纠正不超过 1 位错
  • D. 可以检测不超过 3 位错,检错率 100%;可纠正不超过 2 位错
展开解析

考点3.2 海明距离与检错、纠错能力

C编码集的检错、纠错能力由最小海明距离 d 决定:能检测 d − 1 位错,能纠正 ⌊(d − 1) / 2⌋ 位错。

  1. 两两比较对应位:10011010 与 01011100、11110000、00001111 的距离都是 4;01011100 与 11110000、00001111 的距离都是 4;11110000 与 00001111 的距离是 8。
  2. 最小距离 d = 4。
  3. 检错:4 − 1 = 3 位;纠错:⌊3 / 2⌋ = 1 位。
  • A 错检错能力少算了:d = 4 能保证检测 3 位错。
  • B 错检错少算;纠正 2 位错需要 d ≥ 5。
  • C 对检 3 纠 1。
  • D 错纠正 2 位错需要 d ≥ 2 × 2 + 1 = 5,这里 d = 4。

检 t 位:d ≥ t + 1;纠 t 位:d ≥ 2t + 1。算距离一定取所有码字对中的最小值。

海明码的码距是 3,所以只能纠 1 位错(或检 2 位错),不能同时做到。计组的“校验码”一节考的也是这套方法。

海明码的三个细节
  • 校正子指向校验位:S 的值是 1、2、4……时,错的是那个校验位本身,数据位没错,数据照收即可。
  • 校正子“超界”:码长小于 2r − 1 时,S 可能算出一个不存在的位置号。例如 3 位数据配 3 位校验(23 ≥ 3 + 3 + 1),码长 6,却算出 S = 7——说明发生了多位错,海明码纠不了。反过来,2 位错有时会被“纠”到一个错误的位置上,这正是码距 3 的局限。
  • 扩展海明码:再加一位对整个码字的总奇偶校验位,码距变为 4,就能同时纠正 1 位错并检测 2 位错(S ≠ 0 而总校验通过 → 2 位错,只报错不纠)。一般地,要同时检测 c 位错、纠正 t 位错(c > t),需要 d ≥ c + t + 1。
真题怎么考

2023-37 给生成多项式和四个比特串,问哪个没出错——逐个模 2 除,余数为 0 的就是;四个选项只差几位时,可以利用“余数可叠加”只算一个再推其余(见 2023-37 的讲解)。2025-34 给一个编码集,先两两求距离取最小值 d,再套 d − 1、⌊(d − 1)/2⌋。可能的变化:求 FCS;k 位数据要几位海明校验位;由校正子找错位;奇偶校验能否检出几位错。

易错辨析
  • 补 0 的个数 = 生成多项式的阶 r,不是比特串的位数 r + 1。
  • 模 2 除法里“商”的每一位只看当前最高位是 0 还是 1,不比较大小。
  • CRC 发现错误后只是丢弃,不纠错、不重传(重传是 3.3 的事);以太网就只检错不重传。
  • 码距看的是最小距离;检错 d − 1、纠错 ⌊(d − 1)/2⌋,别把两个式子套反。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2023-37 改
采用 CRC 校验,生成多项式 G(x) = x3 + x2 + 1,接收方收到下列比特串,可以断定未发生错误的是( )。
  • A. 1011001110
  • B. 1011001100
  • C. 1011001010
  • D. 1011001011
展开解析

A整串除以 1101:A 余数 000,B 余数 010,C 余数 100,D 余数 101。只有 A 余数为 0。

  • A 对对:1011001110 除以 1101 余数 000。
  • B 错1011001100 除以 1101 余数 010 ≠ 000:它与 A 只差 x¹ 那一位,余数也正好差 x¹ 除以 G 的余数 010。
  • C 错1011001010 余数 100 ≠ 000:与 A 只差 x² 那一位,余数差 100。
  • D 错1011001011 余数 101 ≠ 000:与 A 差 x² 和 x⁰ 两位,余数差 100 ⊕ 001 = 101。

变化点:生成多项式换成 3 次,余数 3 位;方法不变:整串直接除,余数全 0 才无错。

变式计网由 2025-34 改
某差错编码的编码集为 {0000000,1110000,0001111,1111111},其检错和纠错能力是( )。
  • A. 可检测 2 位错,可纠正 1 位错
  • B. 可检测 3 位错,可纠正 1 位错
  • C. 可检测 2 位错,不能纠错
  • D. 可检测 3 位错,可纠正 2 位错
展开解析

A最小海明距离为 3(如 0000000 与 1110000),检错 d − 1 = 2 位,纠错 ⌊(3 − 1)/2⌋ = 1 位。

  • A 对对:最小距离 3,检 2 纠 1。
  • B 错检 3 位错需要 d ≥ 4;这里最小距离只有 3(0000000 与 1110000、0001111 与 1111111)。
  • C 错d = 3 ≥ 2 × 1 + 1,能纠正 1 位错,不是“不能纠错”。
  • D 错纠 2 位错需要 d ≥ 5、检 3 位错需要 d ≥ 4,最小距离 3 两项都达不到。

变化点:换一组码字,距离变成 3。先两两算距离取最小。

变式计网由 2025-34 改
对 16 位数据使用海明码(能纠正 1 位错),至少需要的校验位数是( )。
  • A. 4
  • B. 5
  • C. 6
  • D. 16
展开解析

B2r ≥ k + r + 1:r = 5 时 32 ≥ 16 + 5 + 1 = 22 成立;r = 4 时 16 < 21。

  • A 错r = 4 时 2⁴ = 16 < 16 + 4 + 1 = 21,不满足 2ʳ ≥ k + r + 1。
  • B 对对:r = 5 时 32 ≥ 22。
  • C 错r = 6 也满足,但题目问“至少”,r = 5 已经满足 32 ≥ 22。
  • D 错16 是数据位数,把数据位数当成了校验位数。

变化点:由距离换成海明码校验位数。

变式计网考纲补充(尚无真题)
采用偶校验的码字在传输中有 2 位同时出错,则接收方( )。
  • A. 一定能检测出错误
  • B. 一定检测不出错误
  • C. 能检测出错误并纠正
  • D. 能否检测出取决于出错位置
展开解析

B两位同时翻转,1 的个数的奇偶性不变,校验照样通过。奇偶校验只能检出奇数个比特的错误,也不能纠错。

  • A 错两位同时翻转后 1 的个数的奇偶性不变,偶校验照样通过,检测不出来。
  • B 对对:奇偶校验只能检出奇数个比特的错误。
  • C 错奇偶校验只有 1 位冗余,只能发现奇数个错,不能纠正任何错误。
  • D 错与出错位置无关:任意两位同时翻转,奇偶性都不变,一定检测不出。

考点:3.2 节“奇偶校验”。

变式计网考纲补充(尚无真题)
16 位数据用海明码纠正 1 位错,至少需要的校验位数是( )。
  • A. 4
  • B. 6
  • C. 3
  • D. 5
展开解析

D2r ≥ 16 + r + 1:r = 4 时 16 < 21,不够;r = 5 时 32 ≥ 22,满足。

  • A 错r = 4 时 2⁴ = 16 < 16 + 4 + 1 = 21,不够。
  • B 错r = 6 满足但不是最少;r = 5 时 32 ≥ 22 已经满足。
  • C 错r = 3 时 2³ = 8 < 16 + 3 + 1 = 20,远远不够。
  • D 对对:r = 5。

考点:3.2 节“海明码与码距”。

变式计网考纲补充(尚无真题)
CRC 的生成多项式 G(x) = x5 + x4 + x2 + 1,则帧检验序列 FCS 的位数是( )。
  • A. 5
  • B. 6
  • C. 4
  • D. 3
展开解析

AFCS 的位数等于生成多项式的阶 r = 5(比特串 110101 有 6 位,但余数只有 5 位),发送方在数据后补 5 个 0 再做模 2 除法。

  • A 对对:FCS 位数等于生成多项式的最高次 5。
  • B 错6 是比特串 110101 的位数;余数比除数少一位,FCS 位数 = 最高次 5。
  • C 错4 是 G(x) 的项数(x⁵、x⁴、x²、1);FCS 位数看最高次,不看有几项。
  • D 错3 是 G(x) 中除最高次外的项数(x⁴、x²、1);FCS 位数等于最高次 5。

考点:3.2 节“循环冗余校验 CRC”。

3.3可靠传输:停等、后退 N 帧(GBN)、选择重传(SR)

★★★ 高频选择题综合题

接收方的缓冲区有限,发送方发得太快会把它“淹没”,所以要流量控制;帧可能出错被丢弃,所以要可靠传输:接收方收到正确的帧就回一个确认(ACK),发送方每发一帧就启动一个超时计时器,到时没收到确认就重传。这种机制叫自动重传请求 ARQ。三种协议都用滑动窗口来同时实现流量控制和可靠传输:

  • 发送窗口:发送方在没收到确认时最多能连续发出的帧数;收到确认,窗口向前滑动。
  • 接收窗口:接收方允许接收的帧的序号范围,落在窗口外的帧直接丢弃。只有收到序号落在接收窗口内的帧,接收窗口才会滑动。
停止—等待后退 N 帧 GBN选择重传 SR
发送窗口11 < WT ≤ 2n − 1WT + WR ≤ 2n;收发窗口相等时 WT = WR ≤ 2n−1(两者也可以不等,如 2019-35:n = 3、WT = 5,则 WR ≤ 3)
接收窗口11(只收按序到达的帧)1 < WR ≤ WT(比发送窗口大没有意义),最常见 WR = WT = 2n−1
确认方式每帧确认累积确认:收到 ACKk 表示 k 及以前的帧都收到了(本讲义按“确认号 = 已收到的最后一帧”;有的题目用“确认号 = 期望的下一帧”,以题目为准)对每个正确收到的帧单独确认
失序的帧—丢弃,重发期间重复确认最后一个按序收到的帧在窗口内就先缓存,等缺的帧到了一起交给上层
超时后重传重传这一帧重传出错帧以及它之后已发出的所有帧只重传超时的那一帧
序号位数1 位就够n 位序号,窗口不能超过上面的上限,否则新旧帧的序号会混淆
计时器1 个通常只给最早的已发未确认帧计时(它一超时就从它起全部重发)每个已发未确认的帧各一个
接收方缓存1 帧1 帧(失序帧不缓存)WR 帧
适合的信道误码率低、时延小(如短距离链路)误码率低、时延大,需要高吞吐误码率高、时延大(重传代价大)

停止—等待协议:出错、丢失、迟到时怎么办

停等协议每发一帧就停下来等确认。发送方发完一帧后保留它的副本并启动超时计时器,可能遇到四种情况:

发送方 A接收方 B① 正常DATA 0ACK 0A 删除副本,发下一帧② 数据帧丢失(或出错被丢弃)✕DATA 1超时,重传副本DATA 1ACK 1③ 确认帧丢失DATA 0✕ACK 0超时,重传 DATA 0DATA 0B:序号重复 → 丢弃,但要再回一次确认ACK 0④ 确认帧迟到DATA 1ACK 1 还在路上,A 已超时,重传 DATA 1DATA 1(重复)B 丢弃重复帧,再回 ACK 1迟到的 ACK 1 到达A 收下,发下一帧 DATA 0第二个 ACK 1 到达A 认出是重复确认,直接丢弃
图 3-6 停等协议的四种情况。为了认出重复帧和重复确认,数据帧和确认帧都要编号;每次只有一帧在途,所以 1 位序号(0、1 交替)就够了。
情况发生了什么怎么处理
正常数据帧无错到达,ACK 按时回来发送方删除副本,发下一帧
数据帧出错或丢失接收方检出错误就丢弃(或者根本没收到),不回确认发送方计时器超时,重传副本
确认帧丢失接收方其实收到了,但 ACK 在路上丢了发送方超时重传;接收方收到的是重复帧,靠序号认出来,丢弃重复帧,但要再回一次确认(否则发送方会一直重传)
确认帧迟到ACK 在超时之后才到,发送方已经重传过发送方收到重复的确认,直接丢弃

超时时间应略大于“帧的发送时间 + 往返时间”。停等协议简单,但发一帧就要空等一个往返时间,信道利用率低,所以有了连续发多帧的 GBN 和 SR。

GBN 与 SR:丢了一帧以后

GBN:超时后 2、3、4 全部重发发送方接收方0收 0,回 ACK01收 1,回 ACK12✗2 丢失,没收到33 失序:丢弃44 失序:丢弃2 超时234收 2、3、4按序交付SR:超时后只重发 2发送方接收方0收 0,回 ACK01收 1,回 ACK12✗2 丢失,没收到33:缓存,回 ACK344:缓存,回 ACK42 超时2收 2,回 ACK2连同缓存的 3、4一起交付
图 3-7 GBN 与 SR 处理丢帧的区别。GBN 的接收方只认按序到达的帧,3、4 号即使完好也被丢弃,所以发送方要从 2 号起全部重发;SR 的接收方把 3、4 号缓存起来并单独确认,发送方只需重发 2 号。
  • GBN:接收方只有一个接收窗口位置,只按序接收;失序到达的帧一律丢弃,并重复发送对最后一个按序帧的确认。好处是接收方简单、不需要大缓存;坏处是一帧出错,后面已发出的帧全部白发——信道误码率高时效率反而可能不如停等。
  • SR:接收方为窗口内的每个序号准备缓存,失序但正确的帧先收下;发送方为每个已发未确认的帧单独计时,谁超时重传谁。也可以用否认帧 NAK 让发送方立即重传某一帧。代价是收发双方都要更多缓存和更复杂的控制。

跟我走一遍:GBN 的发送窗口怎样滑动(3 位序号,为了画得清楚取窗口 4):

新一轮① 发出 0 ~ 30123456701窗口 0 ~ 3 用满,等确认② 收到 ACK10123456701累积确认:0、1 都到了;窗口滑到 2 ~ 5,可发 4、5③ 2 号超时0123456701发出 4、5 后 2 号超时:窗口内已发的 2 ~ 5 全部重发④ 收到 ACK50123456701窗口滑到 6、7、0、1——序号循环使用,0、1 是新一轮
图 3-8 GBN 发送窗口逐步滑动。灰:已确认;蓝:已发送未确认;绿:可以发送;白:不允许发送;红:超时重发。窗口后沿只在收到确认时前移;一个累积确认可以让后沿一次跳好几格。

SR 的接收窗口怎样动(3 位序号,收发窗口都为 4):接收窗口开始是 0 ~ 3。先到了 1、2 号帧,在窗口内但不是按序的,先缓存、各自回确认,窗口不动;0 号帧到达后,0、1、2 一起交给上层,窗口滑到 3 ~ 6。这时若来了一个 7 号帧(窗口外),丢弃;若来了一个重复的 1 号帧(落在刚刚过去的旧窗口里),也丢弃,但要再回一次 ACK1——说明发送方没收到上次的确认。

2009-35计网
数据链路层采用后退 N 帧(GBN)协议,发送方已经发送了编号为 0~7 的帧。当计时器超时时,若发送方只收到 0、2、3 号帧的确认,则发送方需要重发的帧数是( )。
  • A. 2
  • B. 3
  • C. 4
  • D. 5
展开解析

考点3.3 GBN 的累积确认

CGBN 采用累积确认:收到 3 号帧的确认,说明 0~3 号帧都已正确收到。1 号帧的确认没收到,只说明那个确认帧在返回途中丢了,并不影响。

  1. 已确认:0、1、2、3。
  2. 未确认:4、5、6、7。超时后 GBN 要重发未确认的第一帧及其后已发出的所有帧。
  3. 重发 4、5、6、7,共 4 帧。
  • A 错2:少算了,4~7 都没有被确认。
  • B 错3 帧不够:ACK3 累积确认了 0 ~ 3 号,未确认的是 4、5、6、7 四帧;GBN 超时后要从 4 号起把已发出的 4 帧全部重发,只发 3 帧还漏一帧。
  • C 对4 帧。
  • D 错5:把 1 号帧也算进去重发,但 ACK3 已经说明 1 号收到了。

GBN 看“最大的那个确认号”:它之前的全都收到了,它之后的全部重发。

2011-35计网
数据链路层采用选择重传协议(SR)传输数据,发送方已发送了 0~3 号数据帧,现已收到 1 号帧的确认,而 0、2 号帧依次超时,则此时需要重传的帧数是( )。
  • A. 1
  • B. 2
  • C. 3
  • D. 4
展开解析

考点3.3 SR 的逐个确认与重传

BSR 对每个帧单独确认,确认没有累积作用;也只重传超时的那一帧。

  1. 收到 ACK1:只说明 1 号收到了,不能说明 0 号收到了。
  2. 0、2 号超时 → 重传 0、2。
  3. 3 号的计时器还没到时,暂不重传。共 2 帧。
  • A 错1:若把 ACK1 当成累积确认(认为 0 号也收到了),就只重传 2 号。SR 的确认不是累积的。
  • B 对0 和 2 两帧。
  • C 错3:把没超时的 3 号也重传了。
  • D 错4:全部重发,不符合 SR“只重传超时帧”的规则。

SR:谁超时重传谁。GBN:从超时的那帧起全部重传。

两道题的对照:GBN 是累积确认,收到 ACK3 就说明 0 ~ 3 都到了(ACK1 丢了也没关系),重发 4 ~ 7 共 4 帧;SR 是逐帧确认,ACK1 只说明 1 号到了,谁超时就只重发谁(0、2 号,共 2 帧)。

接收方收到的帧GBN 接收方SR 接收方
正确、按序(正是期望的那一帧)交付上层,确认,期望号 + 1交付上层(连同缓存里接得上的帧),确认,接收窗口滑动
正确,但失序(在接收窗口内)丢弃,重发对最后一个按序帧的确认缓存,单独确认
正确,但是重复帧(序号在窗口之前)丢弃,重发确认丢弃,再回一次该帧的确认
序号在接收窗口之后丢弃丢弃
检测出差错丢弃,不确认丢弃;可以发 NAK 让发送方立即重传

拓展 考虑出错:若每帧出错(或丢失)的概率为 p,停等协议平均每帧要发 1 ÷ (1 − p) 次,利用率再乘 (1 − p)。后面“信道利用率”一节里 40% 的例子(停等,周期 100 ms)在 p = 0.1 时降为 0.9 × 40% = 36%。GBN 一出错要重发一串帧,信道误码率高时吃亏更大,这时 SR 的优势才明显。

窗口为什么有上限:画一个序号环

问题:序号用 n 位表示,只有 2n 个号,用完要循环使用。窗口如果太大,一个“重传的旧帧”可能和“新一轮的同号帧”撞在一起,接收方分不出来。用 n = 2(序号 0、1、2、3)看最清楚:

发送方接收方GBN,发送窗口 W = 4(= 2²,太大)0、1、2、3 四帧都到达接收方依次交付,下一个期望 0(新一轮)✕ACK 0 ~ ACK 3 全部丢失超时,重传旧的 0 号帧旧 0 号帧接收方正在等“0”,当成新帧收下——出错!GBN,发送窗口 W = 3(= 2² − 1)0、1、2 三帧都到达接收方下一个期望 3✕确认全部丢失重传旧 0 号帧不是 3:丢弃,并重发确认——正确
图 3-9 GBN 的发送窗口不能等于 2n。W = 2n 时,“全部收到”和“全部没收到”两种情况下接收方期望的都是同一个序号,接收方无法区分新旧帧。所以 WT ≤ 2n − 1。

SR 的接收窗口也大于 1:接收方收完一批后,接收窗口整体前移。若前移后的新窗口和发送方可能重传的旧帧序号重叠,就会把旧帧当新帧收下。不重叠的条件是 WT + WR ≤ 2n:

发送窗口 = 接收窗口 = 3(3 + 3 > 4)0123旧窗口与接收方新窗口重叠于 0、1:重传的旧 0 号帧会被当成新帧发送窗口 = 接收窗口 = 2(2 + 2 = 4)0123旧窗口 {0, 1} 与新窗口 {2, 3} 不重叠:旧帧一定被认出蓝:发送方已发出、确认全部丢失的旧帧(可能被重传) 绿:接收方收完后前移的新接收窗口 红:两者重叠
图 3-10 SR 的序号环(n = 2)。发送方发出 WT 帧全部到达,接收窗口前移 WT 格;新窗口的 WR 个序号不能碰到旧的 WT 个序号,所以 WT + WR ≤ 2n。收发窗口相等时各不超过 2n−1。
2019-35计网
对于滑动窗口协议,如果分组序号采用 3 比特编号,发送窗口大小为 5,则接收窗口最大是( )。
  • A. 2
  • B. 3
  • C. 4
  • D. 5
展开解析

考点3.3 滑动窗口的大小限制

Bn 位序号共 2n 个号。为了不让新旧帧的序号混淆,要求 WT + WR ≤ 2n。

  1. n = 3,序号共 8 个。
  2. WR ≤ 8 − 5 = 3。
  • A 错2:5 + 2 = 7 ≤ 8,满足 W_T + W_R ≤ 2³;但 W_R = 3 时 5 + 3 = 8 也满足,题目问的是最大值。
  • B 对3。
  • C 错4:5 + 4 = 9 > 8,发送方的旧帧重传时接收方可能误当成新帧。
  • D 错5:5 + 5 = 10 > 8。

WT + WR ≤ 2n。GBN 是 WR = 1 的特例(WT ≤ 2n − 1)。

2024-37计网
主机甲通过选择重传(SR)滑动窗口协议向主机乙发送帧的部分过程如下图所示。F 为数据帧,ACKx 为确认帧,x 是 3 比特的序号。乙只对正确接收的数据帧进行独立确认。发送窗口与接收窗口大小相同且均为最大值。甲在 t1 时刻和 t2 时刻发送的数据帧分别是( )。 主机甲主机乙F0F1F2F3ACK0ACK2ACK3t₁?F1 超时t₂?
  • A. F1、F3
  • B. F1、F4
  • C. F3、F1
  • D. F4、F1
展开解析

考点3.3 SR 的窗口滑动与重传

D3 位序号,SR 收发窗口相等时最大为 23−1 = 4。所以甲一开始连续发 F0~F3 后窗口已满,必须等确认。

  1. 图中乙回了 ACK0、ACK2、ACK3,没有 ACK1:F1 没有被正确接收(ACK3 在途中丢失)。
  2. t1:甲收到 ACK0,窗口下沿从 0 移到 1,窗口变成 1~4,于是可以发送新帧 F4。
  3. t2:F1 的计时器超时。SR 只重传超时的帧,发送 F1。这时收到的 ACK2 不能让窗口滑动,因为窗口下沿 F1 还没确认。
  • A 错F1、F3:t1 时 F1 还没超时,不会重发;F3 也不需要重发。
  • B 错F1、F4:两个时刻的顺序反了。
  • C 错F3、F1:t1 时 F3 刚发出不久,没有超时;窗口腾出位置后应发送新帧 F4。
  • D 对F4、F1。

收到确认 → 窗口下沿右移,腾出几个位置就发几个新帧;计时器超时 → SR 只重传这一帧。

2024-37 的思路:3 位序号、收发窗口相等且最大 → 窗口 = 23−1 = 4,甲一开始发 F0 ~ F3 正好用满窗口。t1 收到 ACK0,窗口后沿移到 1,可以发 F4;F1 一直没被确认,超时后在 t2 只重传 F1。

信道利用率与序号位数(每年几乎必考的计算)

发送一帧的时间 TD = 帧长 ÷ 速率; 一个发送周期 T = TD + RTT + TA(RTT = 2 × 单向传播时延,TA 是确认帧的发送时间,常忽略) 停等协议:U = TD ÷ T 滑动窗口(窗口 W):U = min(1, W × TD ÷ T)  实际数据率 = U × 信道速率 要让利用率达到 100%:W ≥ T ÷ TD;再由窗口上限求序号位数 n
一个周期 T = TD + RTT = 40 + 60 = 100 ms(第一个确认在这时回来)停等 W = 1帧 1空等 60 msU = 40%窗口 W = 2帧 1帧 2空等 20 msU = 80%窗口 W = 3帧 1帧 2帧 3U = 100%(W × 40 ≥ 100,发个不停)
图 3-11 窗口越大,等确认时“空着”的时间越少。发送方从发出第一帧到收到它的确认,要经过一个周期 T。这段时间里能发多少帧,取决于窗口 W;W × TD ≥ T 时,发送方在确认回来之前一直有帧可发,信道利用率达到 100%。
例跟我算
(1) 信道速率 100 kb/s,帧长 4000 bit,单向传播时延 30 ms,忽略确认帧,停等协议的信道利用率是多少?窗口为 2、3 时呢?
(2) 速率 1 Mb/s,帧长 1000 B,单向传播时延 20 ms,忽略确认帧。要使利用率达到 100%,窗口至少多大?用 GBN 和 SR(收发窗口相等)时,帧序号各至少几位?
跟我算

(1) TD = 4000 ÷ (100 × 103) = 0.04 s = 40 ms;RTT = 2 × 30 = 60 ms;周期 T = 40 + 60 = 100 ms。停等:U = 40 ÷ 100 = 40%。W = 2:2 × 40 ÷ 100 = 80%。W = 3:3 × 40 = 120 ≥ 100,100%(就是上图)。

(2) 单位换算:1000 B = 8000 bit;1 Mb/s = 106 b/s。TD = 8000 ÷ 106 = 8 ms;T = 8 + 40 = 48 ms;W ≥ 48 ÷ 8 = 6。GBN:2n − 1 ≥ 6 → n = 3;SR:2n−1 ≥ 6 → n = 4。

另一种写法:令 a = τ ÷ TD(单向传播时延与帧发送时间之比),忽略确认帧时停等协议的利用率 U = 1 ÷ (1 + 2a)。上例 a = 30 ÷ 40 = 0.75,U = 1 ÷ 2.5 = 40%。a 越大(链路越长、速率越高、帧越短),停等协议越吃亏——卫星链路上非用滑动窗口不可。

“帧序号至少几位”的解题三步
  1. 算 TD 和一个周期 T(注意单位:B × 8 变 bit;单向传播时延要乘 2;确认帧与数据帧等长时 TA = TD)。
  2. 按要求的利用率求窗口:W ≥ U × T ÷ TD,向上取整。“利用率最高”就是 U = 100%;帧长有范围时,取最短的帧(需要的窗口最大,2012-36)。
  3. 由窗口求 n:GBN 或一般的滑动窗口用 2n − 1 ≥ W;SR 用 2n−1 ≥ W。
2018-36计网
主机甲采用停—等协议向主机乙发送数据,数据传输速率是 3kbps,单向传播延时是 200ms,忽略确认帧的传输延时。当信道利用率等于 40% 时,数据帧的长度为( )。
  • A. 240 比特
  • B. 400 比特
  • C. 480 比特
  • D. 800 比特
展开解析

考点3.3 停等协议的信道利用率

D设帧长 x 比特。停等协议 U = TD ÷ (TD + RTT),忽略确认帧发送时间。

  1. TD = x ÷ 3000(秒),RTT = 2 × 200ms = 0.4s。
  2. TD ÷ (TD + 0.4) = 0.4 → 0.6TD = 0.16 → TD ≈ 0.267s。
  3. x = 0.267 × 3000 = 800 比特。验算:800 ÷ 3000 ≈ 0.267s,0.267 ÷ 0.667 = 40%。
  • A 错240 = 3000 × 0.2 × 0.4:周期只算了单程传播,还漏掉了帧自身的发送时间。
  • B 错400:周期写成 TD + 200ms,只算了单程传播。
  • C 错480 = 3000 × 0.4 × 0.4:周期漏掉了帧自身的发送时间,只剩 RTT。
  • D 对800 比特。

停等周期 = TD + 2 × 单向传播(+ 确认帧发送时间,题目说忽略就不加)。

2020-36计网
假设主机甲采用停—等协议向主机乙发送数据帧,数据帧长与确认帧长均为 1000B,数据传输速率是 10kbps,单向传播延时是 200ms,则甲的最大信道利用率为( )。
  • A. 80%
  • B. 66.7%
  • C. 44.4%
  • D. 40%
展开解析

考点3.3 停等协议的信道利用率

D题目说确认帧与数据帧等长,所以确认帧的发送时间不能忽略。

  1. 数据帧、确认帧的发送时间都是 1000 × 8 ÷ 10k = 800ms。
  2. 周期 = 800(发数据)+ 200(传过去)+ 800(发确认)+ 200(传回来)= 2000ms。
  3. U = 800 ÷ 2000 = 40%。
  • A 错80% = 800 ÷ 1000:周期只算了数据帧发送和单程传播。
  • B 错66.7% = 800 ÷ 1200:漏掉了确认帧的发送时间。
  • C 错44.4% = 800 ÷ 1800:少算了一个单程传播时延。
  • D 对40%。

周期四项:数据帧发送、去程传播、确认帧发送、回程传播。题目没说忽略就都要算。

2014-36计网
主机甲与主机乙之间使用后退 N 帧协议(GBN)传输数据,甲的发送窗口尺寸为 1000,数据帧长为 1000 字节,信道带宽为 100Mbps,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲乙之间的单向传播延迟是 50ms,则甲可以达到的最大平均数据传输速率约为( )。
  • A. 10Mbps
  • B. 20Mbps
  • C. 80Mbps
  • D. 100Mbps
展开解析

考点3.3 滑动窗口的实际数据率

C实际速率受两个上限约束:信道带宽,以及“一个周期最多发一个窗口的数据”。取两者中较小的。

  1. 一帧发送时间:1000 × 8 ÷ 100M = 80μs;一个窗口 1000 帧共发 80ms。
  2. 第一帧的确认要在 80μs + 100ms(RTT)≈ 100.08ms 后才回来。80ms < 100.08ms,窗口发完后要空等,受窗口限制。
  3. 速率 = 1000 × 1000 × 8bit ÷ 100.08ms ≈ 79.9Mbps ≈ 80Mbps,小于带宽 100Mbps。
  • A 错10:1MB ÷ 0.1s = 10MB/s,这是字节每秒,忘了乘 8。
  • B 错20 = 1000 × 1000B ÷ 50ms:周期只用了单程传播时延 50ms,而且算出的是字节每秒(20MB/s),又忘了乘 8。正确的周期是 RTT ≈ 100.08ms,速率约 80Mbps。
  • C 对约 80Mbps。
  • D 错100:带宽上限。只有窗口数据能填满整个周期时才能达到,这里窗口只能填满 80ms。

实际速率 = min(带宽,窗口数据量 ÷ 周期)。

2015-35计网
主机甲通过 128kbps 卫星链路,采用滑动窗口协议向主机乙发送数据,链路单向传播延迟为 250ms,帧长为 1000 字节。不考虑确认帧的开销,为使链路利用率不小于 80%,帧序号的比特数至少是( )。
  • A. 3
  • B. 4
  • C. 7
  • D. 8
展开解析

考点3.3 利用率与帧序号位数

B先由利用率求窗口,再由窗口求序号位数。

  1. TD = 1000 × 8 ÷ 128k = 62.5ms。
  2. 周期 = 62.5 + 250 × 2 = 562.5ms(不计确认帧)。
  3. W × 62.5 ÷ 562.5 ≥ 80% → W ≥ 7.2,取 8。
  4. 2n − 1 ≥ 8 → n = 4。(按 SR 的 2n−1 ≥ 8 也是 4。)
  • A 错3:窗口最多 7,利用率 7 × 62.5 ÷ 562.5 ≈ 77.8%,不到 80%。
  • B 对4 位。
  • C 错C 是 7 位:把算出的窗口下限 7.2 取成 7 当作了序号位数。窗口是帧数,位数要由 2ⁿ − 1 ≥ 8 求出,4 位就够。
  • D 错8:同样是把窗口大小 8 当成了位数。

卫星链路单向约 250ms,周期里要加 500ms。

2012-36计网
两台主机之间的数据链路层采用后退 N 帧协议(GBN)传输数据,数据传输速率为 16kbps,单向传播时延为 270ms,数据帧长度范围是 128~512 字节,接收方总是以与数据帧等长的帧进行确认。为使信道利用率达到最高,帧序号的比特数至少为( )。
  • A. 5
  • B. 4
  • C. 3
  • D. 2
展开解析

考点3.3 利用率与帧序号位数

B“信道利用率最高”要求发送方在收到第一帧确认前一直有帧可发。帧长可变时要按最短帧算:短帧发得快,同样的等待时间里要发更多帧,需要的窗口最大。

  1. 最短帧的发送时间 TD = 128 × 8 ÷ 16k = 64ms;确认帧与数据帧等长,也要 64ms。
  2. 一个周期:64 + 270 × 2 + 64 = 668ms。
  3. 窗口 W ≥ 668 ÷ 64 ≈ 10.4,取 11。
  4. GBN:2n − 1 ≥ 11 → n = 4(3 位只能到 7)。
  • A 错5:按 SR 的上限 2n−1 ≥ 11 才需要 5 位,本题是 GBN。
  • B 对4 位。
  • C 错3:用最长帧 512B 算(TD = 256ms,周期 1052ms,W ≥ 4.1 → 5,3 位够用)。但发短帧时窗口就不够了。
  • D 错2:2 位序号的 GBN 窗口最多 3。

帧长给范围:求窗口用最短帧。周期 = 数据帧发送 + 2 × 传播 + 确认帧发送。

2023-35计网
假设通过同一信道,数据链路层分别采用停等协议、GBN 协议和 SR 协议(发送窗口和接收窗口相等)传输数据,三个协议数据帧长相同,忽略确认帧长度,帧序号位数为 3 比特。若对应三个协议的发送方最大信道利用率分别是 U1、U2 和 U3,则 U1、U2 和 U3 满足的关系是( )。
  • A. U1 ≤ U2 ≤ U3
  • B. U1 ≤ U3 ≤ U2
  • C. U2 ≤ U3 ≤ U1
  • D. U3 ≤ U2 ≤ U1
展开解析

考点3.3 三种协议的窗口上限

B同一信道、同样帧长,利用率 U = min(1, W × TD ÷ 周期),只看窗口 W 能开多大。

  1. 停等:W = 1。
  2. GBN:W ≤ 23 − 1 = 7。
  3. SR(收发窗口相等):W ≤ 23−1 = 4。
  4. 窗口 1 ≤ 4 ≤ 7,所以 U1 ≤ U3 ≤ U2(信道很短时后两者都可能到 100%,所以用 ≤)。
  • A 错U2 ≤ U3:误以为 SR 窗口更大。收发窗口相等时 SR 最大窗口是 4,比 GBN 的 7 小。
  • B 对U1 ≤ U3 ≤ U2。
  • C 错停等协议窗口只有 1,U1 不可能最大。
  • D 错D 说 U3 ≤ U2 ≤ U1,让停等协议的利用率最大:可停等窗口只有 1,GBN、SR 的窗口 7、4 都比它大,D 把三者的顺序整个倒过来了。

3 位序号:停等 1,SR 4,GBN 7。SR 的优势是重传少,不是窗口大。

累积确认、捎带确认与综合题

  • 累积确认(GBN):一个确认可以同时确认多帧,确认帧丢了一两个也不要紧——后面更大的确认一到,前面的就都确认了。
  • 捎带确认:双方都有数据要发时,把确认放在自己发出的数据帧里一起带过去,省掉单独的确认帧(TCP 也这样做,5.5 节)。
  • 综合题 2017-47、2025-47(第 7 篇 t5)把 GBN / SR 的窗口、重传帧和信道利用率放在同一个情景里考,做法就是本节的三张表加“三步法”。
例综合
甲、乙之间的链路速率 1 Mb/s,单向传播时延 20 ms,数据帧长 500 B,忽略确认帧的发送时间。
(1) 若采用 3 位序号的 GBN,最大发送窗口是多少?此时最大信道利用率是多少?
(2) 要使信道利用率达到 100%,GBN 和 SR(收发窗口相等)的帧序号各至少几位?
(3) 3 位序号的 GBN,甲已发出 0 ~ 6 号帧,收到 ACK3 后 4 号帧超时,要重发哪些帧?若改用 SR,且只有 4 号帧丢失呢?
跟我做

(1) WT ≤ 23 − 1 = 7。TD = 500 × 8 ÷ 106 s = 4 ms;周期 T = 4 + 2 × 20 = 44 ms;U = 7 × 4 ÷ 44 ≈ 63.6%。

(2) W ≥ 44 ÷ 4 = 11。GBN:2n − 1 ≥ 11 → n = 4;SR:2n−1 ≥ 11 → n = 5。

(3) GBN 是累积确认,ACK3 说明 0 ~ 3 都到了;4 号超时,要重发 4 号及其后已发出的 4、5、6 共 3 帧。SR 只重发超时的 4 号 1 帧(5、6 号已被单独确认、在接收方缓存着)。

真题怎么考:3.3 的 10 道选择题只有 4 类
  • 重传哪些帧(2009-35、2011-35、2024-37):GBN 累积确认 → 从第一个没被确认的帧起全部重发;SR → 谁超时重发谁。
  • 窗口上限(2019-35、2023-35):GBN ≤ 2n − 1;SR WT + WR ≤ 2n。
  • 利用率 / 数据率(2014-36、2018-36、2020-36):先算 TD 和周期;确认帧等长时周期里要加 TA。
  • 序号位数(2012-36、2015-35):三步法;帧长有范围取最短。

这个方法失效的情形:题目说确认帧“与数据帧等长”就不能忽略 TA(2012-36、2020-36);问的是“发送方最大利用率”还是“实际数据率”(2014-36 乘了带宽)要看清。

易错辨析
  • 周期里的传播时延是往返的:单向时延要乘 2。
  • GBN 的接收窗口是 1,不是 W;SR 的“2n−1”只在收发窗口相等时成立。
  • 停等协议也是一种滑动窗口协议(窗口为 1),1 位序号就够。
  • GBN 的确认号有两种约定(“已收到的最后一帧”或“期望的下一帧”),做题时看题目说明。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2012-36 改
GBN 协议,数据传输速率 64kbps,单向传播时延 270ms,数据帧长 128~512B,确认帧与数据帧等长。为使信道利用率达到最高,帧序号至少( )位。
  • A. 4
  • B. 5
  • C. 6
  • D. 7
展开解析

C按最短帧:TD = 1024 ÷ 64k = 16ms;周期 = 16 + 540 + 16 = 572ms;W ≥ 572 ÷ 16 = 35.75,取 36;2n − 1 ≥ 36 → n = 6。

  • A 错4 位是原题 16kbps 时的答案(W ≥ 11);速率提高到 64kbps 后最短帧只要 16ms,要 W ≥ 36。
  • B 错5 位时 GBN 窗口最多 2⁵ − 1 = 31 < 36,发完 31 帧还得空等确认。
  • C 对对:2⁶ − 1 = 63 ≥ 36。
  • D 错7 位是按 SR 的 2ⁿ⁻¹ ≥ 36 算的;本题是 GBN,2ⁿ − 1 ≥ 36 时 6 位就够。

变化点:速率提高 4 倍,发送时间缩短,同样的等待时间里要发更多帧,窗口和序号位数都变大。

变式计网由 2015-35 改
主机甲通过 256kbps 卫星链路用滑动窗口协议发送数据,单向传播时延 250ms,帧长 1000B,不考虑确认帧开销。为使链路利用率不小于 80%,帧序号至少( )位。
  • A. 3
  • B. 5
  • C. 7
  • D. 4
展开解析

DTD = 8000 ÷ 256k = 31.25ms;W ≥ 0.8 × (31.25 + 500) ÷ 31.25 = 13.6,取 14;2n − 1 ≥ 14 → n = 4。

  • A 错3 位时窗口最多 7:7 × 31.25 ÷ 531.25 ≈ 41%,不到 80%。
  • B 错5 位够用但不是“至少”:4 位时窗口可到 15 ≥ 14。
  • C 错7 位远多于需要;位数由 2ⁿ − 1 ≥ 14 决定,4 位即可(就算按 SR 的 2ⁿ⁻¹ ≥ 14 也只要 5 位)。
  • D 对对:W ≥ 13.6 取 14,2⁴ − 1 = 15 ≥ 14。

变化点:速率翻倍,窗口从 8 变 14,位数仍是 4。

变式计网由 2020-36 改
停等协议,数据帧长 1000B,确认帧长 100B,数据传输速率 10kbps,单向传播时延 200ms,则最大信道利用率是( )。
  • A. 62.5%
  • B. 40%
  • C. 66.7%
  • D. 80%
展开解析

A数据帧 800ms,确认帧 80ms,周期 = 800 + 200 + 80 + 200 = 1280ms,U = 800 ÷ 1280 = 62.5%。

  • A 对对:800 ÷ (800 + 200 + 80 + 200) = 62.5%。
  • B 错40% 是原题 2020-36(确认帧也是 1000B、要 800ms)的结果;确认帧改成 100B 后只要 80ms。
  • C 错66.7% = 800 ÷ 1200:漏了确认帧的发送时间 80ms。
  • D 错80% = 800 ÷ 1000:周期只算了数据帧发送和单程传播。

变化点:确认帧变短,周期变小,利用率提高。

变式计网由 2014-36 改
主机甲与乙之间用 GBN 传输,甲的发送窗口改为 500,帧长 1000B,带宽 100Mbps,确认帧传输时间忽略,单向传播时延 50ms,则甲的最大平均数据传输速率约为( )。
  • A. 10Mbps
  • B. 40Mbps
  • C. 20Mbps
  • D. 80Mbps
展开解析

B一个周期约 100.08ms 内最多发 500 × 8000bit = 4Mb,速率 ≈ 4Mb ÷ 0.1s = 40Mbps。

  • A 错10 = 500 × 1000B ÷ 0.05s ÷ 10⁶:周期只用了单程 50ms,算出的又是字节每秒(10MB/s),忘了乘 8。
  • B 对对:500 × 8000bit ÷ 0.1s ≈ 40Mbps。
  • C 错20Mbps = 4Mb ÷ 0.2s:周期算成了 200ms,把往返时间又乘了 2。
  • D 错80Mbps 是原题窗口 1000 时的结果;窗口减半,每个周期只能发 4Mb。

变化点:窗口减半,受窗口限制的速率也减半。

变式计网由 2019-35 改
对于滑动窗口协议,若分组序号采用 4 比特编号,发送窗口大小为 10,则接收窗口最大是( )。
  • A. 4
  • B. 5
  • C. 6
  • D. 10
展开解析

CWT + WR ≤ 24 = 16,WR ≤ 6。

  • A 错WR = 4 满足 10 + 4 ≤ 16,但不是最大,6 也满足。
  • B 错WR = 5 满足 10 + 5 ≤ 16,但不是最大,10 + 6 = 16 正好到上限。
  • C 对对:WR ≤ 16 − 10 = 6。
  • D 错10 + 10 = 20 > 16,新旧帧的序号会重叠,接收方可能把重传的旧帧当成新帧收下。

变化点:序号位数和发送窗口都变了,公式不变。

变式计网由 2009-35 改
GBN 协议,发送方已发送 0~7 号帧。计时器超时时,只收到 1 号和 3 号帧的确认,则需要重发的帧数是( )。
  • A. 2
  • B. 3
  • C. 5
  • D. 4
展开解析

D累积确认:ACK3 说明 0~3 都已收到,要重发 4、5、6、7 共 4 帧。

  • A 错2 帧是把确认当成了逐个确认,只补发没确认的 0、2 号;GBN 是累积确认,ACK3 已说明 0 ~ 3 都收到。
  • B 错3 = 7 − 4:用末尾减开头时忘了 + 1;要重发 4、5、6、7 共 4 帧。
  • C 错5 帧是把 3 号也重发了;收到 3 号帧的确认说明 3 号已经收到(累积确认)。
  • D 对对:重发 4 ~ 7 共 4 帧。

变化点:收到的确认换了,最大的那个确认号决定一切。

变式计网考纲补充(尚无真题)
停止—等待协议中,接收方收到一个与上一个已正确接收的帧序号相同的数据帧,应该( )。
  • A. 丢弃该帧,并再发一次对它的确认
  • B. 把它交给上层
  • C. 丢弃该帧,不发确认
  • D. 发送否认帧,要求发送方重传
展开解析

A序号相同说明是重复帧:上一帧的确认丢了,发送方超时重传。接收方丢弃重复帧,但必须再回一次确认,否则发送方会一直重传。

  • A 对对:丢弃重复帧,并再确认一次。
  • B 错这一帧上次已经交给上层了,再交一次就重复了。
  • C 错丢弃是对的,但不发确认的话,发送方收不到确认会一直超时重传。
  • D 错这一帧本身没有错,只是重复,不需要否认;需要的是再发一次确认。

考点:3.3 节“停止—等待协议:出错、丢失时怎么办”。

变式计网考纲补充(尚无真题)
选择重传(SR)协议中,接收方收到一个序号落在“刚刚滑过的旧窗口”里的正确数据帧,应该( )。
  • A. 缓存该帧
  • B. 丢弃该帧,并再次发送对它的确认
  • C. 丢弃该帧,不做任何处理
  • D. 交付上层后发送否认帧
展开解析

B这是重复帧,说明发送方没收到上次的确认,所以要再确认一次,否则发送方会一直重传。

  • A 错这一帧早已交付过上层,缓存它会造成重复交付;落在旧窗口里说明它是重传的旧帧。
  • B 对对:丢弃并再确认一次。
  • C 错不发确认的话,发送方一直收不到对它的确认,会不停地重传。
  • D 错重复帧不能再交付上层;而且帧本身正确,不需要发否认帧。

考点:3.3 节“GBN 与 SR 接收方的处理”。

3.4介质访问控制(一):信道划分——FDM、TDM、WDM、CDMA

★ 考过选择题

问题:一根总线、一片无线信道上连着很多台主机,两台同时发送,信号就会叠在一起,谁也收不清(冲突)。点对点链路没有这个问题;广播信道必须解决“谁、什么时候可以发”,这就是介质访问控制(MAC)。方法分三大类:

介质访问控制 信道划分(静态分配)FDM、TDM、WDM、CDMA不会冲突 随机访问(动态)ALOHA、CSMA、CSMA/CD、CSMA/CA可能冲突 轮询访问(动态)轮询、令牌传递不会冲突
图 3-12 介质访问控制的三大类。只有随机访问会发生冲突(2013-36:四个选项中只有 CSMA 属于随机访问)。
2013-36计网
下列介质访问控制方法中,可能发生冲突的是( )。
  • A. CDMA
  • B. CSMA
  • C. TDMA
  • D. FDMA
展开解析

考点3.4 介质访问控制的分类

B信道划分(FDMA、TDMA、CDMA)是静态分配,每个站固定占用自己的频带、时隙或码片序列,互不干扰,不会冲突。只有随机访问才可能冲突。

  • A 错CDMA:码分多址,各站码片序列正交,同时发也能分开,不冲突。
  • B 对CSMA:随机访问,监听到空闲才发,但信号有传播时延,仍可能冲突。
  • C 错TDMA:时分多址,每站用固定时隙,不冲突。
  • D 错FDMA:频分多址,每站用固定频带,不冲突。

名字里有 CSMA 或 ALOHA 的是随机访问,会冲突;FDMA、TDMA、CDMA 都不会冲突。

复用:FDM、TDM、统计时分、WDM

比喻:一条大马路怎么分给多辆车

划车道,每辆车一条道,同时开(频分);不划车道,规定每辆车轮流开几秒(时分);谁有货谁开,没货就让出来(统计时分)。哪里不像:马路上的车不会“叠在一起”还都能到达,而码分复用(CDMA)恰恰是让信号叠在一起,再靠“密码”分开。

信道划分的本质是复用:把一条信道静态地分成若干个子信道,每个用户固定使用一个,彼此互不干扰,所以不会冲突。

频分复用 FDM用户 A 的频带(一直占着)用户 B 的频带(一直占着)用户 C 的频带(一直占着)用户 D 的频带(一直占着)时分复用 TDM(12 个时隙只用了 4 个)A空C空TDM 帧 1A空空空TDM 帧 2空空空DTDM 帧 3统计时分复用 STDM(按需分配)A带地址C带地址A带地址D带地址之后的时隙留给别人用
图 3-13 FDM、TDM、STDM。图中 4 个用户 A、B、C、D,纵向是频率、横向是时间;本例只有 A 在第 1、2 帧、C 在第 1 帧、D 在第 3 帧有数据。FDM 和 TDM 把信道“切死”:用户没数据时,分给他的频带或时隙也空着,突发性强的计算机数据用起来很浪费。STDM 只给有数据的用户分时隙,所以每个时隙要带上地址,说明它属于谁。
  • 频分复用 FDM:把信道带宽分成若干频带,每个用户固定占一个频带,所有用户同时通信(广播电台、有线电视)。频带之间要留“隔离带”防止互相干扰。
  • 时分复用 TDM:把时间分成等长的 TDM 帧,每帧再分成若干时隙,每个用户固定用每帧中的同一个时隙,在不同时间占用同样的频带宽度。用户没数据时它的时隙也空着,利用率不高。
  • 统计时分复用 STDM(异步时分复用):用一个集中器把各用户的数据按到达顺序依次放进 STDM 帧的时隙里,按需动态分配时隙;每个时隙必须带用户的地址。STDM 帧的时隙数小于用户数,线路利用率高。
  • 波分复用 WDM:光的频分复用,一根光纤里同时传多种不同波长的光信号,接收端再用分光器分开。

跟我算:上图中 4 个用户、3 个 TDM 帧共 12 个时隙,只有 4 个装了数据,TDM 的利用率 4 ÷ 12 ≈ 33%;STDM 只用 4 个时隙就传完了。

拓展 TDM 的经典例子:电话网的 T1 线路把 24 路话音时分复用,每路每次 8 bit,再加 1 位帧同步,一个 TDM 帧 24 × 8 + 1 = 193 bit;话音每秒采样 8000 次,所以每秒 8000 帧,速率 193 × 8000 = 1.544 Mb/s。欧洲和我国用的 E1 是 32 个时隙 × 8 bit × 8000 = 2.048 Mb/s。

FDMTDMCDMA
分什么频率时间码型
各用户同时发,用不同频带轮流发,用同一频带同时发,用同一频带
典型应用广播电台、有线电视电话 T1 / E1 线路3G 移动通信、卫星
缺点 / 代价频带之间要留隔离带用户没数据时时隙空着(STDM 改进)每个比特要发 m 个码片,需要的带宽是原来的 m 倍(扩频)

码分复用 CDMA:信号叠在一起,靠“密码”分开

比喻:国际会议的走廊

走廊里很多人同时说话,有人说中文,有人说英语、法语。你只懂中文,就只“听得出”说中文的那个人,其他语言在你耳朵里只是噪声。CDMA 里每个站说一种“语言”(码片序列),不同语言之间“完全听不懂”(正交),所以大家可以同时、在同一频带里说话。

  1. 每个比特时间再划分成 m 个码片。每个站分配一个唯一的 m 位码片序列,计算时把 0 写成 −1、1 写成 +1,看成一个向量 S。
  2. 站要发比特 1,就发自己的码片序列 S;发比特 0,就发它的反码 −S;不发就什么都不发。
  3. 不同站的码片序列相互正交:规格化内积 S · T = (1/m) Σ SiTi = 0。而任何序列和自己的规格化内积 S · S = 1,和自己的反码 S · (−S) = −1。
  4. 各站同时发送,信道上的信号是各站发出的向量逐项相加。接收方想知道站 S 发了什么,就用 S 与收到的叠加信号做规格化内积:1 → 发了 1;−1 → 发了 0;0 → 没发。其他站的信号因为正交,内积全变成 0。
例CDMA
站 A、B、C 的码片序列分别为 A = (1, −1, −1, 1),B = (1, 1, −1, −1),C = (1, −1, 1, −1)。
(1) 验证 A 与 B 正交。(2) A 发 1、B 发 0、C 不发,信道上是什么信号?接收方如何解出?(3) 若收到 (1, 1, 1, −3),各站发了什么?
跟我算

(1) A · B = [1×1 + (−1)×1 + (−1)×(−1) + 1×(−1)] ÷ 4 = (1 − 1 + 1 − 1) ÷ 4 = 0,正交。

(2) A 发 1 → 送出 A = (1, −1, −1, 1);B 发 0 → 送出 −B = (−1, −1, 1, 1)。逐项相加:(0, −2, 0, 2)。

  • 用 A 解:[0×1 + (−2)×(−1) + 0×(−1) + 2×1] ÷ 4 = (2 + 2) ÷ 4 = 1 → A 发了 1。
  • 用 B 解:[0 + (−2)×1 + 0 + 2×(−1)] ÷ 4 = −4 ÷ 4 = −1 → B 发了 0。
  • 用 C 解:[0 + (−2)×(−1) + 0 + 2×(−1)] ÷ 4 = 0 → C 没发。

(3) 与 A 的内积 (1 − 1 − 1 − 3) ÷ 4 = −1 → A 发 0;与 B 的内积 (1 + 1 − 1 + 3) ÷ 4 = 1 → B 发 1;与 C 的内积 (1 − 1 + 1 + 3) ÷ 4 = 1 → C 发 1。验算:−A + B + C = (1, 1, 1, −3)。✓

2014-37计网
站点 A、B、C 通过 CDMA 共享链路,A、B、C 的码片序列(chipping sequence)分别是 (1, 1, 1, 1)、(1, −1, 1, −1) 和 (1, 1, −1, −1)。若 C 从链路上收到的序列是 (2, 0, 2, 0, 0, −2, 0, −2, 0, 2, 0, 2),则 C 收到 A 发送的数据是( )。
  • A. 000
  • B. 101
  • C. 110
  • D. 111
展开解析

考点3.4 CDMA 规格化内积

B码片序列长 4,把收到的 12 个数分成 3 组,每组与 A 的码片序列 (1, 1, 1, 1) 做规格化内积:1 表示发 1,−1 表示发 0。

  1. (2, 0, 2, 0) · (1, 1, 1, 1) ÷ 4 = 4 ÷ 4 = 1。
  2. (0, −2, 0, −2) · (1, 1, 1, 1) ÷ 4 = −4 ÷ 4 = −1。
  3. (0, 2, 0, 2) · (1, 1, 1, 1) ÷ 4 = 4 ÷ 4 = 1。
  4. A 发送的是 101。
  • A 错000:第 1、3 组的内积是 1,表示发的是 1。
  • B 对101。
  • C 错110:这是 B 站发的数据。用 B 的码片 (1, −1, 1, −1) 计算,三组内积是 1、1、−1。
  • D 错111:第 2 组内积是 −1,表示发 0。

求谁的数据就用谁的码片序列做内积,再除以码片长度 m。结果 0 表示该站没发。

2014-37 的做法:码片序列 4 位,所以把收到的 12 个数每 4 个一组,分成 3 个比特时间;每组都和 A = (1, 1, 1, 1) 做规格化内积:(2 + 0 + 2 + 0) ÷ 4 = 1,(0 − 2 + 0 − 2) ÷ 4 = −1,(0 + 2 + 0 + 2) ÷ 4 = 1 → 101。

真题怎么考

2013-36 问哪种方法会冲突(只有随机访问会);2014-37 考 CDMA 内积。可能的变化:判断两个码片序列是否正交;给出叠加信号求某站发的比特串;STDM 与 TDM 的区别(按需分配、时隙带地址);WDM 用在哪里(光纤)。CDMA 计算的关键是先分组:码片序列有几位,就每几个数一组。

易错辨析
  • 内积要除以 m(规格化);不除的话结果是 ±m 或 0,判断方法一样,但选项常给规格化后的值。
  • 发 0 发的是反码 −S,不是“什么都不发”;什么都不发对应的内积才是 0。
  • 信道划分、轮询访问不会冲突;FDMA、TDMA、CDMA 后面的 “MA”(多址)就是“多路复用用于多个用户接入”。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2014-37 改
站点 A、B、C 通过 CDMA 共享链路,码片序列分别为 (1, 1, 1, 1)、(1, −1, 1, −1)、(1, 1, −1, −1)。若 C 从链路上收到的序列是 (1, −1, 1, −1, −1, 1, −1, 1, 1, −1, 1, −1),则 C 收到 B 发送的数据是( )。
  • A. 000
  • B. 101
  • C. 110
  • D. 111
展开解析

B与 B 的码片序列做规格化内积:(4)/4 = 1,(−4)/4 = −1,(4)/4 = 1 → 101。(用 A 的码片算三组都为 0,A 没发送。)

  • A 错第 1、3 组与 B 的码片序列做规格化内积都是 1,表示发的是 1,不是 0。
  • B 对对:三组内积依次为 1、−1、1。
  • C 错第 2 组内积是 −1(发 0)、第 3 组是 1(发 1),110 把后两位弄反了。
  • D 错第 2 组 (−1, 1, −1, 1) 与 B 的码片序列内积为 −4 ÷ 4 = −1,表示发 0,不是 1。

变化点:换一个接收序列、问另一个站。

变式计网由 2013-36 改
下列介质访问控制方法中,不会发生冲突的是( )。
I. TDMA II. CSMA/CD III. CDMA IV. ALOHA
  • A. 仅 I、III
  • B. 仅 II、IV
  • C. 仅 I、II
  • D. 仅 III、IV
展开解析

ATDMA、CDMA 是信道划分,静态分配,不冲突;CSMA/CD、ALOHA 是随机访问,可能冲突。

  • A 对对:TDMA、CDMA 是信道划分,静态分配,不冲突。
  • B 错B 选的 CSMA/CD、ALOHA 都是随机访问,恰恰可能冲突。
  • C 错C 含 II:CSMA/CD 先听后发,但传播时延使冲突仍可能发生;又漏了 III CDMA。
  • D 错D 含 IV:ALOHA 想发就发,最容易冲突;又漏了 I TDMA。

变化点:从“可能发生冲突”反过来问“不会冲突”。

变式计网考纲补充(尚无真题)
下列关于统计时分复用(STDM)的叙述中,错误的是( )。
  • A. 按需动态分配时隙
  • B. 每个时隙需要携带用户的地址信息
  • C. 线路利用率比普通 TDM 高
  • D. 每个用户在每个帧中都固定占用一个时隙
展开解析

DD 描述的是普通 TDM:用户没数据时它的时隙也空着。STDM 只把时隙分给有数据的用户,所以要带地址。

  • A 不选正确:STDM 只在用户有数据时才给它时隙,按需动态分配。
  • B 不选正确:时隙不固定属于谁,所以每个时隙都要带上用户的地址。
  • C 不选正确:没有数据的用户不占时隙,线路利用率比普通 TDM 高。
  • D 选错误:每个用户在每帧中固定占一个时隙的是普通 TDM,STDM 不固定分配。

考点:3.4 节“复用:FDM、TDM、统计时分、WDM”。

变式计网考纲补充(尚无真题)
在 CDMA 中,某站要发送比特 0,它在信道上发出的是( )。
  • A. 全 0 序列
  • B. 不发送任何信号
  • C. 自己码片序列的反码
  • D. 其他站码片序列之和
展开解析

C发 1 发自己的码片序列 S,发 0 发 −S;不发送时内积为 0,与发 0(内积为 −1)是两回事。

  • A 错全 0 序列与任何码片序列的内积都是 0,接收方会判为“没有发送”,而不是发了 0。
  • B 错不发送时接收方算出内积为 0;发 0 的内积是 −1,两者是两回事。
  • C 对对:发 0 就发 −S(自己码片序列的反码)。
  • D 错其他站的码片序列之和与本站要发的数据无关;发 0 要发自己码片的反码 −S。

考点:3.4 节“码分复用 CDMA”。

3.5介质访问控制(二):ALOHA、CSMA、CSMA/CD 与令牌传递

★★★ 高频选择题综合题

信道划分把信道分死了,用户没数据时也占着。随机访问反其道而行之:所有用户都可以随机地发送,不预先分配;如果两个站同时发而冲突了,就各自等一段随机时间再重发——随机等待让下次再撞的可能变小。随机访问实质上是“争用”信道,所以也叫争用型协议。

ALOHA:想发就发

  • 纯 ALOHA:任何站有数据就立即发送;在规定时间内收不到确认,就认为冲突了,等待一段随机时间再重发。一帧从开始发送前 T(帧的发送时间)到发送结束这 2T 的时间里,只要别的站发送就会冲突——易损期是 2T。
  • 时隙 ALOHA:把时间分成等长的时隙(一个时隙 = 一帧的发送时间 T),各站只能在时隙开始时发送。两帧要么在同一时隙完全重叠,要么互不相干,易损期缩为 T,冲突减少一半。
纯 ALOHAA:冲突B:冲突C:成功A:冲突D:冲突时隙 ALOHAA:冲突B:冲突C:成功A:成功D:成功易损期 2T:C 的帧开始前 T 到结束,别人一发就撞时间只能在时隙开始时发:两帧要么完全重合、要么互不相干,易损期缩为 T
图 3-14 纯 ALOHA 与时隙 ALOHA。纯 ALOHA 里只要两帧有一点点重叠就都作废;时隙 ALOHA 只有同一时隙里的帧才会撞。

拓展 吞吐率:设网络负载为 G(每个帧时间内平均发送的帧数),纯 ALOHA 的吞吐率 S = G·e−2G,在 G = 0.5 时最大,约 1 ÷ (2e) ≈ 18.4%;时隙 ALOHA 的 S = G·e−G,在 G = 1 时最大,约 1 ÷ e ≈ 36.8%。了解即可。

CSMA:先听再说,三种“坚持”

ALOHA 不看信道就发,太鲁莽。CSMA(载波监听多路访问)在发送前先监听信道:听到有人在发就不发。按“信道忙时怎么办”分三种策略:

1-坚持信道忙(别的站在发)A 想发B 想发A、B 一起发 → 冲突一直监听,信道一空马上发非坚持信道忙(别的站在发)A 想发B 想发空着没人用A 发(成功)A、B 各自随机等一会儿再听;B 再听时忙,又去等p-坚持信道忙(别的站在发)A 想发B 想发都没“抽中”A 以概率 p 抽中,发信道空闲后按时隙“抽签”:概率 p 发送,1 − p 推到下一时隙
图 3-15 三种坚持策略的行为。信道忙期间 A、B 都想发。1-坚持“死等”,信道一空大家一起冲;非坚持“走开过一会儿再来”,冲突少但信道可能白白空着;p-坚持是折中。
策略监听到信道空闲监听到信道忙特点
1-坚持立即发送继续监听,一空闲马上发信道不会空着;但几个站同时在等时,一空闲就一起发,冲突多。以太网的 CSMA/CD 就用 1-坚持
非坚持立即发送放弃监听,等一段随机时间再监听冲突少;但信道空闲了也可能没人发,利用率低、时延大
p-坚持以概率 p 发送,以概率 1 − p 推迟到下一个时隙再监听持续监听,直到空闲再按上一格处理两者的折中,用于时隙信道

监听只能减少冲突,不能避免:电磁波在总线上传播需要时间,A 已经开始发了,但信号还没传到 B,B 监听到的仍是“空闲”,也开始发——冲突照样发生。所以还需要“发现冲突后怎么办”,这就是 CSMA/CD。

CSMA/CD:以太网的做法

CSMA/CD = 载波监听 + 碰撞检测。口诀“先听后发,边发边听,冲突停发,随机重发”:发送前监听,空闲就发;发送过程中持续检测信道,一旦发现冲突立即停止,发一个短的干扰信号,然后按退避算法等一段随机时间再重新监听。它用于总线形、半双工的以太网(交换机全双工连接时不需要 CSMA/CD)。

有帧要发送① 先听:监听信道信道空闲?② 边发边听:发送并检测冲突检测到冲突?③ 冲突停发:停止,发干扰信号没有冲突地发完 → 成功冲突次数 + 1;k = min(次数, 10);满 16 次就放弃并报错④ 随机重发:从 {0, 1, …, 2ᵏ − 1} 取 r,等 r × 2τ是是否:继续听否
图 3-16 CSMA/CD 的完整流程。“边发边听”只在发送期间检测;只要在争用期(2τ)内没有检测到冲突,这一帧就一定不会再冲突了。
AB A 的信号,传播时延 τ B 在 τ − δ 发送(还没听到 A) 0τ − δ2τ − δ A 检测到冲突 δ → 0 时,A 最晚要到 2τ 才知道冲突:2τ 叫争用期(冲突窗口)
图 3-17 为什么争用期是 2τ。τ 是总线两端的单向传播时延。A 发出后最坏要经过 2τ 才能确定没有冲突。
最短帧长 = 2τ × 数据传输速率:帧的发送时间必须不短于争用期,否则帧发完了才检测到冲突,发送方会误以为发送成功 以太网取争用期 51.2μs,10Mbps 下对应 512bit = 64B,这就是以太网的最短帧长 变形:最远距离 d = τ × 传播速度,τ = 最短帧长 ÷ (2 × 速率);中间有集线器等设备的时延要算进单向时延(2016-36、2022-47)
例跟我算
(1) 100 Mb/s 的总线以太网,电缆长 1 km,信号传播速度 2 × 108 m/s,最短帧长应是多少?
(2) 100 Mb/s 局域网用 CSMA/CD,最短帧长 128 B,一个冲突域内两站间的单向传播时延最多是多少?(2019-36)
跟我算

(1) τ = 1000 m ÷ (2 × 108 m/s) = 5 × 10−6 s = 5 μs;争用期 2τ = 10 μs;最短帧长 = 10 μs × 100 Mb/s = 10 × 10−6 × 108 = 1000 bit = 125 B。

(2) 反过来算:128 B = 1024 bit;发送 1024 bit 需要 1024 ÷ 108 s = 10.24 μs,这就是争用期 2τ;单向时延 τ 最多 5.12 μs。

单位换算单独写:1 μs = 10−6 s;100 Mb/s = 108 b/s;“m/μs”方便算距离:2 × 108 m/s = 200 m/μs。

例跟我算 · 冲突时间线
10 Mb/s 总线以太网上,A、B 两站之间的单向传播时延 τ = 25 μs。A 在 t = 0 开始发送,B 在 t = 15 μs 时监听到信道空闲也开始发送。(1) A、B 各在什么时刻检测到冲突?(2) 若 A 的帧长 1000 bit,A 能否检测到这次冲突?若只有 300 bit 呢?
跟我算
站 A站 B与 A 相距 τ = 25 μs0A 开始发送信号要 25 μs 才到 B15 μsB 听到“空闲”,也开始发送t = 25 μs:A 的信号到达,B 检测到冲突,停发并发 32 bit 干扰信号t = 15 + 25 = 40 μs:B 的信号到达,A 检测到冲突
图 3-18 一次冲突的时间线。B 离冲突点近,先发现;A 最晚在 2τ = 50 μs 内发现(这里是 40 μs)。

(1) B 在 A 的信号到达时发现冲突:t = τ = 25 μs;A 在 B 的信号到达时发现:t = 15 + 25 = 40 μs。干扰信号 32 bit 要发 32 ÷ 107 s = 3.2 μs。

(2) 1000 bit 的帧要发 1000 ÷ 107 s = 100 μs,40 μs 时 A 还在发,能检测到冲突并停发。300 bit 的帧只要 30 μs 就发完了,A 在 30 μs 时已经停止“边发边听”,40 μs 冲突信号才到——A 会误以为发送成功。这正是“帧的发送时间不能短于争用期 2τ”的原因:本例 2τ = 50 μs,最短帧长 = 50 μs × 10 Mb/s = 500 bit。

2019-36计网
假设一个采用 CSMA/CD 协议的 100Mbps 局域网,最小帧长是 128B,则在一个冲突域内两个站点之间的单向传播延时最多是( )。
  • A. 2.56μs
  • B. 5.12μs
  • C. 10.24μs
  • D. 20.48μs
展开解析

考点3.5 CSMA/CD 最短帧长

B最短帧的发送时间要不小于争用期 2τ。

  1. 128B = 1024bit,100Mbps 下发送时间 10.24μs。
  2. 2τ ≤ 10.24μs → τ ≤ 5.12μs。
  • A 错2.56μs:按以太网标准 64B 算出的值,本题最小帧长是 128B。
  • B 对5.12μs。
  • C 错10.24μs:没有除以 2,这是往返时间 2τ。
  • D 错20.48μs:乘了 2,方向反了。

帧的发送时间 ≥ 2τ,求的是单向就要除以 2。

二进制指数退避算法:第 k 次重传前,从 {0, 1, …, 2k − 1} 中随机选一个数 r,等待 r × 争用期(2τ)。其中 k = min(重传次数, 10);重传 16 次仍失败就放弃并向上层报错。所以第 k 次冲突后,最长等待 (2k − 1) × 争用期,k 超过 10 就按 10 算(2023-36、2025-35)。

第几次冲突kr 的取值范围最长等待(争用期 51.2 μs)
11{0, 1}1 × 51.2 = 51.2 μs
22{0, 1, 2, 3}3 × 51.2 = 153.6 μs
33{0, …, 7}7 × 51.2 = 358.4 μs
44{0, …, 15}15 × 51.2 = 768 μs(2023-36)
1010{0, …, 1023}1023 × 51.2 = 52 377.6 μs
11 ~ 15仍为 10{0, …, 1023}52.3776 ms(2025-35:第 11 次冲突后)
16——不再重传,丢弃该帧并报错

退避的道理:冲突次数越多,说明想发的站越多、信道越挤,就把随机等待的范围翻倍扩大,让大家错开得更开。两个站第一次冲突后各从 {0, 1} 中选,有 1/2 的概率选得不一样而错开;冲突 k 次后选得一样的概率只有 1/2k。

  • 检测到冲突后立即停止发送,并发送 32 或 48 比特的人为干扰信号(强化碰撞),让所有站都知道发生了冲突。
  • 凡是长度小于 64B 的帧,都是因冲突而中途停止的无效帧,接收方收到就丢弃。
  • 以太网规定帧间最小间隔 9.6μs(10Mbps 下 96 比特时间),让刚收到帧的站有时间清理缓存、准备接收下一帧。
  • 边发边听是为了检测冲突,不是同时收数据:使用 CSMA/CD 的站不能同时发送和接收,只能半双工工作。
  • CSMA/CD 的效率与 τ 有关:传播时延越小(相对于帧的发送时间),冲突浪费的时间越少,τ → 0 时信道利用率趋近 100%(2015-36 的 D 项)。

拓展 以太网的极限信道利用率:理想情况下各站轮流发、从不冲突,每发一帧(发送时间 T0)后还要等 τ 让信号传完,信道才真正空出来,所以 Smax = T0 ÷ (T0 + τ) = 1 ÷ (1 + a),a = τ ÷ T0。10 Mb/s、τ = 25.6 μs 时:1500 B 的帧(T0 = 1200 μs)为 97.9%;64 B 的最短帧(T0 = 51.2 μs)只有 66.7%。所以以太网希望帧长一些、电缆短一些(a 小)。

2023-36计网
已知 10BaseT 以太网的争用时间片为 51.2μs。若网卡在发送某帧时发生了连续 4 次冲突,则基于二进制指数退避算法确定的再次尝试重发该帧前等待的最长时间是( )。
  • A. 51.2μs
  • B. 204.8μs
  • C. 768μs
  • D. 819.2μs
展开解析

考点3.5 二进制指数退避

C第 k 次冲突后,k' = min(k, 10),从 {0, 1, …, 2k' − 1} 中随机选 r,等待 r 个争用期。

  1. 连续 4 次冲突:k' = 4,r 最大为 24 − 1 = 15。
  2. 最长等待 15 × 51.2μs = 768μs。
  • A 错51.2μs:只是 1 个争用期。
  • B 错204.8μs = 4 × 51.2:把冲突次数当成了 r 的最大值。
  • C 对768μs。
  • D 错819.2μs = 16 × 51.2:用了 2k,忘了减 1。

最长等待 = (2min(k,10) − 1) × 争用期。

2025-35计网
现有一 10BaseT 以太网,甲乙处于同一个冲突域,连续发生 11 次冲突,甲再次发送的最大时间间隔为( )。
  • A. 0.512ms
  • B. 0.5632ms
  • C. 52.3776ms
  • D. 104.8064ms
展开解析

考点3.5 二进制指数退避(k 的上限)

C重传次数超过 10 后,k 固定为 10,r 最大为 210 − 1 = 1023。10BaseT 的争用期为 51.2μs。

  1. 连续 11 次冲突:k = min(11, 10) = 10。
  2. 最长等待 1023 × 51.2μs = 52 377.6μs = 52.3776ms。
  • A 错0.512ms = 10 × 51.2μs:把 k 当成了 r 的最大值。
  • B 错0.5632ms = 11 × 51.2μs:把冲突次数当成了等待的争用期个数。
  • C 对52.3776ms。
  • D 错104.8064ms = 2047 × 51.2μs:没有把 k 截断为 10。

k 最多取 10;重传 16 次仍失败就放弃。1023 × 51.2 = 52 377.6,别算成 1024 倍。

2015-36计网
下列关于 CSMA/CD 协议的叙述中,错误的是( )。
  • A. 边发送数据帧,边检测是否发生冲突
  • B. 适用于无线网络,以实现无线链路共享
  • C. 需要根据网络跨距和数据传输速率限定最小帧长
  • D. 当信号传播延迟趋近 0 时,信道利用率趋近 100%
展开解析

考点3.5 CSMA/CD 的特点

B本题选错误的叙述。CSMA/CD 用于有线以太网;无线网络中很难边发边检测冲突,还有隐蔽站问题,用的是 CSMA/CA。

  • A 正确“边发边听”,发送时检测冲突。
  • B 错误无线网络用 CSMA/CA,不用 CSMA/CD。
  • C 正确最短帧长 = 2τ × 速率,τ 由网络跨距决定。
  • D 正确传播时延趋于 0 时,争用期趋于 0,一发出去别人立刻知道,几乎不会冲突,利用率趋近 100%。

有线 CD(检测),无线 CA(避免)。

两个易错点
  • 最短帧长 = 2τ × 速率,不是 τ × 速率;“单向传播时延”题目常直接给出,最短帧长要用它的 2 倍。
  • 最短帧长和距离成正比:帧长不变而速率提高 10 倍,最远距离要缩短为原来的 1/10;最短帧长减少多少比特,距离就按比例减少(2009-37)。
2009-37计网
在一个采用 CSMA/CD 协议的网络中,传输介质是一根完整的电缆,传输速率为 1Gbps,电缆中的信号传播速度是 200 000km/s。若最小数据帧长度减少 800 比特,则最远的两个站点之间的距离至少需要( )。
  • A. 增加 160m
  • B. 增加 80m
  • C. 减少 160m
  • D. 减少 80m
展开解析

考点3.5 CSMA/CD 最短帧长与距离

D最短帧长 = 2τ × 速率 = 2 × (距离 ÷ 传播速度) × 速率。速率不变时,帧长和距离成正比:帧长减少,距离也要减少。

  1. 帧长减少 800bit,发送时间减少 800 ÷ 109 = 0.8μs,即往返时间 2τ 要减少 0.8μs。
  2. 单程减少 0.4μs,对应距离 0.4μs × 200m/μs = 80m。
  • A 错增加:方向反了。帧变短,允许的往返时间变短,距离只能减少。
  • B 错增加 80m:数值 80m 对了,方向反了——帧长减少 800bit,允许的往返时间少 0.8μs,距离只能减少。
  • C 错减少 160m:忘了除以 2。争用期是往返时间,对应的是两倍距离。
  • D 对减少 80m。

Δ距离 = Δ帧长 ÷ 速率 × 传播速度 ÷ 2。

2016-36计网
在下图(2016 年题 33~41 图)所示的网络中,若 Hub 再生比特流过程中,会产生 1.535μs 延时,信号传播速度为 200m/μs,不考虑以太网帧的前导码,则 H3 与 H4 之间理论上可以相距的最远距离是( )。 InternetWeb 服务器 S 130.18.10.1R1201.1.3.9L0(NAT)R2R3L1201.1.3.1201.1.2.0/25201.1.1.0/24E0DNS 服务器201.1.1.1E1 192.168.3.254SwitchHubH1192.168.3.2H2192.168.3.3H3192.168.3.251H4192.168.3.252R1~R3 为路由器Switch 为 100Base-T 交换机Hub 为 100Base-T 集线器H1~H4 的默认域名服务器均为 201.1.1.1
  • A. 200m
  • B. 205m
  • C. 359m
  • D. 512m
展开解析

考点3.5 CSMA/CD 最短帧长与距离

BH3、H4 接在 100Base-T 集线器上,同一冲突域,要满足以太网最短帧 64B 的发送时间 ≥ 往返时延。

  1. 64B = 512bit,100Mbps 下发送时间 5.12μs,所以单程时延最多 2.56μs。
  2. H3 → Hub → H4 的单程时延 = 电缆传播时延 + Hub 时延 1.535μs。
  3. 电缆传播时延 ≤ 2.56 − 1.535 = 1.025μs,距离 ≤ 1.025 × 200 = 205m。
  • A 错200m:不是按题给数据算出的结果(100Base-T 工程上每段双绞线限 100m,两段正好 200m,但题目问的是理论最远距离)。
  • B 对205m。
  • C 错359m:往返中只减了一次 Hub 时延,(5.12 − 1.535) ÷ 2 × 200 ≈ 359。信号往返两次经过 Hub,要减两次。
  • D 错512m:忽略了 Hub 时延,2.56 × 200 = 512。

最短帧发送时间 ≥ 2 ×(传播时延 + 中间设备时延)。

2016-36 的算法:100 Mb/s 以太网最短帧 64 B = 512 bit,争用期 = 512 ÷ 108 = 5.12 μs,单向最多 2.56 μs;扣掉集线器的 1.535 μs,留给电缆的只有 1.025 μs,距离 = 1.025 × 200 = 205 m。综合题 2010-47(第 7 篇 t4)也是 CSMA/CD 的时间计算,要逐段画出两台主机发帧、冲突、确认的时间轴。

轮询访问:轮询与令牌传递

随机访问在站点多、负载重时冲突频繁,效率很低。轮询访问让各站按顺序轮流使用信道,谁拿到“发言权”谁发,所以不会冲突。它有两种做法:

  • 轮询协议:一个主结点依次“点名”询问各从结点“你有数据要发吗”,被点到的才能发。缺点:点名本身要花时间(轮询开销);排在后面的要等前面的都问完;主结点一坏,整个网络瘫痪。
  • 令牌传递协议(考纲要求,典型是令牌环网 IEEE 802.5):没有主结点,一个叫令牌的特殊短帧在各站之间按固定顺序传递,拿到令牌的站才能发送。
A B C D E 令牌 逻辑环 顺时针传递 ① 令牌(特殊的短控制帧)沿环依次传给下一站 ② 有数据的站等令牌到来,把它换成数据帧发出; 这时环上没有令牌,别人都不能发 → 不会冲突 ③ 帧逐站转发:目的站复制一份,帧继续前进; 绕环一周回到发送站,由发送站把它撤下 ④ 发送站发完(或持有时间到),产生新令牌传给下一站
图 3-19 令牌传递。只有持有令牌的站能发送,发送权沿逻辑环轮流传递。每个站一次持有令牌的时间有上限,所以每个站等待发送的时间也有上限。
  • 令牌是一个特殊格式的短帧,不携带数据,只表示“拿到它的站可以发送”。
  • 站点要发数据,必须等令牌;发完后由发送站收回自己的帧并重新产生令牌(目的站只复制,不撤下帧)。
  • 优点:没有冲突;负载重时各站轮流发,效率高,最长等待时间确定。缺点:令牌丢失或重复都会出错,需要专门维护令牌;负载很轻时也要等令牌转过来才能发。
  • 拓扑:令牌环网逻辑上是环形、物理上常接成星形;FDDI(光纤分布式数据接口)是双环结构的令牌网。
信道划分(FDM、TDM……)随机访问(CSMA/CD……)轮询访问(令牌传递)
会不会冲突不会会不会
负载轻时差:分给别人的份额空着也不能用好:信道空闲就能立即发一般:要等令牌转过来
负载重时好:各用各的差:冲突多,效率低好:轮流发,没有冲突
真题怎么考:3.5 的 6 道选择题
  • 最短帧长 ↔ 距离 ↔ 时延(2009-37、2016-36、2019-36):抓住“最短帧的发送时间 = 2τ”,正着求帧长、反着求距离或时延,中间设备的时延计入单向时延。
  • 退避最长等待(2023-36、2025-35):(2k − 1) × 争用期,k = min(冲突次数, 10)。
  • 概念判断(2015-36):CSMA/CD 用于有线半双工,不用于无线;τ 越小效率越高。

可能的新考法:三种坚持策略的区别(哪种冲突最多、哪种利用率最低);纯 ALOHA 与时隙 ALOHA 的易损期;轮询与令牌传递的优缺点;以太网为什么规定最短帧长 64 B。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2009-37 改
某 CSMA/CD 网络,传输介质是一根完整的电缆,传输速率为 100Mbps,信号传播速度 200 000km/s。若最小帧长度减少 800 比特,则最远的两个站点之间的距离至少需要( )。
  • A. 增加 800m
  • B. 减少 800m
  • C. 增加 400m
  • D. 减少 400m
展开解析

B减少的发送时间 800 ÷ 100M = 8μs = 减少的往返时间,单程减少 4μs,距离减少 4μs × 200m/μs = 800m。

  • A 错增加:方向反了,帧变短,允许的往返时间变短,距离只能减少。
  • B 对对:往返少 8μs,单程少 4μs,距离少 800m。
  • C 错增加 400m:方向反了,而且多除了一次 2(8μs 是往返,单程 4μs × 200m/μs = 800m)。
  • D 错减少 400m:多除了一次 2;8μs 是往返时间,单程 4μs,乘 200m/μs 就是 800m。

变化点:速率降为 1/10,同样减少 800bit 对应的距离变为 10 倍。

变式计网由 2023-36 改
已知 10BaseT 以太网的争用期为 51.2μs,若网卡发送某帧时连续发生了 6 次冲突,则再次尝试重发前等待的最长时间是( )。
  • A. 307.2μs
  • B. 3276.8μs
  • C. 3225.6μs
  • D. 6502.4μs
展开解析

Ck = 6,r 最大 26 − 1 = 63,最长 63 × 51.2 = 3225.6μs。

  • A 错307.2μs = 6 × 51.2:把冲突次数 6 当成了 r 的最大值。
  • B 错3276.8μs = 64 × 51.2:用了 2⁶,忘了减 1;r 最大是 2⁶ − 1 = 63。
  • C 对对:63 × 51.2 = 3225.6μs。
  • D 错6502.4μs = 127 × 51.2:按 k = 7 算了(2⁷ − 1);第 6 次冲突 k = 6。

变化点:冲突次数变了;只要不超过 10,k 就等于冲突次数。

变式计网由 2019-36 改
某采用 CSMA/CD 的 1Gbps 局域网,最小帧长为 512B,则冲突域内两站点之间的单向传播时延最多是( )。
  • A. 1.024μs
  • B. 4.096μs
  • C. 8.192μs
  • D. 2.048μs
展开解析

D512 × 8 ÷ 1Gbps = 4.096μs ≥ 2τ,τ ≤ 2.048μs。

  • A 错1.024μs 多除了一次 2:4.096μs 是往返时延的上限,单向是它的一半 2.048μs。
  • B 错4.096μs 是最小帧的发送时间,等于往返时延 2τ,没有除以 2。
  • C 错8.192μs = 2 × 4.096:方向反了,乘了 2。
  • D 对对:τ ≤ 4.096 ÷ 2 = 2.048μs。

变化点:速率和最小帧长都变了;关键是除以 2。

变式计网由 2016-36 改
在 2016 年题图中,若 Hub 再生比特流产生 1μs 延时,信号传播速度 200m/μs,不考虑前导码,则 H3 与 H4 之间理论上最远相距( )。
  • A. 312m
  • B. 412m
  • C. 512m
  • D. 624m
展开解析

A单程最多 2.56μs,减去 Hub 时延 1μs,传播 1.56μs × 200 = 312m。

  • A 对对:(2.56 − 1) × 200 = 312m。
  • B 错412m = (2.56 − 0.5) × 200:Hub 时延只减了一半;信号单程经过 Hub 一次,就要减整整 1μs。
  • C 错512m = 2.56 × 200:忽略了 Hub 的 1μs 时延。
  • D 错624m = (5.12 − 2) × 200:用了往返时间,没有除以 2,算的是来回的总距离。

变化点:设备时延变了,其余不变。

变式计网考纲补充(尚无真题)
下列介质访问控制方法中,最适合站点多、负载很重,且要求每个站等待发送的时间有上限的是( )。
  • A. 令牌传递
  • B. 纯 ALOHA
  • C. 1-坚持 CSMA
  • D. CSMA/CD
展开解析

A令牌传递按顺序轮流发送,没有冲突,每个站持有令牌的时间有上限,所以等待时间也有上限;负载越重越能体现优势。ALOHA、CSMA、CSMA/CD 都是随机访问,负载重时冲突多。

  • A 对对:令牌轮流传递,没有冲突,等待时间有上限。
  • B 错纯 ALOHA 想发就发,负载重时冲突极多,等待时间也没有上限。
  • C 错1-坚持 CSMA 负载重时多个站同时等着,信道一空闲就一起发,冲突多,时延没有上限。
  • D 错CSMA/CD 是随机访问,负载重时冲突、退避频繁,等待时间没有确定的上限。

考点:3.5 节“轮询访问:令牌传递协议”。

变式计网考纲补充(尚无真题)
p-坚持 CSMA 协议中,站点监听到信道空闲时的做法是( )。
  • A. 立即发送
  • B. 等待一段随机时间后再监听
  • C. 等待 DIFS 后发送
  • D. 以概率 p 发送,以概率 1 − p 推迟到下一个时隙再监听
展开解析

D立即发送是 1-坚持和非坚持在信道空闲时的做法;“等随机时间再监听”是非坚持在信道忙时的做法;DIFS 是 802.11 CSMA/CA 的概念。

  • A 错立即发送是 1-坚持(以及非坚持)在信道空闲时的做法,p-坚持要按概率 p 决定。
  • B 错等一段随机时间再监听是非坚持 CSMA 在信道忙时的做法。
  • C 错DIFS 是 802.11 CSMA/CA 的帧间间隔,CSMA 的三种坚持策略里没有这个概念。
  • D 对对:以概率 p 发送,以 1 − p 推迟到下一时隙。

考点:3.5 节 CSMA 三种策略对照表。

变式计网考纲补充(尚无真题)
下列 CSMA 策略中,信道忙时持续监听、信道一空闲就立即发送的是( )。
  • A. 1-坚持 CSMA
  • B. 非坚持 CSMA
  • C. p-坚持 CSMA
  • D. CSMA/CA
展开解析

A1-坚持“死等”,信道空闲立即发,几个站同时等时冲突多;非坚持忙时随机等待后再监听;p-坚持空闲时以概率 p 发送。

  • A 对对:1-坚持“死等”,空闲立即发。
  • B 错非坚持 CSMA 在信道忙时不持续监听,而是随机等待一段时间后再监听。
  • C 错p-坚持 CSMA 在空闲时只以概率 p 发送,不是一定立即发送。
  • D 错CSMA/CA 信道空闲时还要等 DIFS 并退避,不会“一空闲就立即发送”。

考点:3.5 节“CSMA:先听再说,三种坚持”。

变式计网考纲补充(尚无真题)
纯 ALOHA 中,帧的发送时间为 T,则一个帧的易损期(在此期间别的站一发送就会与它冲突)长度为( )。
  • A. T / 2
  • B. T
  • C. 3T
  • D. 2T
展开解析

D从本帧开始前 T(别人的帧还没发完)到本帧结束,共 2T。时隙 ALOHA 把易损期缩为 T。

  • A 错T/2 太短:别的站只要在本帧开始前 T 内或本帧发送期间开始发,都会重叠。
  • B 错T 是时隙 ALOHA 的易损期;纯 ALOHA 不对齐时隙,易损期是 2T。
  • C 错3T 多算了一个 T:易损期是本帧开始前的 T 加上本帧发送的 T。
  • D 对对:2T。

考点:3.5 节“ALOHA:想发就发”。

3.6无线局域网 802.11:CSMA/CA、RTS/CTS 与四个地址

★★ 常考选择题

组网方式:BSS、ESS 与自组织网络

802.11 无线局域网有两种组网方式:有固定基础设施的——若干站点和一个接入点 AP 组成一个基本服务集 BSS,多个 BSS 通过分配系统 DS(通常是有线以太网)连成扩展服务集 ESS,站点的所有通信都要经过 AP;无固定基础设施的叫自组织网络(ad hoc),站点之间直接通信,每个站都兼做转发。

分配系统 DS(通常是有线以太网)→ 路由器 → 因特网BSS 1BSS 2AP1AP2ABCDE扩展服务集 ESS自组织网络(ad hoc)PQR没有 AP,站站直连
图 3-20 802.11 的两种组网方式。有 AP 时,BSS 内两个站通信也要经 AP 中转;站点从一个 BSS 移到另一个 BSS 时要和新的 AP 重新关联。每个 AP 有一个服务集标识符 SSID(就是我们在手机上看到的“Wi-Fi 名字”)。

为什么无线网不能用 CSMA/CD:隐蔽站与暴露站

  • 无线信号在接收端的强度远小于发送端,站点在发送时很难同时检测到别人的微弱信号,“边发边听”的硬件代价太大。
  • 更根本的是:无线信号的覆盖范围有限,发送方听到的情况不等于接收方那里的情况。
隐蔽站:A、C 互相听不见ABC✕在 B 处冲突A 发送时,C 监听到“空闲”也发暴露站:C 白白不敢发ABCD不敢发C 听到 B 在发就等,其实 C → D 不会干扰 A
图 3-21 隐蔽站与暴露站。虚线圆是各站信号的覆盖范围。隐蔽站让“听到空闲就发”出现冲突(漏判);暴露站让“听到忙就不发”白白浪费机会(误判)。两者都说明:在无线环境里,发送方监听到的并不代表接收方那里的情况。

所以 802.11 改为尽量避免冲突(Collision Avoidance),并且因为无线信道误码率高,采用链路层确认:接收方正确收到数据帧后要回送 ACK,发送方收不到 ACK 就重传。四种 MAC 协议中只有 CSMA/CA 对正确接收的帧进行确认(2011-36)。

2011-36计网
下列选项中,对正确接收到的数据帧进行确认的 MAC 协议是( )。
  • A. CSMA
  • B. CDMA
  • C. CSMA/CD
  • D. CSMA/CA
展开解析

考点3.6 CSMA/CA 的确认机制

D无线信道误码率高,又无法检测冲突,所以 802.11 的 CSMA/CA 采用链路层确认:接收方正确收到数据帧后等 SIFS 回送 ACK,发送方收不到 ACK 就重传。

  • A 错CSMA:只监听后发送,没有确认。
  • B 错CDMA:码分多址,属于信道划分,不涉及确认。
  • C 错CSMA/CD:以太网提供不可靠服务,不确认;发送方靠检测冲突判断是否要重发。
  • D 对CSMA/CA。

以太网不确认;802.11 每个数据帧都要 ACK。

帧间间隔与 CSMA/CA 的发送过程

帧间间隔长短用在哪里
SIFS(短帧间间隔)最短需要立即响应的帧:ACK、CTS、分片后的后续数据帧,以及回答 CTS 后发出的数据帧
PIFS(点协调帧间间隔)中等AP 在点协调方式下使用(了解)
DIFS(分布协调帧间间隔)最长站点要开始一次新的发送(发送数据帧或 RTS)前必须等待的时间

IFS 越短优先级越高:一次“交换”(RTS—CTS—DATA—ACK)开始时等 DIFS,中间每一步都只等 SIFS,别的站至少要等 DIFS 才能动手,所以插不进来,整个交换不会被打断(2020-37:最长的是交换开始前的 IFS1)。

  1. 站点有数据要发,先监听信道。若信道空闲,等待一个 DIFS 后仍空闲,就发送整个数据帧(发送过程中不再检测冲突)。
  2. 若信道忙(或 DIFS 期间变忙),就推迟,并选一个随机退避时间启动退避计时器。信道空闲时计时器倒数,信道忙时冻结;减到 0 时(此时信道一定空闲)发送整个帧。(退避时间 = 从 [0, CW] 中随机取的时隙数 × 时隙长度。拓展 竞争窗口 CW 从最小值开始(如 802.11a/g 为 15),每次重传翻倍加 1:31、63……到上限 1023 不再增大;发送成功后恢复最小值。和以太网的二进制指数退避是同一个思路。)
  3. 接收方正确收到数据帧(CRC 校验通过),等待 SIFS 后回送 ACK。
  4. 发送方在规定时间内收到 ACK,说明成功;若要发送下一帧,仍要从第 2 步的退避开始(除非是分片的后续帧)。收不到 ACK,就认为出错,退避后重传;重传次数到上限就放弃。
信道AB别的站在发(信道忙)A、B 都想发DIFSDIFS321543A 的数据帧忙(A 在发)ACK冻结:计数停在 2DIFS21B 发A 抽到 3 个时隙、B 抽到 5 个:A 先数到 0 先发;B 只数掉 3 个就听到信道忙,计数冻结,等信道再次空闲 DIFS 后从 2 接着数,不重新抽——等得越久的站越先轮到。
图 3-22 退避计时器的冻结。和 CSMA/CD 不同,CSMA/CA 在信道从忙变闲时一定先退避(不像 1-坚持那样立刻冲),而且退避计数只在信道空闲时才减少。
2020-37计网
某 IEEE 802.11 无线局域网中,主机 H 与 AP 之间发送或接收 CSMA/CA 帧的过程如下图所示。在 H 或 AP 发送帧前所等待的帧间间隔时间(IFS)中,最长的是( )。 HAPIFS1RTS →IFS2← CTSIFS3DATA →IFS4← ACK
  • A. IFS1
  • B. IFS2
  • C. IFS3
  • D. IFS4
展开解析

考点3.6 帧间间隔 DIFS 与 SIFS

A开始一次新的发送前等 DIFS(最长);在一次交换中作出响应的帧前面等 SIFS(最短)。

  1. IFS1:H 发 RTS 前,这是一次交换的开始 → DIFS。
  2. IFS2:AP 回 CTS 前 → SIFS。
  3. IFS3:H 收到 CTS 后发 DATA 前 → SIFS。
  4. IFS4:AP 回 ACK 前 → SIFS。
  • A 对IFS1 是 DIFS,最长。
  • B 错IFS2 是 AP 回 CTS 之前的间隔,属于同一次交换中的应答,等的是最短的 SIFS,不是最长的。
  • C 错IFS3 是 SIFS:数据帧是对 CTS 的回应,属于同一次交换。
  • D 错IFS4 是 AP 回 ACK 之前的间隔,同样是应答帧前面的 SIFS,最短。

交换开头等 DIFS,中间都等 SIFS,这样别人插不进来。

CSMA/CD(有线以太网)CSMA/CA(无线局域网 802.11)
对冲突检测:边发边听,发现冲突立即停发避免:发送前等 DIFS、随机退避,发送时不检测
什么时候退避冲突之后信道由忙变闲时就先退避(一般每次发送前都要)
退避计时冲突后立即开始倒数只在信道空闲时倒数,忙时冻结
确认没有(以太网不确认)有:收不到 ACK 就重传
载波监听物理载波监听物理载波监听 + 虚拟载波监听(NAV)
信道预约无RTS / CTS(可选)
工作方式半双工半双工(无线收发不能同时)

信道预约:RTS / CTS 与 NAV

为了进一步避免冲突(尤其是隐蔽站),源站可以先预约信道(2018-35):

  1. 源站等待 DIFS 后,先发一个很短的请求发送帧 RTS,里面写明这次通信要占用信道多长时间(持续时间字段)。
  2. AP 收到后等 SIFS,广播一个允许发送帧 CTS,同样带有持续时间。
  3. 源站收到 CTS 后等 SIFS 发送数据帧;AP 收到后等 SIFS 回 ACK。
  4. 其他站收到 RTS 或 CTS 后,按其中的持续时间设置网络分配向量 NAV:在 NAV 倒数到 0 之前,认为信道忙,不发送。这叫虚拟载波监听。隐蔽站听不到 RTS,但能听到 AP 发的 CTS,所以也会让路。
源站AP其他站隐蔽站 DIFS RTS SIFS CTS SIFS DATA SIFS ACK NAV(收到 RTS 后设置) NAV(只听到 CTS)= SIFS + DATA + SIFS + ACK
图 3-23 RTS/CTS 预约信道的时间线。每个帧里的持续时间只算“这个帧发完以后”还要占用多久:CTS 之后还有 SIFS + DATA + SIFS + ACK,这就是只听到 CTS 的站设置的 NAV(2024-36)。
例跟我算
某 802.11 网络 DIFS = 50 μs,SIFS = 10 μs,RTS、CTS、ACK 的发送时间分别为 20、14、14 μs,忽略传播时延。站 A 向 AP 发送 1000 B 的数据帧,速率 100 Mb/s。求 RTS、CTS、DATA 帧中的持续时间(即听到它们的站设置的 NAV),以及从 A 开始等 DIFS 到 ACK 发完共多长时间。
跟我算

先算数据帧发送时间:1000 B = 8000 bit;100 Mb/s = 108 b/s;8000 ÷ 108 s = 80 μs。

  • RTS 之后还有:SIFS + CTS + SIFS + DATA + SIFS + ACK = 10 + 14 + 10 + 80 + 10 + 14 = 138 μs。
  • CTS 之后还有:SIFS + DATA + SIFS + ACK = 10 + 80 + 10 + 14 = 114 μs。
  • DATA 之后还有:SIFS + ACK = 24 μs。
  • 整个交换:DIFS + RTS + 138 = 50 + 20 + 138 = 208 μs。
NAV 计算易错

NAV 从“收到这一帧”之后开始算,不包括这一帧本身和它之前的 DIFS、RTS。算数据帧发送时间时注意 B 要乘 8。题目若“忽略 ACK 的发送时延”,最后一项就是 0(2026-35)。

2024-36计网
在采用 CSMA/CA 的 802.11 无线局域网中,DIFS = 120μs,SIFS = 28μs,RTS、CTS 和 ACK 帧的传输时延分别是 3μs、2μs 和 2μs,忽略信号传播时延。若主机 A 欲向 AP 发送一个总长度为 1998B 的数据帧,无线链路带宽为 54Mb/s,则隐藏站 B 收到 AP 发送的 CTS 帧时,设置的网络分配向量 NAV 的值是( )。
  • A. 326μs
  • B. 354μs
  • C. 385μs
  • D. 513μs
展开解析

考点3.6 NAV 的计算

B隐藏站 B 听不到 A 的 RTS,只能听到 AP 的 CTS。CTS 中的持续时间是 CTS 发完之后信道还要被占用的时间:SIFS + DATA + SIFS + ACK。

  1. 数据帧发送时间 = 1998 × 8 ÷ 54M = 296μs。
  2. NAV = 28 + 296 + 28 + 2 = 354μs。
  • A 错326 = 296 + 28 + 2:少算了一个 SIFS。
  • B 对354μs。
  • C 错385 = 354 + 3 + 28:多出的 31μs 正好是 RTS(3μs)和它后面的一个 SIFS(28μs)。可隐藏站 B 听不到 RTS,它的 NAV 只能从收到的 CTS 发完时算起。
  • D 错513μs 比整个交换过程还长:从 A 等 DIFS 到 ACK 发完一共 120 + 3 + 28 + 2 + 28 + 296 + 28 + 2 = 507μs,任何站的 NAV 都不可能超过它;B 的 NAV 只从 CTS 发完算起。

CTS 设置的 NAV = SIFS + DATA + SIFS + ACK;RTS 设置的 NAV 还要在前面加 SIFS + CTS。

2026-35计网
假设采用 CSMA/CA 的 IEEE 802.11 无线局域网,其数据传输速率为 300Mbps,DIFS = 128μs,SIFS = 28μs。忽略除数据帧以外的其他帧的传输时延及信号传播时延,主机 H 发送一个总长度为 1500B 的数据帧,则从开始发送数据帧至确认接收方收到所需的时间至少为( )。
  • A. 40μs
  • B. 68μs
  • C. 168μs
  • D. 196μs
展开解析

考点3.6 CSMA/CA 的时间计算

B计时从“开始发送数据帧”算起,DIFS 已经等过了,不计入。之后是:发送数据帧 → 接收方等 SIFS → 发 ACK(ACK 发送时间和传播时延都忽略)。

  1. 数据帧发送时间 = 1500 × 8 ÷ 300M = 40μs。
  2. 加上接收方回 ACK 前的 SIFS:40 + 28 = 68μs。
  • A 错40μs:漏了接收方回 ACK 前的 SIFS。
  • B 对68μs。
  • C 错168 = 40 + 128:把 ACK 前的 SIFS 错用成了 DIFS。
  • D 错196 = 128 + 40 + 28:把发送前的 DIFS 也算进来了,但计时从开始发送数据帧算起。

先看计时起点和终点,再决定 DIFS 算不算。ACK 前面永远是 SIFS。

2018-35计网
IEEE 802.11 无线局域网的 MAC 协议 CSMA/CA 进行信道预约的方法是( )。
  • A. 发送确认帧
  • B. 采用二进制指数退避
  • C. 使用多个 MAC 地址
  • D. 交换 RTS 与 CTS 帧
展开解析

考点3.6 RTS/CTS 信道预约

D源站先发 RTS 说明要占用信道多久,AP 广播 CTS 作答;其他站据此设置 NAV,在这段时间内不发送。这就是“预约”信道。

  • A 错确认帧用来保证可靠传输,发现丢帧后重传,不能预约信道。
  • B 错二进制指数退避是 CSMA/CD 冲突后的重传策略。CSMA/CA 虽然也退避,但退避不是预约。
  • C 错多个 MAC 地址与预约无关。802.11 帧有多个地址字段,是为了标明收发双方和源、目的。
  • D 对交换 RTS 与 CTS。

预约 = RTS/CTS + NAV(虚拟载波监听)。

802.11 的帧分三类:数据帧;控制帧(RTS、CTS、ACK);管理帧(信标 beacon——AP 周期性广播自己的 SSID,站点据此发现网络;关联请求 / 响应等)。拓展 物理层标准有 802.11b(2.4 GHz,11 Mb/s)、802.11a/g(54 Mb/s)、802.11n、802.11ac、802.11ax(Wi-Fi 6)等,MAC 层都用 CSMA/CA。

802.11 数据帧的地址(考填地址)

802.11 数据帧首部有 4 个地址字段,有基础设施的网络只用前 3 个。它们的含义取决于帧控制字段中的“去往 AP”(To DS)和“来自 AP”(From DS)两位:

方向To DSFrom DS地址 1地址 2地址 3
站点 → AP(发往外部)10AP(接收地址,BSSID)源站目的地址(如路由器接口)
AP → 站点(从外部来)01目的站AP(发送地址,BSSID)源地址(如路由器接口)
站点 → 站点(自组织网络,无 AP)00目的站源站BSSID(这个自组织网络的标识)
HAPR802.11 帧(To DS = 1,From DS = 0)地址 1 = AP 地址 2 = H 地址 3 = R以太网帧(有线)目的 = R 源 = H以太网帧(有线)目的 = H 源 = R802.11 帧(To DS = 0,From DS = 1)地址 1 = H 地址 2 = AP 地址 3 = R
图 3-24 一来一回,地址怎么填。AP 是链路层设备:它把 802.11 帧改成以太网帧(或反过来),但 H 和 R 的地址原样搬过去,自己的地址只出现在无线这一段。
一句话记住

地址 1 永远是这一跳无线传输的接收者,地址 2 永远是这一跳的发送者,地址 3 是 AP 另一侧的那个地址(往外发是最终目的,往里收是最初来源)。H 发往 Internet 的帧,这一跳从 H 发到 AP,地址 3 是 AP 所连路由器的接口 MAC(2017-35)。

2017-35计网
在下图所示的网络中,若主机 H 发送一个封装访问 Internet 的 IP 分组的 IEEE 802.11 数据帧 F,则帧 F 的地址 1、地址 2 和地址 3 分别是( )。 H00-12-34-56-78-9aFAP00-12-34-56-78-9b00-12-34-56-78-9cRInternet
  • A. 00-12-34-56-78-9a,00-12-34-56-78-9b,00-12-34-56-78-9c
  • B. 00-12-34-56-78-9b,00-12-34-56-78-9a,00-12-34-56-78-9c
  • C. 00-12-34-56-78-9b,00-12-34-56-78-9c,00-12-34-56-78-9a
  • D. 00-12-34-56-78-9a,00-12-34-56-78-9c,00-12-34-56-78-9b
展开解析

考点3.6 802.11 数据帧的地址

B帧 F 从 H 发往 AP(去往 AP):地址 1 = 这一跳的接收者(AP),地址 2 = 这一跳的发送者(H),地址 3 = 最终的链路层目的地址。

  1. 地址 1:AP 的 MAC 00-12-34-56-78-9b。
  2. 地址 2:H 的 MAC 00-12-34-56-78-9a。
  3. 地址 3:IP 分组要去 Internet,下一跳是路由器 R,所以是 R 接口的 MAC 00-12-34-56-78-9c。
  • A 错9a、9b、9c:这是反方向(AP 把从 R 来的帧转发给 H)时的地址:地址 1 = H,地址 2 = AP,地址 3 = R。
  • B 对9b、9a、9c。
  • C 错地址 2 写成了 R。R 不在这一跳无线传输上,发送者是 H。
  • D 错地址 1 写成了 H 自己。接收者是 AP。

地址 1 收,地址 2 发,地址 3 是 AP 另一侧的那台设备。

真题怎么考:3.6 的 6 道选择题
  • 概念(2011-36、2018-35):只有 CSMA/CA 确认;信道预约靠 RTS / CTS。
  • IFS(2020-37):交换开始前等 DIFS(最长),中间都等 SIFS。
  • NAV / 时间(2024-36、2026-35):从“这一帧之后”加到 ACK 结束;题目忽略谁就把谁记 0。
  • 地址(2017-35):地址 1 收、地址 2 发、地址 3 远端。

可能的新考法:暴露站问题;退避计时器冻结;ad hoc 与有 AP 的区别;AP 发往站点时三个地址怎么填(图中下行那一行)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2024-36 改
在 2024-36 的条件下(DIFS = 120μs,SIFS = 28μs,RTS、CTS、ACK 分别为 3μs、2μs、2μs),若数据帧改为 2700B,链路 54Mb/s,则隐藏站收到 CTS 后设置的 NAV 是( )。
  • A. 428μs
  • B. 458μs
  • C. 489μs
  • D. 578μs
展开解析

B数据帧 2700 × 8 ÷ 54M = 400μs;NAV = SIFS + DATA + SIFS + ACK = 28 + 400 + 28 + 2 = 458μs。

  • A 错428μs = 28 + 400:少算了 ACK 前的 SIFS 和 ACK 本身(还要加 28 + 2)。
  • B 对对:28 + 400 + 28 + 2 = 458μs。
  • C 错489μs = 458 + 3 + 28:多算了 RTS 和它后面的一个 SIFS;隐藏站听不到 RTS,NAV 从 CTS 发完算起。
  • D 错578μs = 458 + 120:把 DIFS 也算进来了;NAV 只覆盖 CTS 之后的 SIFS + DATA + SIFS + ACK。

变化点:只有数据帧发送时间变了,公式不变。

变式计网由 2026-35 改
采用 CSMA/CA 的 802.11 网络,数据速率 600Mbps,DIFS = 128μs,SIFS = 28μs,忽略除数据帧以外的传输时延和传播时延。主机发送一个 1500B 的数据帧,从开始发送数据帧至确认接收方收到至少需要( )。
  • A. 20μs
  • B. 148μs
  • C. 48μs
  • D. 176μs
展开解析

C数据帧 1500 × 8 ÷ 600M = 20μs,加上 ACK 前的 SIFS 28μs,共 48μs。

  • A 错20μs 只算了数据帧的发送时间,漏了接收方回 ACK 之前的 SIFS 28μs。
  • B 错148μs = 20 + 128:把 ACK 前的 SIFS 错用成了 DIFS。
  • C 对对:20 + 28 = 48μs。
  • D 错176μs = 128 + 20 + 28:把发送前的 DIFS 也算了进去,但计时从开始发送数据帧算起。

变化点:速率翻倍,只有数据帧时间减半。

变式计网由 2017-35 改
在 2017-35 的网络中,AP 把从路由器 R 收到的、发给主机 H 的 IP 分组封装成 802.11 帧发给 H,该帧的地址 1、地址 2、地址 3 分别是( )。
  • A. 9b、9a、9c
  • B. 9c、9b、9a
  • C. 9a、9c、9b
  • D. 9a、9b、9c
展开解析

D来自 AP 的帧:地址 1 = 接收者 H(9a),地址 2 = 发送者 AP(9b),地址 3 = 源地址 R(9c)。

  • A 错9b、9a、9c 是 H 发往 AP 时的地址(地址 1 = AP、地址 2 = H);方向反过来,地址 1、2 要对调。
  • B 错地址 1 写成了 R:R 不在这一跳无线传输上,接收者是 H;R 填在地址 3。
  • C 错地址 2、3 写反了:这一跳的发送者是 AP(地址 2),R 是源地址(地址 3)。
  • D 对对:接收者 H、发送者 AP、源地址 R。

变化点:方向反过来:H → AP 变成 AP → H。

变式计网考纲补充(尚无真题)
无线局域网中,站 C 听到站 B 正在发送就推迟发送,但实际上 C 向 D 发送并不会干扰 B 的接收方 A。这种现象称为( )。
  • A. 隐蔽站问题
  • B. 暴露站问题
  • C. 冲突检测失败
  • D. 多径效应
展开解析

B暴露站是“听到忙就不发”造成的浪费;隐蔽站是“听到闲就发”造成的冲突。两者都说明发送方的监听不代表接收方处的情况。

  • A 错隐蔽站是“听不到别人在发、以为信道空闲就发”而造成冲突,与题中“听到忙就不发”正相反。
  • B 对对:暴露站问题,白白推迟了本可以进行的发送。
  • C 错无线局域网本来就不做冲突检测(用 CSMA/CA),题中也没有发生冲突,只是白白推迟了发送。
  • D 错多径效应是信号经不同路径反射后叠加造成的失真,讲的是信号质量,不是推迟发送。

考点:3.6 节“隐蔽站与暴露站”。

变式计网考纲补充(尚无真题)
CSMA/CA 中,站点的退避计时器在倒数过程中检测到信道变忙,则它( )。
  • A. 冻结计时器,信道再次空闲 DIFS 后接着倒数
  • B. 立即发送
  • C. 重新选择一个更大的随机数
  • D. 放弃本次发送
展开解析

A退避计数只在信道空闲时减少,忙时冻结,不重新抽——等得越久的站越先轮到。

  • A 对对:忙时冻结,空闲 DIFS 后接着倒数。
  • B 错信道忙时立即发送必然与正在进行的传输冲突;倒数要等信道空闲才继续。
  • C 错重新抽一个更大的随机数是没收到 ACK(发送失败)后的做法;信道变忙只冻结,不重新选。
  • D 错信道忙不是发送失败,不会放弃;等信道空闲 DIFS 后接着倒数,到 0 就发。

考点:3.6 节“帧间间隔与 CSMA/CA 的发送过程”。

变式计网考纲补充(尚无真题)
802.11 有基础设施的网络中,AP 把从路由器 R 收到的帧转发给站点 H,该 802.11 帧的地址 3 是( )。
  • A. H 的 MAC 地址
  • B. AP 的 MAC 地址
  • C. R 的 MAC 地址
  • D. 广播地址
展开解析

CFrom DS = 1 时:地址 1 = 接收者 H,地址 2 = 发送者 AP,地址 3 = 源地址 R。

  • A 错H 是这一跳的接收者,填在地址 1,不是地址 3。
  • B 错AP 是这一跳的发送者,填在地址 2,不是地址 3。
  • C 对对:From DS = 1 时地址 3 是源地址 R。
  • D 错这是发给 H 的单播帧,不涉及广播地址;地址 3 填原始发送方 R。

考点:3.6 节“802.11 数据帧的地址”。

3.7局域网与以太网,广域网与 PPP 协议

★ 考过选择题

局域网的基本概念与体系结构

局域网(LAN)是在较小的地理范围内(一栋楼、一个校园)把计算机和外设连起来的网络。特点:为一个单位所有,范围小;速率高、时延小、误码率低;各站平等地共享传输信道,便于广播和多播。

决定局域网特性的三个要素:拓扑结构(星形、总线形、环形、树形)、传输介质(双绞线最常用,还有同轴电缆、光纤、无线)、介质访问控制方式。其中介质访问控制方式最重要,它决定了局域网的技术特性。

局域网标准逻辑拓扑物理拓扑介质访问控制
以太网IEEE 802.3总线形星形(中心是集线器或交换机)CSMA/CD
令牌环网IEEE 802.5环形星形令牌传递
FDDI—环形双环令牌传递
无线局域网IEEE 802.11—有 AP 时为星形CSMA/CA

IEEE 802 参考模型只对应 OSI 的物理层和数据链路层,并把数据链路层拆成两个子层:

OSI 参考模型IEEE 802 参考模型网络层及以上数据链路层物理层(不在 802 范围内)LLC 子层MAC 子层物理层与介质无关与介质有关
图 3-25 IEEE 802 把数据链路层拆成两个子层。
  • 逻辑链路控制 LLC 子层:与传输介质无关,向网络层提供服务(无确认无连接、面向连接、带确认无连接等),为网络层屏蔽不同的介质访问方式。
  • 介质访问控制 MAC 子层:与传输介质有关,负责组帧和拆帧、比特差错检测、按 MAC 地址寻址、介质访问控制(CSMA/CD 等)。

以太网在局域网市场一家独大后,LLC 的作用已经很小,许多网卡只装 MAC 协议,以太网 V2 帧里也没有 LLC 的内容。

以太网的特点与 MAC 地址

  • 以太网是目前最流行的有线局域网。它采用无连接的工作方式,对发送的帧不编号、不要求确认:收到有差错的帧就丢弃,是否重传由高层(如 TCP)决定。所以以太网提供的是无连接、不可靠的服务,即尽最大努力交付(2012-35)。
  • 传统以太网:逻辑上是总线,用 CSMA/CD;10Mbps 以太网使用曼彻斯特编码。用集线器连成星形,物理上是星形,逻辑上仍是总线。
  • MAC 地址(硬件地址、物理地址)48 位,写成 6 个字节,如 00-1A-2B-3C-4D-5E。前 24 位是 IEEE 分给厂商的组织唯一标识符 OUI,后 24 位由厂商自行分配,固化在网卡(网络适配器)的 ROM 中。网卡负责实现物理层和数据链路层的功能。严格地说,MAC 地址是网卡的“名字”而不是“地址”——它不随主机搬家而改变。
MAC 地址第 1 个字节(如 01-00-5E-… 的 01)b7b6b5b4b3b2G/LI/G0 全球管理1 本地管理0 单播1 多播 / 广播← 最低位以太网按字节从最低位开始发送,所以 I/G 位是线路上最先发出的一位,网卡一收到就知道是不是单播。
图 3-26 看第一个字节就能判断地址类型。首字节为奇数(最低位为 1)就是多播地址;48 位全 1 的 FF-FF-FF-FF-FF-FF 是广播地址。
MAC 地址首字节二进制类型谁会收下
00-1A-2B-3C-4D-5E0000 0000单播只有这块网卡
01-00-5E-01-02-030000 0001多播(IP 多播映射,4.10 节)加入了相应组的网卡
33-33-00-00-00-010011 0011多播(IPv6 多播用)加入了相应组的网卡
FF-FF-FF-FF-FF-FF1111 1111广播同一广播域里的所有网卡

网卡收到帧后先看目的地址:是发给本机的单播帧、广播帧或本机所在多播组的帧就收下,否则丢弃(网卡被设成“混杂模式”时什么帧都收,抓包软件就是这样工作的)。

2012-35计网
以太网的 MAC 协议提供的是( )。
  • A. 无连接不可靠服务
  • B. 无连接可靠服务
  • C. 有连接不可靠服务
  • D. 有连接可靠服务
展开解析

考点3.7 以太网提供的服务

A以太网不建立连接,对帧不编号、不确认,收到错帧直接丢弃,是否重传由上层决定。所以是无连接、不可靠的服务(尽最大努力交付)。

  • A 对无连接不可靠。
  • B 错可靠:以太网没有确认和重传机制,谈不上可靠。
  • C 错有连接:以太网发送前不建立连接。
  • D 错D 的“有连接”和“可靠”两处都错:以太网发送前不建立连接,对帧也不编号、不确认、不重传。

以太网、IP、UDP 都是无连接不可靠;可靠靠 TCP。

从共享式以太网到交换式以太网:早期以太网用一根同轴电缆(总线)或一个集线器连接所有主机,大家共享带宽、用 CSMA/CD 争用信道。后来交换机普及,每台主机独占一个交换机端口,全双工通信时根本不会冲突,CSMA/CD 就用不上了——但帧格式、MAC 地址一直没变,所以仍叫以太网。考题里说“以太网采用 CSMA/CD”,指的是共享式(半双工)以太网。

以太网 V2 的 MAC 帧格式

前导码7 + 1 字节 目的地址6 源地址6 类型2 数据(IP 数据报)46 ~ 1500 FCS4 物理层加上 MAC 帧:64 ~ 1518 字节(首部 14 + 尾部 4 = 18 字节开销) FCS 的 CRC 校验范围:目的地址 ~ 数据 类型:0x0800 = IPv4,0x0806 = ARP;数据不足 46 字节要填充到 46 字节
图 3-27 以太网 V2 帧格式。最短帧 64 字节 = 首尾 18 字节 + 最短数据 46 字节(来自 CSMA/CD 的最短帧长);最长 1518 字节 = 18 + 1500,1500 就是以太网的 MTU。以太网帧没有帧结束定界符,靠曼彻斯特编码的电平特征和帧间间隔判断帧结束。
字段是什么怎么考
前导码 8 B7 字节 10101010 让接收方时钟同步,1 字节帧开始定界符 10101011物理层加上的,不算帧长;2013-38 说“不包括前导码”
目的地址 6 B接收方的 MAC 地址,放在最前面网卡、交换机收到前 6 个字节就能决定收不收、往哪转(直通交换的依据)
源地址 6 B发送方的 MAC 地址交换机靠它自学习
类型 2 B上层协议:0x0800 IPv4、0x0806 ARP、0x86DD IPv6链路层的“服务访问点”(1.4 节)
数据 46 ~ 1500 BIP 数据报;不足 46 B 要填充MTU = 1500;填充的内容由 IP 首部的总长度字段区分出来
FCS 4 BCRC-32 检验码,覆盖目的地址到数据只检错,错帧直接丢弃

跟我算:填充。一个 ARP 报文只有 28 字节,装进以太网帧时数据部分要补 46 − 28 = 18 字节的填充,帧长 14 + 46 + 4 = 64 字节。接收方怎么知道后面 18 个字节是填充?IP 数据报、ARP 报文自己的首部里写着真正的长度,多出来的部分上层直接丢掉。

802.3 帧与 V2 帧的差别:V2 的“类型”字段在 802.3 中是“长度/类型”字段,值小于 0x0600 时表示数据长度。现在市场上几乎都是 V2 格式。

以太网的物理层命名与高速以太网

以太网标准的名字有固定格式“速率 + BASE + 介质”:10BASE-T 中,10 表示 10 Mb/s,BASE 表示基带传输,T 表示双绞线(Twisted pair)。同理,10BASE5 是粗同轴电缆(每段最长 500 m),10BASE2 是细同轴电缆(约 200 m,实际 185 m),10BASE-F 是光纤;100BASE-TX 用双绞线,1000BASE-LX 用光纤。10BASE-T 每段双绞线最长 100 m。

  • 100BASE-T(快速以太网):双绞线,100Mbps;支持全双工和半双工,半双工时仍用 CSMA/CD。最短帧长仍为 64B,所以争用期缩为 5.12μs,最大电缆长度相应缩短(这就是“速率提高、距离缩短”的来历)。
  • 吉比特以太网:1Gbps,全双工时不用 CSMA/CD;半双工时用载波延伸、分组突发保证最短帧的发送时间够长。
  • 10 吉比特以太网及更快的:只工作在全双工,不使用 CSMA/CD,已经不是“共享信道”了。

高速以太网保留了以太网的帧格式(64 ~ 1518 B),所以无论多快,交换机、网卡之间都能互通——这是以太网能一路从 10 Mb/s 升级到 100 Gb/s 的原因。

广域网与 PPP 协议

  • 广域网(WAN)跨越很大的地理范围(城市、国家乃至洲际),是因特网的核心部分,任务是长距离传送主机发出的数据。它由结点交换机和连接它们的高速链路组成,结点之间是点对点连接,采用存储转发的分组交换。
  • 与局域网的区别:局域网使用的协议主要在数据链路层(还有少量物理层),广域网使用的协议主要在网络层;局域网多用共享的广播信道,广域网用点对点信道。区分两者的关键是所用的技术,不只是距离。
  • 广域网不等于互联网:广域网是一个网络,用结点交换机连接主机;互联网是用路由器把多个网络(局域网、广域网)连起来的“网络的网络”。广域网的链路层最常用 PPP(以前还有 HDLC)。

用户通过电话线、光纤接入 ISP 时,链路层常用 PPP(点对点协议)。它由三部分组成:把 IP 数据报封装到链路上的方法;链路控制协议 LCP(建立、配置和测试数据链路连接);一套网络控制协议 NCP(为不同的网络层协议建立和配置逻辑连接,如 IP 用的 IPCP)。

字段标志 F地址 A控制 C协议信息FCS标志 F
值 / 长度0x7E0xFF0x032 字节≤ 1500 字节2 字节0x7E

协议字段说明信息部分装的是什么:0x0021 是 IP 数据报,0xC021 是 LCP 数据,0x8021 是 IPCP(NCP)数据。地址字段固定 0xFF、控制字段固定 0x03,实际上没有用——点对点链路只有两端,不需要地址。

PPP 字节填充:跟我做一遍

异步线路上,PPP 用 7E 作帧界、7D 作转义字符。规则:数据中的 7E → 7D 5E,7D → 7D 5D,ASCII 码小于 0x20 的控制字符 x → 7D (x ⊕ 0x20)。

信息字段:7E 41 7D 03
填充后 :7D 5E 41 7D 5D 7D 23

接收方每遇到 7D,就删掉它,并把后面那个字节与 0x20 异或还原(5E → 7E,5D → 7D,23 → 03)。同步线路(如 SONET/SDH)上 PPP 改用零比特填充。

链路静止链路建立鉴别(可选)网络层协议链路打开链路终止检测到载波LCP 协商成功鉴别成功NCP 配置好数据传完,LCP 终止请求载波停止协商失败鉴别失败如 IPCP 给用户分配临时 IP 地址
图 3-28 PPP 的工作状态。LCP 负责“链路”本身(建立、鉴别、终止),NCP 负责“上层协议”的配置——先把链路打通,再谈 IP。
  • PPP 只做差错检测(FCS 发现错帧就丢弃),不做纠错、没有序号和确认、不提供可靠传输,也没有流量控制;只支持点对点、全双工链路;面向字节,帧长都是整数个字节。
  • 为什么不做可靠传输:链路的误码率已经很低,可靠传输交给上层的 TCP 做更划算,链路层越简单越快。
  • 身份鉴别(可选):LCP 建好链路后、NCP 配置之前,可以先认证对方:PAP(口令认证,两次握手,口令明文传送,不安全)或 CHAP(质询握手认证,三次握手,口令不在线路上传送,更安全)。拨号、宽带接入要先认证再分地址就是这一步。
  • 支持多种网络层协议:靠不同的 NCP,同一条 PPP 链路可以承载 IP、IPX 等,两端的网络层协议各自协商配置。

拓展 HDLC(高级数据链路控制)是面向比特的链路层协议,用 01111110 作帧界、零比特填充实现透明传输(2013-37 的背景)。它有三类帧:信息帧(I 帧,传数据,带发送序号和捎带的确认序号)、监督帧(S 帧,做流量控制和差错控制,如确认、拒绝)、无编号帧(U 帧,建立和释放链路等控制)。与 PPP 不同,HDLC 自带编号和确认,可以提供可靠传输。

真题怎么考

3.7 只有 2012-35 一道直接题(以太网提供无连接不可靠服务),但本节的数字到处被用:帧长 64 ~ 1518 B(最短帧、MTU)、MAC 地址 48 位、前导码不算帧长(2013-38)、类型 0x0800 / 0x0806(抓包题)。可能的新考法:MAC 地址是单播还是多播;ARP 报文要填充多少字节;10BASE-T 的含义;PPP 的组成(LCP、NCP)、能否纠错、是否可靠;PPP 字节填充。

易错辨析
  • 以太网帧长 64 ~ 1518 B 不含前导码 8 B;数据部分 46 ~ 1500 B。
  • 以太网、PPP 都只检错不纠错、不可靠;HDLC 带编号和确认,可以可靠。
  • PPP 是点对点协议,不需要 MAC 地址,也不用 CSMA/CD;地址字段固定 0xFF。
  • MAC 地址看首字节最低位判断单播 / 多播,不是看最高位。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2012-35 改
PPP 协议提供的服务是( )。
  • A. 无确认、只做差错检测的服务
  • B. 面向连接的可靠服务
  • C. 有编号和确认的可靠服务
  • D. 支持多点访问的广播服务
展开解析

APPP 只做差错检测,出错就丢弃,不编号、不确认、不重传;只用于点对点链路。

  • A 对对:只做差错检测,出错就丢弃。
  • B 错PPP 有建立链路的过程,但它不编号、不确认、不重传,提供的不是可靠服务。
  • C 错PPP 帧没有序号字段,也没有确认机制;有编号和确认的是 HDLC 等协议。
  • D 错PPP 只用于点对点链路,不支持多点访问;广播信道上用的是以太网的 CSMA/CD。

变化点:从以太网换成 PPP,两者都不可靠。

变式计网由 2013-38 改
对于 100Mbps 的以太网交换机,输出端口无排队,以存储转发方式转发一个 1000B 的以太网帧(不含前导码),引入的转发延迟至少是( )。
  • A. 0.48μs
  • B. 80μs
  • C. 5.12μs
  • D. 121.44μs
展开解析

B存储转发要把整个帧收完:1000 × 8 ÷ 100Mbps = 80μs。

  • A 错0.48μs 是直通交换只收 6 字节目的地址的延迟;存储转发要把 1000B 收完。
  • B 对对:1000 × 8 ÷ 100Mbps = 80μs。
  • C 错5.12μs 是 64B 最短帧的发送时间;题目的帧是 1000B。
  • D 错121.44μs 是 1518B 最长帧的发送时间;题目的帧是 1000B。

变化点:直通交换换成存储转发,看的是整个帧而不是 6 字节目的地址。

变式计网考纲补充(尚无真题)
在 IEEE 802 局域网参考模型中,与传输介质有关、负责介质访问控制和按 MAC 地址寻址的是( )。
  • A. LLC 子层
  • B. MAC 子层
  • C. 网络层
  • D. 传输层
展开解析

BIEEE 802 把数据链路层拆成 LLC 和 MAC 两个子层:LLC 与介质无关,向网络层提供服务;MAC 与介质有关,负责组帧、差错检测、寻址和介质访问控制。

  • A 错LLC 子层与传输介质无关,向网络层提供统一的服务,不负责介质访问控制。
  • B 对对:MAC 子层与介质有关,负责介质访问控制和按 MAC 地址寻址。
  • C 错网络层按 IP 地址转发分组,不按 MAC 地址寻址,也不管介质访问。
  • D 错传输层在两台主机的进程之间端到端通信,根本不涉及传输介质和 MAC 地址。

考点:3.7 节“局域网的基本概念与体系结构”。

变式计网考纲补充(尚无真题)
下列关于 PPP 协议的叙述中,错误的是( )。
  • A. 用链路控制协议 LCP 建立、配置和测试链路
  • B. 用网络控制协议 NCP(如 IPCP)配置网络层参数
  • C. 通过帧序号和确认机制实现可靠传输
  • D. 可以在鉴别阶段用 PAP 或 CHAP 验证用户身份
展开解析

CPPP 只做差错检测,发现错帧就丢弃;它没有序号和确认,不提供可靠传输,也没有流量控制。

  • A 不选正确:LCP 负责建立、配置和测试数据链路连接。
  • B 不选正确:NCP(如 IP 用的 IPCP)为网络层协商参数,例如分配 IP 地址。
  • C 选错误:PPP 帧没有序号,也不确认,只做差错检测,不提供可靠传输。
  • D 不选正确:PPP 在鉴别阶段可以用 PAP 或 CHAP 验证用户身份。

考点:3.7 节 PPP 的组成、特点和工作过程。

变式计网考纲补充(尚无真题)
下列 MAC 地址中,属于多播地址的是( )。
  • A. 00-1A-2B-3C-4D-5E
  • B. 02-00-00-12-34-56
  • C. 0C-29-AB-CD-EF-01
  • D. 01-00-5E-7F-00-01
展开解析

D看首字节最低位(I/G 位):01 = 0000 0001,最低位为 1,是多播;00、02、0C 的最低位都是 0,是单播(02 的次低位为 1,表示本地管理)。

  • A 错首字节 00 = 0000 0000,最低位 0,是单播地址。
  • B 错首字节 02 = 0000 0010,最低位 0,是单播(次低位 1 只表示本地管理)。
  • C 错首字节 0C = 0000 1100,最低位 0,是单播地址。
  • D 对对:首字节 01 最低位为 1,是多播(01-00-5E 开头正是 IP 组播映射的地址)。

考点:3.7 节“以太网的特点与 MAC 地址”。

变式计网考纲补充(尚无真题)
一个 28 B 的 ARP 报文封装成以太网 V2 帧时,需要填充的字节数是( )。
  • A. 0
  • B. 18
  • C. 36
  • D. 46
展开解析

B以太网帧的数据部分最少 46 B,46 − 28 = 18 B,帧长 14 + 46 + 4 = 64 B。

  • A 错28B 小于以太网数据部分的最小值 46B,必须填充。
  • B 对对:46 − 28 = 18B。
  • C 错36 = 64 − 28:把 64B 当成了数据部分的最小值;64B 是整帧的最小长度(含首部 14B、尾部 4B),数据部分最少 46B。
  • D 错46 是数据部分的最小长度,不是要填充的字节数;46 − 28 = 18。

考点:3.7 节“以太网 V2 的 MAC 帧格式”。

3.8虚拟局域网 VLAN

★ 考过选择题

VLAN:在一台交换机上“隔出”几个广播域

问题:交换机连起来的整个局域网是一个广播域:任何一台主机发的广播帧(如 ARP 请求),所有主机都会收到。主机一多,广播帧会占用大量带宽,也不安全——财务部的主机能直接收到研发部的广播。买几台交换机按部门分开接?部门和楼层往往对不上,人员一调动就要重新布线。

虚拟局域网 VLAN 把一个物理局域网在逻辑上划分成若干个互相隔离的广播域,每个 VLAN 就是一个广播域,和主机的物理位置无关。

交换机 S1交换机 S2干道(trunk)链路帧插入 4 B 标签,写明 VLAN 号A · VLAN 10B · VLAN 20C · VLAN 10D · VLAN 20接入端口:不带标签A 的广播只到 C收不到收不到VLAN 10、20 之间通信要经路由器
图 3-29 VLAN 隔离广播。同一 VLAN 的主机可以分散在不同交换机上(A 和 C),不同 VLAN 的主机可以接在同一台交换机上(A 和 B)。
  • 划分方法:基于交换机端口(最常用,考题都是这种);基于 MAC 地址;基于 IP 地址等网络层信息。
  • 同一 VLAN 的主机之间在链路层直接通信;不同 VLAN 之间在链路层完全隔离,必须经过路由器或三层交换机转发。
  • 交换机对帧的处理都限制在帧进入端口所属的 VLAN 内:单播帧只在本 VLAN 内查表转发(查不到也只在本 VLAN 内泛洪);广播帧只发往本 VLAN 的其他端口。
  • 所以 ARP 请求(广播)只能到达同一 VLAN 的主机,一台主机的 ARP 表里只会有同一 VLAN 中主机的 IP—MAC 对应关系(2024-35);不同 VLAN 的主机即使 IP 在同一网段也解析不到(它们实际上也不应该配在同一网段)。

多个交换机上的同一 VLAN 要互通,交换机之间的干道链路(trunk)上传输的帧要标明属于哪个 VLAN。IEEE 802.1Q 在以太网帧的源地址和类型字段之间插入 4 字节的 VLAN 标签:

0816243119字节标签协议标识 TPID = 0x8100一看到它就知道是带标签的帧优先级PCPDEIVLAN 标识符 VID12 位,最多 4096 个0
图 3-30 802.1Q 标签(4 字节)。插在源地址之后、原来的类型字段之前,所以带标签的帧最长 1518 + 4 = 1522 字节。插入或去掉标签后帧的内容变了,交换机要重新计算 FCS。VID 的 0 和 4095 保留,可用 4094 个 VLAN(拓展)。
  • 接入端口(access):连主机的端口,只属于一个 VLAN。帧从主机进来时交换机给它“贴上”标签,从接入端口发给主机时“撕掉”标签——主机看到的始终是普通以太网帧,完全不知道 VLAN 的存在。
  • 干道端口(trunk):交换机之间、交换机与路由器之间的端口,可以承载多个 VLAN 的帧,帧在这里带着标签传输。

VLAN 的好处:① 缩小广播域,减少广播帧占用的带宽;② 安全:不同部门在链路层互相看不见;③ 灵活:人员调动只要在交换机上改一下端口所属的 VLAN,不用重新布线。

不同 VLAN 怎样通信:VLAN 之间在链路层是隔断的,必须经过网络层。常见做法是“单臂路由”:路由器只用一个物理接口接到交换机的干道端口,在这个接口上为每个 VLAN 配一个子接口(各有一个 IP 地址,作为该 VLAN 的默认网关);VLAN 10 的帧带着标签 10 上到路由器,路由器查路由表后改成标签 20 发回交换机,再交给 VLAN 20 的主机。三层交换机把这件事在交换机内部做了,更快。

2026-36计网
支持 VLAN 划分的以太网交换机,已按端口划分了两个 VLAN。VLAN 划分结果及各端口连接主机的 MAC 地址如下图所示。下列具有不同目的 MAC 地址(DA)和源 MAC 地址(SA)的以太帧 F1~F4 中,H3 会接收到的是( )。 VLAN 1VLAN 2123456789101112131415161718192021222324H100-1A-2B-3C-4D-01H200-1A-2B-3C-4D-02H300-1A-2B-3C-4D-03H400-1A-2B-3C-4D-04H500-1A-2B-3C-4D-05H600-1A-2B-3C-4D-06 F1:(DA)00-1A-2B-3C-4D-03;(SA)00-1A-2B-3C-4D-01
F2:(DA)00-1A-2B-3C-4D-04;(SA)00-1A-2B-3C-4D-05
F3:(DA)FF-FF-FF-FF-FF-FF;(SA)00-1A-2B-3C-4D-02
F4:(DA)00-1A-2B-3C-4D-06;(SA)00-1A-2B-3C-4D-03
  • A. 仅 F2、F4
  • B. 仅 F1、F3
  • C. 仅 F1、F2
  • D. 仅 F3、F4
展开解析

考点3.8 VLAN 中的帧转发

BH3 接端口 5,属于 VLAN 1(端口 1~7、13~19)。交换机只在帧进入端口所属的 VLAN 内转发,所以 H3 只能收到 VLAN 1 中发给它的单播帧和广播帧。

  1. 对应关系:VLAN 1 = H1(端口 13,…-01)、H2(端口 2,…-02)、H3(端口 5,…-03);VLAN 2 = H4(端口 8,…-04)、H5(端口 9,…-05)、H6(端口 12,…-06)。
  2. F1:H1 → H3,同在 VLAN 1 的单播 → H3 收到。
  3. F2:H5 → H4,都在 VLAN 2 → 到不了 H3。
  4. F3:H2 发的广播,在 VLAN 1 内泛洪 → H3 收到。
  5. F4:H3 自己发给 H6 的帧,H3 是发送方;而且 H6 在 VLAN 2,交换机不会转发过去。
  • A 错F2 在 VLAN 2 内,F4 是 H3 自己发出的帧。
  • B 对F1、F3。
  • C 错F2 的源和目的都在 VLAN 2,H3 收不到。
  • D 错D 的 F3 对了,错在 F4:F4 是 H3 自己发给 H6 的帧,H3 是发送方而不是接收方;何况 H6 在 VLAN 2,交换机也不会把它转出 VLAN 1。

先按端口把主机分进 VLAN,再逐帧看:同 VLAN 的单播到目的主机,同 VLAN 的广播到所有主机,跨 VLAN 的都到不了。

2024-35计网
如下图所示的支持 VLAN 划分的交换机,已按端口划分了 3 个 VLAN,部分端口连接主机的 IP 地址和 MAC 地址如图中所示。ARP 表结构为 <IP 地址,MAC 地址,TTL>,下列选项中,不会出现在 H4 的 ARP 表中的是( )。 VLAN 1VLAN 2VLAN 3交换机H1192.168.3.9100-3E-C2-39-12-B5H2192.168.3.8100-18-A2-3B-36-21H3192.168.3.12500-E5-78-4A-09-B2H4192.168.3.1200-35-6A-B1-4C-92H5192.168.3.25100-1A-39-5B-E4-45H6192.168.3.12900-08-6E-05-A7-82H7192.168.3.19000-51-48-C9-63-A3
  • A. <192.168.3.81,00-18-A2-3B-36-21,14:32:00>
  • B. <192.168.3.91,00-3E-C2-39-12-B5,14:37:00>
  • C. <192.168.3.125,00-E5-78-4A-09-B2,14:35:00>
  • D. <192.168.3.129,00-08-6E-05-A7-82,14:52:00>
展开解析

考点3.8 VLAN 隔离广播域

DARP 请求是广播帧,只能在同一个 VLAN 内传播。H4 的 ARP 表里只可能出现与它同一 VLAN 的主机。

  1. 看图中端口的分组:VLAN 1 = H1、H2、H3、H4;VLAN 2 = H5;VLAN 3 = H6、H7。
  2. H4 在 VLAN 1,ARP 表中只可能有 H1、H2、H3 的表项。
  3. 192.168.3.129、00-08-6E-05-A7-82 是 H6,属于 VLAN 3,不会出现。
  • A192.168.3.81 是 H2,同在 VLAN 1,可以出现。
  • B192.168.3.91 是 H1,同在 VLAN 1,可以出现。
  • C192.168.3.125 是 H3,同在 VLAN 1,可以出现。
  • DH6 在 VLAN 3,H4 的 ARP 广播到不了它,不会出现。

VLAN = 广播域。ARP 靠广播,跨不了 VLAN。TTL 一栏只是干扰。

真题怎么考

两道 VLAN 题都是“先给每台主机标上 VLAN 号,再看帧能到哪”:单播帧要求源、目的在同一 VLAN;广播帧到达源所在 VLAN 的所有主机;ARP 表里只可能有同一 VLAN 的主机。可能的新考法:802.1Q 标签插在哪、多长、VID 几位;带标签帧的最大长度 1522 B;不同 VLAN 之间怎样通信(路由器 / 三层交换机);VLAN 隔离的是广播域还是冲突域(广播域)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2024-35 改
在 2024-35 的 VLAN 划分下,H6(VLAN 3)发出 ARP 请求,下列主机中能收到该请求的是( )。
  • A. H4
  • B. H5
  • C. H7
  • D. H1、H2、H3、H4
展开解析

CARP 请求是广播帧,只在 H6 所在的 VLAN 3 内传播,同一 VLAN 的只有 H7。

  • A 错H4 在 VLAN 1,H6 的 ARP 广播只在 VLAN 3 内传播,到不了 H4。
  • B 错H5 在 VLAN 2,同样收不到 VLAN 3 的广播。
  • C 对对:同在 VLAN 3 的只有 H7。
  • D 错H1 ~ H4 都在 VLAN 1,广播帧不会跨出 H6 所在的 VLAN 3。

变化点:从“ARP 表里有谁”换成“谁收得到广播”,本质都是 VLAN 隔离广播域。

变式计网由 2026-36 改
在 2026-36 的 VLAN 划分下(设交换机已学到所有主机的端口),下列以太帧中 H5 会接收到的是( )。
F1:DA 为 H4,SA 为 H6 F2:DA 为 FF-FF-FF-FF-FF-FF,SA 为 H2 F3:DA 为 H5,SA 为 H4 F4:DA 为 FF-FF-FF-FF-FF-FF,SA 为 H6
  • A. 仅 F1、F3
  • B. 仅 F2、F4
  • C. 仅 F1、F2
  • D. 仅 F3、F4
展开解析

DH5 在 VLAN 2(端口 9)。F3:同 VLAN 发给 H5 的单播,收到;F4:VLAN 2 内的广播,收到;F1 目的是 H4;F2 是 VLAN 1 的广播,到不了 VLAN 2。

  • A 错F1 的目的是 H4,交换机已学到 H4 的端口,只从那里转发,H5 收不到;F3 倒是对的。
  • B 错F2 是 H2 在 VLAN 1 发的广播,到不了 VLAN 2 的 H5;F4 倒是对的。
  • C 错F1 发给 H4(单播,交换机已学到端口),F2 是 VLAN 1 的广播,H5 一个也收不到。
  • D 对对:F3(同 VLAN 发给 H5)、F4(VLAN 2 内广播)。

变化点:换一台主机当接收方,重新按 VLAN 分组判断。

变式计网考纲补充(尚无真题)
IEEE 802.1Q 标签中用于标识 VLAN 的 VID 字段长度为( )。
  • A. 12 位
  • B. 8 位
  • C. 16 位
  • D. 4 位
展开解析

A802.1Q 标签 4 B:TPID 16 位(0x8100)+ 优先级 3 位 + DEI 1 位 + VID 12 位,最多 4096 个 VLAN。

  • A 对对:VID 12 位,最多 4096 个。
  • B 错8 位只能标识 256 个 VLAN;VID 是 12 位。
  • C 错16 位是 TPID(0x8100)字段的长度,不是 VID。
  • D 错4 是整个 802.1Q 标签的字节数(4B),VID 只占其中 12 位。

考点:3.8 节“802.1Q 标签”。

变式计网考纲补充(尚无真题)
同一台交换机上分属 VLAN 10 和 VLAN 20 的两台主机要通信,必须( )。
  • A. 把交换机设为混杂模式
  • B. 经过路由器或三层交换机转发
  • C. 使用广播帧
  • D. 把两台主机的 MAC 地址设为相同
展开解析

B不同 VLAN 在链路层完全隔离,只能经网络层转发(如单臂路由、三层交换机)。

  • A 错混杂模式只是让网卡接收所有帧,不能让交换机把帧转发到别的 VLAN。
  • B 对对:不同 VLAN 之间必须经网络层转发。
  • C 错广播帧同样被限制在本 VLAN 内,到不了另一个 VLAN。
  • D 错MAC 地址相同会让交换表混乱;VLAN 隔离按端口划分,改 MAC 地址也照样不能通信。

考点:3.8 节“VLAN 的好处与单臂路由”。

3.9链路层设备:网桥与交换机,冲突域与广播域

★★★ 高频选择题综合题

从集线器到网桥,再到交换机

用集线器把几个以太网连成一个大网,所有主机都在一个冲突域里,网越大冲突越多。网桥工作在数据链路层:它收到一个帧,先看目的 MAC 地址,再决定转不转、往哪个端口转。这样网桥两侧各自是一个冲突域,一侧内部的通信不会被转到另一侧,网络的总吞吐量提高了。

  • 透明网桥:主机感觉不到它的存在,即插即用,转发表靠自学习建立(下面讲)。
  • 能连接不同规格的局域网:网桥是存储转发的——先把整个帧收下、检查无误再转发,所以两侧可以是不同速率的以太网,甚至不同 MAC 协议的局域网(如以太网与令牌环网,要做帧格式转换)。集线器、中继器做不到这一点。代价是存储转发带来时延;网桥的端口少(典型 2 个),用软件查表,交换机端口多、用硬件高速转发。
  • 以太网交换机本质上是一个多端口的网桥(2015-37),每个端口通常直接接一台主机或一个集线器,工作在数据链路层,根据帧的目的 MAC 地址转发(2009-36)。交换机工作在全双工方式时没有冲突,不需要 CSMA/CD。
2009-36计网
以太网交换机进行转发决策时使用的 PDU 地址是( )。
  • A. 目的物理地址
  • B. 目的 IP 地址
  • C. 源物理地址
  • D. 源 IP 地址
展开解析

考点3.9 交换机按目的 MAC 地址转发

A交换机工作在数据链路层,只认识 MAC 地址(物理地址),根据帧的目的 MAC 地址查转发表决定从哪个端口转发。

  • A 对目的物理地址。
  • B 错目的 IP 地址是网络层地址,路由器用它转发。
  • C 错源物理地址是交换机用来“学习”、建立转发表的,不用于转发决策。
  • D 错源 IP 地址是网络层地址,交换机不看。

交换机:源 MAC 用来学,目的 MAC 用来转。

2015-37计网
下列关于交换机的叙述中,正确的是( )。
  • A. 以太网交换机本质上是一种多端口网桥
  • B. 通过交换机互连的一组工作站构成一个冲突域
  • C. 交换机每个端口所连网络构成一个独立的广播域
  • D. 以太网交换机可实现采用不同网络层协议的网络互联
展开解析

考点3.9 交换机的性质

A以太网交换机本质上是一个多端口网桥,工作在数据链路层。

  • A 对多端口网桥。
  • B 错交换机的每个端口是一个独立的冲突域,用交换机连起来的工作站不在同一个冲突域(用集线器连才是)。
  • C 错交换机不隔离广播域,它的所有端口同属一个广播域。每个端口是一个独立的冲突域,不是广播域。
  • D 错互连网络层协议不同的网络要用路由器(网络层及以上的设备),交换机做不到。

交换机:每端口一个冲突域,整体一个广播域。

交换机怎样转发:自学习,跟我走一遍

交换机的转发表(交换表)不用人工配置,是自学习出来的:

  1. 学习:收到一个帧,先把(源 MAC 地址,进入端口)写入转发表——“从这个口进来的,以后发给它就走这个口”。表项有有效时间(如 300 s),过期删除,所以主机换了端口也能重新学到。
  2. 转发:用目的 MAC 地址查表。
    • 查到了,且对应端口不是进入端口 → 只从该端口转发;
    • 查到了,但就是进入端口 → 目的主机和源在同一侧,丢弃(过滤);
    • 查不到,或者是广播帧 → 从除进入端口外的所有端口转发(泛洪)。
交换机(转发表初始为空)1234ABCDA、B、C、D 分别接在端口 1、2、3、4
图 3-31 一台 4 口交换机。下面的表从空表开始,依次发生 5 次通信。
次序帧(源 → 目的)学到什么查目的地址从哪些端口发出转发表(之后)
①A → DA 在端口 1D 不在表中2、3、4(泛洪)A-1
②D → AD 在端口 4A 在端口 11A-1、D-4
③C → AC 在端口 3A 在端口 11A-1、D-4、C-3
④B → 广播B 在端口 2广播帧1、3、4(泛洪)A-1、D-4、C-3、B-2
⑤A → C(已有)C 在端口 33不变

注意第 ① 步:D 还没“说过话”,交换机不知道它在哪,只能泛洪——B、C 也会收到这个帧(网卡发现目的地址不是自己就丢弃)。交换机学的永远是源地址,用的永远是目的地址。

2014-34计网
某以太网拓扑及交换机当前转发表如下图所示,主机 00-e1-d5-00-23-a1 向主机 00-e1-d5-00-23-c1 发送 1 个数据帧,主机 00-e1-d5-00-23-c1 收到该帧后,向主机 00-e1-d5-00-23-a1 发送 1 个确认帧,交换机对这两个帧的转发端口分别是( )。 交换机1主机00-e1-d5-00-23-a12主机00-e1-d5-00-23-b13主机00-e1-d5-00-23-c1目的地址端口00-e1-d5-00-23-b12
  • A. {3} 和 {1}
  • B. {2, 3} 和 {1}
  • C. {2, 3} 和 {1, 2}
  • D. {1, 2, 3} 和 {1}
展开解析

考点3.9 交换机的自学习与转发

B交换机收到帧:先用源地址“学习”,再用目的地址查表;查不到就从除进入端口外的所有端口转发。

  1. 第 1 帧 a1 → c1,从端口 1 进入:学到(a1,端口 1)。表中没有 c1,从端口 {2, 3} 转发。
  2. 第 2 帧 c1 → a1,从端口 3 进入:学到(c1,端口 3)。表中已有 a1 → 端口 1,只从 {1} 转发。
  • A 错{3}:第 1 帧时表中还没有 c1,交换机不知道它在端口 3,只能泛洪。
  • B 对{2, 3} 和 {1}。
  • C 错{1, 2}:第 2 帧时交换机已经从第 1 帧学到 a1 在端口 1,不会泛洪。
  • D 错{1, 2, 3}:泛洪不会从帧进入的端口 1 发回去。

每收到一帧都先学源地址。泛洪 = 除进入端口外的所有端口。

三种交换方式与交换机的容量

直通交换(cut-through)无碎片交换(fragment-free)存储转发(store-and-forward)
做法只要收到帧首部的 6 字节目的地址,查表后立即开始转发收到前 64 字节再转发(短于 64 B 的是冲突碎片,丢掉)把整个帧收下来放进缓存,CRC 检查无误后再转发
转发时延(100 Mb/s)48 bit ÷ 108 b/s = 0.48 μs(2013-38)512 bit ÷ 108 b/s = 5.12 μs至少整帧的发送时间:64 B 帧 5.12 μs,1518 B 帧 121.44 μs
检错不检查,错帧也照转只过滤冲突碎片丢弃错帧
其他两端口速率必须相同折中(拓展)可连接不同速率的端口,是最常用的方式
2013-38计网
对于 100Mbps 的以太网交换机,当输出端口无排队,以直通交换(cut-through switching)方式转发一个以太网帧(不包括前导码)时,引入的转发延迟至少是( )。
  • A. 0μs
  • B. 0.48μs
  • C. 5.12μs
  • D. 121.44μs
展开解析

考点3.9 直通交换与存储转发

B直通交换只要收到帧首部的目的 MAC 地址(6 字节)就能查表并开始转发,不用等整个帧到齐。

  1. 不含前导码时,帧的开头就是目的地址,共 6 × 8 = 48bit。
  2. 转发延迟至少 48 ÷ 100M = 0.48μs。
  • A 错0μs:至少要收到目的地址才能查表。
  • B 对0.48μs。
  • C 错5.12μs:64B 最短帧的发送时间,是存储转发方式转发最短帧的延迟。
  • D 错121.44μs:1518B 最长帧的发送时间,是存储转发方式转发最长帧的延迟。

直通:只等 6B 目的地址;存储转发:等整帧。

交换机的总容量:用集线器连接的 N 台 10 Mb/s 主机共享 10 Mb/s,平均每台只有 10 ÷ N;用 10 Mb/s 交换机连接时,每个端口到主机都独占 10 Mb/s,多对主机可以同时通信,N 个端口的交换机总容量为 N × 10 Mb/s。跟我算:24 口的 100 Mb/s 交换机,总容量 24 × 100 Mb/s = 2.4 Gb/s;若各端口都工作在全双工、两个方向分别计算,则为 4.8 Gb/s(题目说明“全双工”并按双向计时用这个口径)。

跟我算:共享与独占。10 台主机用 100 Mb/s 的集线器连接,所有主机共享 100 Mb/s,平均每台 100 ÷ 10 = 10 Mb/s,而且同一时刻只能有一台在发;换成 10 口 100 Mb/s 交换机后,每台主机独占 100 Mb/s,5 对主机可以同时通信,交换机总容量 10 × 100 Mb/s = 1 Gb/s。

拓展 生成树协议 STP:为什么交换机之间连成环会出事

为了可靠,常在交换机之间多连几条线,形成环路。可广播帧会沿着环一圈圈地转(交换机不改帧,以太网帧也没有 TTL),越转越多,很快占满带宽——这就是广播风暴;同一个源地址还会从不同端口“学到”,转发表来回抖动。生成树协议 STP(IEEE 802.1D)让交换机之间交换信息,自动选出一棵没有环路的生成树,把多余的端口阻塞(不转发数据帧);正在用的链路坏了,再把被阻塞的端口打开顶上。逻辑上无环,物理上仍有备份。

S1(根)S2S3✕端口被阻塞:备用,不转发绿:生成树上正在使用的链路
图 3-32 生成树:物理上有环,逻辑上无环。

冲突域与广播域:怎么数

  • 冲突域:同一时刻只能有一台主机发送的范围——其中任意两台同时发就会冲突。
  • 广播域:一台主机发出的链路层广播帧能到达的范围。
设备工作层次隔离冲突域隔离广播域说明
中继器、集线器物理层✗✗只放大转发比特,连起来的都在一个冲突域
网桥、交换机数据链路层✓(每个端口一个冲突域)✗广播帧照样泛洪到所有端口;划分 VLAN 后每个 VLAN 一个广播域
路由器网络层✓✓(每个接口一个广播域)不转发链路层广播,能抑制广播风暴(2010-38)
数冲突域、广播域的方法
  1. 广播域:只看路由器(和 VLAN)。每个路由器接口连出去的那一片是一个广播域;划了 VLAN 的交换机,每个 VLAN 一个广播域。
  2. 冲突域:交换机和路由器的每个端口都是一个分界点。一个集线器连同它下面所有主机算一个冲突域;交换机端口直接连一台主机,这条链路自成一个冲突域。交换机与交换机、交换机与路由器之间的点对点链路,按 2020-35 的官方答案不计入(题目另有说明时除外)。
R交换机 SHub2接口 1接口 2H1H2Hub1H3H4H5H6H7
图 3-33 数域练习。
例数域
(1) 上图网络有几个冲突域、几个广播域?(2) 若把 Hub2 换成交换机,又是几个?(3) 一台 8 口交换机按端口划成 VLAN 10(端口 1~4)和 VLAN 20(端口 5~8),每个端口接一台主机,有几个冲突域、几个广播域?
跟我数

(1) 广播域 = 路由器接口数 = 2。冲突域:S 下面 H1、H2 各 1 个,Hub1 连同 H3、H4 1 个;R 接口 2 下面的 Hub2 连同 H5 ~ H7(还有 R 的接口)1 个;S 与 R 之间的链路按官方口径不计。共 4 个。

(2) Hub2 换成交换机后,H5、H6、H7 各成一个冲突域:2 + 1 + 3 = 6 个冲突域;广播域仍是 2(交换机不隔离广播域)。

(3) 每个端口一台主机:8 个冲突域;两个 VLAN:2 个广播域。两个 VLAN 的主机要通信,必须再接一台路由器(或用三层交换机)。

跟我走一遍:集线器和交换机混在一起,帧能到哪

仍用上面“数域练习”的图,设交换机 S 已经学全了转发表。

  • H3 发帧给 H1:Hub1 把比特送到它的所有端口 → H4 收到(丢弃),S 也收到;S 查表只从 H1 的端口转出 → H1 收到。H2 收不到。
  • H1 回帧给 H3:S 查表只从连 Hub1 的端口转出;Hub1 再转到所有端口 → H3、H4 都收到。
  • H5 发广播帧:Hub2 送给 H6、H7 和 R 的接口 2;R 不转发链路层广播 → H1 ~ H4 都收不到。

口诀:集线器见谁都给,交换机只给该给的,路由器连广播都挡。2016-35 就是第二种情况的翻版。

网桥 / 交换机路由器
层次数据链路层网络层
看什么地址MAC 地址IP 地址
转发表怎么来自学习路由协议或人工配置
广播帧转发(泛洪)不转发
连接不同网络只能连同一种链路层(同一个网络内)能连不同网络、不同链路层
即插即用是要配置 IP 地址、路由

拓展 三层交换机 = 交换机 + 路由功能,常用来在不同 VLAN 之间转发,速度比普通路由器快。

例综合
仍用“数域练习”的图,交换机 S 的转发表开始为空,所有 ARP 缓存为空。H1 要给另一个网络里的 H5 发一个 IP 分组。按时间顺序写出:每个帧是什么、物理层上哪些主机(和设备)收到、交换机 S 学到了什么。
跟我做
  1. H1 广播 ARP 请求(问 R 接口 1 的 MAC,因为 H5 在别的网络,要先交给默认网关):S 学到“H1 在 H1 的端口”,广播帧泛洪 → H2、Hub1(H3、H4)、R 接口 1 都收到;只有 R 回答。
  2. R 单播 ARP 响应给 H1:S 学到“R 接口 1 在连 R 的端口”,查表只发给 H1。
  3. H1 发出封装 IP 分组的帧(目的 MAC = R 接口 1):S 查表只发给 R。
  4. R 查路由表,从接口 2 发出:先在接口 2 一侧广播 ARP 请求问 H5 的 MAC → Hub2 把它送给 H5、H6、H7;H5 回 ARP 响应。
  5. R 把 IP 分组封装成新帧(源 MAC = R 接口 2,目的 MAC = H5)发出:Hub2 照样送给 H5、H6、H7,只有 H5 收下,H6、H7 的网卡丢弃。

要点:IP 地址从头到尾不变;帧在每一段链路上重新封装,MAC 地址每段都换(4.6 节);交换机后面只转发给目的端口,集线器后面所有主机都“听得到”。

2010-38计网
下列网络设备中,能够抑制广播风暴的是( )。
I. 中继器 II. 集线器 III. 网桥 IV. 路由器
  • A. 仅 I 和 II
  • B. 仅 III
  • C. 仅 III 和 IV
  • D. 仅 IV
展开解析

考点3.9 各种设备能否隔离广播域

D广播风暴是广播帧在网络中泛滥。只有能隔离广播域的设备才能抑制它,也就是网络层的路由器。

  1. I 中继器、II 集线器:物理层,冲突域和广播域都不隔离。
  2. III 网桥:隔离冲突域,但广播帧照样从所有端口转发,不隔离广播域。
  3. IV 路由器:不转发链路层广播,隔离广播域。
  • A 错中继器、集线器连冲突域都不隔离。
  • B 错网桥转发广播帧,不能抑制广播风暴。
  • C 错C 的路由器(IV)对了,错在多选了网桥(III):网桥只隔离冲突域,广播帧照样从所有端口转发,抑制不了广播风暴。
  • D 对仅路由器。

冲突域:交换机、网桥、路由器都能隔离。广播域:只有路由器(和 VLAN)能隔离。

2020-35计网
下图所示的网络中,冲突域和广播域的个数分别是( )。 R路由器交换机集线器主机主机集线器主机主机交换机集线器主机主机集线器主机主机集线器为 100BaseT 集线器
  • A. 2,2
  • B. 2,4
  • C. 4,2
  • D. 4,4
展开解析

考点3.9 数冲突域和广播域

C路由器隔离广播域和冲突域;交换机只隔离冲突域;集线器都不隔离。

  1. 广播域:路由器有 2 个接口,各连一台交换机及其下面的所有设备 → 2 个。
  2. 冲突域:交换机的每个端口是一个冲突域的边界;每个集线器连同它下面的 2 台主机是一个冲突域 → 4 个集线器,4 个。
  3. 交换机与路由器之间是点对点全双工链路,不会发生冲突,本题不计入(官方答案为 4)。
  • A 错冲突域 2:把每台交换机下面算成一个冲突域,但交换机的每个端口都隔离冲突域。
  • B 错B 是冲突域 2、广播域 4:两个数正好颠倒——交换机和集线器都不隔离广播域,广播域只有路由器两个接口划出的 2 个;冲突域才是 4 个(每个集线器连同它的主机一个)。
  • C 对4 个冲突域,2 个广播域。
  • D 错广播域 4:集线器和交换机都不隔离广播域,只有路由器的 2 个接口划出 2 个广播域。

广播域数 = 路由器接口数(不划 VLAN 时)。冲突域:一个集线器连同它下面的主机算一个,交换机直连主机的端口各算一个。

2016-35计网
在下图(2016 年题 33~41 图)所示的网络中,若主机 H2 向主机 H4 发送 1 个数据帧,主机 H4 向主机 H2 立即发送一个确认帧,则除 H4 外,从物理层上能够收到该确认帧的主机还有( )。 InternetWeb 服务器 S 130.18.10.1R1201.1.3.9L0(NAT)R2R3L1201.1.3.1201.1.2.0/25201.1.1.0/24E0DNS 服务器201.1.1.1E1 192.168.3.254SwitchHubH1192.168.3.2H2192.168.3.3H3192.168.3.251H4192.168.3.252R1~R3 为路由器Switch 为 100Base-T 交换机Hub 为 100Base-T 集线器H1~H4 的默认域名服务器均为 201.1.1.1
  • A. 仅 H2
  • B. 仅 H3
  • C. 仅 H1、H2
  • D. 仅 H2、H3
展开解析

考点3.9 集线器与交换机的转发范围

DH4 接在集线器上,集线器把信号从所有其他端口发出;交换机则按转发表只往目的端口转发。

  1. H2 先发给 H4 的数据帧经过交换机,交换机已经学到 H2 在哪个端口。
  2. H4 的确认帧到集线器:集线器把它发给 H3 和交换机。
  3. 交换机查表,目的 H2 的端口已知,只从 H2 那个端口转发 → H2 收到;H1 收不到。
  • A 错仅 H2:漏了 H3。H3 与 H4 同在一个集线器上,物理层一定收得到(只是链路层发现目的地址不是自己,丢弃)。
  • B 错仅 H3:漏了目的主机 H2。
  • C 错H1 接在交换机另一个端口上,交换机不会把这个帧发给 H1。
  • D 对H2、H3。

“物理层上能收到”= 看比特信号送到了哪里:集线器全送,交换机只送目的端口(已学到时)。

2016-35 的关键:H4 发给 H2 的确认帧先到集线器,集线器把比特转发到所有端口,H3 一定收到;再到交换机,交换机已经从 H2 发来的帧学到 H2 在哪个端口,只转发给 H2,H1 收不到。综合题 2019-47、2022-47(第 7 篇 t4)在同类拓扑上考设备、冲突域和帧的转发范围。

真题怎么考:3.9 的 7 道选择题
  • 设备性质(2009-36、2015-37、2010-38):交换机 = 多端口网桥,看目的 MAC 转发,隔离冲突域不隔离广播域;只有路由器能抑制广播风暴。
  • 转发端口(2014-34、2016-35):先学源地址,再查目的地址;集线器无条件转发到所有端口。
  • 数域(2020-35):广播域看路由器接口和 VLAN,冲突域看集线器和交换机端口。
  • 交换时延(2013-38):直通 = 目的地址 6 B 的发送时间;存储转发 = 整帧的发送时间。
易错辨析
  • 交换机学习用源地址,转发用目的地址;ARP 请求是广播帧,交换机一定泛洪。
  • 集线器是物理层设备,没有转发表,也不检查任何地址。
  • VLAN 隔离的是广播域;交换机端口隔离的是冲突域。
  • 直通交换“至少”的时延只算目的地址 6 B,不算前导码(题目会说明)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2014-34 改
在 2014-34 的交换机中(转发表初始只有 b1 → 2),主机 c1 向 b1 发送一个帧,b1 回复一个帧给 c1,交换机对这两个帧的转发端口分别是( )。
  • A. {2} 和 {3}
  • B. {1, 2} 和 {3}
  • C. {2} 和 {1, 3}
  • D. {1, 2} 和 {1, 3}
展开解析

A第 1 帧:学到 c1 → 3;b1 已在表中 → 只从端口 2 转发。第 2 帧:学到 b1 → 2(已有);c1 已学到 → 只从端口 3 转发。

  • A 对对:两次目的地址都在表中,各只从一个端口转发。
  • B 错{1, 2} 是把 b1 当成未知、泛洪的结果;表中已有 b1 → 2,只从端口 2 转发。
  • C 错{1, 3} 是把 c1 当成未知、泛洪的结果;交换机已从第 1 帧学到 c1 在端口 3,只从端口 3 转发。
  • D 错两帧都按泛洪处理了:b1 本来就在表中,c1 也在第 1 帧时学到,两帧都只需一个端口。

变化点:目的地址已在表中,就不用泛洪。

变式计网由 2020-35 改
路由器的一个接口连交换机 S,S 的三个端口各连一个集线器,每个集线器连 3 台主机;路由器的另一个接口直接连一台主机。按主机所在的冲突域计,冲突域和广播域的个数分别是( )。
  • A. 3、2
  • B. 4、2
  • C. 4、1
  • D. 3、1
展开解析

B三个集线器各一个冲突域,路由器另一侧那台主机的链路一个,共 4 个;路由器两个接口划出 2 个广播域。

  • A 错冲突域少算了路由器另一个接口直连主机的那条链路,它自成一个冲突域。
  • B 对对:3 个集线器 + 1 条直连链路 = 4 个冲突域;路由器 2 个接口 = 2 个广播域。
  • C 错广播域少算了:路由器的两个接口各连一个网络,划出 2 个广播域。
  • D 错两个数都少了一个:漏了路由器另一侧的冲突域,也漏了路由器隔出的第 2 个广播域。

变化点:拓扑换了,数法不变:集线器整体算一个,路由器接口数 = 广播域数。

变式计网由 2016-35 改
在 2016 年题图中,若 H1 向 H3 发送一个数据帧(交换机已学到所有主机的端口),则除 H1 外,从物理层上能收到该帧的主机是( )。
  • A. 仅 H3
  • B. 仅 H2、H3
  • C. 仅 H3、H4
  • D. H2、H3、H4
展开解析

C交换机只把帧转发到 Hub 所在端口,Hub 再从所有端口发出,H3、H4 都收到;H2 在交换机的另一个端口,收不到。

  • A 错只有 H3 不够:交换机把帧转发到 Hub 所在端口后,Hub 从所有端口发出,H4 物理上也收得到。
  • B 错H2 在交换机的另一个端口,交换机已学到 H3 的端口,不会转发给 H2;而且漏了 H4。
  • C 对对:Hub 上的 H3、H4 都收到。
  • D 错多了 H2:交换机只往 Hub 那个端口转发,H2 所在的端口收不到。

变化点:发送方从集线器一侧换到交换机一侧。

变式计网由 2010-38 改
下列网络设备中,能够隔离冲突域但不能隔离广播域的是( )。
I. 中继器 II. 集线器 III. 网桥 IV. 交换机 V. 路由器
  • A. 仅 I、II
  • B. 仅 III、IV、V
  • C. 仅 V
  • D. 仅 III、IV
展开解析

D网桥、交换机是链路层设备,每个端口一个冲突域,但广播帧照样转发;路由器两者都隔离。

  • A 错中继器、集线器在物理层,连冲突域都不隔离。
  • B 错B 含 V:路由器既隔离冲突域也隔离广播域,不属于“不能隔离广播域”的设备。
  • C 错路由器两种域都隔离;题目要的是“隔离冲突域但不隔离广播域”,那是网桥和交换机。
  • D 对对:网桥、交换机。

变化点:从“抑制广播风暴”换成“隔离冲突域但不隔离广播域”。

变式计网考纲补充(尚无真题)
无碎片交换(fragment-free)方式的交换机在开始转发一个帧之前,至少要收到该帧的( )。
  • A. 目的地址 6 字节
  • B. 整个帧
  • C. 前 64 字节
  • D. 前 14 字节
展开解析

C小于 64 B 的帧是冲突碎片,收满 64 B 才转发就能把碎片过滤掉。A 是直通交换,B 是存储转发。

  • A 错只收 6 字节目的地址就开始转发的是直通交换,冲突碎片过滤不掉。
  • B 错收完整个帧再转发的是存储转发。
  • C 对对:收满 64B,冲突碎片就过滤掉了。
  • D 错14 字节是帧首部(目的地址 + 源地址 + 类型),无碎片交换要等到 64 字节。

考点:3.9 节“三种交换方式与交换机的容量”。

变式计网考纲补充(尚无真题)
交换机之间存在环路时会引起广播风暴,解决这个问题的协议是( )。
  • A. ARP
  • B. RIP
  • C. CSMA/CD
  • D. 生成树协议 STP
展开解析

DSTP 选出一棵无环的生成树,把多余端口阻塞,链路故障时再启用备份端口。

  • A 错ARP 把 IP 地址解析为 MAC 地址,不能消除交换机之间的环路。
  • B 错RIP 是路由器之间的路由协议,交换机的二层环路它管不了。
  • C 错CSMA/CD 是共享介质上的访问控制方法,不能消除交换机之间的环路。
  • D 对对:STP 阻塞多余端口,得到无环的生成树。

考点:3.9 节“生成树协议 STP”(拓展)。

第 3 篇自测
  1. 对 1101 0111 1101 1111 1010 进行零比特填充,结果是什么?
    答案
    1101011111001111101010。原数据第 6~10 位是 5 个连续的 1,后面插一个 0;第 12~17 位有 6 个连续的 1,数到第 5 个就插 0,第 6 个 1 接在插入的 0 后面。填充后共 22 位。
  2. 字符计数法有什么缺点?
    答案
    计数字段一旦出错,接收方就无法确定这一帧的结束位置,后面所有帧都跟着错位,而且无法自行恢复。
  3. 数据 1101011011,生成多项式 x4 + x + 1,求 FCS。
    答案
    G = 10011,补 4 个 0 后模 2 除,余数 1110,发送 1101011011 1110。
  4. 8 位数据用海明码纠 1 位错,至少要几位校验位?码长多少?
    答案
    2r ≥ 8 + r + 1:r = 3 时 8 < 12 不够,r = 4 时 16 ≥ 13 满足。校验位 4 位,码长 12 位。
  5. 数据 1011 用海明码(偶校验)编码,码字是什么?
    答案
    位置 3、5、6、7 放 1、0、1、1。P1 = 1 ⊕ 0 ⊕ 1 = 0,P2 = 1 ⊕ 1 ⊕ 1 = 1,P3 = 0 ⊕ 1 ⊕ 1 = 0,码字 0110011。
  6. 用 3 位序号,GBN 和 SR 的最大发送窗口各是多少?
    答案
    GBN:23 − 1 = 7;SR:23−1 = 4(收发窗口相等时)。
  7. 停等协议,帧长 1000bit,速率 10kbps,单向传播时延 50ms,忽略确认帧,信道利用率是多少?
    答案
    TD = 100ms,周期 = 100 + 100 = 200ms,U = 50%。
  8. 停等协议中,确认帧丢失会带来什么问题?怎么解决?
    答案
    发送方超时重传,接收方收到重复帧。靠帧的序号(1 位就够)认出重复帧,丢弃它并再回一次确认。
  9. CDMA 中站 S 的码片序列为 (1, −1, 1, −1),收到的叠加信号为 (0, −2, 2, 0),S 发了什么?
    答案
    (0 + 2 + 2 + 0) ÷ 4 = 1 → S 发了比特 1。
  10. 1Gbps 以太网用 CSMA/CD,最短帧 64B,电缆传播速度 2 × 108m/s,最大距离是多少?
    答案
    发送 512bit 需 0.512μs = 2τ,τ = 0.256μs,距离 = 0.256μs × 200m/μs = 51.2m。
  11. 某站连续冲突 2 次,争用期 51.2 μs,下次重传前最多等多久?可能的等待时间有哪几种?
    答案
    k = 2,r ∈ {0, 1, 2, 3},等待 0、51.2、102.4、153.6 μs 之一,最多 153.6 μs。
  12. 为什么 802.11 不用 CSMA/CD?它用什么代替“碰撞检测”?
    答案
    无线网卡难以边发边听,且有隐蔽站等问题,发送方检测不到接收方处的冲突。802.11 用 CSMA/CA:发送前等 DIFS 并随机退避(尽量避免冲突),可选 RTS/CTS 预约信道,并靠接收方的 ACK 确认是否发送成功。
  13. 802.11 中 AP 把从路由器收到的帧转发给站点 H,三个地址分别填谁?
    答案
    地址 1 = H(接收者),地址 2 = AP(发送者),地址 3 = 路由器接口(源地址)。
  14. 判断地址类型:01-00-5E-7F-00-01、00-0C-29-AB-CD-EF、FF-FF-FF-FF-FF-FF。
    答案
    首字节 01 最低位为 1 → 多播;00 → 单播;全 1 → 广播。
  15. PPP 异步传输时,信息字段 7D 7E 20 填充后是什么?
    答案
    7D → 7D 5D,7E → 7D 5E,20 不小于 0x20 不用转义:7D 5D 7D 5E 20。
  16. 802.1Q 标签插在以太网帧的什么位置?多长?VID 几位?
    答案
    插在源地址与类型字段之间,4 字节;VID 12 位。带标签的帧最长 1522 字节。
  17. 交换机的端口 1~4 各直接连一台主机,端口 5 连一个集线器,集线器下面再连 4 台主机。整个网络有几个冲突域、几个广播域?
    答案
    冲突域 5 个:端口 1~4 各 1 个,端口 5 连同集线器和它下面的 4 台主机算 1 个。广播域 1 个:没有路由器,也没有划 VLAN。
  18. 100 Mb/s 交换机用存储转发方式转发一个 1518 B 的帧,至少引入多大时延?
    答案
    1518 × 8 = 12144 bit;12144 ÷ 108 s = 121.44 μs。
  19. 令牌传递协议会不会发生冲突?负载轻和负载重时,它与 CSMA/CD 谁更好?
    答案
    不会冲突,只有拿到令牌的站才能发。负载轻时 CSMA/CD 好(空闲就能发,不必等令牌);负载重时令牌传递好(轮流发,没有冲突)。
  20. IEEE 802 把数据链路层分成哪两个子层?哪一个与传输介质有关?
    答案
    LLC(逻辑链路控制)和 MAC(介质访问控制)子层;MAC 子层与传输介质有关,LLC 与介质无关。
  21. 一台 16 口交换机,每个端口 100Mb/s、工作在全双工,总容量(两个方向分别计算)是多少?若换成 16 口的 100Mb/s 集线器呢?
    答案
    交换机每个端口独占 100Mb/s,全双工两个方向各 100Mb/s:总容量 16 × 100 × 2 = 3.2Gb/s(只算一个方向为 1.6Gb/s)。集线器的所有端口在同一个冲突域里,16 台主机共享 100Mb/s。
  22. CDMA 中每个比特用 8 个码片表示,站点的数据率为 10kb/s,它发出的码片速率是多少?所需带宽是原来的几倍?
    答案
    每比特变成 8 个码片:码片速率 10k × 8 = 80k 码片/秒,所需带宽也扩大到原来的 8 倍——这就是“扩频”,换来的是多个站可以同时同频发送。

一页总结与必会题型

主题核心结论必背数字真题
组帧四种方法;零比特填充:5 个 1 后插 0;透明传输 = 任何数据都能原样通过标志 01111110;PPP 7E / 7D2013-37
差错控制奇偶只检奇数个错;CRC 补 r 个 0 模 2 除,余数为 FCS;检错 d − 1、纠错 ⌊(d − 1)/2⌋;海明码 2r ≥ k + r + 1海明码码距 32023-37、2025-34
可靠传输停等 1 位序号;GBN 累积确认、重传后面全部;SR 单独确认、只重传超时帧;U = min(1, W·TD ÷ T)GBN ≤ 2n − 1;SR WT + WR ≤ 2n2009-35、2011-35、2012-36、2014-36、2015-35、2018-36、2019-35、2020-36、2023-35、2024-37
信道划分FDM / TDM / STDM / WDM / CDMA 都不冲突;CDMA 规格化内积 1 / −1 / 0—2013-36、2014-37
随机访问CSMA 三种坚持;CSMA/CD 先听后发、边发边听、冲突停发、随机重发;最短帧长 = 2τ × 速率51.2 μs、64 B;退避 k ≤ 10、16 次放弃2009-37、2015-36、2016-36、2019-36、2023-36、2025-35
802.11CSMA/CA + ACK;DIFS 开始、SIFS 中间;RTS/CTS 设 NAV;地址 1 收、2 发、3 远端SIFS < PIFS < DIFS2011-36、2017-35、2018-35、2020-37、2024-36、2026-35
以太网 / PPP以太网无连接不可靠;首字节最低位 1 为多播;PPP 只检错不可靠,LCP + NCP帧 64 ~ 1518 B;MTU 1500;MAC 48 位2012-35
VLAN每个 VLAN 一个广播域;跨 VLAN 要路由器;802.1Q 标签 4 BVID 12 位;1522 B2024-35、2026-36
设备与域交换机 = 多端口网桥,学源转目的;集线器不隔离任何域;路由器隔离广播域直通 0.48 μs(100 Mb/s)2009-36、2010-38、2013-38、2014-34、2015-37、2016-35、2020-35
本篇必会题型清单(能独立做对才算过关)
  1. 零比特填充 / 删除;PPP 字节填充(3.1、3.7)。
  2. CRC 求 FCS、判断收到的码字是否出错(3.2)。
  3. 海明码:求校验位数、编码、由校正子纠错;由码距求检纠错能力(3.2)。
  4. GBN / SR 重传哪些帧;窗口上限(3.3)。
  5. 信道利用率、数据率、序号位数三步法(3.3)。
  6. CDMA 规格化内积(3.4)。
  7. CSMA/CD 最短帧长、最远距离、退避最长时间(3.5)。
  8. 802.11 的 NAV 与时间计算、四个地址(3.6)。
  9. VLAN 中帧的到达范围、ARP 表内容(3.8)。
  10. 交换机自学习与转发端口;冲突域 / 广播域个数(3.9)。

3.✎本篇真题闯关(42 题)

本篇各小节挂的真题全部在这里,按小节排好。可以展开后一道道做,也可以用弹窗模式连续做。做题记录(对/错)只保存在你这台电脑的浏览器里,小节标题下的题号会随之变绿或变红。

第 4 篇 · 网络层

网络层:分组怎样跨过一个个网络,找到目的主机

数据链路层只管一段链路。要从北京的主机把分组送到广州的服务器,中间要经过许多个网络和路由器,这是网络层的事:给每台主机一个全球统一的 IP 地址;每个路由器根据分组的目的地址查路由表转发;路由表由路由协议(RIP、OSPF、BGP)自动算出来。围绕它还有一组辅助协议:ARP 把 IP 地址换成 MAC 地址,DHCP 给新主机分配地址,ICMP 报告差错,NAT 让内网主机共用一个公网地址。这是计网分值最高的一篇:18 年 32 道选择题,综合题里有 8 道以网络层为主,IP 地址规划和路由表是综合题中出现最多的题型(别的类型也常顺带考一问)。

对应:王道计算机网络第 4 章难度:★★★★选择题真题 32 道

本篇地图:先看全貌,再逐节攻克

网络层的内容多而散,初学时最容易“学了后面忘了前面”。先把它们挂到一棵树上:网络层只有一个核心任务——把 IP 分组从源主机送到目的主机;其余内容都是在回答“为了完成这个任务,还需要什么”。

网络层4.1 功能转发 vs 路由选择 · 数据报服务 · 拥塞控制 · SDN(南向 / 北向接口)4.2 IPv4 分组 ★★首部逐字段(首 4 总 1 片 8)· 分片计算 · 抓包读首部4.3–4.5 编址 ★★★分类 / 特殊 / 私有地址 · 子网与 CIDR · 最长前缀 · 聚合 · NAT4.6 辅助协议 ★★ARP(IP→MAC)· DHCP(分配地址)· ICMP(差错与询问)4.7 IPv6128 位与 :: 压缩 · 40 B 固定首部 · 只在源主机分片 · 双栈 / 隧道4.8 路由 ★★★静态 / 动态 · 层次路由 · RIP(距离向量)· OSPF(链路状态)· BGP4.9 设备与扩展路由器与转发 · IP 组播 · 移动 IP
图 4-1 网络层知识树。红框是每年必考的“高频区”,蓝框是常考区,白框考得少但都在考纲里。4.3–4.5 和 4.8 合起来占了网络层真题的一大半。
小节选择题综合题(大题)一句话说清考什么
4.1 功能、SDN1—转发与路由选择的分工;SDN 的四种接口
4.2 IPv4 分组1抓包题 2011-47、2012-47 都要读首部三个“单位”字段;分片后各片的总长度、片偏移、MF
4.3 地址与子网112018-47网络地址 / 广播地址 / 可分配地址数;定长与变长划分
4.4 路由表与转发4(另挂 3)2009-47、2013-47、2014-43最长前缀匹配、路由聚合、填路由表(下一跳写谁)
4.5 NAT32020-47经过 NAT 后源地址、端口、检验和怎么变
4.6 ARP、DHCP、ICMP4(另挂 1)2015-47ARP 解析谁的 MAC;DHCP 各报文的地址;ICMP 报文类型
4.7 IPv61—与 IPv4 的区别(首部、分片、地址)
4.8 路由协议62014-42、2024-47RIP 更新与坏消息;OSPF 区域;三个协议的封装
4.9 网络层设备(路由器)1—路由器功能(2012-37);一个分组穿过路由器改了哪些字段
4.10 IP 组播0—从未考过:组播与单播 / 广播、D 类地址分段、组播 MAC 映射
4.11 移动 IP0—从未考过:永久地址与转交地址、归属 / 外地代理、三角路由

选择题按每题讲解的“主归属小节”计数,合计 32 道;括号里“另挂”的是主要考点在别的小节、但也要用到本节知识的题(如 2016-39、2018-37、2026-37 挂在 4.4,2012-33 挂在 4.6)。

建议的学习顺序与学时
  1. 4.2 → 4.3 → 4.4(约 6 小时):IP 首部、地址计算、查路由表,这是网络层大题的“基本功”,必须练到不看书也能算对。
  2. 4.6 → 4.5(约 3 小时):一个分组从主机发出要先经 DHCP 拿地址、ARP 找 MAC,出内网还要过 NAT——这是“一次访问全过程”大题(第 7 篇 t7)的主线。
  3. 4.8(约 3 小时):先懂“为什么分层路由”,再学 RIP、OSPF、BGP 三个协议。
  4. 4.1、4.7、4.9 ~ 4.11(约 2.5 小时):概念为主,记住对比表即可;4.10 组播、4.11 移动 IP 从未考过,是 2027 年的冷点候选(第 9 篇 9.1)。

4.1网络层的功能:转发与路由选择,拥塞控制,SDN

★ 考过选择题

数据链路层只负责“相邻两个结点之间”的一段链路。北京的主机要把分组送到广州的服务器,中间隔着几十个网络、几十台路由器,每一台都要决定“这个分组下一步交给谁”——这就是网络层要解决的问题。

网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务:发送分组时不建立连接,每个分组独立选择路由,不编号,不保证不丢失、不重复、按序到达。可靠交付交给端系统的传输层(TCP)去做。这样路由器可以做得简单、便宜,网络出了故障也容易绕开。

转发与路由选择:分拣员和规划部

问题:一个分组到了路由器的某个输入端口,路由器怎么知道该从哪个端口送出去?“该从哪个口出去”这张表又是谁定的?

比喻:快递分拣中心

分拣员看包裹上的目的城市,查一下手边的分拣表,把包裹扔上对应的传送带——每个包裹都要这样做一遍,必须快,这就是转发。分拣表是总部规划部根据全国线路情况(哪里堵、哪里封路)算出来、定期下发的,算一次要很久,但不必每个包裹都算——这就是路由选择。

哪里不像:传统路由器的“规划部”就装在每台路由器里,各自与邻居商量着算(分布式);只有 SDN 才真的把规划部搬到一个中央控制器上。

  • 转发(数据平面):分组到达路由器的某个输入端口,路由器查转发表,把它送到合适的输出端口。这是每个分组都要做的、在纳秒到微秒级完成的本地动作,通常由硬件完成。
  • 路由选择(控制平面):按照某种路由算法,与其他路由器交换信息,算出到各个目的网络的最佳路径,生成路由表,再由路由表得出转发表。这是全网范围的、较慢的过程(秒级),由软件完成。
传统路由器:每台都有自己的“大脑”SDN:“大脑”集中到远程控制器相邻路由器交换路由信息(秒级、全网)控制平面路由算法数据平面查表转发控制平面路由算法数据平面查表转发控制平面路由算法数据平面查表转发分组逐跳转发:每个分组都查表(纳秒~微秒)路由表 → 转发表都由本机的控制平面生成SDN 控制器(控制平面)集中算出每台交换机的流表数据平面按流表转发数据平面按流表转发数据平面按流表转发南向接口分组照样逐跳转发,只是规则来自控制器
图 4-2 两个平面:传统路由器 vs SDN。不管哪种结构,“每个分组都要做的查表转发”(数据平面)和“算出表来的路由选择”(控制平面)都是两件事;区别只在控制平面放在哪里。
跟我分一遍:下面的动作属于哪个平面?
动作平面判断依据
按目的 IP 地址查转发表,决定从哪个端口送出数据平面每个分组都做,本地动作
把 TTL 减 1、重算首部检验和数据平面每个分组都做
输出端口排队,队列满了丢弃分组数据平面每个分组都可能遇到
运行 OSPF,与其他路由器交换链路状态控制平面与别的路由器协作、生成路由表
用 Dijkstra 重新计算最短路径控制平面生成路由表的计算
SDN 控制器下发流表控制平面决定规则,不转发具体分组
真题怎么考

2012-37 问路由器的功能:“运行路由协议、设置路由表”是控制平面的工作,“根据目的地址转发到合适的输出线路”是数据平面的工作,“拥塞时丢弃分组”也是路由器会做的;但“差错校验确保分组不丢失”是错的——IP 只检验首部、有错就丢,从不保证不丢失。看到“保证”“确保”这类字眼,先想网络层是尽最大努力交付。

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

计算机网络发展时有过两种思路:电信网的思路是“网络负责可靠”,于是有了虚电路(先建立一条逻辑连接,所有分组沿同一条路走);因特网的思路是“网络尽力而为,可靠交给端系统”,于是用数据报。两者对比如下(1.2 节从交换方式的角度也讲过一遍):

对比项数据报服务(因特网采用)虚电路服务(X.25、帧中继、ATM)
连接不需要建立连接先建立虚电路(逻辑连接),用完释放
目的地址每个分组都带完整的目的地址只在建立连接时用完整地址;之后分组只带很短的虚电路号
路由选择每个分组独立选路建立时选一次,之后所有分组都走这条路
到达顺序可能失序,由目的主机排序按序到达
结点出故障只丢失故障结点里的分组,其余可以绕路经过故障结点的所有虚电路都中断
可靠性、差错与流量控制由用户主机(传输层)负责可以由网络负责,也可以由主机负责
易错

虚电路只是一条逻辑连接,分组仍然存储转发、仍然共享链路,并不独占带宽——这是它与电路交换的根本区别。“虚电路方式下分组一定不会丢失”也是错的:虚电路保证的是按序,不是不丢失。

异构网络互连

各个网络的链路层可以完全不同(以太网、无线局域网、PPP 广域网……),帧格式、最大帧长、编址方式都不一样。用路由器把它们连起来,在网络层统一使用 IP 协议,从 IP 层看就像一个统一的虚拟互连网络:主机之间按 IP 地址通信,看不见下面各种网络的差异。路由器在每一段链路上把 IP 分组装进该链路自己的帧里(帧的格式、MAC 地址每段都换),IP 分组本身原样传下去。

网络层的拥塞控制

问题:一条高速公路,车少时车速很快;车越来越多,开始排队、变慢;再多,所有车堵死,一辆也走不动。网络也一样:进入网络的分组太多,超过了路由器或链路的处理能力,网络性能明显下降,这叫拥塞。

提供的负载(单位时间注入网络的分组)吞吐量网络容量无拥塞轻度拥塞拥塞理想的拥塞控制实际的拥塞控制无拥塞控制死锁
图 4-3 拥塞时吞吐量反而下降。没有拥塞控制时,负载超过某一点后路由器忙于处理注定要被丢弃、重传的分组,有效吞吐量越来越低,最后可能降到 0(死锁)。拥塞控制做不到“理想”那条线,但能防止掉下去。
  • 拥塞控制与流量控制的区别:拥塞控制是全局性的,要保证整个网络能承受现有负载,涉及所有主机和路由器;流量控制是点对点的(相邻结点之间或端到端),只让发送方别把接收方淹没。比喻:拥塞控制是交警疏导整条高速公路,流量控制是收费站按自己的窗口数放行。两者都可能用“让发送方降速”的手段,但目的不同。
  • 开环控制:在设计网络时事先考虑可能引起拥塞的因素(如路由器缓存大小、链路带宽、何时丢弃分组),力求不发生拥塞;系统运行起来后不再中途修改(静态)。
  • 闭环控制:基于反馈(动态)——① 监测网络,发现何时何处发生拥塞;② 把拥塞信息传给能采取措施的地方;③ 调整系统运行。例:路由器因拥塞丢弃分组,向源主机发 ICMP 源点抑制报文(4.6 节,2010-36);TCP 发送方按是否丢包调整拥塞窗口(5.6 节)。
易错

“流量控制是全局的”“拥塞控制只涉及收发双方”——都说反了。另一个陷阱:拥塞时“加大缓存就能解决”是错的,缓存越大排队越久,分组可能早已超时被重传,反而加重拥塞。

软件定义网络 SDN

传统路由器的控制平面分散在每一台路由器里,各自运行路由协议;想改变网络的行为(比如让某类流量绕开某条链路),要逐台登录配置。SDN 把控制平面从路由器中抽出来,集中到远程的控制器上:控制器掌握全网状态,计算出每台交换机的流表,再下发给交换机;交换机只负责按流表转发。

网络应用(负载均衡、防火墙、路由……)北向接口(API)SDN 控制器(控制平面,集中计算转发规则)东西向接口(控制器之间)南向接口(如 OpenFlow):下发流表SDN 交换机只按流表转发SDN 交换机只按流表转发SDN 交换机只按流表转发数据平面:分组“匹配 + 动作”,自己不运行路由协议
图 4-4 SDN 的三层结构和三类接口。控制器向上给网络应用提供北向接口,向下通过南向接口(典型协议 OpenFlow)与交换机通信、下发流表,控制器之间用东西向接口协同(2022-37)。记法:画地图“上北下南左西右东”——应用在上(北),交换机在下(南),同级的控制器在左右(东西)。

流表:“匹配 + 动作”。传统路由器的转发表只看目的 IP 地址;SDN 交换机(OpenFlow)的流表每一项由匹配字段、优先级、计数器和动作组成。匹配字段可以同时看链路层(源 / 目的 MAC、以太网类型、VLAN)、网络层(源 / 目的 IP、协议)、传输层(源 / 目的端口)的多个首部字段;动作可以是“从某端口转发”“丢弃”“修改某字段后转发”“交给控制器”。这叫广义转发:同一套“匹配 + 动作”既能当路由器,也能当交换机、防火墙,甚至做 NAT。

例跟我查一遍流表
某 SDN 交换机的流表如下(同时匹配多项时按优先级高者执行,注意不是最长前缀)。依次到达 4 个分组,各执行什么动作?
优先级匹配字段动作
300目的 IP ∈ 10.2.0.0/16,IP 协议 = TCP,目的端口 = 22丢弃
200目的 IP ∈ 10.2.0.0/16从端口 2 转发
100目的 MAC = 00-1A-2B-3C-4D-5E从端口 3 转发
0任意(表中没有匹配项)交给控制器
① 10.1.1.5 → 10.2.3.4,TCP,目的端口 22;② 10.1.1.5 → 10.2.3.4,TCP,目的端口 80;③ 10.1.1.5 → 10.9.9.9,帧的目的 MAC = 00-1A-2B-3C-4D-5E;④ 10.1.1.5 → 10.9.9.9,目的 MAC 是别的。
展开解析
  1. ① 同时匹配优先级 300 和 200 两项,取 300 → 丢弃。这一项的效果相当于防火墙(禁止访问 10.2 网段的 SSH 端口 22)。
  2. ② 端口 80 不满足 300 项,匹配 200 → 从端口 2 转发。这一项按目的 IP 转发,相当于路由器。
  3. ③ 目的 IP 不在 10.2.0.0/16,只匹配 100 → 从端口 3 转发。按目的 MAC 转发,相当于交换机。
  4. ④ 只匹配优先级 0 的“兜底”项 → 交给控制器,由控制器决定怎么处理,必要时再下发一条新流表项。

结论:一张流表就把路由器、交换机、防火墙三种设备的功能都做了,这就是“可编程”。

  • SDN 的四个特点:基于流的转发;数据平面与控制平面分离;控制平面功能集中在控制器、运行在服务器上(远程控制器);网络可编程。
  • 优点:全局集中控制、便于管理和升级,硬件可以是通用的“白盒”交换机,网络创新不必等设备厂商;缺点:控制器是单点,安全性、可靠性和性能都要专门考虑(所以要多个控制器经东西向接口协同)。
真题怎么考

2022-37 只考了“下发流表用哪个接口”(南向)。可能的变化:问“向上给应用提供编程接口”(北向)、“控制器之间”(东西向)、“SDN 交换机是否运行路由协议”(不运行)、“OpenFlow 属于哪类接口”(南向)。判别方法就是上面那张三层图:选项里的方位词对着图找。

2022-37计网
在 SDN 网络体系结构中,SDN 控制器向数据平面的 SDN 交换机下发流表时所使用的接口是( )。
  • A. 东向接口
  • B. 南向接口
  • C. 西向接口
  • D. 北向接口
展开解析

考点4.1 SDN 的接口

BSDN 控制器位于中间:向下通过南向接口(如 OpenFlow)控制数据平面的交换机、下发流表;向上通过北向接口为网络应用提供编程接口;控制器之间用东西向接口。

  • A 错东向接口:东西向接口用于多个控制器之间的通信。
  • B 对南向接口:控制器 ↔ 交换机,下发流表。
  • C 错西向接口和东向接口合称东西向接口,用于多个 SDN 控制器之间交换信息,不用来向交换机下发流表。
  • D 错北向接口:控制器 ↔ 上层网络应用。

上北下南:应用在上(北),交换机在下(南),控制器之间是东西。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2022-37 改
在 SDN 体系结构中,SDN 控制器向上层网络应用提供编程接口所使用的接口是( )。
  • A. 北向接口
  • B. 东向接口
  • C. 南向接口
  • D. 西向接口
展开解析

A控制器向上为应用提供北向接口,向下通过南向接口(如 OpenFlow)控制交换机,控制器之间是东西向接口。

  • A 对对:北向接口面向上层网络应用。
  • B 错东向接口(东西向)用于多个控制器之间交换信息,不面向上层应用。
  • C 错南向接口朝下,控制器通过它(如 OpenFlow)向交换机下发流表。
  • D 错西向接口和东向接口合称东西向接口,同样是控制器之间的接口。

变化点:由“下发流表”(南向)换成“向上提供编程接口”(北向)。

变式计网由 2022-37 改
下列关于 SDN 的叙述中,错误的是( )。
  • A. 数据平面与控制平面分离
  • B. 每台 SDN 交换机都独立运行路由协议计算路由
  • C. 交换机按控制器下发的流表转发分组
  • D. 网络可以通过控制器编程
展开解析

BSDN 的控制功能集中在控制器,交换机只按流表转发,不再各自运行路由协议。

  • A 不选正确:SDN 把控制平面从交换机里分离出来,集中到控制器。
  • B 选错误:SDN 的路由计算集中在控制器,交换机不再各自运行路由协议。
  • C 不选正确:交换机只按控制器下发的流表做匹配和转发。
  • D 不选正确:控制器提供北向接口,网络行为可以通过编程来控制。

变化点:从“接口名称”扩展到 SDN 的四个特点。

变式计网考纲补充(尚无真题)
下列关于网络层拥塞控制的叙述中,正确的是( )。
  • A. 拥塞控制只涉及一对发送方和接收方
  • B. 开环控制根据网络运行时的反馈动态调整
  • C. 拥塞控制与流量控制是同一回事
  • D. 闭环控制基于反馈:监测到拥塞后,把信息传给能采取措施的地方
展开解析

D拥塞控制是全局性的,涉及所有主机和路由器;流量控制才是点对点的。开环控制是在设计时事先考虑、运行中不再修改;基于反馈、动态调整的是闭环控制。

  • A 错只涉及一对发送方和接收方的是流量控制;拥塞控制是全局性的,涉及所有主机和路由器。
  • B 错开环控制是在设计时事先考虑、运行中不再改;根据反馈动态调整的是闭环控制。
  • C 错流量控制是点对点的(别把接收方淹没),拥塞控制是全局的(别把网络堵死),两回事。
  • D 对对:闭环控制基于反馈。

考点:4.1 节“网络层的拥塞控制”。

4.2IPv4 分组格式与分片

★ 考过选择题

问题:一个 IP 分组在网上传的时候,其实就是一串 0 和 1。路由器怎么从这串比特里知道“它要去哪、有多长、还能活几跳、里面装的是 TCP 还是 UDP”?靠的就是事先约定好的首部格式:第几位到第几位表示什么。

比喻:快递面单

IP 首部就像贴在包裹上的面单,格子位置是固定的:左上角写寄件人、右上角写收件人、下面写重量和件数……分拣员不用读包裹里的东西,只看面单。哪里不像:面单是给人看的,可以写得随意;IP 首部每个字段的位数和单位都是死规定,差一位就全读错。

IP 数据报由首部和数据两部分组成。首部的前 20 字节是固定的,后面是长度可变的可选字段。考试要求记住每个字段的位数和单位——大题抓包分析(2011-47、2012-47、2018-47 等)就是按这张图逐字节切分十六进制数据。

08162431419字节版本值 4首部长度单位 4 B区分服务总长度单位 1 B0标识同一数据报的分片相同标志0 DF MF片偏移单位 8 B4生存时间 TTL每过一个路由器减 1协议1 ICMP · 6 TCP · 17 UDP首部检验和只检验首部8源 IP 地址(32 位)12目的 IP 地址(32 位)16可选字段(长度可变)+ 填充(补齐到 4 字节的整数倍)20固定部分20 字节可变部分0~40 字节
图 4-5 IPv4 首部格式(每行 32 位 = 4 字节,左边的数字是该行第一个字节的序号)。三个“单位”字段一定要记牢:首部长度以 4 字节为单位,总长度以 1 字节为单位,片偏移以 8 字节为单位——口诀“首 4 总 1 片 8”。
字段位数是什么怎么考
版本4IP 协议的版本,IPv4 是 4十六进制首字节 45 的“4”;IPv6 首字节的高 4 位是 6
首部长度4首部有多长,单位 4 B最小 5(20 B),最大 15(60 B)→ 可选字段最多 40 B。首字节 0x45 → 首部 5 × 4 = 20 B;0x46 → 24 B(带 4 B 选项)
区分服务8希望得到哪种服务质量(旧称服务类型)一般为 0,几乎不考
总长度16首部 + 数据的总长度,单位 1 B最大 216 − 1 = 65 535 B;受链路层 MTU(以太网 1500 B)限制,超过就要分片。数据长度 = 总长度 − 首部长度
标识16源主机每发一个数据报,计数器加 1,填进这里同一数据报的所有分片标识相同,目的主机据此把分片拼回去
标志3最高位保留(0);中间 DF(Don't Fragment);最低位 MF(More Fragments)DF = 1:不许分片;MF = 1:后面还有分片,最后一片 MF = 0。十六进制 0x4000 → DF = 1;0x2000 → MF = 1
片偏移13本片数据在原数据报数据部分中的位置,单位 8 B所以除最后一片外,每片数据长度都必须是 8 的倍数;13 位 × 8 正好能表示 213 × 8 = 65 536,覆盖总长度的范围
生存时间 TTL8还能经过多少个路由器每经过一个路由器减 1,减到 0 就丢弃并向源主机发 ICMP 时间超过,防止分组在环路里无限兜圈子;traceroute 就利用它
协议8数据部分交给上层哪个协议1 = ICMP,2 = IGMP,6 = TCP,17 = UDP,89 = OSPF;抓包题看到 06 就知道里面是 TCP 报文段
首部检验和16反码求和得到的校验值只检验首部,不检验数据;每经过一个路由器 TTL 都变,都要重新计算。IPv6 干脆取消了它
源 / 目的地址32 + 32发送方和最终接收方的 IP 地址转发途中始终不变(经过 NAT 时除外);每段链路上变的是帧的 MAC 地址
可选字段 + 填充0~40 B记录路由、时间戳等,很少用填充用 0 补齐,使首部长度是 4 B 的整数倍(因为首部长度以 4 B 为单位)

跟我读一个首部:十六进制逐字节切分 + 首部检验和

补课:十六进制和反码求和
  • 十六进制:每位 0~F(A = 10 … F = 15),1 位十六进制 = 4 位二进制,2 位十六进制 = 1 字节。例:0x45 = 0100 0101;0x34 = 3 × 16 + 4 = 52;0x0A = 10。
  • 反码求和:把数据按 16 位一组相加,若最高位产生进位,就把进位加回到最低位(“回卷”),最后对结果按位取反得到检验和。接收方把包括检验和在内的所有 16 位字再按同样方法相加,结果全 1(0xFFFF)就认为没错。
例抓包读首部
抓到一个 IP 分组的前 20 字节(十六进制)如下,检验和字段暂时写成 00 00。求:① 各字段的值;② 首部检验和应填多少。
45 00 00 34 3A 2B 40 00 80 06 00 00 0A 01 02 03 CA 70 0B 05
展开解析

① 按上面首部图的格子,从第 0 字节开始切:

字节十六进制字段值与含义
045版本 / 首部长度版本 4;首部长度 5 × 4 = 20 B(没有可选字段)
100区分服务0
2~300 34总长度0x34 = 52 B → 数据部分 52 − 20 = 32 B
4~53A 2B标识0x3A2B = 14891
6~740 00标志 + 片偏移0100 0000 0000 0000:保留 0,DF = 1,MF = 0,片偏移 0 → 不许分片、也没被分过片
880TTL128
906协议6 → 数据部分是 TCP 报文段(32 B,正好是带 12 B 选项的 TCP 首部)
10~1100 00首部检验和待求
12~150A 01 02 03源 IP10.1.2.3
16~19CA 70 0B 05目的 IP202.112.11.5

② 检验和(发送方):

  1. 把首部按 16 位分成 10 个字(检验和位置先填 0):4500、0034、3A2B、4000、8006、0000、0A01、0203、CA70、0B05。
  2. 逐个相加:和 = 0x220DE(超过 16 位,最高处多出一个 2)。
  3. 回卷:0x20DE + 0x2 = 0x20E0(把溢出的进位加回最低位)。
  4. 取反:~0x20E0 = 0xDF1F → 检验和字段填 DF 1F。
  5. 接收方验算:把含 DF1F 在内的 10 个字相加并回卷,得 0xFFFF(全 1)→ 首部无差错。

(这些数用程序验算过。考试不会让你手算整个检验和,但会考“检验和只覆盖首部”“每一跳都要重算”“取反码求和”这几个结论,以及从十六进制里读出各字段。)

真题怎么考

抓包题(2011-47、2012-47)给出整段十六进制,问 IP 地址、总长度、是否分片、经过了几个路由器(看 TTL 的变化)等。方法固定:先看首字节 45 定首部 20 B,在第 20 字节处切开,后面才是 TCP/UDP 首部;第 9 字节是协议号;第 12~19 字节是两个地址。注意如果首字节是 46、47……首部就是 24、28 B,切点要后移。2011-47(4) 问“经过路由器 R 转发时要改首部哪些字段”:TTL 减 1、首部检验和重算;该题主机用的是私有地址,R 还做 NAT,所以源 IP 地址也要改。

TTL 能告诉我们什么
  • 经过了几个路由器 = 发出时的 TTL − 收到时的 TTL(主机不减,只有路由器减)。2012-47(3):S 发出时 TTL = 0x40 = 64,H 收到时 0x31 = 49,经过 64 − 49 = 15 个路由器;2014-43(2):TTL = 64 的分组经过 R1、R2、R4 三个路由器,收到时 61。
  • 常见的初始 TTL 是 64、128 或 255(由操作系统决定),所以收到 TTL = 49 的分组,多半是从 64 减下来的。
  • 抓包题要找“同一个分组”时,看标识字段,不要看地址——中途若经过 NAT,地址和端口都会被改(2012-47 就是这样)。

IP 分片:一步步算

问题:IP 数据报最长可以到 65 535 B,可以太网一帧最多装 1500 B 的数据(叫做 MTU,最大传送单元)。数据报比下一段链路的 MTU 还大怎么办?——拆成几片,每片单独装一帧。

分组要从 MTU 较小的链路转发出去时,路由器把它分成若干片,每片都是一个完整的 IP 数据报(复制原首部,修改总长度、标志、片偏移、检验和)。分片只在目的主机重组,中间路由器不重组——因为各片可能走不同的路,中间路由器不一定能收齐。

  1. 原数据长度 = 总长度 − 首部长度。
  2. 每片最多装的数据 = (MTU − 首部长度),再向下取到 8 的倍数(因为片偏移以 8 B 为单位,下一片的起点必须能被 8 整除)。
  3. 依次切片:第 k 片片偏移 = 前面各片数据长度之和 ÷ 8;前面各片 MF = 1,最后一片 MF = 0;每片总长度 = 该片数据 + 首部;各片标识都与原数据报相同。
例 1分片
一个总长度 4000B(首部 20B)的 IP 数据报要经过 MTU = 1500B 的以太网,求各分片的总长度、片偏移和 MF。
展开解析

数据 3980B;每片最多 1480B(1480 恰是 8 的倍数)。

分片数据长度总长度片偏移MF
11480150001
2148015001480 ÷ 8 = 1851
3102010402960 ÷ 8 = 3700

三片的标识都与原数据报相同;DF 都是 0。三片总长度加起来 4040 B,比原来多 40 B——多出来的是两个新复制的首部。

原首部数据 0 ~ 14791480 ~ 29592960 ~ 39790148029603980(÷8 = 185)(÷8 = 370)首部1480 B首部1480 B首部1020 B片 1:总长 1500偏移 0,MF = 1片 2:总长 1500偏移 185,MF = 1片 3:总长 1040偏移 370,MF = 0
图 4-6 例 1 的三个分片。上面是原数据报的数据部分,红线是切点;切点的字节序号 ÷ 8 就是下一片的片偏移。每一片前面都复制一个首部,标识相同,只有最后一片 MF = 0。
例 2分片再分片
主机发出一个总长度 3820 B(首部 20 B)、DF = 0 的数据报,先经过 MTU = 1500 B 的链路,再经过 MTU = 576 B 的链路到达目的主机。求到达目的主机的各分片的总长度、片偏移和 MF。
展开解析
  1. 第一段链路:数据 3800 B,每片最多 1480 B → 1480 + 1480 + 840,得到 A1(偏移 0,MF = 1)、A2(偏移 185,MF = 1)、A3(偏移 370,MF = 0)。
  2. 第二段链路:每片最多装 576 − 20 = 556 B,向下取到 8 的倍数 → 552 B。A1、A2、A3 各自再分:
来自新分片数据总长度片偏移MF
A1(数据 0~1479)55257201
552572691
3763961381
A2(数据 1480~2959)5525721851
5525722541
3763963231
A3(数据 2960~3799)5525723701
2883084390

两个关键点:① 片偏移始终相对于最初的原数据报,所以 A2 再分出的第一片偏移是 185(= 1480 ÷ 8),不是 0;② 一片再分时,前几片 MF = 1,最后一片的 MF 照抄被分的那一片——A1、A2 本来 MF = 1,再分后最后一片仍是 1;只有 A3 分出的最后一片才是 0。目的主机收到 8 片,按片偏移排好,看到 MF = 0 且偏移连续无缺口,就知道收齐了。

  • DF = 1 又放不下:路由器不分片,丢弃该分组,并向源主机发 ICMP 终点不可达(“需要分片但 DF 置为 1”)。源主机可以据此调小分组——这就是“路径 MTU 发现”的原理。
  • 重组超时:目的主机在规定时间内没收齐某个数据报的全部分片,就丢弃已收到的部分,并发 ICMP 时间超过报文(4.6 节)。
看 MF 和片偏移,判断收到的是哪一片
MF片偏移结论例 1 中
00没有分过片的完整数据报(第一片同时也是最后一片)原数据报若不分片就是这样
10第一片分片 1
1≠ 0中间的某一片分片 2
0≠ 0最后一片分片 3

两个提醒:① 这张表看的是 MF,与 DF 无关——DF 只说“允不允许再分”;② 收到 MF = 0 的那一片不等于收齐,目的主机还要检查从偏移 0 开始各片首尾相接、没有缺口(例 2 的 8 片就要靠偏移排序)。由最后一片还能反推原数据长度:原数据 = 最后一片的片偏移 × 8 + 最后一片的数据长度(例 1:370 × 8 + 1020 = 3980 B)。

分片的易错点
  • 每片数据要取 8 的倍数——但最后一片不必是 8 的倍数(2021-36 最后一片只有 8 B 是巧合,例 1 的 1020 B 就不是)。
  • 片偏移的单位是 8 B,总长度的单位是 1 B:问“总长度字段”写字节数,问“片偏移字段”写字节数 ÷ 8。
  • 首部长度不一定是 20 B:首字节是 46 时首部 24 B,每片数据最多 MTU − 24 再取 8 的倍数。
  • “分片在路由器重组”是错的,只有目的主机重组;IPv6 更进一步,连分片也只在源主机做(4.7 节)。
真题怎么考

2021-36 给出 MTU、总长度,问第 2 片的总长度和 MF:直接按三步算,陷阱在“780 不是 8 的倍数”。2018-47(2) 大题:总长 1500 B 的分组从 MTU = 800 B 的接口转出,最大片装 776 B 数据,1480 = 776 + 704 共 2 片,片偏移 0 和 97。秒杀:每片数据 = ⌊(MTU − 首部) ÷ 8⌋ × 8;除最后一片外总长度都相同。这个方法在“首部带选项”“分片再分片”时要调整:前者首部按实际长度算,后者偏移从原数据报算起。

2021-36计网
若路由器向 MTU = 800B 的链路转发一个总长度为 1580B 的 IP 数据报(首部长度为 20B)时,进行了分片,且每个分片尽可能大,则第 2 个分片的总长度字段和 MF 标志位的值分别是( )。
  • A. 796,0
  • B. 796,1
  • C. 800,0
  • D. 800,1
展开解析

考点4.2 IP 分片

B片偏移以 8 字节为单位,除最后一片外,每片的数据长度必须是 8 的倍数。

  1. 原数据 = 1580 − 20 = 1560B。
  2. 每片最多装 800 − 20 = 780B,向下取到 8 的倍数:776B。
  3. 切片:776 + 776 + 8。第 1 片总长 796、偏移 0、MF = 1;第 2 片总长 796、偏移 97、MF = 1;第 3 片总长 28、偏移 194、MF = 0。
  • A 错MF = 0:第 2 片后面还有第 3 片,MF 应为 1。
  • B 对796,1。
  • C 错800:数据 780B 不是 8 的倍数,下一片的偏移无法表示。
  • D 错D 的 MF = 1 对了,但总长度 800 不行:数据 780B 不是 8 的倍数,下一片的片偏移 780 ÷ 8 = 97.5 无法表示。

每片数据 = ⌊(MTU − 首部) ÷ 8⌋ × 8;只有最后一片 MF = 0。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2021-36 改
若路由器向 MTU = 600B 的链路转发一个总长度为 1580B(首部 20B)的 IP 数据报,分片且每片尽可能大,则第 3 个分片的片偏移和 MF 分别是( )。
  • A. 72,0
  • B. 144,1
  • C. 144,0
  • D. 1152,0
展开解析

C每片数据最多 ⌊580 ÷ 8⌋ × 8 = 576B。1560 = 576 + 576 + 408,第 3 片偏移 1152 ÷ 8 = 144,是最后一片,MF = 0。

  • A 错72 = 576 ÷ 8 是第 2 片的偏移;第 3 片前面有两片共 1152B,偏移是 144。
  • B 错偏移对了,但第 3 片是最后一片(576 + 576 + 408 = 1560),MF = 0。
  • C 对对:偏移 1152 ÷ 8 = 144,最后一片 MF = 0。
  • D 错1152 是前面数据的字节数,忘了除以 8;片偏移以 8B 为单位,是 144。

变化点:MTU 从 800 改为 600,片数变成 3;片偏移要除以 8。

变式计网由 2021-36 改
某 IPv4 分组首部的第一个字节为 46H,则其首部长度是( )。
  • A. 6B
  • B. 20B
  • C. 24B
  • D. 46B
展开解析

C低 4 位 6 是首部长度,单位 4B:6 × 4 = 24B(含 4B 选项)。

  • A 错6 是首部长度字段的值,单位是 4B,要乘 4:6 × 4 = 24B。
  • B 错20B 是没有选项的最短首部(字段值为 5);这里字段值是 6。
  • C 对对:6 × 4 = 24B。
  • D 错46 是这个字节的十六进制写法:高 4 位是版本 4,低 4 位才是首部长度 6。

变化点:由“分片”延伸到首部其他字段的单位:首部长度以 4B 为单位。

4.3IPv4 地址:分类、特殊地址、子网划分与 CIDR

★★★ 高频选择题综合题

问题:全世界几十亿台设备,怎样给每一台编一个号,既不重复,又能让路由器一眼看出“它在哪个网络里”?路由器不可能记住每一台主机,它只记“网络”——所以 IP 地址必须分成两段:前面一段说“哪个网络”,后面一段说“网络里的哪台主机”。

比喻:固定电话号码

010-6275 1234:前面的区号 010 说明在北京,后面才是具体的电话。长途交换机只看区号就知道往哪送,到了北京再看后面的号码。IP 地址的网络号就像区号,主机号就像本地号码。哪里不像:电话区号长度是固定的规矩;IP 地址的“网络号有多长”早期按类别定,现在由掩码或 /n 随意指定(CIDR)。

分类的 IP 地址

IP 地址 32 位,为了好读,每 8 位一组写成十进制,中间用点隔开(点分十进制),如 11001010 01110110 00010100 00000101 写成 202.118.20.5。最早的编址方法把它分成网络号和主机号两部分,按网络号长度分成五类:

A 类0网络号 8 位主机号 24 位1.0.0.0 ~ 126.255.255.255B 类10网络号 16 位主机号 16 位128.0.0.0 ~ 191.255.255.255C 类110网络号 24 位主机号 8 位192.0.0.0 ~ 223.255.255.255D 类1110多播地址224.0.0.0 ~ 239.255.255.255E 类1111保留240.0.0.0 ~ 255.255.255.255
图 4-7 分类的 IP 地址。看第一个字节就能判断类别:1~126 是 A 类,128~191 是 B 类,192~223 是 C 类(127 留作环回测试)。
类别首字节二进制首字节范围网络号 / 主机号最大可指派网络数每个网络最大主机数默认掩码
A0xxx xxxx1 ~ 1268 / 2427 − 2 = 126(网络号 0 和 127 不指派)224 − 2 = 16 777 214255.0.0.0(/8)
B10xx xxxx128 ~ 19116 / 16214 − 1 = 16 383(128.0 不指派)216 − 2 = 65 534255.255.0.0(/16)
C110x xxxx192 ~ 22324 / 8221 − 1 = 2 097 151(192.0.0 不指派)28 − 2 = 254255.255.255.0(/24)
D1110 xxxx224 ~ 239没有网络号和主机号之分,整个地址标识一个多播组(4.10 节)—
E1111 xxxx240 ~ 255保留,留作以后用—

为什么 A 类网络数是 27 − 2:A 类网络号 8 位,第一位固定为 0,只剩 7 位可变,共 27 = 128 个;其中网络号全 0(0.x.x.x,表示“本网络”)和 127(环回)不指派,剩 126 个。B、C 类前缀 10、110 已经保证网络号不会全 0 或全 1,只是 128.0 和 192.0.0 这两个最小的网络号按规定不指派,所以只减 1。每个网络的主机数都减 2,是因为主机号全 0(网络地址)和全 1(广播地址)不能分给主机。

特殊地址含义能作源地址能作目的地址
0.0.0.0本网络上的本主机(刚启动、还没有地址时用,如 DHCP 请求);在路由表里写成 0.0.0.0/0 表示默认路由✓✗
网络号全 0,主机号为 x本网络上主机号为 x 的那台主机✓✓
主机号全 0表示网络本身(网络地址),不分配给主机✗✗
主机号全 1该网络的广播地址(直接广播,可以被路由器转发到该网络)✗✓
255.255.255.255本网络上的受限广播,路由器不转发✗✓
127.x.x.x(如 127.0.0.1)环回测试,分组不会发到网络上,在本机内部“绕一圈”回来✓✓

私有地址(专用地址,RFC 1918):只在机构内部使用,可以被不同机构重复使用;因特网上的路由器不转发目的地址为私有地址的分组。共三块:10.0.0.0/8(1 个 A 类网络)、172.16.0.0/12(172.16~172.31,16 个 B 类网络)、192.168.0.0/16(192.168.0~192.168.255,256 个 C 类网络)。私有地址要上因特网,必须经过 NAT(4.5 节)。

真题怎么考

2017-36 问“只能作源地址、不能作目的地址”的是哪个——0.0.0.0(还没地址的主机用它“自称”,别人不能往这里发);255.255.255.255 正好相反,只能作目的。2011-38 问“子网 192.168.4.0/30 中能接收目的地址 192.168.4.3 的最大主机数”:/30 只有 4 个地址,.3 是这个子网的广播地址,能接收的就是子网里所有可分配地址的主机——4 − 2 = 2 台。秒杀:先判断目的地址是不是“主机号全 1”。

子网划分与子网掩码

问题:一个学校分到一个 B 类网络 172.20.0.0,可以容纳 6 万多台主机,但学校有十几个院系,每个院系的主机放在一个大广播域里,广播风暴会让网络瘫痪;再申请十几个网络号又太浪费。办法是在内部把这一个网络再切成多个子网。

从主机号里“借”若干位作子网号:IP 地址 = 网络号 + 子网号 + 主机号。对外仍是一个网络(外面的路由器只看网络号),内部路由器用子网掩码(网络号和子网号对应的位为 1,主机号为 0)区分各个子网:IP 地址 与 子网掩码 按位与 = 网络地址。

补课:2 的幂速查(地址题天天用)
主机号位数 h2345678910111216
地址总数 2h4816326412825651210242048409665 536
可分配 2h − 22614306212625451010222046409465 534
前缀 /n = 32 − h/30/29/28/27/26/25/24/23/22/21/20/16

反过来用:要容纳 50 台主机 → 找第一个“可分配 ≥ 50”的格子 → 62,h = 6,前缀 /26。

四个一定要会的量
  • 网络地址:主机号全 0。
  • 广播地址:主机号全 1。
  • 可分配地址:网络地址 + 1 ~ 广播地址 − 1,共 2主机位数 − 2 个。
  • 子网个数:借 n 位就有 2n 个子网(CIDR 下子网号全 0、全 1 也能用)。早期规定(RFC 950)子网号不能全 0、全 1,只有 2n − 2 个;408 真题(2010-37、2017-38)都按 2n 算,除非题目特别说明。
例按位与:跟我算一遍
主机 IP 地址 172.20.157.66,子网掩码 255.255.240.0。求它所在子网的网络地址、广播地址、可分配地址数。
展开解析
  1. 掩码 255.255.240.0:前两个字节全 1;第 3 字节 240 = 1111 0000,有 4 个 1;第 4 字节全 0 → 前缀共 16 + 4 = 20 位,主机号 12 位。
  2. 前两个字节与 255 相与不变,第 4 字节与 0 相与得 0。只有第 3 字节要真算:
    157 = 1001 1101
    240 = 1111 0000
    与  = 1001 0000 = 144
  3. 网络地址 = 172.20.144.0。广播地址:把主机号的 12 位全置 1——第 3 字节低 4 位置 1 得 1001 1111 = 159,第 4 字节 255 → 172.20.159.255。
  4. 可分配地址数 = 212 − 2 = 4094,范围 172.20.144.1 ~ 172.20.159.254。

验算:用下面的“块大小法”,/20 在第 3 字节的块大小是 16,157 向下取到 16 的倍数是 144,144 + 15 = 159,结果一致。

CIDR(无分类编址)

分类编址很浪费:一个单位有 300 台主机,C 类(254)不够,只能给一个 B 类(65 534),浪费了 99%。现在的因特网不再按 A/B/C 类分配,而使用 CIDR(无分类域间路由选择):地址写成 a.b.c.d/n,n 是网络前缀的位数,可以是 0~32 之间任何一个数,剩下 32 − n 位是主机号。前缀相同的一段连续地址叫一个 CIDR 地址块;上面那个单位可以分到一个 /23(510 个可分配地址)。/n 对应的掩码就是前 n 位为 1(也叫地址掩码)。CIDR 还能把多个小地址块聚合成一个大地址块(超网),见 4.4 节。

“有意思的字节”里 1 的个数012345678
该字节的掩码值0128192224240248252254255
该字节的块大小2561286432168421

用法:/22 = 8 + 8 + 6 → 第 3 字节有 6 个 1 → 掩码 255.255.252.0、块大小 4;/27 = 8 + 8 + 8 + 3 → 掩码 255.255.255.224、块大小 32。掩码值 + 块大小 = 256,这张表背熟了,地址题就快了一半。

快速计算:块大小法

不必把 32 位全写成二进制,只看前缀落在的那个字节:

  1. 找“有意思的字节”:前缀 n 落在第 ⌈n / 8⌉ 个字节。
  2. 块大小 = 2(8k − n),k 是这个字节的序号(例如 /22 落在第 3 字节,块大小 224−22 = 4;/27 落在第 4 字节,块大小 25 = 32)。
  3. 该字节的值向下取到块大小的倍数 → 网络地址;再加上块大小 − 1,后面字节全填 255 → 广播地址。
例块大小法
求 180.80.77.55/22 所在网络的网络地址、广播地址和可分配地址范围。
展开解析

/22 落在第 3 字节,块大小 4。77 向下取到 4 的倍数是 76 → 网络地址 180.80.76.0;76 + 3 = 79 → 广播地址 180.80.79.255;可分配 180.80.76.1 ~ 180.80.79.254,共 210 − 2 = 1022 个(这就是 2012-39)。

定长划分与变长划分(VLSM)

  • 定长:所有子网一样大。把 /m 平均分成 2k 个子网,新前缀 /(m + k)(2017-38:/16 分 128 个 → /23,每个 29 − 2 = 510;2026-39:/22 分 32 个 → /27)。
  • 变长(VLSM):子网大小可以不同,按需求从大到小分配,每个子网都必须是 2 的幂大小、而且起点对齐到自己的块大小。求“最小的子网最小能多小”:每次把剩下的一半再对半分,最后两块一样大(2019-37)。
101.200.16.0/20(共 4096 个地址)/21204616.0 ~ 23.255/22102224.0 ~ 27.255/2351028.0 ~ 29.255/24254/2425430.x / 31.x每次把剩下的一半再对半分:/21 → /22 → /23 → /24 + /24,最小子网 /24,可分配 254 个
图 4-8 把一个 /20 变长划分为 5 个子网。5 个 2 的幂之和要等于 4096,最后一定剩两块一样大的;最小能做到 /24,不可能出现 /25。
判断“能不能作为另一个子网”

划分出的各子网互不重叠、合起来正好是原网络。已知一个子网,另一个候选子网放进去后,剩下的部分必须还能凑成题目要求个数的合法地址块(2021-35:已知 .128/26,若另一个是 .0/26,剩下的 .64/26 和 .192/26 不相邻,一个子网装不下)。

二叉树分配法:把一个地址块看成二叉树的根,每往下一层前缀长度加 1、地址范围对半分(左孩子 = 下一位取 0,右孩子 = 下一位取 1)。树上的每个结点都天然是一个“2 的幂大小、起点对齐”的合法地址块。分配时从大到小,每个子网挑一个大小合适、还没被占用的结点;一个结点一旦分出去,它的祖先和子孙都不能再分,这样各子网就不会重叠。

例VLSM:跟我做一遍
某单位分到 202.118.20.0/24,要划分给:LAN1 有 100 台主机,LAN2 有 50 台,LAN3 有 20 台,另有 2 条连接路由器的点对点链路(每条要 2 个地址)。每个 LAN 还要给路由器接口留 1 个地址。请给出各子网的地址块。
展开解析
  1. 算每个子网至少要多大(要加上网络地址和广播地址这 2 个):LAN1 需要 100 + 1 + 2 = 103 → 取 2 的幂 128(/25);LAN2 需要 50 + 1 + 2 = 53 → 64(/26);LAN3 需要 20 + 1 + 2 = 23 → 32(/27);每条链路 2 + 2 = 4 → 4(/30)。合计 128 + 64 + 32 + 4 + 4 = 232 ≤ 256,够分。
  2. 从大到小在二叉树上挑结点(见下图):LAN1 取左半 .0/25;右半 .128/25 再对半,左边 .128/26 给 LAN2;.192/26 再对半,.192/27 给 LAN3;.224/27 继续往下分,最后两个 /30 给两条链路。
  3. 结果:
子网地址块子网掩码可分配地址个数
LAN1202.118.20.0/25255.255.255.128.1 ~ .126126
LAN2202.118.20.128/26255.255.255.192.129 ~ .19062
LAN3202.118.20.192/27255.255.255.224.193 ~ .22230
链路 a202.118.20.224/30255.255.255.252.225 ~ .2262
链路 b202.118.20.228/30255.255.255.252.229 ~ .2302

剩下 .232/29 和 .240/28 留作以后扩展。答案不唯一(比如 LAN1 也可以放在 .128/25),但每块的起点必须是自己块大小的整数倍:/26 的起点只能是 .0、.64、.128、.192,放在 .100 就错了。

010101010101202.118.20.0/24.0 ~ .255(256)LAN1 ✓ /25.0 ~ .127(128).128/25.128 ~ .255LAN2 ✓ /26.128 ~ .191(64).192/26.192 ~ .255LAN3 ✓ /27.192 ~ .223(32).224/27.224 ~ .255.224/28.224 ~ .239.240/28 空闲.240 ~ .255(16).224/29.224 ~ .231.232/29 空闲.232 ~ .239(8)链路 a ✓ /30.224 ~ .227(4)链路 b ✓ /30.228 ~ .231(4)分配三原则① 从大到小:先分最大的子网② 选中一个结点,它的祖先和子孙  都不能再分给别人(防重叠)③ 块大小 = 2 的幂,起点是块大小  的整数倍(树的结点天然满足)
图 4-9 VLSM 的二叉树分配法。绿框是分出去的子网,虚线框是空闲块;边上的 0 / 1 是“下一位取几”。沿着树往下走,每一层前缀加 1、地址块对半;一个结点分出去之后,整棵子树都归它,祖先也不能再整块分给别人。
真题怎么考:4.3 的 11 道选择题只有 4 类
题型真题方法什么时候会失效
求网络地址、广播地址、可分配范围2012-39、2022-35、2023-39块大小法:有意思的字节向下取整前缀正好是 8 的倍数时“有意思的字节”是下一个字节,块大小 256
定长划分2010-37、2017-38、2026-39平分 2k 份 → 前缀加 k;每份主机数 232−n − 2题目说明“子网号不能全 0 / 全 1”时子网数要减 2
变长划分2019-37、2021-35二叉树:大块先分、互不重叠、合起来正好是原网络要求“最小子网最大”时反过来——尽量均分
特殊地址与主机配置2011-38、2017-36、2016-39先判断是不是网络地址 / 广播地址 / 0.0.0.0;配置题检查“主机与网关是否在同一子网”—
易错辨析
容易错成正确的是
/n 网络能分 232−n 台主机要减去网络地址和广播地址:232−n − 2。/30 只有 2 个可用地址,正好给点对点链路两端的路由器接口
子网 /26 可以从 .100 开始地址块的起点必须是块大小的整数倍:/26(64 个)只能从 .0、.64、.128、.192 开始
255.255.255.240 是 /24 + 240 位240 = 1111 0000,有 4 个 1,所以是 /28;掩码一定是“前面连续的 1 + 后面连续的 0”,255.255.255.250 这种不是合法掩码
主机号全 1 的地址谁都收不到它是直接广播地址,本子网所有主机都收(2011-38);255.255.255.255 是受限广播,只在本网络、路由器不转发
借 n 位就有 2n − 2 个子网CIDR 下是 2n;只有题目声明“子网号不能全 0 / 全 1”时才减 2
2012-39计网
某主机的 IP 地址为 180.80.77.55,子网掩码为 255.255.252.0。若该主机向其所在子网发送广播分组,则目的地址可以是( )。
  • A. 180.80.76.0
  • B. 180.80.76.255
  • C. 180.80.77.255
  • D. 180.80.79.255
展开解析

考点4.3 子网广播地址

D掩码 255.255.252.0 = /22,主机号 10 位(第 3 字节的低 2 位 + 第 4 字节)。

  1. 块大小法:/22 在第 3 字节,块大小 4;77 向下取到 4 的倍数是 76 → 网络地址 180.80.76.0。
  2. 广播地址:主机号 10 位全 1 → 第 3 字节 76 + 3 = 79,第 4 字节 255 → 180.80.79.255。
  • A 错180.80.76.0 是网络地址。
  • B 错只把第 4 字节置成了全 1,第 3 字节的低 2 位也属于主机号,也要置 1。
  • C 错按 /24 算的广播地址,掩码不是 255.255.255.0。
  • D 对180.80.79.255。

广播地址 = 网络地址 + 块大小 − 1(在有意思的那个字节上),后面字节全 255。

2019-37计网
若将 101.200.16.0/20 划分为 5 个子网,则可能的最小子网的可分配 IP 地址数是( )。
  • A. 126
  • B. 254
  • C. 510
  • D. 1022
展开解析

考点4.3 变长子网划分

B/20 共 212 = 4096 个地址,要划成 5 个子网,每个子网的大小都是 2 的幂,加起来等于 4096。想让最小的那个尽量小,就让其他子网尽量大:每次把剩下的一半再对半分。

  1. 4096 = 2048(/21)+ 1024(/22)+ 512(/23)+ 256(/24)+ 256(/24)。
  2. 最小子网是 /24,可分配 28 − 2 = 254。
  3. 能否更小?5 个 2 的幂凑成 4096 只有三种分法:2048+1024+512+256+256、2048+512+512+512+512、1024+1024+1024+512+512,最小块最小就是 256。
  • A 错126 对应 /25。5 个子网恰好分完 /20 时做不到:出现 128 的块就至少要两个,其余三个凑不成 3840。
  • B 对254。
  • C 错510(/23):在 1024+1024+1024+512+512 这种分法中最小子网是它,但不是“最小可能”。
  • D 错1022(/22):5 个 /22 需要 5120 个地址,超过 4096,最小子网不可能这么大。

变长划分求“最小子网最小能多小”:对半、再对半……最后两块一样大。

2021-35计网
现将一个 IP 网络划分为 3 个子网,若其中一个子网是 192.168.9.128/26,则下列网络中,不可能是另外两个子网之一的是( )。
  • A. 192.168.9.0/25
  • B. 192.168.9.0/26
  • C. 192.168.9.192/26
  • D. 192.168.9.192/27
展开解析

考点4.3 子网划分的合法性

B3 个子网互不重叠、合起来恰好是原网络。已知一个子网 192.168.9.128/26(.128~.191),逐个试:另一个子网放进去后,剩下的部分能否恰好是 1 个合法地址块。

  1. A .0/25(.0~.127):原网络取 .0/24,剩 .192/26,一个块 ✓。
  2. B .0/26(.0~.63):原网络至少是 .0/24,剩 .64~.127 和 .192~.255 两段不相邻,一个子网装不下 ✗。
  3. C .192/26:原网络取 .0/24,剩 .0/25 ✓。
  4. D .192/27(.192~.223):原网络取 .128/25,剩 .224/27 ✓。
  • A 可以.0/25、.128/26、.192/26 正好分完 .0/24。
  • B 不可能剩下的两段不连续,至少还要 2 个子网。
  • C 可以原网络取 192.168.9.0/24,除去 .128/26 和 .192/26,剩下的 .0 ~ .127 正好是一个 /25 块,第三个子网就是 192.168.9.0/25。
  • D 可以.128/26、.192/27、.224/27 正好分完 .128/25。

画一条 0~255 的数轴,把已知子网标上去,看剩下的空当是不是一个对齐的 2 的幂块。

2016-39计网
在下图(2016 年题 33~41 图)所示的网络中,假设 H1 与 H2 的默认网关和子网掩码均分别配置为 192.168.3.1 和 255.255.255.128,H3 与 H4 的默认网关和子网掩码均分别配置为 192.168.3.254 和 255.255.255.128,则下列现象中可能发生的是( )。 InternetWeb 服务器 S 130.18.10.1R1201.1.3.9L0(NAT)R2R3L1201.1.3.1201.1.2.0/25201.1.1.0/24E0DNS 服务器201.1.1.1E1 192.168.3.254SwitchHubH1192.168.3.2H2192.168.3.3H3192.168.3.251H4192.168.3.252R1~R3 为路由器Switch 为 100Base-T 交换机Hub 为 100Base-T 集线器H1~H4 的默认域名服务器均为 201.1.1.1
  • A. H1 不能与 H2 进行正常 IP 通信
  • B. H2 与 H4 均不能访问 Internet
  • C. H1 不能与 H3 进行正常 IP 通信
  • D. H3 不能与 H4 进行正常 IP 通信
展开解析

考点4.3 子网掩码4.4 默认网关

C掩码 /25 把 192.168.3.0/24 分成两半:H1(.2)、H2(.3)在 192.168.3.0/25;H3(.251)、H4(.252)在 192.168.3.128/25。R2 的 E1 接口是 192.168.3.254。

  1. H1、H2 同一子网,直接经交换机通信,正常;H3、H4 同理。
  2. H1、H2 的默认网关 192.168.3.1 在网络中并不存在(R2 的接口是 .254),发往其他子网的分组交不出去。
  3. H3、H4 的网关 .254 正确,可以访问 Internet。
  4. H1 与 H3 不在同一子网,H1 要经网关转发,而网关不存在 → 不能通信。
  • A 不会H1、H2 同在 192.168.3.0/25,直接通信,不需要网关。
  • B 不会H2 不能上网,但 H4 的网关 .254 正确,能访问 Internet。
  • C 可能H1 发往 H3 要经网关 .1,而 .1 不存在。
  • D 不会H3、H4 同在 192.168.3.128/25,直接通信。

主机先用自己的掩码判断目的地址是否同一子网:是 → 直接发;不是 → 交给默认网关。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2010-37 改
某网络的地址空间为 192.168.5.0/24,采用定长子网划分,子网掩码为 255.255.255.240,则最大子网个数和每个子网内的最大可分配地址数分别是( )。
  • A. 16,16
  • B. 14,16
  • C. 8,30
  • D. 16,14
展开解析

D240 = 11110000,借 4 位作子网号:24 = 16 个子网;主机号 4 位:24 − 2 = 14。

  • A 错子网数对了,但每个子网 16 个地址中网络地址和广播地址不能分配,只有 14 个。
  • B 错两处都减错了:CIDR 下全 0、全 1 子网号都能用,子网数是 16;要减 2 的是主机号全 0、全 1 的地址。
  • C 错8、30 对应借 3 位(/27,掩码 224);掩码 240 是借 4 位。
  • D 对对:2⁴ = 16 个子网,每个 2⁴ − 2 = 14 个可分配地址。

变化点:掩码 248 换成 240。

变式计网由 2011-38 改
在子网 192.168.4.0/29 中,能接收目的地址为 192.168.4.7 的 IP 分组的最大主机数是( )。
  • A. 6
  • B. 1
  • C. 7
  • D. 8
展开解析

A/29 有 8 个地址(.0 ~ .7),.7 是广播地址,可分配 .1 ~ .6 共 6 台主机,都能收到。

  • A 对对:.1 ~ .6 共 6 台主机都收广播。
  • B 错1:把 .7 当成了某一台主机的地址;.7 是 /29 的广播地址,子网内的主机都会接收。
  • C 错7 把网络地址 .0 也算成了主机;可分配的只有 .1 ~ .6。
  • D 错8 是 /29 的地址总数,网络地址 .0 和广播地址 .7 都不能分给主机。

变化点:/30 换成 /29。

变式计网由 2012-39 改
某主机的 IP 地址为 180.80.77.55,子网掩码为 255.255.254.0。若它向所在子网发送广播分组,则目的地址可以是( )。
  • A. 180.80.76.255
  • B. 180.80.77.255
  • C. 180.80.79.255
  • D. 180.80.255.255
展开解析

B/23 在第 3 字节块大小 2:77 → 76 ~ 77,广播地址 180.80.77.255。

  • A 错76 是网络地址的第 3 字节,只把第 4 字节置了 1;/23 时第 3 字节的最低位也是主机号,76 + 1 = 77。
  • B 对对:180.80.76.0/23 的广播地址 180.80.77.255。
  • C 错180.80.79.255 是按 /22(块大小 4,76 ~ 79)算的,那是原题 2012-39 的掩码。
  • D 错按 /16 算了,把第 3、4 字节全置 1;/23 的主机号只有 9 位。

变化点:掩码从 /22 改为 /23,块大小从 4 变 2。

变式计网由 2017-38 改
若将网络 21.3.0.0/16 划分为 64 个规模相同的子网,则每个子网可分配的最大 IP 地址个数是( )。
  • A. 254
  • B. 510
  • C. 1022
  • D. 1024
展开解析

C64 = 26,新前缀 /22,主机位 10:210 − 2 = 1022。

  • A 错254 = 2⁸ − 2,对应 /24(借 8 位);64 个子网只需借 6 位,新前缀 /22。
  • B 错510 = 2⁹ − 2,是原题 128 个子网(/23)的答案。
  • C 对对:2¹⁰ − 2 = 1022。
  • D 错1024 = 2¹⁰ 是每个子网的地址总数,忘了去掉网络地址和广播地址。

变化点:子网个数从 128 改为 64。

变式计网由 2023-39 改
主机 168.16.84.24/21 所在子网的最小可分配地址和最大可分配地址分别是( )。
  • A. 168.16.84.1,168.16.87.254
  • B. 168.16.80.1,168.16.95.254
  • C. 168.16.84.1,168.16.84.254
  • D. 168.16.80.1,168.16.87.254
展开解析

D/21 在第 3 字节块大小 8:84 → 80 ~ 87,可分配 168.16.80.1 ~ 168.16.87.254。

  • A 错最小地址按 /24 写成了 168.16.84.1;/21 的块从 80 开始,最小可分配 168.16.80.1。
  • B 错最大地址按 /20(80 ~ 95)算了,那是原题 2023-39 的前缀;/21 块大小 8,到 87 为止。
  • C 错两端都按 /24 算了,只是 168.16.84.0/24 的范围。
  • D 对对:168.16.80.0/21,可分配 80.1 ~ 87.254。

变化点:前缀从 /20 改为 /21。

变式计网由 2026-39 改
若将 IP 网络 123.4.4.0/22 划分为规模均衡的 16 个子网,则 IP 地址 123.4.6.100 所在的子网是( )。
  • A. 123.4.6.64/26
  • B. 123.4.6.0/26
  • C. 123.4.6.96/27
  • D. 123.4.4.64/26
展开解析

A16 = 24,新前缀 /26,块大小 64:100 → 64 ~ 127,子网 123.4.6.64/26。

  • A 对对:/26 块大小 64,100 落在 64 ~ 127。
  • B 错123.4.6.0/26 是 .0 ~ .63,不含 .100;100 向下取到 64 的倍数是 64。
  • C 错/27 对应 32 个子网;16 个子网只借 4 位,新前缀 /26。
  • D 错第 3 字节写错了:地址是 123.4.6.x,所在子网的第 3 字节也是 6。

变化点:子网个数和地址都变了,方法仍是“新前缀 → 块大小 → 向下取整”。

4.4路由表与分组转发:最长前缀匹配、路由聚合

★★★ 高频选择题综合题

问题:路由器手里只有一张路由表,分组上只有一个目的 IP 地址。它是怎么从几十万条表项里,挑出“该走哪个口、交给谁”的?

比喻:高速公路的出口指示牌

牌子上写“广东方向 → 走 3 号出口”“广州市区 → 走 5 号出口”“其他方向 → 直行”。要去广州天河,两块牌子都对得上,你会选写得更具体的“广州市区”——这就是最长前缀匹配;什么都对不上就“直行”——这就是默认路由。哪里不像:司机可以看路况临时改道,路由器查表是死规矩,表里写哪个口就走哪个口。

路由表的每一项主要是:目的网络地址、子网掩码(或前缀长度)、下一跳地址、转发接口。路由器收到分组后按下面的算法转发:

  1. 取出分组的目的 IP 地址 D。
  2. 若 D 在与本路由器直接相连的某个网络上,直接交付(经 ARP 得到目的主机的 MAC 地址,封装成帧发过去)。
  3. 否则查路由表:把 D 与每一项的掩码相与,看是否等于该项的目的网络地址。有多项匹配时,选前缀最长的那一项(最长前缀匹配),交给它的下一跳(间接交付)。
  4. 都不匹配就走默认路由 0.0.0.0/0(前缀长度 0,任何地址都匹配,但优先级最低);没有默认路由则丢弃,并向源主机发 ICMP 终点不可达。

还有一种特定主机路由:目的是一台主机,前缀 /32(掩码 255.255.255.255),匹配时优先级最高(前缀最长)。常用于给某台服务器单独指定路径,或者网络管理员测试、排错。

转发流程与一张完整的路由表

分组到达:取出目的 IP 地址 DD 在直连网络上吗?是直接交付ARP 求目的主机的 MAC,封装成帧否查路由表D 与每项掩码相与,等于目的网络就算匹配有匹配的网络 / 主机路由?有选前缀最长的一项(/32 主机路由优先)交给它的下一跳ARP 求的是下一跳的 MAC没有有默认路由 0.0.0.0/0?有交给默认路由的下一跳没有丢弃分组向源主机发 ICMP 终点不可达实际路由器把默认路由也当成前缀长度为 0 的普通表项,一起做最长前缀匹配,效果相同
图 4-10 路由器转发分组的流程。每一步“交给谁”决定了下一段链路上帧的目的 MAC:直接交付是目的主机的 MAC,间接交付是下一跳路由器接口的 MAC。
局域网 1192.168.1.0/24局域网 2192.168.2.0/24R1E0 .1.1E1 .2.110.0.0.0/30S0 10.0.0.110.0.0.2R2172.16.0.0/16DNS 202.118.3.2Internet
图 4-11 一个两路由器的小网络(图标约定:圆 = 路由器,椭圆 = 网络,橙色矩形 = 服务器)。R1 的路由表见下。
目的网络子网掩码下一跳接口这是哪种路由
192.168.1.0255.255.255.0直接交付E0直连网络
192.168.2.0255.255.255.0直接交付E1直连网络
172.16.0.0255.255.0.010.0.0.2S0网络路由(间接交付)
202.118.3.2255.255.255.25510.0.0.2S0特定主机路由(/32)
0.0.0.00.0.0.010.0.0.2S0默认路由(/0)
下一跳填什么

下一跳是相邻路由器与本路由器在同一网络上的那个接口的 IP 地址(上表中是 R2 的 10.0.0.2),不是本路由器自己的接口地址(10.0.0.1),也不是远处的地址。直连网络的下一跳写“直接交付”(或写本接口)。大题填路由表时这是最常见的失分点(2011-37、2009-47)。

上表的写法正是 2009-47(2) 要求的四类路由:到两个局域网的直连路由、到域名服务器的主机路由、到互联网的默认路由。

最长前缀匹配:跟我比一遍

为什么要“最长”?因为前缀越长,表示的地址范围越小、信息越具体。一个目的地址可能同时落在一个大块(比如整个省)和一个小块(某个城市)里,小块的表项是管理员或路由协议专门为它设的,当然更可信。

例最长前缀匹配
某路由器的路由表有 5 项:① 172.16.0.0/16 → R1;② 172.16.64.0/18 → R2;③ 172.16.72.0/21 → R3;④ 172.16.72.128/25 → R4;⑤ 0.0.0.0/0 → R5。目的地址分别为 172.16.75.200、172.16.72.150、172.16.130.5、172.17.0.1 的分组各交给谁?
展开解析

以 172.16.75.200 为例,把它写成二进制,与每一项的前 n 位比较(下图):

  1. ① /16:前两个字节都是 172.16 → 匹配。
  2. ② /18:第 3 字节 75 = 0100 1011,表项 64 = 0100 0000,前 2 位相同 → 匹配。
  3. ③ /21:第 3 字节前 5 位:75 = 01001 011,72 = 01001 000 → 匹配。
  4. ④ /25:第 3 字节 8 位都要比,75 = 0100 1011,72 = 0100 1000,不同 → 不匹配。
  5. ⑤ /0:不比较任何位 → 总是匹配。
  6. 匹配的有 ①②③⑤,最长的是 ③(21 位)→ 交给 R3。

同样做法:172.16.72.150 第 4 字节 150 ≥ 128,连 ④ 也匹配 → R4;172.16.130.5 第 3 字节 130 不在 64~127 → 只匹配 ①⑤ → R1;172.17.0.1 第 2 字节就不同 → 只剩默认路由 → R5。

快速判断法:用块大小法求出每一项的地址范围(② 是 172.16.64.0 ~ 172.16.127.255,③ 是 172.16.72.0 ~ 172.16.79.255,④ 是 172.16.72.128 ~ 172.16.72.255),看目的地址落在哪几个范围里,取范围最小的那个。

每项只比较前 n 位(n = 前缀长度),彩色底的是参与比较的位目的地址 D = 172.16.75.20010101100000100000100101111001000① 172.16.0.0/16 → R11010110000010000················匹配 16 位 ✓② 172.16.64.0/18 → R2101011000001000001··············匹配 18 位 ✓③ 172.16.72.0/21 → R3101011000001000001001···········匹配 21 位 ✓ 最长④ 172.16.72.128/25 → R41010110000010000010010001·······✗ 第 23 位不同⑤ 0.0.0.0/0 → R5································匹配 0 位 ✓ 兜底
图 4-12 最长前缀匹配的逐位比较。绿底 = 前 n 位全部相同(匹配),红底 = 有位不同(红框是第一个不同的位)。匹配的四项里 ③ 最长。

路由聚合(构成超网)

问题:因特网上有几十万个网络,如果主干路由器为每个网络都存一条路由,表会大到查不动。好在离得远的路由器看来,一个单位的十几个子网都“走同一个方向”,完全可以合成一条。

若几条路由的下一跳相同,且目的网络可以合成一个更大的地址块,就可以合成一条,路由表变小。做法:把这几个网络地址写成二进制,找共同前缀,前缀后面全部置 0。

例聚合
把 35.230.32.0/21、35.230.40.0/21、35.230.48.0/21、35.230.56.0/21 聚合(2018-38)。
展开解析

第 3 字节:32 = 00100000,40 = 00101000,48 = 00110000,56 = 00111000。共同前缀是前 16 位 + 3 位 = 19 位,后面置 0 得 32 → 35.230.32.0/19。验算:/19 在第 3 字节的块大小是 32,32~63 正好覆盖 32、40、48、56 四个 /21。

聚合的两个坑
  • 聚合后的网络地址是共同前缀后面补 0,不一定是原来最小的那个地址(本例恰好是 32)。
  • 只能聚合恰好凑成一个 2 的幂大小、且起点对齐的地址块。不连续或凑不整的,聚合后会“多包进”不属于它的地址——除非用最长前缀匹配另外加更具体的路由来纠正。

聚合 + 例外路由:最长前缀匹配的妙用

四个网络 10.8.0.0/24、10.8.1.0/24、10.8.2.0/24、10.8.3.0/24 中,前三个的下一跳是 R1,第四个的下一跳是 R2。能不能聚合?

  1. 只合下一跳相同的:10.8.0.0/24 和 10.8.1.0/24 合成 10.8.0.0/23 → R1;10.8.2.0/24 单独 → R1(它和 /23 合不成对齐的块);10.8.3.0/24 → R2。共 3 条。
  2. 聚合 + 例外:四个合成 10.8.0.0/22 → R1,再加一条更具体的 10.8.3.0/24 → R2。共 2 条。发往 10.8.3.77 的分组同时匹配 /22 和 /24,按最长前缀匹配选 /24 → R2,正确;发往 10.8.2.77 的只匹配 /22 → R1,正确。
考试口径

真实网络里“聚合 + 例外路由”很常见。但 408 大题说“路由项尽可能少”时,标准答案一般只做恰好拼成对齐块、下一跳相同的聚合,并且绝不把原来不存在的地址包进来(2026-37:199.10.20.64/27 和 .128/25 中间隔着不存在的 .96/27,就不能合成 .0/24,答案是 5 条)。题目没有明确允许时,按“恰好聚合”答最稳妥;如果用了例外路由,要写清楚依据是最长前缀匹配。

真题怎么考
  • 查表转发(2015-38):几项同时匹配,选最长;/0 最后才用。秒杀:先把各项写成地址范围,看目的地址落在哪几个里。
  • 聚合(2018-38、2011-37):2011-37 中 R2 后面的 192.168.2.0/25 和 .128/25 恰好合成 192.168.2.0/24,下一跳是 R2 的接口 192.168.1.2。
  • 配置检查(2022-36、2016-39):主机的默认网关必须是同一子网里路由器接口的地址,掩码必须与路由器那个接口一致。
  • 大题填表(2009-47、2013-47、2014-43):先划子网,再按“直连 / 网络路由 / 主机路由 / 默认路由”逐类写,最后检查能不能聚合;下一跳写相邻路由器的接口地址。
  • 动态变化后重算(2026-37):链路断开 → 重算最短路 → 出接口改变 → 重新聚合。
易错辨析
  • 最长前缀匹配是“在匹配的表项里选前缀最长的”,不是直接挑表里前缀最长的那一项——先逐项判断是否匹配(例中 /25 最长,但它不匹配 172.16.75.200)。
  • 默认路由 0.0.0.0/0 总是匹配,所以它只在“别的都不匹配”时才起作用;路由表里没有默认路由时,查不到就丢弃并回 ICMP 终点不可达。
  • 下一跳是相邻路由器接口的地址,不是本路由器出接口的地址;直连网络的表项没有下一跳路由器,写“直接交付”。
  • 聚合后要回头检查:聚合出的地址块有没有把不属于这些网络的地址也包进来?有,就不能这样聚合(除非题目允许加例外路由)。
2011-37计网
某网络拓扑如下图所示,路由器 R1 只有到达子网 192.168.1.0/24 的路由。为使 R1 可以将 IP 分组正确地路由到图中所有子网,则在 R1 中需要增加的一条路由(目的网络,子网掩码,下一跳)是( )。 R1192.168.1.1192.168.1.0/24192.168.1.2R2192.168.2.0/25192.168.2.1192.168.2.128/25192.168.2.130
  • A. 192.168.2.0,255.255.255.128,192.168.1.1
  • B. 192.168.2.0,255.255.255.0,192.168.1.1
  • C. 192.168.2.0,255.255.255.128,192.168.1.2
  • D. 192.168.2.0,255.255.255.0,192.168.1.2
展开解析

考点4.4 路由聚合与下一跳

DR1 还缺到 192.168.2.0/25 和 192.168.2.128/25 的路由,两者都经 R2。只增加一条,就要把它们聚合。

  1. 192.168.2.0/25 与 192.168.2.128/25 前 24 位相同,聚合为 192.168.2.0/24,掩码 255.255.255.0。
  2. 下一跳:R2 在与 R1 相连的网络 192.168.1.0/24 上的接口 192.168.1.2。
  • A 错掩码 /25 只覆盖 192.168.2.0/25;下一跳 192.168.1.1 是 R1 自己的接口。
  • B 错掩码对了,但下一跳写成了 R1 自己的接口。
  • C 错下一跳对了,但掩码 /25 漏掉了 192.168.2.128/25。
  • D 对192.168.2.0,255.255.255.0,192.168.1.2。

下一跳 = 相邻路由器在共同网络上的接口地址。

2015-38计网
某路由器的路由表如下表所示。若路由器收到一个目的地址为 169.96.40.5 的 IP 分组,则转发该 IP 分组的接口是( )。
目的网络下一跳接口
169.96.40.0/23176.1.1.1S1
169.96.40.0/25176.2.2.2S2
169.96.40.0/27176.3.3.3S3
0.0.0.0/0176.4.4.4S4
  • A. S1
  • B. S2
  • C. S3
  • D. S4
展开解析

考点4.4 最长前缀匹配

C逐项判断目的地址是否落在该网络内,再在匹配的项中选前缀最长的。

  1. /23:169.96.40.0 ~ 169.96.41.255,包含 40.5 ✓。
  2. /25:169.96.40.0 ~ 169.96.40.127 ✓。
  3. /27:169.96.40.0 ~ 169.96.40.31 ✓。
  4. 默认路由总是匹配,但前缀长度 0。最长的是 /27 → 接口 S3。
  • A 错S1 的 /23 也匹配,但前缀较短。
  • B 错S2 的 /25 也匹配,但不是最长。
  • C 对S3,/27 最长。
  • D 错默认路由只在其他项都不匹配时才用。

多项匹配选最长前缀;默认路由 /0 永远排最后。

2022-36计网
下图所示网络中的主机 H 的子网掩码与默认网关分别是( )。 InternetR路由器192.168.1.1/30R192.168.1.62/27交换机H192.168.1.60
  • A. 255.255.255.192,192.168.1.1
  • B. 255.255.255.192,192.168.1.62
  • C. 255.255.255.224,192.168.1.1
  • D. 255.255.255.224,192.168.1.62
展开解析

考点4.4 默认网关与子网掩码

DH 所在的网络是路由器接口 192.168.1.62/27 所连的那个网络,H 的掩码要与该网络一致,默认网关就是这个接口。

  1. /27 → 掩码 255.255.255.224;网络 192.168.1.32/27(.32 ~ .63),H 的 .60 在其中。
  2. 默认网关 = 本网络路由器接口 192.168.1.62。
  • A 错掩码 .192 是 /26,与网关接口的 /27 不一致;192.168.1.1 在两个路由器之间的 /30 链路上,不在 H 的网络里。
  • B 错网关 192.168.1.62 对了,但掩码 255.255.255.192 是 /26,与网关接口的 /27 不一致:H 会把 192.168.1.0 ~ .31(包括 /30 链路上的 .1、.2)也当成本网络,直接 ARP 而不交给网关。
  • C 错掩码 255.255.255.224 对了,但网关 192.168.1.1 在两个路由器之间的 /30 链路(192.168.1.0/30)上,不在 H 所在的 192.168.1.32/27 里,H 无法把分组交给它。
  • D 对255.255.255.224,192.168.1.62。

默认网关 = 与主机在同一网络上的路由器接口;主机掩码跟这个接口的前缀一致。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2015-38 改
某路由器的路由表为:169.96.40.0/23 → S1;169.96.40.0/25 → S2;169.96.40.0/27 → S3;0.0.0.0/0 → S4。若收到目的地址为 169.96.40.200 的分组,则转发接口是( )。
  • A. S2
  • B. S1
  • C. S3
  • D. S4
展开解析

B169.96.40.200 不在 /25(.0 ~ .127)和 /27 内,只匹配 /23(40.0 ~ 41.255)和默认路由,取最长的 /23 → S1。

  • A 错/25 只覆盖 169.96.40.0 ~ .127,不包含 .200。
  • B 对对:只有 /23 和默认路由匹配,取 /23。
  • C 错/27 只覆盖 169.96.40.0 ~ .31,也不包含 .200。
  • D 错默认路由只在其他项都不匹配时才用;这里 /23 匹配,前缀更长。

变化点:目的地址换成 .200,更长的前缀不匹配了。

变式计网由 2018-38 改
某路由表中有转发接口相同的 4 条路由:10.0.16.0/22、10.0.20.0/22、10.0.24.0/22、10.0.28.0/22,聚合后的目的网络是( )。
  • A. 10.0.16.0/19
  • B. 10.0.0.0/20
  • C. 10.0.16.0/20
  • D. 10.0.16.0/21
展开解析

C第 3 字节 16、20、24、28 = 0001 0000、0001 0100、0001 1000、0001 1100,共同前缀 16 + 4 = 20 位 → 10.0.16.0/20(第 3 字节 16 ~ 31)。

  • A 错10.0.16.0/19 不是合法的网络地址:/19 块大小 32,起点应为 0;它实际覆盖 0 ~ 31,多包进了 0 ~ 15。
  • B 错10.0.0.0/20 覆盖第 3 字节 0 ~ 15,四个网络一个都不包含。
  • C 对对:共同前缀 20 位,10.0.16.0/20 覆盖 16 ~ 31。
  • D 错/21 只覆盖 16 ~ 23,漏了 24、28 两个网络。

变化点:聚合对象从 /21 换成 /22。

变式计网由 2022-36 改
某主机 H 的 IP 地址为 192.168.1.100,与它同一网络的路由器接口为 192.168.1.126/26,则 H 的子网掩码和默认网关分别是( )。
  • A. 255.255.255.224,192.168.1.126
  • B. 255.255.255.192,192.168.1.100
  • C. 255.255.255.128,192.168.1.1
  • D. 255.255.255.192,192.168.1.126
展开解析

D/26 = 255.255.255.192;H 与该接口都在 192.168.1.64/26 中,默认网关是 192.168.1.126。

  • A 错掩码 255.255.255.224 是 /27,与网关接口的 /26 不一致,H 会把同网的 .64 ~ .95 当成外网。
  • B 错掩码对了,但网关写成了 H 自己的地址 192.168.1.100,分组交不出去。
  • C 错掩码 .128 是 /25,与接口的 /26 不一致;网关 192.168.1.1 也不在 H 所在的 192.168.1.64/26 里。
  • D 对对:/26 掩码,网关是同网的路由器接口 .126。

变化点:/27 换成 /26。

变式计网由 2011-37 改
在 2011-37 的拓扑中,若 R2 连接的两个子网改为 192.168.2.0/26 和 192.168.2.64/26,则 R1 需要增加的一条路由是( )。
  • A. 192.168.2.0,255.255.255.128,192.168.1.2
  • B. 192.168.2.0,255.255.255.0,192.168.1.2
  • C. 192.168.2.0,255.255.255.192,192.168.1.2
  • D. 192.168.2.0,255.255.255.128,192.168.1.1
展开解析

A两个 /26 相邻且对齐,聚合为 192.168.2.0/25(255.255.255.128),下一跳 R2 的 192.168.1.2。

  • A 对对:两个相邻的 /26 聚合为 /25,下一跳 R2。
  • B 错/24 多包进了 192.168.2.128 ~ .255,它们并不在 R2 后面;两个相邻的 /26 恰好聚合成 /25。
  • C 错掩码 /26 只覆盖 192.168.2.0/26,漏了 192.168.2.64/26。
  • D 错掩码对了,但下一跳 192.168.1.1 是 R1 自己的接口,应为 R2 的 192.168.1.2。

变化点:子网变小,聚合结果从 /24 变成 /25;下一跳不变。

4.5网络地址转换 NAT

★★ 常考选择题综合题

问题:IPv4 只有约 43 亿个地址,早已分完;可一个家庭就有手机、电脑、电视好几台设备,一个学校有上万台。私有地址(10.x、172.16~31.x、192.168.x)可以随便用,但因特网上的路由器不转发它们——用私有地址的主机怎么上网?

比喻:公司总机 + 分机号

公司对外只有一个总机号码,员工打出去时,对方看到的都是总机号;对方回拨总机,总机按“分机号”转给具体的员工。NAT 路由器就是总机:内网主机的私有地址是“员工的内部工号”,NAT 路由器的全球地址是“总机号”,端口号就是“分机号”。哪里不像:总机的分机号是固定分配的;NAPT 的“分机号”(转换后的端口)是有人往外打电话时临时分配的,通话结束一段时间后就收回。

IPv4 地址不够用,一个单位内部的大量主机使用私有地址,只在连接因特网的路由器上装 NAT 软件,拥有少量全球地址。内网主机访问外网时,NAT 路由器把分组的源地址换成全球地址;外网回来的分组,再把目的地址换回内网私有地址。

只换 IP 地址的话,同一时刻一个全球地址只能给一台内网主机用。实际使用的是 NAPT(网络地址与端口号转换):把(私有地址,源端口)一起换成(全球地址,新端口),用不同端口区分不同内网主机,一个全球地址就能让很多主机同时上网。

内网主机192.168.0.3源 192.168.0.3:3345目的 130.18.10.1:80NAT 路由器外网口 201.1.3.10源 201.1.3.10:5001目的 130.18.10.1:80外网服务器130.18.10.1目的 201.1.3.10:5001目的 192.168.0.3:3345NAPT 转换表内网 192.168.0.3:3345↔ 外网 201.1.3.10:5001
图 4-13 NAPT 的工作过程。出去的分组改源地址和源端口,回来的分组改目的地址和目的端口,靠转换表对应起来。外网主机不能主动向内网主机发起连接(表中没有对应项)。
  • NAT 修改了 IP 首部 → IP 首部检验和要重算;NAPT 还修改了 TCP/UDP 的端口号,而 TCP/UDP 检验和覆盖伪首部(含源、目的 IP 地址)和端口 → 传输层检验和也要重算(2025-37)。长度字段、目的端口(出去时)都不变。
  • NAT 路由器要看、要改传输层的端口号,严格说越过了网络层的职责;但它是实际中使用最广的节省地址的办法。另外 NAT 破坏了“端到端”的透明性:外网主机看不到内网主机的真实地址,也不能主动向它发起连接,P2P 应用、内网服务器都要额外配置(静态映射等)才能用。
  • 判断 NAT 后源地址的思路:出去的分组经过 NAT 路由器后,源地址 = NAT 路由器外网接口的地址(2016-38、2023-38)。若外网接口地址没直接给,就用它所在链路的地址块推:/30 链路只有两个可用地址,一个是对端路由器的,另一个就是它的。

三种 NAT:静态、动态、NAPT

方式怎么转换特点与用途
静态 NAT管理员事先配好“一个私有地址 ↔ 一个全球地址”(或“全球地址:端口 ↔ 私有地址:端口”)的固定映射映射永久存在,外网主机可以主动访问内网服务器。2020-47 就是在 R2 上把 203.10.2.2:80 静态映射到内网 Web 服务器 192.168.1.2:80(也叫端口映射)
动态 NATNAT 路由器有一个全球地址池,内网主机要出去时临时分一个,用完收回同一时刻能上网的内网主机数 ≤ 全球地址个数
NAPT(私有地址,端口)↔(全球地址,新端口),用端口区分不同内网主机一个全球地址可供上万台主机同时上网;家用路由器都是它。表项由内网主动发出的分组“触发”建立,外网主机不能主动发起连接

NAPT 转换表:跟我走一遍

内网两台主机 H1(192.168.1.2)和 H2(192.168.1.3)碰巧都用源端口 5000 访问同一台 Web 服务器 S(202.10.5.8:80)。NAT 路由器 R 的外网接口地址是 61.155.1.10。看 R 的转换表怎样一步步建立、怎样把回来的分组送对人:

H1192.168.1.2H2192.168.1.3NAT 路由器 R外网口 61.155.1.10服务器 S202.10.5.8① H1 发出源 192.168.1.2:5000目的 202.10.5.8:80表中没有 → 新建一项192.168.1.2:5000 ↔ :30001② 改源后转发源 61.155.1.10:30001目的 202.10.5.8:80③ H2 发出源 192.168.1.3:5000目的 202.10.5.8:80再新建一项192.168.1.3:5000 ↔ :30002④ 改源后转发源 61.155.1.10:30002目的 202.10.5.8:80⑤ S 回应 H1 的请求目的 61.155.1.10:30001查表:30001 → H1⑥ 改目的后转发目的 192.168.1.2:5000⑦ S 回应 H2 的请求目的 61.155.1.10:30002⑧ 改目的后转发目的 192.168.1.3:5000
图 4-14 NAPT 的完整时序。出去时改源地址 + 源端口并记表,回来时按目的端口查表、改回目的地址 + 目的端口。两台主机的源端口都是 5000 也不冲突,因为 R 给它们分了不同的外网端口。
内网一侧外网一侧
私有 IP 地址端口全球 IP 地址端口
192.168.1.2500061.155.1.1030001
192.168.1.3500061.155.1.1030002

如果外网某主机主动发一个分组到 61.155.1.10:40000,R 查不到 40000 这一项,就不知道该交给谁,只能丢弃——所以 NAPT 天然挡住了“外网主动连进来”,想让外网访问内网服务器,就要像 2020-47 那样配静态映射。

NAT 路由器改了哪些字段
方向IP 首部TCP / UDP 首部
内 → 外源 IP 改为全球地址;TTL 减 1;首部检验和重算源端口改为新端口;检验和重算(伪首部里有源 IP)
外 → 内目的 IP 改为私有地址;TTL 减 1;首部检验和重算目的端口改回原端口;检验和重算
不变总长度、协议字段、UDP 长度、另一方向的端口(出去时的目的端口 80 不变)
真题怎么考
  • NAT 后源地址是什么(2016-38、2023-38):出 NAT 路由器后,源地址 = NAT 路由器外网接口的地址。2023-38 外网接口地址没直接给,只给了 R1 一侧 192.168.0.34/30:/30 块是 .32~.35,可用的只有 .33 和 .34,R1 占了 .34,R2 外网口就是 .33。
  • 改了哪些字段(2025-37):UDP 首部的源端口和检验和;长度和目的端口不变。
  • 静态映射 + 三处地址(2020-47):按“出 NAT 改源、进 NAT 改目的”逐段写。
易错辨析
  • 内网主机之间互相通信(目的地址也是本内网私有地址)不经过 NAT,地址不变。
  • NAPT 的转换表项是内网主机主动向外发分组时建立的;外网主动发来的分组若查不到表项就被丢弃。所以内网服务器要被外网访问,必须事先配置静态映射。
  • 不同内网里可以出现相同的私有地址(2020-47 中 H2 与 Web 服务器都是 192.168.1.2),它们靠各自的 NAT 路由器区分,互不冲突。
  • NAT 改的是“出去的源、回来的目的”,不改出去分组的目的地址和目的端口(如 Web 服务器的 80)。
2023-38计网
某网络拓扑如下图所示,其中路由器 R2 实现 NAT 功能。若主机 H 向 Internet 发送一个 IP 分组,则经过 R2 转发后,该 IP 分组的源 IP 地址是( )。 InternetR1192.168.0.34/30R2NAT192.168.0.1H192.168.0.3
  • A. 192.168.0.33
  • B. 192.168.0.35
  • C. 192.168.0.1
  • D. 192.168.0.3
展开解析

考点4.5 NAT 改写源地址4.3 /30 地址块

A经过 NAT 的 R2 后,源地址换成 R2 外侧接口(连 R1 的那个接口)的地址。

  1. R1—R2 链路是 192.168.0.34/30:地址块 192.168.0.32 ~ .35,.32 网络地址,.35 广播地址,可用 .33、.34。
  2. .34 标在 R1 一侧,是 R1 的接口,所以 R2 外侧接口是 192.168.0.33。
  • A 对192.168.0.33。
  • B 错192.168.0.35 是这个 /30 块的广播地址。
  • C 错192.168.0.1 是 R2 的内网接口,是 H 的默认网关。
  • D 错192.168.0.3 是 H 自己的地址,经过 NAT 后要被换掉。

/30 链路两端各占一个可用地址:知道一端,另一端就确定了。

2016-38计网
在下图(2016 年题 33~41 图)所示的网络中,假设连接 R1、R2 和 R3 之间的点对点链路使用 201.1.3.x/30 地址,当 H3 访问 Web 服务器 S 时,R2 转发出去的封装 HTTP 请求报文的 IP 分组的源 IP 地址和目的 IP 地址分别是( )。 InternetWeb 服务器 S 130.18.10.1R1201.1.3.9L0(NAT)R2R3L1201.1.3.1201.1.2.0/25201.1.1.0/24E0DNS 服务器201.1.1.1E1 192.168.3.254SwitchHubH1192.168.3.2H2192.168.3.3H3192.168.3.251H4192.168.3.252R1~R3 为路由器Switch 为 100Base-T 交换机Hub 为 100Base-T 集线器H1~H4 的默认域名服务器均为 201.1.1.1
  • A. 192.168.3.251,130.18.10.1
  • B. 192.168.3.251,201.1.3.9
  • C. 201.1.3.8,130.18.10.1
  • D. 201.1.3.10,130.18.10.1
展开解析

考点4.5 NAT 改写源地址4.3 /30 地址块

DH3 用私有地址 192.168.3.251,R2 的 L0 接口实现 NAT:分组从 L0 转发出去时,源地址换成 L0 的公网地址;目的地址一直是服务器 S。

  1. R1 与 R2 之间的链路是 /30:R1 一侧 201.1.3.9 所在的地址块是 201.1.3.8 ~ 201.1.3.11,.8 是网络地址,.11 是广播地址,可用的只有 .9 和 .10。
  2. .9 是 R1 的,所以 R2 的 L0 = 201.1.3.10。
  3. 源 201.1.3.10,目的 130.18.10.1。
  • A 错源地址还是私有地址,没有经过 NAT 转换。
  • B 错目的地址写成了下一跳 R1 的接口。IP 分组的目的地址始终是最终目的 S。
  • C 错201.1.3.8 是这个 /30 块的网络地址,不能作源地址。
  • D 对201.1.3.10,130.18.10.1。

出 NAT:源地址 = NAT 路由器外网接口地址;目的地址不变。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2023-38 改
在 2023-38 的拓扑中,若 R1—R2 链路上标注的 R1 接口为 192.168.0.37/30,则 H 发往 Internet 的分组经 R2 转发后的源 IP 地址是( )。
  • A. 192.168.0.36
  • B. 192.168.0.38
  • C. 192.168.0.37
  • D. 192.168.0.39
展开解析

B/30 块 .36 ~ .39,可用 .37、.38;.37 是 R1 的,R2 外侧接口是 .38。

  • A 错.36 是这个 /30 块的网络地址,不能分配给接口。
  • B 对对:/30 块 .36 ~ .39,可用 .37、.38,.37 是 R1 的。
  • C 错.37 是 R1 的接口,R2 外侧接口是剩下的 .38。
  • D 错.39 是这个 /30 块的广播地址,不能分配给接口。

变化点:/30 的另一端随已知地址改变。

变式计网由 2025-37 改
内网主机 H 通过 NAPT 路由器用 TCP 访问外网服务器,路由器转发 H 发出的报文段时,TCP 首部中会被修改的字段是( )。
I. 源端口 II. 目的端口 III. 序号 IV. 检验和
  • A. 仅 I、III
  • B. 仅 II、IV
  • C. 仅 I、IV
  • D. 仅 I、III、IV
展开解析

CNAPT 改源 IP 和源端口;TCP 检验和覆盖伪首部(含源 IP)和端口,必须重算。序号、目的端口不变。

  • A 错A 含 III:NAPT 不改 TCP 序号;又漏了 IV,检验和要重算。
  • B 错B 含 II:目的端口是外网服务器的端口,不变;又漏了要换成新端口号的 I。
  • C 对对:源端口、检验和。
  • D 错D 多选了 III:序号由两端的 TCP 维护,NAPT 不动它。

变化点:UDP 换成 TCP,结论相同。

变式计网由 2016-38 改
在 2016 年题图中,Web 服务器 S 回复 H3 的分组经 R2 转发给 H3 时,其源 IP 地址和目的 IP 地址分别是( )。
  • A. 130.18.10.1,201.1.3.10
  • B. 201.1.3.10,192.168.3.251
  • C. 192.168.3.251,130.18.10.1
  • D. 130.18.10.1,192.168.3.251
展开解析

D回来的分组到 R2 之前目的是 201.1.3.10;R2 查 NAT 表把目的地址改回 H3 的 192.168.3.251,源地址仍是 S。

  • A 错目的地址 201.1.3.10 是到 R2 之前的值;经 R2 转发后已改回 H3 的私有地址。
  • B 错源地址写成了 R2 的公网地址:入方向 NAT 只改目的地址,源地址仍是服务器 S。
  • C 错源、目的写反了:这是 S 发给 H3 的回复,源是 S(130.18.10.1),目的是 H3。
  • D 对对:源 S,目的已改回 H3 的私有地址。

变化点:方向反过来:入方向 NAT 改目的地址。

变式计网考纲补充(尚无真题)
某 NAPT 路由器的外网地址为 61.155.1.10。内网主机 192.168.1.2 以源端口 5000 访问外网服务器的 80 端口,NAPT 把它映射为外网端口 30001。服务器的响应分组到达 NAT 路由器时,其目的 IP 地址和目的端口是( )。
  • A. 192.168.1.2,5000
  • B. 192.168.1.2,30001
  • C. 61.155.1.10,30001
  • D. 61.155.1.10,80
展开解析

C服务器只知道 NAT 改过的源地址和源端口(61.155.1.10:30001),响应就发往这里;NAT 路由器查表后再把目的改回 192.168.1.2:5000。

  • A 错192.168.1.2:5000 是 NAT 路由器改写后、转发给内网主机时的目的;到达路由器之前,服务器只知道 61.155.1.10:30001。
  • B 错混用了两边的值:内网 IP 配外网端口;到达路由器时目的是外网地址加外网端口。
  • C 对对:61.155.1.10:30001。
  • D 错80 是服务器自己的端口(响应的源端口);响应的目的端口是 NAPT 分配的 30001。

考点:4.5 节“NAPT 转换表:跟我走一遍”。

4.6ARP、DHCP 与 ICMP

★★ 常考选择题综合题

IP 只管“按地址转发”。要让一台主机真正把分组发出去,还要回答三个问题:下一站的 MAC 地址是多少(ARP)?我自己的 IP 地址是多少(DHCP)?出了问题谁来告诉我(ICMP)?这三个协议常在“一次访问全过程”的大题里一起出现(2015-47、2021-47)。

ARP:已知 IP 地址,求同一网络上的 MAC 地址

问题:分组在每一段链路上要封装成帧,帧里要写下一站的 MAC 地址,而路由表只给出下一跳的 IP 地址。IP 地址和 MAC 地址之间没有任何换算关系(一个是管理员分配的,一个是网卡出厂时烧进去的),只能“问”。

比喻:教室里喊人

老师拿着名单想找“学号 1023”的同学,但不认识脸。于是对全班喊:“学号 1023 是谁?举手!”(广播)。全班都听见了,只有 1023 号举手,并走过来说“是我,我坐第 3 排第 5 个”(单播回答)。老师在名单上记下座位(ARP 高速缓存),下次直接去找。哪里不像:ARP 只在同一个局域网(同一个广播域)里喊得到,隔着路由器就喊不到了。

ARP(地址解析协议)负责把同一局域网内某个 IP 地址解析成 MAC 地址(2012-38)。

  1. 每台主机有一张 ARP 高速缓存(IP 地址 → MAC 地址,每项有生存时间,一般十几分钟,过期删除)。先查缓存,查到就直接用。
  2. 查不到:广播一个 ARP 请求帧(目的 MAC 为 FF-FF-FF-FF-FF-FF):“IP 为 x 的主机,你的 MAC 是多少?”同一局域网的所有主机都收到。
  3. IP 为 x 的主机用单播回 ARP 响应,写上自己的 MAC;同时把请求方的 IP—MAC 记入自己的缓存(对方很可能马上要和它通信)。其他主机发现问的不是自己,丢弃。
  4. 请求方收到响应,写入缓存。

ARP 表长什么样:在 Windows 命令行输入 arp -a 可以看到本机的 ARP 高速缓存,类似下表。“动态”项是 ARP 自动学来的,过一段时间不用就删除;“静态”项是手工配置或系统固定的(如广播地址),不会过期。

Internet 地址物理地址类型
192.168.1.13c-06-a7-12-5b-01动态(这是默认网关,几乎总在表里)
192.168.1.238c-85-90-4e-aa-17动态
192.168.1.255ff-ff-ff-ff-ff-ff静态(本子网广播)
224.0.0.2201-00-5e-00-00-16静态(多播,映射规则见 4.10)
主机 A10.1.1.10 · MAC-A主机 B10.1.1.20 · MAC-B主机 C10.1.1.30 · MAC-C查 ARP 缓存:没有 10.1.1.30① ARP 请求(广播)目的 MAC = FF-FF-FF-FF-FF-FF“谁是 10.1.1.30?我是 10.1.1.10 / MAC-A”问的不是我 → 丢弃记下 A 的 IP—MAC② ARP 响应(单播)目的 MAC = MAC-A“10.1.1.30 的 MAC 是 MAC-C”写入缓存,用 MAC-C 封装数据帧
图 4-15 ARP 的一问一答。请求是广播(虚线箭头发给所有主机),响应是单播。ARP 报文直接装在以太网帧里(类型字段 0x0806),不经过 IP。

ARP 请求和响应直接封装在以太网帧里(类型字段 0x0806),不经过 IP;在 408 中归入网络层。ARP 请求是广播,所以只在一个广播域内有效,不能跨路由器,也不能跨 VLAN(2024-35)。

ARP 的四种情况:跨网络时解析的是谁

判断规则只有一条:ARP 解析的永远是“这一段链路上的下一站”。目的主机在本网络就是目的主机,不在本网络就是路由器(默认网关或下一跳路由器)。

LAN1 10.1.1.0/24LAN2 10.1.2.0/24H110.1.1.10H310.1.1.30S1R1a 10.1.1.1b 10.1.12.110.1.12.0/30R2a 10.1.12.2b 10.1.2.1S2H210.1.2.20①② H1 → R1ARP 解析 R1 的 a 口(默认网关)③ R1 → R2ARP 解析 R2 的 a 口(下一跳)④ R2 → H2ARP 解析 H2(目的主机)① H1 → H3(同一网络):直接 ARP 解析 H3。②~④ 是 H1 → H2 跨网络时的三段,每段各 ARP 一次(缓存里有就不用)。
图 4-16 ARP 的四种情况。主机 → 本网主机、主机 → 路由器(默认网关)、路由器 → 路由器(下一跳)、路由器 → 主机。每一段 ARP 都只在这一段所在的局域网里广播。
例逐跳写出地址
在上图中,H1 向 H2 发送一个 IP 分组。设各接口 MAC 分别记为 MAC-H1、MAC-R1a、MAC-R1b、MAC-R2a、MAC-R2b、MAC-H2。写出该分组在三段链路上的帧地址和 IP 地址。
展开解析
链路段帧的源 MAC帧的目的 MAC源 IP目的 IP这一段 ARP 解析谁
H1 → R1MAC-H1MAC-R1a10.1.1.1010.1.2.20R1 的 a 口 10.1.1.1
R1 → R2MAC-R1bMAC-R2a10.1.1.1010.1.2.20R2 的 a 口 10.1.12.2
R2 → H2MAC-R2bMAC-H210.1.1.1010.1.2.20H2 10.1.2.20

规律:IP 地址一路不变,MAC 地址每段都换,换成“这一段的发送接口 → 这一段的接收接口”。H1 怎么知道 H2 不在本网络?用自己的掩码 255.255.255.0 分别与 10.1.1.10、10.1.2.20 相与,得到 10.1.1.0 ≠ 10.1.2.0,所以交给默认网关。交换机 S1、S2 不改任何地址。

跨网络转发时地址怎么变

IP 分组从源主机到目的主机,源、目的 IP 地址始终不变(NAT 除外);每经过一段链路,帧的 MAC 地址都换成这一段的收发双方:H1 发出的帧,目的 MAC 是默认网关(路由器左接口);路由器转发出去的帧,源 MAC 是路由器右接口,目的 MAC 是 H2(2018-37)。交换机不改 MAC 地址。

2018-37计网
路由器 R 通过以太网交换机 S1 和 S2 连接两个网络,R 的接口、主机 H1 和 H2 的 IP 地址与 MAC 地址如下图所示。若 H1 向 H2 发送一个 IP 分组 P,则 H1 发出的封装 P 的以太网帧的目的 MAC 地址、H2 收到的封装 P 的以太网帧的源 MAC 地址分别是( )。 S1192.168.3.100-1a-2b-3c-4d-51R192.168.4.100-a1-b2-c3-d4-61S2H1192.168.3.200-1a-2b-3c-4d-52H2192.168.4.200-a1-b2-c3-d4-62
  • A. 00-a1-b2-c3-d4-62,00-1a-2b-3c-4d-52
  • B. 00-a1-b2-c3-d4-62,00-a1-b2-c3-d4-61
  • C. 00-1a-2b-3c-4d-51,00-1a-2b-3c-4d-52
  • D. 00-1a-2b-3c-4d-51,00-a1-b2-c3-d4-61
展开解析

考点4.6 ARP 与跨网络转发

DH1(192.168.3.2)与 H2(192.168.4.2)不在同一网络,H1 要把分组交给默认网关 R;帧的 MAC 地址每一段都换,IP 地址不变。

  1. 第一段 H1 → R:源 MAC = H1(…4d-52),目的 MAC = R 左接口 00-1a-2b-3c-4d-51(H1 用 ARP 解析网关 192.168.3.1 得到)。
  2. 第二段 R → H2:源 MAC = R 右接口 00-a1-b2-c3-d4-61,目的 MAC = H2(…d4-62)。
  3. 交换机 S1、S2 只转发,不修改 MAC 地址。
  • A 错目的 MAC 写成了 H2:H2 在另一个网络,H1 的帧到不了它;源 MAC 写成了 H1,但 R 转发时会换成自己的接口地址。
  • B 错第二个对了,第一个错把 H2 当成了第一段的目的。
  • C 错第一个对了,第二个错以为 H2 收到的帧源 MAC 仍是 H1。
  • D 对00-1a-2b-3c-4d-51,00-a1-b2-c3-d4-61。

IP 地址端到端不变,MAC 地址逐段改写;跨网络时第一段的目的 MAC 是网关。

免费 ARP:问自己的地址

免费 ARP(gratuitous ARP,也叫无偿 ARP)是一种特殊的 ARP 请求:主机广播一个 ARP 请求,问的正是自己的 IP 地址。正常情况下不会有人回答;如果有人回答,说明网络中另一台主机也在用这个地址。用途有两个:

  • 检测 IP 地址冲突:主机刚配置好地址(手工配置或刚从 DHCP 拿到)时发一次。有应答 → 地址冲突,不能用(DHCP 客户此时会发 DHCP DECLINE 谢绝这个地址,见下文)。
  • 通告自己的新 MAC:主机换了网卡,或双机热备时备用机接管了主机的 IP,广播一次免费 ARP,其他主机收到后就把缓存里这个 IP 对应的 MAC 更新掉。

〔拓〕ARP 不做任何验证,谁回答都信,所以有“ARP 欺骗”攻击:坏人冒充网关回答,让别人把分组都发给自己。另有早已淘汰的 RARP(逆地址解析:已知 MAC 求 IP),功能已被 DHCP 取代。

真题怎么考

2012-38 直接问 ARP 的功能(IP → MAC,不要和 DNS 的“域名 → IP”混)。更常见的是大题里问“发出的第一个以太网帧的目的 MAC”(2015-47(2):ARP 表为空时,第一个帧是 ARP 请求,目的 MAC 为 FF-FF-FF-FF-FF-FF)和“封装 IP 分组的帧的目的 MAC”(默认网关的 MAC)。这两问的区别就在“第一个帧”是 ARP 请求本身。

DHCP:新主机怎样自动拿到 IP 地址

问题:一台笔记本走进图书馆连上 Wi-Fi,它不知道这里的网络地址是多少、网关是谁、DNS 服务器在哪,自己连 IP 地址都没有——它怎么开口说话?

比喻:住酒店办入住

你走进大堂喊一声“有空房吗?”(DISCOVER,广播);前台说“308 可以给你”(OFFER);你说“好,我要 308”(REQUEST);前台登记、给房卡,“住到后天中午”(ACK,含租期)。快到期时你去前台续住(续约),退房时交还房卡(RELEASE)。哪里不像:大堂里可能有好几家酒店的前台同时回答你,所以你“我要 308”这句话也要大声喊(广播),让没被选中的前台知道。

DHCP(动态主机配置协议)让主机开机后自动获得 IP 地址、子网掩码、默认网关、DNS 服务器地址等。它是应用层协议,使用 UDP,客户端口 68、服务器端口 67,采用客户/服务器方式。地址是租用的,有租期。

DHCP 服务器 1192.168.1.1客户 C还没有地址DHCP 服务器 2192.168.1.2① DISCOVER(广播)源 0.0.0.0:68 → 255.255.255.255:67“谁能给我一个地址?”ARP 探测:.100 有人在用吗?ARP 探测:.200 有人在用吗?② OFFER:yiaddr = .100源 192.168.1.1:67② OFFER:yiaddr = .200源 192.168.1.2:67③ REQUEST(仍是广播)源 0.0.0.0:68 → 255.255.255.255:67“我选服务器 1 的 .100”没选我 → 收回 .200④ ACK:租期 8 小时含掩码、网关、DNS 服务器地址免费 ARP:.100 有人用吗?无人应答 → 开始使用 .100
图 4-17 DHCP 获得地址的完整过程(两台服务器的情形)。客户收到 ACK 之前没有 IP 地址,所以 DISCOVER 和 REQUEST 的源地址都是 0.0.0.0、目的地址都是 255.255.255.255。REQUEST 仍然广播,是为了让发过 OFFER 但没被选中的服务器知道(2025-36)。两次 ARP:服务器发 OFFER 前探测地址是否已被占用;客户收到 ACK 后发免费 ARP 检测冲突。
报文方向源 IP : 端口目的 IP : 端口广播 / 单播
DISCOVER客户 → 服务器0.0.0.0 : 68255.255.255.255 : 67广播(帧目的 MAC 全 F)
OFFER服务器 → 客户服务器 IP : 67255.255.255.255 : 68 *广播 *
REQUEST客户 → 服务器0.0.0.0 : 68255.255.255.255 : 67广播
ACK服务器 → 客户服务器 IP : 67255.255.255.255 : 68 *广播 *
续约 REQUEST(T1)客户 → 原服务器已租地址 : 68原服务器 IP : 67单播
续约 REQUEST(T2)客户 → 所有服务器已租地址 : 68255.255.255.255 : 67广播
RELEASE客户 → 原服务器已租地址 : 68原服务器 IP : 67单播

* 教材(谢希仁、王道)的图把 OFFER、ACK 画成广播。RFC 2131 的规定是:客户在 DISCOVER 里把“广播标志”置 1 时服务器广播回答,否则可以直接单播给 yiaddr(帧发往客户的 MAC)。真题只考过 DISCOVER / REQUEST 的地址(一定是 0.0.0.0 → 255.255.255.255),OFFER / ACK 若被问到,按教材写广播;选项里只有单播时再按 RFC 理解。

  • DHCP 报文的封装:DHCP → UDP → IP → 以太网帧。DISCOVER 帧的目的 MAC 是 FF-FF-FF-FF-FF-FF,源 MAC 是本机网卡地址。服务器靠报文里的 chaddr 字段(客户 MAC)认出是谁。
  • NAK(否认):客户请求的地址不能给(例如它从别的网络搬来,还想续用旧地址),服务器回 NAK,客户必须停用、重新 DISCOVER。
  • DECLINE(谢绝):客户收到 ACK 后用免费 ARP 发现地址冲突,发 DECLINE 告诉服务器“这个地址有人用了”,然后重新 DISCOVER。
  • RELEASE(释放):客户关机、断网前主动归还地址,服务器收回到地址池。

DHCP 中继代理与租期续约

DISCOVER 是受限广播(255.255.255.255),路由器不转发。如果每个网络都放一台 DHCP 服务器又太浪费。办法是在每个网络的路由器上开启 DHCP 中继代理:它收到本网络的 DISCOVER 广播后,把自己这个接口的地址填进报文的 giaddr 字段,以单播转发给另一个网络上的 DHCP 服务器;服务器按 giaddr 判断客户在哪个网络、从对应的地址池里挑地址,回答发给中继代理,再由中继代理转给客户。

客户 C网络 10.1.1.0/24中继代理(路由器 R)R 的接口 10.1.1.1DHCP 服务器10.9.9.9(另一个网络)① DISCOVER(广播)0.0.0.0 → 255.255.255.255② 单播转发 DISCOVER10.1.1.1 → 10.9.9.9giaddr = 10.1.1.1按 giaddr 从 10.1.1.0/24 地址池选地址③ OFFER(单播给中继)10.9.9.9 → 10.1.1.1④ 转发 OFFERREQUEST、ACK 同样经中继代理转一次
图 4-18 DHCP 中继代理。客户和服务器不在同一个网络时,由客户所在网络的路由器代为转发;客户自己完全感觉不到中继的存在。
0收到 ACKT1 = 0.5 TT2 = 0.875 TT 到期正常使用该地址单播 REQUEST 给原服务器ACK → 得到新租期,重新计时NAK → 立即停用,重新 DISCOVER无应答 → 继续用,等 T2广播 REQUEST原服务器可能坏了,任何服务器都可回 ACK / NAK仍无 ACK:停止使用,重新 DISCOVER
图 4-19 DHCP 租期与续约(T = 租期)。例如租期 8 小时,则 4 小时(T1)时单播续约,7 小时(T2)时广播求援,8 小时到期必须停用。续约时客户已经有地址,所以源地址不再是 0.0.0.0。
2025-36计网
一台新接入网络的主机 H 通过 DHCP 服务器动态请求 IP 地址过程中,与 DHCP 服务器交换 DHCP 报文过程如下图所示。封装 DHCP 的 REQUEST 报文的 IP 数据报的目的 IP 地址和源 IP 地址分别是( )。 HDHCP 服务器192.168.5.1yiaddr: 192.168.5.9yiaddr: 192.168.5.9
  • A. 192.168.5.1,0.0.0.0
  • B. 192.168.5.1,192.168.5.9
  • C. 255.255.255.255,0.0.0.0
  • D. 255.255.255.255,192.168.5.9
展开解析

考点4.6 DHCP 报文的地址

C图中第一个报文是服务器发来的 OFFER(给出 yiaddr = 192.168.5.9),第二个是 H 发出的 REQUEST(请求使用这个地址)。

  1. REQUEST 发出时 H 还没收到 ACK,还不能使用 192.168.5.9,源地址仍是 0.0.0.0。
  2. REQUEST 用广播发送,目的地址 255.255.255.255:让所有发过 OFFER 的服务器都知道 H 选了谁。
  • A 错目的地址不是服务器的单播地址,REQUEST 是广播。
  • B 错目的和源都不对:192.168.5.9 要等 ACK 之后才能用。
  • C 对255.255.255.255,0.0.0.0。
  • D 错源地址还不能是 192.168.5.9。

DISCOVER、REQUEST:源 0.0.0.0,目的 255.255.255.255;收到 ACK 才有地址。

真题怎么考
  • 2025-36:给出 OFFER、REQUEST 的时序,问 REQUEST 的源、目的 IP——0.0.0.0、255.255.255.255。陷阱:图上 REQUEST 带着 yiaddr = 192.168.5.9,但那只是“我想要的地址”,客户在收到 ACK 前还不能用它作源地址。
  • 2015-47(1):DHCP 可分配的地址范围(去掉网络地址、广播地址和已静态分配的地址);DISCOVER 的源、目的 IP。
  • 可能的变化:续约(T1 单播、T2 广播)、DHCP 使用的传输层协议和端口(UDP 67/68)、中继代理的作用、DHCP 属于哪一层(应用层)。
DHCP 易错辨析
  • DHCP 是应用层协议,用 UDP(不是 TCP,也不是网络层协议),尽管它分配的是网络层地址。
  • 客户发 REQUEST 时已经知道要哪个地址了,但还没收到 ACK,源地址仍是 0.0.0.0(2025-36)。
  • 受限广播 255.255.255.255 不能被路由器转发,所以 DHCP 服务器与客户不在同一网络时必须有中继代理;中继代理转发时用单播。
  • DHCP 分配的地址有租期,不是永久的;租期到了没续上必须停用。

ICMP:网络层的差错报告和询问

问题:IP 只尽力而为,分组丢了、TTL 耗尽了、目的地址不存在……源主机若一无所知,就只能干等。需要有个“回执”机制,把出错的情况告诉源主机——这就是 ICMP(网际控制报文协议)。

ICMP 报文装在 IP 数据报的数据部分(协议字段 = 1),所以 ICMP 由 IP 直接提供服务(2012-33),属于网络层协议。注意:ICMP 不是用来让 IP 变可靠的,它只报告,不纠正、不重传。

08162431字节类型如 8 / 0 回送代码同一类型下的细分原因检验和覆盖整个 ICMP 报文0这 4 字节的含义取决于类型(回送报文:标识符 16 位 + 序号 16 位;差错报文:一般全 0)4差错报告:出错 IP 数据报的首部 + 其数据部分的前 8 字节(询问报文则是自己的数据)8ICMP 首部8 字节数据部分
图 4-20 ICMP 报文格式。整个 ICMP 报文作为 IP 数据报的数据部分发送。差错报告报文里附上“出错数据报的 IP 首部 + 数据前 8 字节”,前 8 字节正好包含 TCP/UDP 的源端口和目的端口,源主机据此知道是哪个进程的分组出了问题。
类别报文类型(类型号)什么时候发
差错报告报文
(路由器或目的主机发给源主机)
终点不可达(3)路由器或主机不能交付分组:找不到路由(网络不可达)、目的主机不存在(主机不可达)、目的端口没有进程(端口不可达)、需要分片但 DF = 1 等,用“代码”区分
源点抑制(4)路由器或主机因拥塞丢弃分组,让源点放慢发送速率(2010-36)。新标准已不再使用,但 408 仍考
时间超过(11)① 路由器把 TTL 减为 0 而丢弃分组;② 目的主机在规定时间内没收齐一个数据报的全部分片,丢弃已收到的分片
参数问题(12)路由器或目的主机发现首部中有字段的值不正确(例如首部长度字段与实际不符、选项格式错误),丢弃分组
改变路由(重定向)(5)路由器告诉同一网络上的主机:下次发往某目的地,直接交给另一个更好的路由器(主机刚启动时路由表很简单,靠它逐步学习)
询问报文回送请求 / 回答(8 / 0)测试目的站是否可达、测往返时间(ping)
时间戳请求 / 回答(13 / 14)请某台主机或路由器回答当前日期和时间,用于时钟同步和测时间

类型号不必背;会认 ping 用的 8 和 0、知道五种差错的名字和触发条件就够。

不发送 ICMP 差错报告的 4 种情况(为了防止“差错报文风暴”)
  1. 对 ICMP 差错报告报文本身出错,不再发差错报告(否则会无限套娃)。询问报文出错仍可报告。
  2. 对分片数据报的非第一个分片,不发(第一个分片含端口信息,报一次就够了)。
  3. 对具有多播地址的数据报,不发(一个多播分组出错,成百上千个接收者都回报,会淹没源主机)。
  4. 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报,不发(没法回、也不该回)。

ping 与 traceroute:ICMP 的两个经典应用

ping 测试两台主机之间是否连通:发 ICMP 回送请求,对方回 回送回答,顺便测出往返时间 RTT。ping 是应用层程序,但它直接使用网络层的 ICMP,不经过 TCP 或 UDP——这是“应用直接用网络层”的少见例子。

主机 A(执行 ping B)主机 BICMP 回送请求(类型 8,序号 1)封装在 IP 数据报中,协议字段 = 1ICMP 回送回答(类型 0,序号 1)把请求里的数据原样带回RTT = 收到回答的时刻 − 发出请求的时刻回送请求(序号 2)默认连发 4 个(Windows)回送回答(序号 2)
图 4-21 ping 的过程。收不到回答(超时)不一定是对方关机,也可能是对方或中间的防火墙禁止了 ICMP。

traceroute(Windows 下叫 tracert)找出从源主机到目的主机经过的每一个路由器。它巧妙地利用了 TTL 和 ICMP 时间超过报文:

源主机 A路由器 R1路由器 R2目的主机 B① 发 TTL = 1 的分组TTL 减为 0,丢弃ICMP 时间超过源地址 = R1 → A 得知第 1 跳是 R1② 发 TTL = 2 的分组经 R1 时减为 1,R2 处减为 0TTL 减为 0,丢弃ICMP 时间超过源地址 = R2 → 第 2 跳是 R2③ 发 TTL = 3 的分组UDP,目的端口取一个不可能有进程的大端口ICMP 终点不可达(端口不可达)→ 已到达目的主机 B,结束
图 4-22 traceroute 的原理。源主机依次发出 TTL = 1、2、3……的分组,沿途第 k 个路由器在 TTL 减到 0 时回 ICMP 时间超过,源主机就从回报的源地址知道了第 k 跳是谁。Linux 的 traceroute 发 UDP 分组,到达目的主机时收到“端口不可达”;Windows 的 tracert 发 ICMP 回送请求,到达时收到“回送回答”。
易错
  • ICMP 报文封装在 IP 里,但 ICMP 属于网络层,不是传输层(2012-33 问“直接为 ICMP 提供服务的协议”——IP)。
  • ping 用的是询问报文(回送请求 / 回答),traceroute 主要靠差错报告报文(时间超过)。
  • 差错报告报文是发给源主机的,不是发给上一跳路由器。
  • 拥塞丢弃 → 源点抑制;TTL 为 0 → 时间超过;不能交付 → 终点不可达。三种情况对号入座(2010-36)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2010-36 改
若路由器 R 收到的 IP 分组的 TTL 减 1 后为 0,则 R 丢弃该分组,并向源主机发送的 ICMP 报文类型是( )。
  • A. 时间超过
  • B. 路由重定向
  • C. 终点不可达
  • D. 源点抑制
展开解析

ATTL 减为 0 → 发送“时间超过”报文。traceroute 正是利用它。

  • A 对对:TTL 耗尽发“时间超过”。
  • B 错路由重定向是告诉主机下次改走更好的路由器,分组本身并没有被丢弃。
  • C 错终点不可达用于找不到路由、端口没有进程等无法交付的情况,不是 TTL 耗尽。
  • D 错源点抑制是因拥塞丢弃分组时发的,不是 TTL 减为 0 时发的。

变化点:由“拥塞丢弃”换成“TTL 为 0”。

变式计网由 2012-38 改
主机用 ARP 请求解析同一局域网中另一主机的 MAC 地址,封装 ARP 请求的以太网帧的目的 MAC 地址是( )。
  • A. 目的主机的 MAC 地址
  • B. FF-FF-FF-FF-FF-FF
  • C. 默认网关的 MAC 地址
  • D. 00-00-00-00-00-00
展开解析

BARP 请求以广播发送;ARP 响应才单播回来。

  • A 错发 ARP 请求时还不知道目的主机的 MAC,正是要问它,所以只能广播。
  • B 对对:ARP 请求广播,响应单播。
  • C 错目的主机就在同一局域网,不经过网关;而且请求本来就是广播,不填任何具体的 MAC。
  • D 错全 0 不是广播地址;ARP 报文里的目标硬件地址可以填 0,但封装它的以太网帧目的地址要填全 F。

变化点:从“ARP 的功能”换成“ARP 帧怎么发”。

变式计网由 2018-37 改
在 2018-37 的网络中,路由器 R 把 H1 发给 H2 的 IP 分组转发给 H2 时,封装该分组的以太网帧的目的 MAC 地址是( )。
  • A. 00-1a-2b-3c-4d-51
  • B. 00-a1-b2-c3-d4-61
  • C. 00-a1-b2-c3-d4-62
  • D. 00-1a-2b-3c-4d-52
展开解析

C第二段 R → H2:源 MAC 为 R 右接口(…d4-61),目的 MAC 为 H2(00-a1-b2-c3-d4-62)。

  • A 错…4d-51 是 R 左接口(H1 一侧)的 MAC,是第一段帧的目的地址,不是第二段的。
  • B 错…d4-61 是 R 右接口的 MAC,是第二段帧的源地址,不是目的地址。
  • C 对对:第二段帧的目的 MAC 是 H2。
  • D 错…4d-52 是 H1 的 MAC,只出现在第一段帧里,经 R 转发后已被换掉。

变化点:问的是第二段帧的目的地址。

变式计网由 2025-36 改
DHCP 客户和 DHCP 服务器使用的传输层协议和端口分别是( )。
  • A. TCP,客户 68、服务器 67
  • B. UDP,客户 67、服务器 68
  • C. TCP,客户 67、服务器 68
  • D. UDP,客户 68、服务器 67
展开解析

DDHCP 基于 UDP,服务器端口 67,客户端口 68。

  • A 错DHCP 不用 TCP:客户还没有 IP 地址,只能广播,TCP 不支持广播。端口号倒是对的。
  • B 错传输层对了,但端口写反了:服务器是 67、客户是 68。
  • C 错两处都错:DHCP 用 UDP,而且服务器 67、客户 68。
  • D 对对:UDP,客户 68、服务器 67。

变化点:由报文地址延伸到 DHCP 的传输层端口。

变式计网考纲补充(尚无真题)
主机发送“免费 ARP”(询问的正是自己的 IP 地址)的主要目的是( )。
  • A. 查询默认网关的 MAC 地址
  • B. 根据 MAC 地址查询自己的 IP 地址
  • C. 向 DHCP 服务器申请 IP 地址
  • D. 检测自己的 IP 地址是否已被其他主机使用
展开解析

D正常情况下没有人会回答“谁是我自己的 IP”;若有人回答,说明地址冲突。免费 ARP 还可以用来通告自己的新 MAC,让别人更新缓存。B 是早已淘汰的 RARP 的功能。

  • A 错查询默认网关的 MAC 时问的是网关的 IP,不是自己的 IP。
  • B 错由 MAC 地址查自己的 IP 是早已淘汰的 RARP 的功能;免费 ARP 问的是“谁在用我这个 IP”。
  • C 错申请 IP 地址要用 DHCP 的 DISCOVER / REQUEST,免费 ARP 并不向谁申请地址。
  • D 对对:有人回答就说明地址冲突。

考点:4.6 节“免费 ARP”。

变式计网考纲补充(尚无真题)
某 DHCP 客户的租期为 8 小时。在获得租约 4 小时后,它向原 DHCP 服务器发送 DHCP REQUEST 请求续约。封装该报文的 IP 分组的源地址和目的地址分别是( )。
  • A. 0.0.0.0,255.255.255.255
  • B. 0.0.0.0,DHCP 服务器的地址
  • C. 客户已租用的地址,DHCP 服务器的地址
  • D. 客户已租用的地址,255.255.255.255
展开解析

C4 小时正是租期的 0.5 倍(T1)。此时客户已经有合法地址,也知道是哪台服务器分配的,所以用已租地址作源地址、单播给原服务器。到 0.875 倍(T2)还没续上才改为广播(D)。A 是 DISCOVER / 首次 REQUEST 的地址。

  • A 错0.0.0.0 → 255.255.255.255 是首次获取地址时 DISCOVER、REQUEST 用的地址;续约时客户已有合法地址。
  • B 错源地址用 0.0.0.0 错了:续约时客户已经在用租到的地址,可以用它作源地址。
  • C 对对:T1 时用已租地址单播给原服务器。
  • D 错广播续约是到 T2(租期的 0.875 倍,7 小时)还没续上时的做法;4 小时(T1)时单播给原服务器。

考点:4.6 节“DHCP 中继代理与租期续约”。

变式计网考纲补充(尚无真题)
下列情况中,仍应发送 ICMP 差错报告报文的是( )。
  • A. 出错的分组本身是一个 ICMP 差错报告报文
  • B. 一个未分片的、承载 TCP 报文段的单播 IP 分组在路由器处 TTL 减为 0
  • C. 出错的是分片数据报的第 3 个分片
  • D. 出错数据报的目的地址是多播地址
展开解析

BB 是最普通的情况,路由器要向源主机发“时间超过”。A、C、D 正是“不发送 ICMP 差错报告”的四种情况中的三种(另一种是 127.0.0.0、0.0.0.0 等特殊地址)。

  • A 错ICMP 差错报告报文本身出错时不再发 ICMP 差错报告,以免报错连锁反应。
  • B 对对:普通单播分组 TTL 耗尽,要发“时间超过”。
  • C 错分片数据报只对第一个分片发 ICMP 差错报告,后续分片出错不发。
  • D 错目的地址是多播地址的数据报出错时不发 ICMP 差错报告。

考点:4.6 节“不发送 ICMP 差错报告的 4 种情况”。

变式计网考纲补充(尚无真题)
traceroute 程序之所以能得知路径上各个路由器的地址,主要利用的 ICMP 报文是( )。
  • A. 时间超过
  • B. 源点抑制
  • C. 改变路由(重定向)
  • D. 参数问题
展开解析

A源主机依次发出 TTL = 1、2、3……的分组,第 k 个路由器把 TTL 减为 0 时丢弃分组,并回“时间超过”报文,源主机从报文的源地址得知第 k 跳是谁。

  • A 对对:TTL 逐个加 1,各跳回“时间超过”。
  • B 错源点抑制是路由器因拥塞丢弃分组时发的,traceroute 不靠它。
  • C 错改变路由(重定向)告诉主机换一个更好的下一跳,不会让路径上的路由器逐个回报自己。
  • D 错参数问题是首部字段值有错时发的,traceroute 发出的分组首部并没有错。

考点:4.6 节“ping 与 traceroute”。

4.7IPv6

★ 考过选择题

问题:IPv4 只有 232 ≈ 43 亿个地址,2011 年 IANA 就把最后的地址块分完了。NAT 能缓一缓,但它破坏了“每台主机都有全球唯一地址、可以直接互相访问”的设计,也让很多应用变复杂。根本办法是把地址变长——这就是 IPv6。

比喻:电话号码升位

城市电话从 7 位升到 8 位,号码一下多了 10 倍。IPv6 把地址从 32 位升到 128 位,不是多了 4 倍,而是 296 倍——地球上每粒沙子都能分到很多个地址。哪里不像:电话升位只改号码,IPv6 同时把“面单格式”(首部)也重新设计了,所以 IPv4 和 IPv6 的路由器不能直接互通,需要过渡技术。

IPv6 的主要变化:

  • 地址从 32 位扩大到 128 位,地址空间是 IPv4 的 2128 ÷ 232 = 296 倍(不是 96 倍,2023-40)。
  • 基本首部固定 40 字节,去掉了可选字段(放到扩展首部里,属于有效载荷),也去掉了首部检验和(链路层和传输层已经检验),路由器处理更快。
  • 分片只在源主机进行,路由器不分片;分组太大就丢弃并回 ICMPv6“分组太大”报文。
  • 地址类型:单播、多播、任播。没有广播地址,广播用多播实现。
  • 支持即插即用(无状态地址自动配置),不再必须用 DHCP;地址解析用邻居发现协议(ICMPv6)代替 ARP。

IPv6 地址的写法:冒号十六进制与零压缩

128 位写成二进制要 128 个 0/1,点分十进制也要写 16 段——都太长。IPv6 用冒号十六进制记法:128 位分成 8 组,每组 16 位写成 4 位十六进制,用冒号隔开。为了更短,再允许两种省略:

  1. 每组的前导 0 可以省略:0DB8 写成 DB8,0000 写成 0。但组内后面的 0 不能省(DB80 不能写成 DB8)。
  2. 零压缩:连续若干组全 0 可以用“::”代替。一个地址中 :: 只能出现一次——否则无法确定每个 :: 代表几组 0。
例零压缩:跟我做
① 压缩 2001:0DB8:0000:0000:0008:0800:200C:417A;② 压缩 FE80:0000:0000:0000:0000:0000:0000:0001;③ 展开 8::D0:123:CDEF:89A;④ 判断 2001::25DE::CADE 和 2001:DB80::1 的写法。
展开解析
  1. ① 先去前导 0:2001:DB8:0:0:8:800:200C:417A;再把连续的两组 0 换成 :::2001:DB8::8:800:200C:417A。注意 0800 只能写 800,不能写 8。
  2. ② 中间 6 组全 0 一次压掉:FE80::1。
  3. ③ 数一数写出来的组:8、D0、123、CDEF、89A 共 5 组,所以 :: 代表 8 − 5 = 3 组 0;每组补足 4 位:0008:0000:0000:0000:00D0:0123:CDEF:089A。
  4. ④ 2001::25DE::CADE 非法:两个 :: 一共代表 5 组 0,但分不清是 1 + 4、2 + 3、3 + 2 还是 4 + 1。2001:DB80::1 合法,但它展开是 2001:DB80:0:…:1,与 2001:DB8::1(2001:0DB8:…)是两个不同的地址——后缀 0 不能省。

(四个结果都用 Python 的 ipaddress 模块验算过。)

  • 前缀沿用 CIDR 斜线记法:2001:DB8::/32 表示前 32 位是网络前缀。
  • 最后 32 位嵌入 IPv4 地址时可写成点分十进制,如 ::FFFF:192.168.0.1(IPv4 映射地址)。

三类地址:单播、多播、任播

单播:一对一多播:一对一组任播:一对组中最近的一个源ABC目的 = B 的地址源ABC非成员组 G = {A, C}源ABCB 离得最近A、B、C 共用一个任播地址IPv6 没有广播;需要“发给本链路所有结点”时,用多播地址 FF02::1
图 4-23 单播、多播、任播。任播的典型用途:同一个服务(如 DNS 根服务器)在全球放多份,用同一个地址,分组自动交给路由上最近的那一份。
几种特殊的 IPv6 地址写法含义
未指明地址::/128(全 0)相当于 IPv4 的 0.0.0.0:主机还没有地址时作源地址,不能作目的地址
环回地址::1/128相当于 IPv4 的 127.0.0.1
多播地址FF00::/8(以 FF 开头)一对多;IPv6 用多播取代了广播
本地链路单播地址FE80::/10只在本链路上有效,路由器不转发,用于即插即用的自动配置
全球单播地址其余大部分(如 2001:… 开头)相当于 IPv4 的公网地址

IPv6 基本首部:40 字节、8 个字段

08162431412字节版本6通信量类≈ 区分服务流标号标记同一“流”的分组0有效载荷长度单位 1 B,不含基本首部下一个首部≈ 协议字段跳数限制≈ TTL4源地址(128 位)8121620目的地址(128 位)242832368 字节两个地址各 16 字节
图 4-24 IPv6 基本首部格式(固定 40 字节 = 8 + 16 + 16)。和 IPv4 首部比,少了首部长度、标识 / 标志 / 片偏移、首部检验和、可选字段;多了流标号。
字段位数是什么对应 IPv4 的
版本4值为 6版本
通信量类8区分不同类别、优先级的分组区分服务
流标号20“流”是从某源点到某终点、要求同样服务质量(如实时音视频)的一系列分组;同一流的分组流标号相同,路由器可以一视同仁地快速处理(IPv4 没有)
有效载荷长度16基本首部后面的字节数(扩展首部 + 数据),不含 40 B 基本首部,最大 65 535 B总长度(但 IPv4 的总长度含首部)
下一个首部8没有扩展首部时,指出数据部分是哪个上层协议(6 = TCP,17 = UDP);有扩展首部时,指出第一个扩展首部的类型协议
跳数限制8每经过一个路由器减 1,减到 0 就丢弃(2023-40)TTL
源 / 目的地址128 + 128发送方和接收方的 IPv6 地址源 / 目的地址

扩展首部:把“不常用的东西”挪出去

IPv4 的选项放在首部里,每个路由器都得检查一遍,很慢。IPv6 把它们做成一个个扩展首部,用“下一个首部”字段串成一条链,放在基本首部和上层数据之间;路由器只看基本首部(逐跳选项扩展首部除外),扩展首部大多只由目的主机处理。常见的六种:逐跳选项、路由选择、分片、鉴别、封装安全有效载荷、目的站选项。

IPv6 基本首部(40 B)下一个首部 = 43路由选择扩展首部下一个首部 = 44分片扩展首部下一个首部 = 6TCP 报文段(上层数据)有效载荷(有效载荷长度字段算的就是这一段)
图 4-25 扩展首部链。每个首部的“下一个首部”字段说明后面跟着的是什么,最后一个指向上层协议(6 = TCP)。没有扩展首部时,基本首部的“下一个首部”直接写 6 或 17。

只在源主机分片:路径 MTU 发现

IPv4 的路由器要分片,耗费处理能力,还可能“分片再分片”。IPv6 规定中间路由器一律不分片:分组比下一段链路的 MTU 大,就丢弃,并向源主机发 ICMPv6“分组太大”报文(报文里写明 MTU)。源主机据此把数据切小——必要时自己分片(用分片扩展首部)。IPv6 要求每条链路的 MTU 至少 1280 B,所以源主机发 ≤ 1280 B 的分组总是安全的。

源主机 A路由器 R下一段链路 MTU = 1280 B目的主机 B① 发 1500 B 的 IPv6 分组放不下,IPv6 路由器不分片 → 丢弃② ICMPv6“分组太大”(MTU = 1280)源主机按 1280 B 切片(分片扩展首部)③ 各分片 ≤ 1280 B路由器原样转发目的主机重组
图 4-26 IPv6 的分片只在源主机进行。与 IPv4 的“DF = 1 时回 ICMP 终点不可达”同一个思路,只是 IPv6 把它变成了唯一的做法。

IPv4 与 IPv6 对比

项目IPv4IPv6
地址长度32 位128 位(地址空间是 IPv4 的 296 倍)
地址写法点分十进制冒号十六进制,可零压缩(:: 只用一次)
首部长度20~60 B,可变(有首部长度字段)基本首部固定 40 B(没有首部长度字段)
选项在首部里移到扩展首部(属于有效载荷)
首部检验和有,每跳重算取消
分片源主机和路由器都可分片只在源主机分片
生存时间TTL跳数限制(Hop Limit)
上层协议协议字段下一个首部字段
广播有没有(用多播代替)
地址配置手工或 DHCP即插即用(无状态自动配置)或 DHCPv6
地址解析ARP邻居发现 NDP(基于 ICMPv6)

从 IPv4 向 IPv6 过渡:双协议栈与隧道

全世界的路由器不可能在同一天全部换成 IPv6,只能逐步过渡,期间两种网络要能互通。

双协议栈应用层 / TCP、UDPIPv4IPv6链路层和 IPv4 结点说话用 IPv4,和 IPv6 结点说话用 IPv6(看 DNS 查到的是 A 还是 AAAA 记录)隧道技术IPv6网络 AR1IPv4 网络R2IPv6网络 B双栈:封装双栈:拆封IPv6 数据报IPv4 首部IPv6 数据报IPv6 数据报隧道中:协议字段 = 41(表示数据部分是 IPv6)
图 4-27 两种过渡技术。双协议栈:结点同时装两套协议栈;隧道:IPv6 数据报整个装进 IPv4 数据报的数据部分,穿过 IPv4 网络(就像把一辆小车开进货运火车车厢,过了河再开出来)。
拓展:ICMPv6 与邻居发现 NDP

拓展IPv6 也有自己的 ICMP(ICMPv6,下一个首部 = 58),并把 IPv4 里分散的几个功能都并进来:① 邻居发现代替 ARP——主机用多播发“邻居请求”问“谁是这个 IPv6 地址”,目标主机回“邻居通告”;② 路由器发现——主机发“路由器请求”,路由器回“路由器通告”,告诉它本链路的网络前缀;③ 主机拿到前缀后,加上由自己 MAC 地址算出的 64 位接口标识,自己生成全球地址(无状态地址自动配置),这就是“即插即用”;配好后再发一次邻居请求查重(相当于免费 ARP)。④ IGMP 的功能也由 ICMPv6 的多播侦听发现(MLD)承担。

真题怎么考

2023-40 一题考了四个点:地址空间倍数(296 倍,不是 96 倍)、基本首部是否可变(IPv4 可变、IPv6 固定 40 B)、过渡技术(双栈 + 隧道)、跳数限制 ≡ TTL。复习时就用上面的对比表逐行过。可能的变化:IPv6 有没有首部检验和(没有)、路由器能否分片(不能)、有没有广播(没有)、:: 能用几次(一次)、哪种地址交给“最近的一个”(任播)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2023-40 改
下列关于 IPv6 的叙述中,错误的是( )。
  • A. 支持广播地址
  • B. 基本首部固定为 40 字节
  • C. 首部中没有检验和字段
  • D. 路由器不对分组进行分片
展开解析

AIPv6 没有广播地址,用多播代替;其余三项都正确。

  • A 选错误:IPv6 没有广播地址,用多播代替。
  • B 不选正确:IPv6 基本首部固定 40 字节。
  • C 不选正确:IPv6 基本首部取消了首部检验和。
  • D 不选正确:IPv6 只由源主机分片,路由器不分片。

变化点:从 IPv4/IPv6 比较换成 IPv6 自身的特点。

变式计网由 2023-40 改
IPv6 地址 2001:0DB8:0000:0000:0008:0800:200C:417A 的零压缩写法是( )。
  • A. 2001:DB8::8:800:200C:417A
  • B. 2001:DB8:0:0:8:8:200C:417A
  • C. 2001::DB8::8:800:200C:417A
  • D. 2001:DB8::8:0800::417A
展开解析

A每组前导 0 可省略;连续全 0 的组用一次 :: 代替。B 把 0800 写成了 8(丢了后面的 0);C、D 用了两次 ::。

  • A 对对:去前导 0,连续全 0 组用一次 :: 代替。
  • B 错0:0 不压缩也合法,但第 6 组 0800 只能去前导 0 写成 800,写成 8 就丢了后面两个 0,成了另一个地址。
  • C 错用了两次 ::,接收方无法知道每个 :: 各代表几组 0,地址有歧义。
  • D 错也用了两次 ::,而且 0800 没去前导 0、第 7 组 200C 被第二个 :: 吞掉了。

变化点:考冒号十六进制的写法规则。

变式计网考纲补充(尚无真题)
下列 IPv6 地址中,作用相当于 IPv4 环回地址 127.0.0.1 的是( )。
  • A. ::
  • B. ::1
  • C. FE80::1
  • D. FF02::1
展开解析

B:: 是未指明地址(相当于 0.0.0.0);FE80::/10 是本地链路单播地址;以 FF 开头的是多播地址;::1 是环回地址。

  • A 错:: 是未指明地址(全 0),相当于 IPv4 的 0.0.0.0,不是环回地址。
  • B 对对:::1 是环回地址。
  • C 错FE80::/10 是本地链路单播地址,FE80::1 是链路上的某个接口,不是环回地址。
  • D 错以 FF 开头的是多播地址,FF02::1 是本链路上所有结点的多播地址。

考点:4.7 节“几种特殊的 IPv6 地址”。

变式计网考纲补充(尚无真题)
下列字段中,IPv6 基本首部中没有的是( )。
  • A. 跳数限制
  • B. 流标号
  • C. 下一个首部
  • D. 首部检验和
展开解析

DIPv6 取消了首部检验和(链路层和传输层都有检验),也没有首部长度、标识 / 标志 / 片偏移字段。跳数限制相当于 TTL,下一个首部相当于协议字段,流标号是 IPv6 新增的。

  • A 错跳数限制是 IPv6 基本首部的字段,作用相当于 IPv4 的 TTL。
  • B 错流标号是 IPv6 基本首部新增的字段,用来标识同一个“流”的分组。
  • C 错下一个首部是 IPv6 基本首部的字段,相当于 IPv4 的协议字段(或指向扩展首部)。
  • D 对对:IPv6 取消了首部检验和。

考点:4.7 节“IPv6 基本首部”。

变式计网考纲补充(尚无真题)
在 IPv6 网络中,若路由器收到的分组长度超过了下一段链路的 MTU,则路由器( )。
  • A. 把它分片后再转发
  • B. 丢弃该分组,并向源主机发送 ICMPv6“分组太大”报文
  • C. 把它封装进 IPv4 分组后转发
  • D. 截去超长的部分后转发
展开解析

BIPv6 规定只有源主机能分片,中间路由器一律不分片;放不下就丢弃并告诉源主机 MTU 是多少,由源主机调整。

  • A 错IPv6 的中间路由器一律不分片,只有源主机能分片。
  • B 对对:丢弃并发 ICMPv6“分组太大”。
  • C 错封装进 IPv4 是过渡时期隧道技术的做法,用来穿越 IPv4 网络,解决不了分组过长。
  • D 错路由器不会截断分组,截掉一部分数据就破坏了分组。

考点:4.7 节“只在源主机分片”。

变式计网考纲补充(尚无真题)
在 IPv6 中,一个地址标识一组计算机,以它为目的地址的分组只交付给其中按路由距离最近的一台,这种地址是( )。
  • A. 单播地址
  • B. 多播地址
  • C. 任播地址
  • D. 广播地址
展开解析

C任播:一对“组中最近的一个”。多播是交付给组内所有成员;IPv6 没有广播地址。

  • A 错单播地址标识一个接口,分组只交给这一个确定的接口,不是“一组中最近的一台”。
  • B 错多播是交付给组内所有成员,而不是只交给最近的一台。
  • C 对对:任播交付给组中最近的一台。
  • D 错IPv6 没有广播地址;广播是交付给网络上的所有主机。

考点:4.7 节“三类地址”。

4.8路由算法与路由协议:RIP、OSPF、BGP

★★★ 高频选择题综合题

问题:4.4 节讲了“有了路由表怎样转发”,可路由表本身从哪里来?小网络可以由管理员一条条手工写;因特网有几十万个网络、几百万台路由器,链路还会随时断开、恢复,只能让路由器自己商量着算出来。路由器之间“怎么商量”的规则就是路由协议,背后的计算方法就是路由算法。

静态路由与动态路由

静态路由(非自适应)动态路由(自适应)
谁来写管理员手工配置路由器运行路由协议,相互交换信息后自动计算
网络变化时不会自动调整,要人去改自动重新计算,适应拓扑和流量变化
开销不占带宽、不耗 CPU,简单可靠交换路由信息占带宽,计算耗 CPU,收敛期间可能出现短暂环路
适用小型、拓扑稳定的网络;只有一个出口的末端网络(配一条默认路由即可)中大型、复杂、经常变化的网络
例家用路由器指向运营商的默认路由RIP、OSPF、BGP

以 4.4 节图中的 R1 为例,它只有一个出口 S0,完全可以用静态路由。在路由器上配置(以常见的命令格式为例,拓展,格式不必记):

# ip route 目的网络 子网掩码 下一跳
ip route 172.16.0.0 255.255.0.0 10.0.0.2      # 网络路由
ip route 202.118.3.2 255.255.255.255 10.0.0.2 # 特定主机路由
ip route 0.0.0.0 0.0.0.0 10.0.0.2             # 默认路由:其余一律交给 R2

直连的 192.168.1.0/24、192.168.2.0/24 不用配,给接口设置了地址和掩码,路由器就自动知道它们。动态路由按算法又分两大类:

距离向量算法(典型 RIP)链路状态算法(典型 OSPF)
和谁交换只和相邻路由器向本区域所有路由器洪泛
交换什么自己的整个路由表(“我到各网络的距离”)只有与自己相邻的链路状态(“我和谁相连、代价多少”)
何时交换周期性(RIP 每 30 秒)链路状态变化时才发(另有长周期刷新)
每台路由器知道什么只知道“经哪个邻居、多远”,不知道全网拓扑知道全网拓扑(链路状态数据库)
怎么算Bellman-Ford:经邻居 X 的距离 = 到 X 的距离 + X 说的距离,取最小Dijkstra:以自己为根算最短路径树
收敛慢;坏消息传得慢,可能出现环路快;没有“坏消息传得慢”的问题
比喻:问路 vs 看地图

距离向量像“问路”:你只问身边的人“到火车站多远”,他们说的也是听别人说的,消息一传十十传百,有人记错了,错误会传很久。链路状态像“每人画一段地图贴到公告栏”:每个人只画自己门口那段路,但所有人都把公告栏上的地图抄一份,拼成完整地图后自己找最短路。哪里不像:现实中拼地图要花很多力气;OSPF 正是因为每台路由器要存全网拓扑、做 Dijkstra,规模大了就要划分区域。

层次路由:自治系统、IGP 与 EGP

问题:如果因特网上的每台路由器都要知道到每一个网络的路由,会怎样?① 路由表大得存不下、查不动;② 所有路由器都和所有路由器交换信息,带宽全被路由信息占满;③ 各单位希望自己决定内部用什么协议、怎么走,也不愿意让外界看到自己的内部结构。办法是分层。

比喻:快递的分级中转

北京的快递分拣中心不需要知道广州每条街怎么走,只要知道“广东的件 → 发广州转运中心”;到了广州,再由广州的中心按区、街道细分。每一级只记自己这一级的事。哪里不像:快递的分级是全国统一规划的;因特网的每个“地区”(自治系统)是独立管理的,内部用什么规则别人管不着。

因特网采用分层次的路由选择协议,把整个因特网划分为许多较小的自治系统 AS:一个 AS 是在单一技术管理机构下的许多网络、IP 地址和路由器,它们使用一种 AS 内部的路由选择协议和共同的度量,对外表现出单一的、一致的路由选择策略(每个 AS 有一个全球唯一的 AS 号)。于是路由选择分成两级:

  • AS 内部:用内部网关协议 IGP,目标是找最短 / 最便宜的路,如 RIP、OSPF。各 AS 可以自己选用哪种 IGP。
  • AS 之间:用外部网关协议 EGP,目前只有 BGP-4。各 AS 的度量标准不同(有的按跳数、有的按时延),无法比较“谁最短”,所以 BGP 只求可达且遵守各自的策略(如“不经过某国”“走便宜的运营商”)。
  • 大的 AS 内部还可以再分一层:OSPF 把一个 AS 划分成若干区域,洪泛只在区域内进行(2026-38)。
AS 1内部用 RIPAS 2内部用 OSPFAS 3内部用 OSPFBGPBGP发言人发言人发言人发言人AS 内:IGP 找最短路AS 内:IGP 找最短路AS 内:IGP 找最短路AS 之间:EGP(BGP-4)只求可达、遵守策略,交换的是“到某网络要经过哪些 AS”
图 4-28 层次路由的两级结构。橙色圆是普通路由器,紫色圆是 AS 的边界路由器(BGP 发言人)。AS 外部的路由器看 AS 内部是一个黑盒子,只需要知道“到某网络该交给哪个 AS”。
例分层能省多少表项:跟我算
某大型网络有 800 台路由器,每台路由器下面挂一个网络。① 不分层时,每台路由器的路由表要有多少项?② 分成 40 个区域、每区 20 台,区域内记到每台路由器(每个网络)、区域外只记到每个区域,各要多少项?③ 再分一层:8 组 × 10 区 × 10 台呢?
展开解析
  1. 不分层:要记全部 800 个网络(含自己直连的那个),800 项。
  2. 两级:本区域内 20 项(每台路由器的网络一项),其他 39 个区域各 1 项 → 20 + 39 = 59 项,少了 90% 以上。
  3. 三级:本区 10 项 + 本组其他 9 个区各 1 项 + 其他 7 个组各 1 项 = 10 + 9 + 7 = 26 项。

规律:分成 n 个区域、每区 k 台(n × k = N)时,表项 ≈ k + n − 1,k 和 n 都接近 √N 时最少(N = 800 时 32 × 25 得 56 项)。代价是:跨区域的分组只能先到对方区域的“入口”,再在区域内走最短路,整体路径不一定是全局最短——用一点“绕路”换来表项和通信量的大幅减少。

(数字已用程序验算。)

层次范围协议算法关心什么封装
区域内(可选)OSPF 的一个区域OSPF链路状态代价最小IP(89)
AS 内部一个自治系统RIP距离向量跳数最少UDP(520)
OSPF链路状态代价最小IP(89)
AS 之间整个因特网BGP-4路径向量可达、符合策略TCP(179)
易错
  • “IGP / EGP”是类别名:RIP、OSPF 属于 IGP;BGP 属于 EGP。不要把“EGP”只理解为某个具体协议(历史上确有一个协议也叫 EGP,已被 BGP 取代)。
  • “AS 内部必须用同一种 IGP”指一个 AS 选一种;不同的 AS 可以用不同的 IGP(图中 AS1 用 RIP、AS2 用 OSPF)。
  • 能把一个 AS 划分为多个区域的是 OSPF,RIP 和 BGP 都不能(2026-38)。

RIP:距离向量路由

  • 距离 = 跳数:直接连接的网络距离为 1,每经过一个路由器加 1。距离最大为 15,16 表示不可达,所以 RIP 只适用于小型网络。
  • 每隔 30 秒,路由器把自己的整个路由表发给相邻路由器(只和邻居交换)。一个 RIP 报文最多带 25 条路由,表大了就分几个报文发。
  • RIP 报文封装在 UDP 中(端口 520),所以 RIP 是应用层协议。报文只有两种:请求(刚启动时向邻居要路由表)和响应(周期性或应请求发出的路由表)。
  • 3 分钟(180 秒)收不到某邻居的更新,就把经它的路由距离置为 16。
  • RIP 选的是跳数最少的路,即使有一条跳数多一点但快得多的路,也不会选它。
距离向量更新算法(收到相邻路由器 X 的路由表后)
  1. 把 X 表中每一项的距离都加 1(假设到 X 的距离为 1),下一跳都改为 X。
  2. 对每一项目的网络 N:原表中没有 N → 加入;原表中有 N 且下一跳就是 X → 无条件用新值替换(哪怕变大,因为这是 X 的最新情况);原表中有 N 但下一跳不是 X → 新距离更小才替换,否则不变。

一般的距离向量算法(非 RIP,链路有权重)同理:经邻居 X 到 N 的距离 = 到 X 的链路距离 + X 通告的到 N 的距离,对每个 N 取所有邻居中的最小值(2021-37)。

例RIP 更新:跟我做一遍
路由器 R 原来的路由表和它收到的相邻路由器 X 发来的 RIP 报文如下,求 R 更新后的路由表。
R 原来的路由表X 发来的
目的网络距离下一跳目的网络距离
N13BN11
N24XN24
N32CN36
N55XN43
N516
展开解析

第 1 步:X 的每一项距离加 1、下一跳写 X:N1 2、N2 5、N3 7、N4 4、N5 16(16 + 1 仍记 16,不可达)。第 2 步逐项比较:

目的网络原来经 X依据更新后
N13,B2下一跳不同,2 < 3,更短 → 换2,X
N24,X5原下一跳就是 X → 无条件更新(变大也换)5,X
N32,C7下一跳不同,7 > 2 → 不变2,C
N4—4原来没有 → 加入4,X
N55,X16原下一跳就是 X,X 说不可达 → 改为不可达16,X

N2、N5 两行最容易错:只要原来就是经 X 走的,X 说什么就是什么——因为 R 的这条路本来就依赖 X,X 的情况变了,R 只能跟着变。

2021-37计网
某网络中的所有路由器均采用距离向量路由算法计算路由。若路由器 E 与邻居路由器 A、B、C 和 D 之间的直接链路距离分别是 8、10、12 和 6,且 E 收到邻居路由器的距离向量如下表所示,则路由器 E 更新后的到达目的网络 Net1~Net4 的距离分别是( )。
目的网络A 的距离向量B 的距离向量C 的距离向量D 的距离向量
Net11232022
Net212353028
Net324181636
Net43630824
  • A. 9,10,12,6
  • B. 9,10,28,20
  • C. 9,20,12,20
  • D. 9,20,28,20
展开解析

考点4.8 距离向量算法

D经邻居 X 到网络 N 的距离 = E 到 X 的链路距离 + X 通告的到 N 的距离;对每个网络取最小值。

经 A(+8)经 B(+10)经 C(+12)经 D(+6)最小
Net193332289
Net22045423420
Net33228284228
Net44440203020
  • A 错后三个数 10、12、6 正是 E 到 B、C、D 的链路距离,没有加上邻居到网络的距离。
  • B 错Net2 最小是经 A 的 8 + 12 = 20,不是 10。
  • C 错Net3 写成 12,只取了 E—C 的链路距离,没加 C 到 Net3 的 16。
  • D 对9,20,28,20。

列表:行 = 目的网络,列 = 邻居,格子 = 链路距离 + 通告距离,每行取最小。

坏消息传得慢(计数到无穷):设网络 N 直连在 R1 上,R2 经 R1 到 N(距离 2)。某时刻 R1 到 N 的链路断了,R1 把距离改为 16。可 R1 还没来得及把这个坏消息告诉 R2,就先收到了 R2 的例行通告“我到 N 的距离是 2”——R1 不知道 R2 的这条路正是经过自己的,于是以为“经 R2 能到,距离 3”。接下来两台路由器你来我往:

事件R1 到 NR2 到 N
N 断开,R1 置为 16162(经 R1)
R1 收到 R2 的“2”3(经 R2)2
R2 收到 R1 的“3”(原下一跳就是 R1,无条件更新)34
R1 收到 R2 的“4”(原下一跳就是 R2,无条件更新)54
……每次加 2………………
R2 收到 R1 的“15”1516
R1 收到 R2 的“16”1616

一共来回 15 次(每次间隔 30 秒,要好几分钟)才都变成 16,这段时间里发往 N 的分组在 R1、R2 之间兜圈子,直到 TTL 耗尽。所以 RIP 好消息传得快、坏消息传得慢(2016-37)。好消息(出现了更短的路)只要一轮通告就传过去了。

不处理水平分割毒性逆转N✕R1R2“N:2 跳”R1 误以为经 R2 可达 → 3其实 R2 的路就经过 R1N✕R1R2(对 R1 不提 N)从谁那学来的路由,不再告诉谁R1 保持 16,并把 16 告诉 R2N✕R1R2“N:16”把学来的路由以 16 回告对方明确说“经我不可达”
图 4-29 水平分割与毒性逆转。两者都能消除两台路由器之间的来回兜圈子;但三台以上路由器构成环路时仍可能失效——2016-37 里 R1、R2、R3 构成三角形,R2 从 R1 那里听到“距离 2”,而 R1 的这条路是从 R3 学来的,水平分割管不到。
2016-37计网
在下图(2016 年题 33~41 图)所示的网络中,假设 R1、R2、R3 采用 RIP 协议交换路由信息,且均已收敛。若 R3 检测到网络 201.1.2.0/25 不可达,并向 R2 通告一次新的距离向量,则 R2 更新后,其到达该网络的距离是( )。 InternetWeb 服务器 S 130.18.10.1R1201.1.3.9L0(NAT)R2R3L1201.1.3.1201.1.2.0/25201.1.1.0/24E0DNS 服务器201.1.1.1E1 192.168.3.254SwitchHubH1192.168.3.2H2192.168.3.3H3192.168.3.251H4192.168.3.252R1~R3 为路由器Switch 为 100Base-T 交换机Hub 为 100Base-T 集线器H1~H4 的默认域名服务器均为 201.1.1.1
  • A. 2
  • B. 3
  • C. 16
  • D. 17
展开解析

考点4.8 RIP 坏消息传得慢

B先看收敛时的情况:201.1.2.0/25 直接连在 R3 上,R3 的距离为 1;R2、R1 都与 R3 直连,距离都是 2(下一跳 R3)。

  1. R3 发现网络不可达,把距离改为 16,通告给 R2。R2 经 R3 的路由变为不可达。
  2. 但 R1 还没收到坏消息,仍在通告“我到该网络的距离是 2”。
  3. R2 于是改走 R1:2 + 1 = 3。这就是“坏消息传得慢”:R2 以为 R1 有路,其实 R1 的路也经过 R3。
  • A 错2 是原来经 R3 的距离,R3 已经通告 16,不能再用。
  • B 对3(经 R1)。
  • C 错16:只考虑了 R3 的通告,忘了 R1 仍在通告距离 2。
  • D 错RIP 的距离最大取 16,没有 17。

RIP 好消息传得快,坏消息传得慢:一处断开,其他路由器会互相“以为对方能到”,距离一点点涨到 16。

真题怎么考
  • 2010-35:R1 收到 R2 的 <net1, 16> → R1 不能经 R2 到达 net1(16 就是不可达,不是“17 跳可达”)。
  • 2021-37:带权的距离向量,逐个邻居算“链路距离 + 邻居通告的距离”取最小。
  • 2016-37:坏消息传得慢——R2 改走仍在通告旧距离的 R1,得 3。
  • 2017-37:RIP 封装在 UDP,OSPF 直接用 IP,BGP 用 TCP(口诀“RIP 优(U),OSPF 爱(I),BGP 踢(T)”)。

链路状态路由:用 Dijkstra 算最短路径

链路状态算法分两步:先让每台路由器都拿到全网一样的拓扑(靠洪泛,见下面的 OSPF),再各自以自己为根跑 Dijkstra 算法(数据结构里求单源最短路径的那个算法)。Dijkstra 的思路:每一轮从“还没确定”的结点里挑一个当前距离最小的,把它“确定”下来,再用它去更新邻居的距离。

7412586103ABCDE
图 4-30 一个 5 台路由器的网络(数字是链路代价)。求 A 到其余各路由器的最短路径和 A 的路由表。
例Dijkstra:跟我算一遍
对上图,以 A 为源点运行 Dijkstra 算法,写出每一步的结果,并给出 A 的路由表(目的、下一跳、代价)。
展开解析

表中“3,C”表示“当前最短距离 3,前一个结点是 C”;“—”表示已确定。每一步把最小的那个(加粗)确定下来。

步骤已确定的集合BCDE
初始{A}4,A1,A7,A∞
1:确定 C{A, C}3,C(1 + 2 < 4)—7,A(1 + 8 = 9 不更小)11,C(1 + 10)
2:确定 B{A, C, B}——7,A(3 + 5 = 8 不更小)9,B(3 + 6 < 11)
3:确定 D{A, C, B, D}———9,B(7 + 3 = 10 不更小)
4:确定 E全部————

由“前一个结点”倒推出路径:B ← C ← A;E ← B ← C ← A;D ← A。路由表只关心第一跳:

目的最短路径代价下一跳
BA → C → B3C
CA → C1C
DA → D7D
EA → C → B → E9C

注意 A 到 B 有直连链路(代价 4),但最短路是绕 C 走(3)——链路状态算的是代价最小,不是跳数最少。如果 A—C 链路断了,A 只要把这条链路从拓扑里删掉重跑一遍即可(2026-37 就是这种题)。(结果已用程序验算。)

OSPF:链路状态路由协议

  • 路由器用洪泛法向本 AS(本区域)内所有路由器发送信息;发送的是本路由器与相邻路由器的链路状态(与哪些路由器相邻、链路的度量——费用、距离、时延、带宽等);只有链路状态发生变化时才发送(另外每 30 分钟刷新一次)。
  • 一条“我和哪些邻居相连、代价多少”的信息叫一个链路状态通告 LSA。所有路由器收到的 LSA 汇总成全网一致的链路状态数据库 LSDB(就是全网拓扑图),各自用 Dijkstra 算法算出以自己为根的最短路径树,构造路由表。更新过程收敛快,没有“坏消息传得慢”的问题。
  • OSPF 报文直接用 IP 封装(协议字段 89),不用 UDP 或 TCP(2017-37)。所以 OSPF 自己要负责可靠(每个更新都要确认)。
  • 支持把一个 AS 划分为若干区域:洪泛只在区域内进行,减少通信量;区域之间经主干区域(区域 0)连接(2026-38)。
  • 其他特点:可以对不同链路设置不同代价;到同一目的有多条代价相同的路径时,可以把通信量分摊到这几条路径上(负载均衡);所有交换都要鉴别,防止伪造;支持可变长度子网划分和 CIDR。
自治系统(运行 OSPF)区域 0(主干区域)区域 1区域 2其他 ASBGPR1R2R3R4R5R6R7R8图例R3、R5:区域边界 路由器(ABR)R4:主干路由器R8:AS 边界路由器 (ASBR)R1、R2、R6、R7: 区域内部路由器
图 4-31 OSPF 的区域划分。区域 1 内的链路状态只在区域 1 里洪泛;ABR(R3、R5)把本区域的信息汇总后传到主干区域,再由主干区域转给其他区域。区域之间的分组都要经过主干区域。ASBR(R8)负责与其他 AS 交换路由(BGP)。
OSPF 分组作用
问候(Hello)发现和维持邻居关系,每 10 秒发一次;40 秒收不到某邻居的 Hello,就认为它不可达,立即修改链路状态
数据库描述(DD)向邻居给出自己 LSDB 中所有 LSA 的摘要(只是“目录”)
链路状态请求(LSR)看了对方的摘要,发现自己缺少或过时的,请求对方发完整内容
链路状态更新(LSU)携带完整的 LSA;洪泛用的就是它
链路状态确认(LSAck)对 LSU 的确认(OSPF 直接用 IP,可靠性要自己保证)
路由器 R1路由器 R2Hello发现邻居、确认双向可达(每 10 s 一次)HelloDD(数据库描述)“我的 LSDB 里有这些 LSA”(只给摘要)DDLSR(链路状态请求)“这几条我没有 / 比我的新,请发来”LSU(链路状态更新)带上完整的 LSALSAck(确认)两边的 LSDB 一致了,各自用 Dijkstra 算路由以后链路一有变化,就洪泛 LSU(每个都要 LSAck)
图 4-32 两台 OSPF 路由器建立邻接、同步数据库的过程。先用 DD 交换“目录”、再用 LSR / LSU 只补缺的那几条,比直接把整个数据库发过去省得多。
2026-37计网
某网络在 t0 时刻的网络拓扑与 R1 的路由表如下图所示。R1~R4 为路由器,基于链路状态路由算法进行路由计算。S0~S4 为路由器 R1 的接口,链路上的数值为链路开销。若在 t1(t1 > t0)时刻,R1 检测到 R1 与 R2 之间的链路断开,则 R1 重新计算路由并进行充分路由聚合后,表中路由条目的数量为( )。 199.10.20.0/27R25R3199.10.20.32/27t12 → ∞1624Internet0R133R4199.10.20.64/274服务器199.10.20.128/25 (原卷图右侧还有 R1 在 t0 时刻的路由表,现有回忆版均未给出;讲解中按拓扑推出。)
  • A. 3
  • B. 4
  • C. 5
  • D. 6
展开解析

考点4.8 链路状态路由(Dijkstra)4.4 路由聚合

C链路状态算法:R1 掌握全网拓扑,用 Dijkstra 重新算到各路由器的最短路径,再看每个网络从哪个接口出去,最后把接口相同、能合并的网络聚合。

  1. t0(按拓扑推出):到 R2 经 S1 开销 2;到 R3 经 S2 开销 6(经 R2 要 2 + 5 = 7);到 R4 经 S3 开销 3。路由表:0.0.0.0/0 → S0(Internet),199.10.20.0/27 → S1,199.10.20.32/27 → S2,199.10.20.64/27 → S3,199.10.20.128/25 → S3,服务器所在的直连网络 → S4,共 6 条。
  2. t1 R1—R2 断开:到 R2 经 R3 为 6 + 5 = 11,经 R4 为 3 + 4 + 5 = 12,选 S2。所以 199.10.20.0/27 改从 S2 出。
  3. 199.10.20.0/27 和 199.10.20.32/27 现在都从 S2 出,前 26 位相同,聚合为 199.10.20.0/26 → S2。
  4. 199.10.20.64/27(64~95)和 199.10.20.128/25(128~255)虽然都走 S3,但合不成一个对齐的地址块,不能聚合。
  5. 最终:0.0.0.0/0 → S0,199.10.20.0/26 → S2,199.10.20.64/27 → S3,199.10.20.128/25 → S3,服务器网络 → S4,共 5 条。
  • A 错3:把所有 199.10.20.x 都合成一条,但 .0/26 走 S2、另外两个走 S3,接口不同不能合并。
  • B 错4:要么漏了服务器所在网络(S4 直连)那一条,要么把 .64/27 和 .128/25 硬合在一起——它们之间隔着 .96/27,合不成一个块。
  • C 对5 条。
  • D 错6:这是 t0 时刻的条目数,没有做链路断开后的聚合。

链路变化 → 重新求最短路 → 看每个网络的出接口 → 同接口且能凑成对齐地址块的才聚合。

BGP:路径向量路由

  • BGP 用于不同 AS 之间。因特网规模太大、各 AS 的度量标准不同、还要考虑政治和经济策略,所以 BGP 只力求找到一条能到达且比较好的路由(不兜圈子),不追求最佳。
  • 每个 AS 选至少一个路由器作为 BGP 发言人(一般就是 AS 的边界路由器)。两个发言人之间先建立 TCP 连接(端口 179),再交换路由信息,所以 BGP 是应用层协议;可靠性由 TCP 保证。
  • 交换的是路径向量:到某个网络要经过的一串 AS。首次交换整个路由表,以后只交换变化的部分。
  • eBGP 与 iBGP:不同 AS 的发言人之间的 BGP 会话叫 eBGP(外部 BGP);同一个 AS 内部的路由器之间也要运行 BGP,把从外面学来的路由在 AS 内传开,叫 iBGP(内部 BGP)。iBGP 只负责“告诉大家去外面走哪个出口”,AS 内部具体怎么走到那个出口,仍由 IGP 决定。
AS 1AS 2AS 3网络 NeBGPeBGPiBGP路径向量:AS1 → AS2 通告“N:[AS1]”;AS2 → AS3 通告“N:[AS2 AS1]”。若 AS3 又把“N:[AS3 AS2 AS1]”通告给 AS1,AS1 看到路径里有自己的 AS 号 → 丢弃(这样就不会兜圈子)。紫色圆 = BGP 发言人;粗紫线 = eBGP 会话;橙色虚线 = iBGP 会话(逻辑上的 TCP 连接,可以不直接相连)。
图 4-33 eBGP、iBGP 与路径向量防环。路径向量把“经过哪些 AS”完整带上,收到的路由里只要出现自己的 AS 号就说明有环。
AS1 的 BGP 发言人AS2 的 BGP 发言人先建立 TCP 连接(目的端口 179)OPEN(打开)“我是 AS1 的发言人,想和你做邻站”KEEPALIVE(保活)接受 OPEN,邻站关系建立UPDATE(更新)通告新路由“N:[AS1]”,或撤销以前通告过的路由UPDATE首次交换整个 BGP 路由表,以后只发变化KEEPALIVE平时周期性发送,证明“我还在”NOTIFICATION(通知)检测到差错 → 报告差错并关闭连接
图 4-34 BGP 的四种报文。OPEN 建关系、UPDATE 传路由、KEEPALIVE 保关系、NOTIFICATION 报差错。

拓展BGP 怎么在多条可达路由中挑一条?按策略:先看管理员设的本地偏好值,再看 AS 路径长短,再看到出口的 IGP 代价……其中“到出口的 IGP 代价最小优先”叫热土豆路由:像手里捧着烫手的土豆,尽快把分组从离自己最近的出口扔出本 AS,哪怕它在外面的 AS 路径更长。以上都相同时,最后选 BGP 路由器标识符(Router ID)最小的那条。

RIPOSPFBGP
类型内部网关协议内部网关协议外部网关协议
算法距离向量链路状态(Dijkstra)路径向量
封装UDP(520)IP(协议号 89)TCP(179)
所在层应用层网络层应用层
和谁交换相邻路由器本 AS(本区域)所有路由器其他 AS 的 BGP 发言人
交换什么自己的整个路由表与相邻路由器的链路状态(LSA)路径向量(首次整个路由表,之后只发变化)
何时交换每 30 秒链路状态变化时(Hello 每 10 秒)变化时(KEEPALIVE 周期发)
报文请求、响应Hello、DD、LSR、LSU、LSAckOPEN、UPDATE、KEEPALIVE、NOTIFICATION
路径跳数最少(≤ 15)代价最低较好,非最佳(按策略)
能否分区域不能能不能
三个路由协议的易错辨析
  • 所在层次看封装:RIP 用 UDP、BGP 用 TCP,它们的报文是应用层数据,所以属于应用层;OSPF 直接装在 IP 里,属于网络层。但三者的作用都是为网络层生成路由表。
  • RIP 的“距离”是跳数,与链路快慢无关;OSPF 的“代价”可以按带宽、时延等由管理员设定。
  • RIP 交换“整个路由表”但只发给邻居;OSPF 发的是“自己与邻居的链路状态”,但发给区域内所有路由器——“发给谁”和“发什么”正好相反,最爱拿来出选择题。
  • BGP 不保证找到最短路径,只保证可达、无环、符合策略;BGP 发言人之间先建 TCP 连接再交换信息。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。

变式计网由 2010-35 改
某自治系统采用 RIP,路由器 R1 原来到 net1 的距离为 5(下一跳 R3),收到邻居 R2 的距离向量中包含 <net1, 3>,则 R1 更新后到 net1 的距离和下一跳是( )。
  • A. 3,R2
  • B. 4,R2
  • C. 5,R3
  • D. 6,R3
展开解析

B经 R2 的距离 3 + 1 = 4 < 5,更新为 4,下一跳 R2。

  • A 错3 是 R2 到 net1 的距离,经 R2 还要再加 1 跳。
  • B 对对:3 + 1 = 4 < 5,改走 R2。
  • C 错5(经 R3)比经 R2 的 4 远,应改走 R2。
  • D 错6 = 5 + 1:把原来的距离又加了 1;要加 1 的是 R2 的通告(3 + 1 = 4),原有路由不用加。

变化点:由“16 不可达”换成一次正常的距离向量更新。

变式计网由 2021-37 改
在 2021-37 中,若 E 到邻居 A、B、C、D 的链路距离改为 3、5、2、7,收到的距离向量不变,则 E 到 Net1 ~ Net4 的距离分别是( )。
  • A. 4,12,16,8
  • B. 3,15,18,10
  • C. 4,15,18,10
  • D. 4,15,23,10
展开解析

CNet1:min(1 + 3, …) = 4;Net2:min(12 + 3, 35 + 5, 30 + 2, 28 + 7) = 15;Net3:min(27, 23, 18, 43) = 18;Net4:min(39, 35, 10, 31) = 10。

  • A 错后三个数 12、16、8 是邻居通告的距离本身(A 到 Net2、C 到 Net3、C 到 Net4),忘了加 E 到邻居的链路距离。
  • B 错Net1 写成 3,那只是 E 到 A 的链路距离,没有加 A 到 Net1 的 1。
  • C 对对:4、15、18、10。
  • D 错Net3 取了经 B 的 18 + 5 = 23;经 C 是 16 + 2 = 18,更短。

变化点:链路距离变了,每个网络的最佳邻居也可能变(Net3 改走 C)。

变式计网由 2017-37 改
下列路由协议中,报文使用可靠的面向连接传输的是( )。
  • A. RIP
  • B. OSPF
  • C. 以上都不是
  • D. BGP
展开解析

DBGP 发言人之间先建立 TCP 连接;RIP 用 UDP,OSPF 直接用 IP。

  • A 错RIP 报文封装在 UDP 中(端口 520),是无连接的。
  • B 错OSPF 直接封装在 IP 数据报中(协议号 89),不用 TCP。
  • C 错BGP 用 TCP(端口 179),所以“以上都不是”不对。
  • D 对对:BGP 发言人之间先建 TCP 连接。

变化点:由三个协议的封装换成“谁用 TCP”。

变式计网由 2026-38 改
下列路由协议中,属于外部网关协议的是( )。
  • A. BGP
  • B. RIP
  • C. OSPF
  • D. IGMP
展开解析

ABGP 用于自治系统之间;RIP、OSPF 是内部网关协议;IGMP 是多播组管理协议。

  • A 对对:BGP 用于自治系统之间。
  • B 错RIP 是内部网关协议,只在一个自治系统内部使用。
  • C 错OSPF 也是内部网关协议,可以在 AS 内划分区域,但不用于 AS 之间。
  • D 错IGMP 是主机与本地多播路由器之间的组成员管理协议,不是路由协议。

变化点:由“能划分区域的 IGP”换成 EGP。

变式计网考纲补充(尚无真题)
下列关于层次路由和自治系统(AS)的叙述中,错误的是( )。
  • A. AS 内部使用内部网关协议,AS 之间使用外部网关协议
  • B. 不同的 AS 可以使用不同的内部网关协议
  • C. 分层路由可以减小路由表的规模和路由信息的交换量
  • D. 分层路由保证分组总是沿全局最短的路径传送
展开解析

D分层以后,跨区域(跨 AS)的分组只能先到对方的“入口”再走最短路,整体不一定最短;BGP 本身也只求可达、不求最短。A、B、C 都正确。

  • A 不选正确:AS 内用 IGP(RIP、OSPF),AS 之间用 EGP(BGP)。
  • B 不选正确:各 AS 自己决定用哪种内部网关协议,互不影响。
  • C 不选正确:分层后每个路由器只需知道本区域的细节,路由表和交换的信息都变少。
  • D 选错误:跨 AS 的分组要先到对方的“入口”,整体不一定最短;BGP 也只求可达、不求最短。

考点:4.8 节“层次路由”。

变式计网考纲补充(尚无真题)
下列关于静态路由的叙述中,正确的是( )。
  • A. 由管理员手工配置,网络拓扑变化时不能自动调整
  • B. 需要相邻路由器之间周期性地交换路由信息
  • C. 适用于拓扑经常变化的大型网络
  • D. RIP 是一种静态路由选择协议
展开解析

A静态路由简单、无交换开销,但不能自适应,适合小型、稳定的网络(比如只有一个出口的末端网络配一条默认路由)。B、C、D 描述的都是动态路由。

  • A 对对:手工配置,拓扑变化时不能自动调整。
  • B 错周期性交换路由信息是动态路由(如 RIP)的做法,静态路由没有交换开销。
  • C 错拓扑经常变化时静态路由不能自动调整;它适合的是小型、稳定的网络。
  • D 错RIP 是动态路由协议(距离向量),会根据邻居的通告自动更新路由。

考点:4.8 节“静态路由与动态路由”。

变式计网考纲补充(尚无真题)
OSPF 路由器之间用于发现和维持邻居关系的分组是( )。
  • A. 链路状态更新(LSU)
  • B. 数据库描述(DD)
  • C. 问候(Hello)
  • D. 链路状态确认(LSAck)
展开解析

CHello 每 10 秒一次,40 秒收不到就认为邻居不可达。DD 交换数据库摘要,LSU 携带并洪泛链路状态,LSAck 确认 LSU。

  • A 错LSU(链路状态更新)用来携带并洪泛链路状态,不负责发现邻居。
  • B 错DD(数据库描述)在建立邻接时交换数据库摘要,不负责维持邻居关系。
  • C 对对:Hello 每 10 秒一次。
  • D 错LSAck 用来确认收到的 LSU,不负责发现和维持邻居。

考点:4.8 节“OSPF 的五种分组”。

变式计网考纲补充(尚无真题)
两个 BGP 发言人建立邻站关系后,用来周期性地证实邻站关系仍然存在的报文是( )。
  • A. OPEN
  • B. UPDATE
  • C. NOTIFICATION
  • D. KEEPALIVE
展开解析

DOPEN 建立关系,UPDATE 通告或撤销路由,KEEPALIVE 周期性保活(也用来确认 OPEN),NOTIFICATION 报告差错并关闭连接。

  • A 错OPEN 用来与对方建立邻站关系,只在开始时发。
  • B 错UPDATE 用来通告新路由或撤销旧路由,不是周期性保活。
  • C 错NOTIFICATION 用来报告差错并关闭连接,作用正好相反。
  • D 对对:KEEPALIVE 周期性证实邻站关系。

考点:4.8 节“BGP 的四种报文”。

变式计网考纲补充(尚无真题)
距离向量路由中,规定“从某个邻居学到的路由,不再通告回给这个邻居”,主要是为了( )。
  • A. 减少路由表的项数
  • B. 缓解两台路由器之间“坏消息传得慢”的环路问题
  • C. 加快好消息的传播
  • D. 在多条等价路径上分担负载
展开解析

B这就是水平分割:避免 R2 把从 R1 学来的路由又说回给 R1,让 R1 误以为“经 R2 可达”。它只能消除两台路由器之间的环路,三台以上构成的环路仍可能计数到无穷。

  • A 错水平分割不删除任何路由项,只是不把某些路由通告回去,路由表项数不变。
  • B 对对:这就是水平分割。
  • C 错好消息本来就传得快,水平分割针对的是坏消息造成的环路。
  • D 错负载分担是在多条等价路径上分配流量,和“不把路由说回给邻居”是两回事。

考点:4.8 节“RIP:坏消息传得慢”。

4.9网络层设备:路由器的组成、路由表与分组转发

★ 考过选择题

路由器的组成与功能

路由器是一台专门做“查表转发”的计算机,有多个输入、输出端口。它由两大部分组成:路由选择部分(控制平面,核心是路由选择处理机)和分组转发部分(数据平面,由输入端口、交换结构、输出端口组成)。

路由选择处理机(控制平面)运行 RIP/OSPF/BGP,算出路由表 → 生成转发表交换结构(数据平面)转发表拷贝到各输入端口输入端口 1:查表、排队输出端口 1:排队、发送输入端口 2:查表、排队输出端口 2:排队、发送输入端口 3:查表、排队输出端口 3:排队、发送分组从输入端口进,按目的地址查转发表,经交换结构送到输出端口;队列满了就丢弃
图 4-35 路由器的两大部分。上面的路由选择部分运行路由协议、维护路由表(控制平面);下面的分组转发部分由输入端口、交换结构、输出端口组成(数据平面)。
  • 路由器是网络层设备,任务是转发分组:根据分组的目的 IP 地址查转发表,送到合适的输出端口。
  • 分组到达速率超过处理速率,就在端口排队;队列满了只能丢弃——路由器可以因拥塞丢弃分组。路由器对首部做检验,有错就丢弃,但不保证分组不丢失(2012-37)。
  • 路由器隔离冲突域和广播域;链路层设备(网桥、交换机)只看 MAC 地址,物理层设备只转发比特。
路由表转发表
由谁生成路由选择处理机运行路由协议算出来(软件)从路由表得出,拷贝到各输入端口(常用硬件实现)
内容目的网络 → 下一跳 IP 地址(还有代价等路由信息)目的网络 → 输出端口 + 下一跳的 MAC 地址等,便于直接封装帧
优化目标便于路由计算和变化时更新便于快速查找

讨论路由选择原理时,一般不区分路由表和转发表,统称“路由表”;真题里的“路由表”也都是这个意思。

端口里做什么:输入端口按“物理层收比特 → 数据链路层拆帧(剥掉帧首部和尾部)→ 网络层查转发表、排队”的顺序处理;输出端口反过来:“排队缓存 → 数据链路层封装成新帧 → 物理层发比特”。所以分组每经过一个路由器,帧都要重新封装,MAC 地址随之改变。

交换结构与排队:分组怎样从入口到出口

交换结构负责把分组从输入端口搬到输出端口,是路由器的核心。有三种做法:

  • 经内存交换:分组先复制到内存,路由选择处理机查表后再复制到输出端口。一次只能搬一个分组,速率受内存带宽限制(早期的路由器就像一台普通计算机)。
  • 经总线交换:输入端口经一条共享总线把分组直接送到输出端口,不用处理机插手;但总线一次只能有一个分组通过,转发速率受总线速率限制。
  • 经互连网络交换(如纵横交换结构):输入线和输出线排成网格,交叉点的开关闭合就接通;去往不同输出端口的分组可以同时转发。
① 经内存② 经总线③ 经互连网络(纵横)CPU内存分组复制进内存,再复制出来每个分组过两次内存,最慢共享总线所有分组共用一条总线一次只能过一个,速率受总线限制出 1出 2出 3交叉点开关闭合即连通去不同出口的分组可同时转发,最快
图 4-36 三种交换结构。蓝框是输入端口,绿框是输出端口。纵横交换结构中,入 1 → 出 2 和入 3 → 出 1 两条路径同时接通;但两个分组若要去同一个输出端口,仍要排队。
  • 输入端排队:交换结构的速率跟不上所有输入端口的总速率时,分组在输入端口排队。还会出现线路前部阻塞(HOL 阻塞):排在队首的分组要去的输出端口正忙,它只能等;排在它后面、要去空闲端口的分组也被挡住了。
  • 输出端排队:交换结构很快,但多个输入端口的分组同时涌向同一个输出端口,输出链路发不过来,就在输出端口排队。
  • 队列满了怎么办:丢弃新来的分组(或按某种策略丢弃已排队的分组)。路由器“因拥塞而丢弃分组”就发生在这里。
输入端口 1 的队列→ Y→ X(队首)输入端口 2 的队列→ X(队首)交换结构✋输出端口 X(忙)输出端口 Y(空闲)端口 1 的“→ Y”明明可以走,却被前面等 X 的分组堵住——这就是线路前部阻塞。
图 4-37 线路前部阻塞(HOL 阻塞)。这是输入端排队特有的问题;解决思路是让队列里后面的分组可以“插队”去空闲的输出端口。
真题怎么考

2012-37 问路由器的功能:“运行路由协议、设置路由表”(I,控制平面)、“拥塞时合理丢弃分组”(II)、“根据目的地址转发到合适的输出线路”(IV)都对;“对分组头差错校验、确保分组不丢失”(III)错——IP 只尽力交付。可能的变化:问“交换结构有哪几种”“哪种排队会产生 HOL 阻塞”(输入端排队)、“路由表与转发表的区别”。

跟我走一遍:一个分组穿过路由器

考纲的“路由表与路由转发”问的就是:分组进了路由器,到出来为止,路由器一共做了哪几件事、改了哪些字段。用一个具体的例子走一遍。

跟我走一遍

路由器 R 有 4 个接口,转发表如下。主机 192.168.10.25 发出的一个 IP 分组(目的 172.16.40.7,TTL = 64,DF = 0)从 E0 进入 R。

目的网络下一跳接口
192.168.10.0/24直接交付E0
172.16.0.0/1610.0.0.2E1
172.16.32.0/2010.0.1.2E2
0.0.0.0/010.0.2.2E3
  1. 输入端口 · 链路层:收下一帧,检查 FCS;目的 MAC 是 E0 的 MAC(主机发往别的网络时,帧的目的 MAC 就是默认网关的 MAC,4.6 节),于是剥掉帧首部和尾部,把 IP 分组交给网络层。
  2. 网络层 · 检查首部:首部检验和出错就直接丢弃;TTL 减 1 变成 63(若减到 0,丢弃并向源主机发 ICMP 时间超过报文)。
  3. 查转发表:172.16.40.7 同时匹配 172.16.0.0/16(前 16 位相同)、172.16.32.0/20(/20 的范围是 172.16.32.0 ~ 172.16.47.255,40 在其中)和默认路由。按最长前缀匹配选 /20 → 下一跳 10.0.1.2,从 E2 转出(4.4 节)。
  4. 交换结构:把分组从输入端口送到 E2 的输出队列;队列满了就丢弃(这就是“路由器可以因拥塞丢弃分组”)。
  5. 输出端口 · 重新封装:用 ARP 查到下一跳 10.0.1.2 的 MAC 地址(ARP 缓存里没有就先发 ARP 请求);重写 IP 首部的 TTL 并重算首部检验和;若 E2 链路的 MTU 小于分组总长度,就在这里分片(DF = 1 则丢弃并发 ICMP 终点不可达);最后封装新帧:源 MAC = E2 的 MAC,目的 MAC = 10.0.1.2 的 MAC。
字段进 R 时出 R 时为什么
源 / 目的 IP192.168.10.25 → 172.16.40.7不变IP 地址标识两端主机,沿途不改(NAT 路由器除外,4.5 节)
TTL6463每经过一个路由器减 1
首部检验和旧值重新计算TTL 变了,首部变了
源 / 目的 MAC主机 → E0E2 → 10.0.1.2帧只管一段链路,每一跳重新封装

换几个目的地址自己试:172.16.50.9 只匹配 /16 → E1;8.8.8.8 只匹配默认路由 → E3;192.168.10.99 → 直接交付,从 E0 发出,目的 MAC 就是那台主机自己的 MAC(四个结果都用程序核对过)。

易错辨析
  • 路由器检查的是 IP 首部的检验和;数据部分对不对它不管(传输层的检验和才覆盖数据)。
  • 首部检验和出错的分组直接丢弃,不发 ICMP 差错报文——检验和错说明首部在传输中被破坏,连源地址都不可信;检验和正确、但某个字段的值不合理时,才丢弃并发 ICMP 参数问题报文(4.6 节)。
  • “路由器保证分组不丢失”是错的:拥塞、TTL 为 0、首部出错、DF = 1 又放不下,都会丢(2012-37 Ⅲ)。
  • 查转发表用的是目的 IP 地址;源地址只在需要回 ICMP 报文时才用到。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2012-37 改
下列功能中,属于路由器数据平面(转发部分)的是( )。
  • A. 运行 OSPF 计算最短路径
  • B. 根据转发表把分组送到输出端口
  • C. 与邻居交换 RIP 距离向量
  • D. 维护 BGP 会话
展开解析

B运行路由协议、计算和维护路由属于控制平面;按转发表转发分组属于数据平面。

  • A 错运行 OSPF 算最短路径属于控制平面(路由选择),不是数据平面。
  • B 对对:按转发表把分组送到输出端口是数据平面的工作。
  • C 错和邻居交换 RIP 距离向量同样是路由选择,属于控制平面。
  • D 错维护 BGP 会话、交换路由信息也属于控制平面。

变化点:由“路由器有哪些功能”细分到控制平面和数据平面。

变式计网考纲补充(尚无真题)
路由器输入端口排队时可能出现的“线路前部阻塞”是指( )。
  • A. 输出端口队列已满,新到的分组被丢弃
  • B. 队首分组要去的输出端口正忙,挡住了后面要去空闲输出端口的分组
  • C. 交换结构采用总线方式时,一次只能转发一个分组
  • D. 路由表太大,查表速度变慢
展开解析

B线路前部阻塞(HOL)是输入端排队特有的现象;A 是输出端排队溢出,C 是总线交换的限制,D 与排队无关。

  • A 错这是输出端口排队溢出造成的丢包,不是输入端的线路前部阻塞。
  • B 对对:队首挡住了后面本可以走的分组。
  • C 错总线一次只能转发一个分组是总线交换结构的速率限制,不是“队首挡住后面”的现象。
  • D 错查表速度慢是处理能力问题,队列里并没有出现队首挡住后面分组的情况。

考点:4.9 节“交换结构与排队”。

4.10IP 组播

基础铺垫

考纲原文只有两条:组播的概念、IP 组播地址。所以本节的重点是:组播解决什么问题、和单播 / 广播有什么区别、D 类地址怎样分段、组播 IP 地址怎样映射成以太网 MAC 地址;IGMP 和组播路由只要知道“各管什么”,放在本节最后作拓展。

组播的概念:一对多通信

名称:王道教材和考纲叫“组播”,谢希仁教材叫“多播”(multicast),是同一个东西。下文两种叫法混用。

问题:一场直播有 1000 个观众。用单播,服务器要把同一份视频发 1000 遍,出口带宽要乘以 1000;用广播,所有不想看的主机也被打扰,而且广播过不了路由器。多播(也叫组播)的办法是:源主机只发一份,在网络中需要分岔的路由器上才复制,只送给想收的主机。

单播:同一数据发 3 份多播:源只发 1 份源3 份RH1H2H3接收者越多,源和第一段链路的负担越重源1 份R组员组员非组员在分岔处复制,只送给组员
图 4-38 单播与多播。接收者越多,多播省得越多。多播与广播的区别:广播送给所有主机,多播只送给加入了该组的主机。
  • 多播数据报的目的地址是 D 类地址(224.0.0.0 ~ 239.255.255.255),每个 D 类地址标识一个多播组(地址怎样分段、有哪些规矩,见下一个小标题)。
  • 多播数据报“尽最大努力交付”,不保证一定交付给组内所有成员,不产生 ICMP 差错报文(所以 ping 一个多播地址收不到“不可达”)。
  • 主机可以随时加入、离开某个组;一台主机可以同时属于多个组;源主机不必属于它发往的组。

IP 组播地址:D 类地址与以太网组播 MAC

组播地址用的是 IPv4 的 D 类地址:首字节的前 4 位是 1110,范围 224.0.0.0 ~ 239.255.255.255,一共 228 个。它有几条“规矩”,每一条都是选择题的好材料:

地址段用途例子
224.0.0.0 ~ 224.0.0.255本地网络(同一链路)专用,路由器不转发224.0.0.1 本网所有主机;224.0.0.2 本网所有路由器;224.0.0.5 所有 OSPF 路由器;224.0.0.9 所有 RIPv2 路由器
224.0.1.0 ~ 238.255.255.255可以跨越因特网的组播地址 拓展各种组播应用
239.0.0.0 ~ 239.255.255.255本地管理(只在一个机构内部用,作用类似私有地址) 拓展企业内部的组播视频
  • 组播地址只能作目的地址,不能作源地址:发组播的源主机,源地址仍是它自己的单播地址。
  • 组播只能用 UDP:TCP 是一对一的连接,没法“一份数据同时交给一组人”,也没法对一群接收者分别做确认和重传。
  • OSPF 用 224.0.0.5、RIPv2 用 224.0.0.9 发路由信息——这就是“只发给本网所有路由器”的组播,比广播省事:网上的普通主机不会被打扰。

以太网上的硬件多播:在局域网里,多播分组最终要装进以太网帧。IANA 把以太网地址块 01-00-5E-00-00-00 ~ 01-00-5E-7F-FF-FF 留作多播 MAC 地址,并规定一个简单的映射:

多播 IP(32 位)11105 位不用低 23 位多播 MAC(48 位)01-00-5E(前 24 位固定)0照抄 IP 的低 23 位丢掉 → 32 个 IP 共用一个 MAC第 0 位第 31 位例:224.128.64.32 = 1110 0000 . 1000 0000 . 0100 0000 . 0010 0000,低 23 位 = 000 0000 . 0100 0000 . 0010 0000→ MAC = 01-00-5E-00-40-20;224.0.64.32、239.128.64.32 等的低 23 位相同,MAC 也是它
图 4-39 多播 IP 地址到以太网多播 MAC 地址的映射。D 类地址除去固定的 1110 还有 28 位可变,但只有 23 位能放进 MAC,有 5 位丢了,所以每个多播 MAC 对应 25 = 32 个多播 IP 地址。网卡按 MAC 收下帧后,IP 层还要再检查一次目的 IP 地址,把不是本组的丢掉。
例多播地址映射:跟我算
多播 IP 地址 230.0.0.1 和 224.128.64.32 分别映射成什么以太网地址?与 224.128.64.32 映射到同一个 MAC 地址的多播 IP 地址一共有多少个?
展开解析
  1. 230.0.0.1:第 2 字节 0 的最高位是 0,低 23 位就是 0.0.1 → 01-00-5E-00-00-01。
  2. 224.128.64.32:第 2 字节 128 = 1000 0000,最高位的 1 属于被丢掉的 5 位,剩下 000 0000;第 3、4 字节 64 = 0x40、32 = 0x20 → 01-00-5E-00-40-20。
  3. 前 4 位固定 1110,接下来 5 位任取都映射到同一个 MAC:25 = 32 个。

(三个结果都用程序验算过。)

跟我判断:两个“差别很大”的地址会撞车吗

225.1.2.3 和 233.129.2.3 看上去毫不相干,映射成的 MAC 地址却都是 01-00-5E-01-02-03:它们的低 23 位相同(第 2 字节 1 = 0000 0001、129 = 1000 0001,只差最高位,而最高位正好落在被丢掉的 5 位里)。所以网卡按 MAC 收下帧后,IP 层还要再看一次目的 IP 地址,把不是本组的丢掉——这就是映射“32 对 1”的后果。

易错辨析
  • 组播 MAC 的前 25 位固定是 0000 0001 0000 0000 0101 1110 0(即 01-00-5E 后面第一位为 0),所以第 4 字节最大是 7F,不会出现 01-00-5E-80-xx-xx。
  • 以太网地址第一个字节的最低位(I/G 位)为 1 表示组地址:01-00-5E 的 01 正是这一位为 1(3.7 节)。
  • “组播地址 = D 类地址”说的是 IPv4;IPv6 的组播地址以 FF 开头(4.7 节),IPv6 没有广播地址。

IGMP 与组播路由:各管什么 拓展

考纲 2026 原文没有列 IGMP 和组播路由,这里只讲到“知道它们分别解决什么问题”,不必深究报文格式和算法细节。

IGMP(网际组管理协议):多播路由器要知道“我连着的这个局域网上,有没有主机加入了组 G”,才决定要不要把 G 的分组转发进来。IGMP 就运行在主机和与它直接相连的多播路由器之间。IGMP 报文封装在 IP 数据报中(协议字段 2),属于网络层协议(和 ICMP 一样“用 IP 传送”但属于网络层)。它只管本地:路由器只需知道本网络上有没有某组的成员,不需要知道有几个、是谁。

主机 H1主机 H2本地多播路由器 R① 成员关系报告:我要加入组 G目的地址 = G记下“本网络有 G 的成员”开始把 G 的多播分组转发进来② 成员关系询问(周期性)目的 224.0.0.1(本网所有主机)等一个随机时间再回答③ 报告:本网还有 G 的成员听到 H1 已回答,自己不必再回答④ 离开组 G(IGMPv2 起有)⑤ 特定组询问:还有 G 的成员吗?无人回答 → 不再转发 G 的分组
图 4-40 IGMP 的工作过程。加入时主机主动报告;之后路由器周期性询问,只要组里有一台主机回答就够了(随机等待 + 听到别人回答就不答,减少报文数);长时间没人回答,路由器就认为本网已没有该组成员。

多播路由选择:多播路由器之间还要用多播路由选择协议,为每个多播组建立一棵多播转发树:从源点出发、覆盖所有有组员的网络、没有环路,分组沿树复制转发。IGMP 解决“谁要收”,多播路由协议解决“怎么送过去”,两者分工不同。

源 SR1R2R3R4LAN B:有组员 ✓LAN A:有组员 ✓LAN C:无组员R3 向上游发“剪除”绿色粗线 = 多播转发树;灰色虚线 = 被剪掉的分支
图 4-41 多播转发树的“洪泛与剪除”。开始先把多播分组像广播一样洪泛到各路由器(只接收从“到源点最短路径”那个端口进来的分组,以免兜圈子,叫反向路径广播 RPB);下面没有组员的路由器向上游发剪除报文,砍掉不需要的分支。

拓展常见的多播路由协议:DVMRP(距离向量多播路由选择协议,就是上图的洪泛与剪除,适合组员密集的情况);PIM-DM(协议无关多播—密集方式,思路同上);PIM-SM(稀疏方式,组员很分散时,先选一个“汇聚点”作为树根,大家都往它那里建共享树,避免到处洪泛);MOSPF(在 OSPF 的基础上扩展)。另外,若源与组员之间隔着不支持多播的路由器,可以用隧道把多播分组封装成单播穿过去。

真题怎么考

组播在 2009 ~ 2026 年的真题里一次也没有出过,而它明明白白写在考纲里——这正是“冷点”可能变成新题的地方。按考纲两条,最可能的命题点:① 组播与单播、广播的区别(谁收得到、源发几份、在哪里复制);② D 类地址范围、224.0.0.x 不被路由器转发、组播地址只能作目的地址;③ 组播只能用 UDP;④ 组播 IP → 以太网 MAC 的映射(01-00-5E + 低 23 位,32 对 1),可以出成计算题。IGMP 若出现,多半问“它运行在哪里(主机与本地组播路由器之间)、属于哪一层(网络层)”。本节末尾的变式卡和第 9 篇 9.1 的专项题专门练了这几个点。

选择题练习:考纲补充(尚无真题)

本节的考纲知识点还没有出过真题,下面是按 408 风格自编的练习题(答案位置已轮换)。更多同类题见第 9 篇 9.1 专项。

变式计网由 2012-37 改
主机向本地多播路由器报告自己加入某个多播组所用的协议是( )。
  • A. ICMP
  • B. ARP
  • C. IGMP
  • D. OSPF
展开解析

CIGMP 用于主机与本地多播路由器之间的组成员管理。

  • A 错ICMP 用于差错报告和询问(如 ping),不管多播组成员。
  • B 错ARP 把 IP 地址解析为 MAC 地址,不能报告组成员关系。
  • C 对对:IGMP。
  • D 错OSPF 是单播的内部网关路由协议,不用于主机报告组成员。

变化点:延伸到 4.10 节的 IP 多播。

变式计网考纲补充(尚无真题)
多播地址 230.130.65.18 对应的以太网多播 MAC 地址是( )。
  • A. 01-00-5E-02-41-12
  • B. 01-00-5E-82-41-12
  • C. 01-00-5E-E6-82-41
  • D. FF-FF-FF-02-41-12
展开解析

AMAC = 01-00-5E + 0 + IP 的低 23 位。第 2 字节 130 = 1000 0010,最高位属于被丢弃的 5 位,剩 000 0010 = 02;65 = 0x41,18 = 0x12。B 忘了丢掉最高位;C 把首字节也放进去了;D 是广播地址的前缀。

  • A 对对:01-00-5E-02-41-12。
  • B 错第 2 字节 130 = 1000 0010,最高位属于被丢弃的 5 位,要变成 000 0010 = 02;B 直接写成了 82。
  • C 错把 IP 的首字节 230(E6)也放进了 MAC;MAC 只取 IP 的低 23 位,首字节整个不要。
  • D 错FF-FF-FF 是广播地址的前缀;IP 多播映射的 MAC 前缀固定是 01-00-5E。

考点:4.10 节“多播地址映射”。

变式计网考纲补充(尚无真题)
以太网多播 MAC 地址中只有 23 位可用来映射多播 IP 地址,因此每个以太网多播 MAC 地址对应的多播 IP 地址个数是( )。
  • A. 1
  • B. 16
  • C. 32
  • D. 64
展开解析

CD 类地址固定前缀 1110 之后还有 28 位,只有低 23 位进入 MAC,丢掉的 5 位可以任取,所以 25 = 32 个 IP 对应同一个 MAC。主机收到后要在 IP 层再过滤一次。

  • A 错一对一要求 MAC 能容纳全部 28 位可变位,而这里只有 23 位。
  • B 错16 = 2⁴,少算了一位:丢掉的是 28 − 23 = 5 位。
  • C 对对:2⁵ = 32。
  • D 错64 = 2⁶,多算了一位;丢掉的只有 5 位。

考点:4.10 节“多播地址映射”。

变式计网考纲补充(尚无真题)
下列关于 IGMP 的叙述中,正确的是( )。
  • A. IGMP 运行在多播路由器之间,用来建立多播转发树
  • B. IGMP 报文封装在 UDP 用户数据报中
  • C. IGMP 用于把多播 IP 地址解析为以太网地址
  • D. IGMP 让本地多播路由器知道本网络上是否有某个多播组的成员
展开解析

DIGMP 运行在主机与本地多播路由器之间(A 错,建树是多播路由协议的事);IGMP 报文直接封装在 IP 中,协议字段为 2(B 错);地址映射是固定规则,不需要协议(C 错)。

  • A 错IGMP 运行在主机与本地多播路由器之间;建立多播转发树是多播路由协议的事。
  • B 错IGMP 报文直接封装在 IP 数据报中(协议字段 2),不用 UDP。
  • C 错多播 IP 到以太网地址的映射是固定规则(01-00-5E + 低 23 位),不需要协议。
  • D 对对:让本地多播路由器知道本网络上有没有某组的成员。

考点:4.10 节“IGMP”。

4.11移动 IP

基础铺垫

考纲两条:移动 IP 的概念(几个实体、两个地址)和移动 IP 通信过程(登记、隧道、三角路由)。和组播一样,真题至今没有出过,复习时把下面两个 h4 的图和表各过一遍即可。

移动 IP 的概念与通信过程:换了网络,地址不变

问题:IP 地址里藏着“网络号”,换了网络就得换地址;可正在进行的 TCP 连接是靠(IP 地址,端口)认人的,地址一换连接就断了。笔记本从教学楼走到图书馆、换了一个子网,怎样让别人还能用原来的地址找到它?

比喻:搬家后的邮件转寄

你搬到外地读书,朋友仍往你家的老地址寄信。你提前到老家的邮局登记了新地址(转交地址);邮局收到寄给你的信,就套一个新信封寄到新地址(隧道),你拆开就看到原信。你回信则直接从外地寄出,不必绕回老家(三角路由)。哪里不像:现实里朋友收到回信会看到新地址;移动 IP 里你回信的源地址仍写老家地址(永久地址),对方完全不知道你搬过家。

  • 移动结点:具有永久 IP 地址的移动设备。归属网络(本地网络):它原来所在的网络。永久地址(归属地址、主地址):它在归属网络中的地址,始终不变,通信对方只用它。
  • 归属代理(本地代理):归属网络上替它收分组的实体,通常就是归属网络的路由器。
  • 外地网络、外地代理(外部代理):移动结点现在所在的网络和那里的代理,通常是外地网络的路由器。
  • 转交地址(辅地址):移动结点在外地网络时使用的临时地址,通常就是外地代理的地址。
通信对方 C归属代理 HA在归属网络外地代理 FA在外地网络移动结点 MN永久地址 X① 代理通告(含转交地址 CoA)② 登记请求“永久地址 X,转交地址 CoA”③ 转发登记请求④ 登记应答HA 记下 X → CoA⑤ 转发登记应答登记完成,开始通信⑥ 发给永久地址 X目的 = X(C 不知道 MN 已移动)截获,整个封装进目的 = CoA 的新数据报⑦ 经隧道发往转交地址外层首部:HA → CoA拆封,取出原数据报⑧ 交付给移动结点⑨ 直接回复,源地址仍是 X不必经过归属代理
图 4-42 移动 IP 的通信过程。①~⑤ 是“代理发现 + 向归属代理登记”;⑥~⑧ 是对方发来的分组经归属代理、隧道、外地代理转交;⑨ 是移动结点直接回复。
  1. 移动结点在归属网络时,按普通方式收发分组,用不到移动 IP。
  2. 移动到外地网络后,通过外地代理的通告(或主动请求)得到转交地址,并经外地代理向归属代理登记这个转交地址。
  3. 通信对方仍按永久地址发送分组。分组到达归属网络后被归属代理截获,归属代理把它整个封装进一个以转交地址为目的地址的新 IP 数据报,经隧道发往外地代理。
  4. 外地代理拆封,取出原来的数据报交给移动结点。
  5. 移动结点发给对方的分组,源地址仍是永久地址,经外地代理直接发送给对方,不绕回归属网络。去和回走的路不同,称为三角路由。
  6. 移动到另一个外地网络时,重新获取转交地址并登记;回到归属网络后,向归属代理注销转交地址。
通信对方 C归属网络(永久地址 X 属于这里)HA外地网络FAMN① 发往永久地址 X② 隧道(外层目的 = 转交地址)③ 直接回复(源 = X)
图 4-43 三角路由。C → HA → FA → MN 的去程和 MN → C 的回程走的是不同的路,三段连起来像个三角形。缺点是去程绕了远路;改进办法(拓展)是让对方也知道转交地址后直接发过去(路由优化)。

整个过程对通信对方是透明的:对方始终只知道移动结点的永久地址。

跟我填一遍:每一段 IP 首部里写的是什么地址

移动 IP 的题,最容易考的就是“某一段的分组,源地址、目的地址各是什么”。用具体的地址走一遍:移动结点 MN 的永久地址 131.1.1.5(归属网络 131.1.1.0/24),归属代理 HA 是 131.1.1.1;MN 现在在外地网络,外地代理 FA 的地址 203.0.113.1 就是它的转交地址;通信对方 C 是 58.2.2.9。

这一段外层 IP 首部(隧道)里层(原来的)IP 首部说明
① C → 归属网络—58.2.2.9 → 131.1.1.5C 只知道永久地址,按普通方式发送
② HA → FA(隧道)131.1.1.1 → 203.0.113.158.2.2.9 → 131.1.1.5(原样装在里面)HA 截获后封装,外层目的地址 = 转交地址
③ FA → MN—58.2.2.9 → 131.1.1.5FA 拆封,在外地网络上直接交付给 MN
④ MN → C—131.1.1.5 → 58.2.2.9源地址仍是永久地址,直接发给 C,不经过 HA(三角路由)

从头到尾,C 看到的始终是 131.1.1.5;转交地址只出现在隧道的外层首部里,只有 HA 和 FA 知道。

移动 IPDHCPNAT
解决什么换了网络仍用原地址通信,连接不断新主机自动拿到一个地址多台主机共用少量公网地址
主机的地址永久地址不变,另有转交地址每到一个网络换一个地址内网私有地址,出去时被替换
对方看到的地址永久地址新地址NAT 路由器的公网地址
关键动作登记、隧道封装 / 拆封DISCOVER / OFFER / REQUEST / ACK改源地址和源端口
真题怎么考

移动 IP 在真题里还没有出过。最可能的考法:① 名词对应——永久地址(归属地址)、转交地址、归属代理、外地代理各是什么;② 通信对方发给移动结点的分组按什么地址发、被谁截获、谁封装谁拆封;③ 移动结点回复时的源地址、要不要经过归属代理(不经过,三角路由);④ 与 DHCP、NAT 的区别。判别方法:对方眼里只有永久地址,转交地址只活在隧道里。

易错辨析
  • 转交地址通常是外地代理的地址,不是移动结点自己在外地网络里的地址(教材的“外地代理转交地址”方式)。
  • 归属代理、外地代理通常就是归属网络、外地网络的路由器。
  • 封装是 HA 做的,拆封是 FA 做的;MN 回复时不需要隧道。
  • 移动 IP 解决的是网络层的“换网后地址不变”;同一个 Wi-Fi 网络里换个 AP(同一个子网)不需要移动 IP。

选择题练习:考纲补充(尚无真题)

本节的考纲知识点还没有出过真题,下面是按 408 风格自编的练习题(答案位置已轮换)。更多同类题见第 9 篇 9.1 专项。

变式计网考纲补充(尚无真题)
在移动 IP 中,通信对方发给移动结点的 IP 分组,首先被( )截获,再经隧道转发到转交地址。
  • A. 归属代理
  • B. 外地代理
  • C. 通信对方所在网络的路由器
  • D. 外地网络的 DHCP 服务器
展开解析

A对方按永久地址发送,分组先到归属网络,被归属代理截获并封装,经隧道发往转交地址(外地代理),外地代理拆封后交给移动结点。

  • A 对对:归属代理截获后经隧道发往转交地址。
  • B 错外地代理是隧道的终点,负责拆封并交给移动结点;分组先到归属网络,被归属代理截获。
  • C 错通信对方网络的路由器只按永久地址把分组正常转发出去,它不知道移动结点已经移动。
  • D 错外地网络的 DHCP 服务器只给本地主机分配地址,不参与移动 IP 的转发。

考点:4.11 节“移动 IP”的通信过程。

第 4 篇自测
  1. 一个 IP 首部的前 4 字节是 45 00 05 DC,首部长度和总长度各是多少?
    答案
    首字节 0x45:版本 4,首部长度 5 × 4 = 20B;总长度 0x05DC = 1500B。
  2. 总长度 2000B(首部 20B)的数据报经过 MTU = 620B 的链路,分几片?最后一片的片偏移是多少?
    答案
    每片最多 (620 − 20) = 600B 数据(600 是 8 的倍数)。1980 = 600 + 600 + 600 + 180,共 4 片;最后一片片偏移 1800 ÷ 8 = 225,总长度 200,MF = 0。
  3. 求 10.10.201.99/19 的网络地址和广播地址。
    答案
    /19 落在第 3 字节,块大小 32;201 向下取到 32 的倍数是 192 → 网络地址 10.10.192.0;192 + 31 = 223 → 广播地址 10.10.223.255。
  4. 把 202.1.0.0/24、202.1.1.0/24、202.1.2.0/24、202.1.3.0/24 聚合。
    答案
    第 3 字节 0~3 = 000000xx,共同前缀 16 + 6 = 22 位 → 202.1.0.0/22。
  5. 主机 A 要给另一个网络上的主机 B 发 IP 分组,A 用 ARP 解析谁的 MAC 地址?
    答案
    默认网关(本网络路由器接口)的 MAC 地址。
  6. RIP、OSPF、BGP 分别直接封装在什么协议里?
    答案
    RIP → UDP;OSPF → IP;BGP → TCP。
  7. R 收到邻居 X 的 RIP 表项 <N, 3>,R 原来到 N 的路由是 <N, 5, 下一跳 Y>,更新后是什么?若原来是 <N, 2, 下一跳 X> 呢?
    答案
    第一种:经 X 为 4 < 5,改为 <N, 4, X>。第二种:下一跳就是 X,无条件更新为 <N, 4, X>(距离变大也要换)。
  8. 拥塞控制和流量控制有什么区别?
    答案
    拥塞控制是全局性的,防止过多数据注入网络,涉及所有主机和路由器;流量控制是点对点的,只让发送方别把接收方淹没。
  9. 移动 IP 中,通信对方发给移动结点的分组按什么地址发?谁把它送到移动结点所在的外地网络?
    答案
    按永久地址发。归属代理截获后,把它封装进以转交地址为目的地址的数据报,经隧道发给外地代理,外地代理拆封后交给移动结点。
  10. IPv6 中相当于 IPv4 的 127.0.0.1 和 0.0.0.0 的地址分别是什么?
    答案
    环回地址 ::1;未指明地址 ::(全 0)。
  11. 主机 H1 的 ARP 表为空,它要给另一个网络上的 H2 发 IP 分组。H1 发出的第一个以太网帧的目的 MAC 是什么?封装这个 IP 分组的帧的目的 MAC 又是什么?
    答案
    第一个帧是解析默认网关的 ARP 请求,广播,目的 MAC = FF-FF-FF-FF-FF-FF;封装 IP 分组的帧的目的 MAC 是默认网关(路由器接口)的 MAC。
  12. DHCP 客户在租期过半(T1)时发的 REQUEST 是单播还是广播?源 IP 地址是什么?
    答案
    单播,发给原来的 DHCP 服务器;源 IP 是已经租到的地址(不再是 0.0.0.0)。到 0.875 倍租期(T2)还没续上才改为广播。
  13. 哪 4 种情况不发送 ICMP 差错报告报文?
    答案
    ① 对 ICMP 差错报告报文本身;② 对分片数据报的非第一个分片;③ 对多播地址的数据报;④ 对 127.0.0.0、0.0.0.0 等特殊地址的数据报。
  14. traceroute 怎样知道路径上第 3 个路由器的地址?
    答案
    发一个 TTL = 3 的分组,它在第 3 个路由器处 TTL 减为 0 被丢弃,该路由器向源主机回 ICMP 时间超过报文,报文的源地址就是它的地址。
  15. 把 FE80::2AA:FF:FE9A:4CA2 写成完整形式。
    答案
    写出来的有 FE80、2AA、FF、FE9A、4CA2 共 5 组,:: 代表 3 组 0:FE80:0000:0000:0000:02AA:00FF:FE9A:4CA2。
  16. 层次路由中,AS 内部和 AS 之间分别用哪类协议?RIP、OSPF、BGP 中能把一个 AS 划分成多个区域的是哪个?
    答案
    AS 内部用内部网关协议 IGP(RIP、OSPF),AS 之间用外部网关协议 EGP(BGP-4)。能划分区域的只有 OSPF。
  17. 多播地址 239.255.0.1 映射成什么以太网地址?
    答案
    第 2 字节 255 = 1111 1111,最高位丢掉,剩 111 1111 = 7F;后两字节 00、01 → 01-00-5E-7F-00-01。
  18. 移动 IP 中,移动结点回复通信对方时,IP 分组的源地址填什么?这个分组要经过归属代理吗?
    答案
    源地址填永久地址;直接发给对方,不经过归属代理(三角路由)。
  19. SDN 的核心思想是什么?路由由谁计算,交换机做什么?
    答案
    控制平面与数据平面分离:控制器集中计算路由,通过南向接口(如 OpenFlow)下发流表;交换机只按流表转发分组(数据平面),不再各自运行路由协议。
  20. ICMP 差错报告报文有哪 5 类?TTL 减为 0 时发哪一类?
    答案
    终点不可达、源点抑制、时间超过、参数问题、改变路由(重定向)。TTL 减为 0 时发“时间超过”,traceroute 就是利用它。
  21. BGP 为什么只求找到一条较好的路由,而不追求最佳路由?
    答案
    因特网规模太大,各 AS 的度量标准不同,选路还要考虑政治、经济、安全等策略,没法统一算出“最短”;所以 BGP 只求能到达、比较好(不兜圈子),采用路径向量交换“经过哪些 AS”。
  22. 路由器的交换结构有哪三种?哪一种能让多个分组同时通过?
    答案
    经内存、经总线、经互连网络(如纵横交换)。前两种一次只能搬一个分组;纵横交换在各分组去往不同输出端口时可以并行转发。

一页总结与必会题型

主题核心结论必背数字真题
功能转发(数据平面,每个分组)vs 路由选择(控制平面,全网);数据报服务尽最大努力交付;SDN 控制器经南向接口下发流表—2022-37、2012-37
IPv4 首部首 4 总 1 片 8;TTL 每跳减 1;检验和只检首部、每跳重算;分片只在目的主机重组首部 20~60 B;总长 ≤ 65 535;协议 1 / 6 / 17 / 892021-36、2018-47、2011-47、2012-47
编址按位与求网络地址;块大小法;可分配 2h − 2;变长划分用二叉树私有 10/8、172.16/12、192.168/16;A 类 126 个网络2012-39、2017-38、2019-37、2021-35 等 11 道
转发直连 → 直接交付;否则最长前缀匹配;都不中走默认路由;下一跳 = 相邻路由器接口;聚合须恰好对齐/32 主机路由、/0 默认路由2015-38、2018-38、2009-47、2013-47
NAT出去改源、回来改目的;NAPT 连端口一起改,传输层检验和也重算;外网访问内网要静态映射—2016-38、2023-38、2025-37、2020-47
ARP / DHCP / ICMPARP 解析“这一段的下一站”;DHCP 前两个客户报文 0.0.0.0 → 255.255.255.255;ICMP 差错发给源主机ARP 类型 0x0806;DHCP UDP 67 / 68;T1 = 0.5、T2 = 0.8752012-38、2018-37、2025-36、2010-36、2012-33、2015-47
IPv6128 位;基本首部固定 40 B;无检验和;只在源主机分片;无广播;:: 只用一次空间 296 倍;最小 MTU 12802023-40
路由层次路由:AS 内 IGP、AS 间 EGP;RIP 距离向量(坏消息传得慢);OSPF 链路状态(Dijkstra、可分区域);BGP 路径向量(只求可达)RIP:UDP 520、30 s、16 不可达;OSPF:IP 89、Hello 10 s;BGP:TCP 1792010-35、2016-37、2017-37、2021-37、2026-37、2026-38、2014-42、2024-47
路由器路由器不保证不丢分组;过一个路由器:IP 地址不变,TTL − 1、检验和重算、MAC 换成本段的查转发表用目的 IP + 最长前缀匹配2012-37
IP 组播组播只能作目的、只能用 UDP、不发 ICMP 差错;224.0.0.x 不转发;IGMP 在主机与本地组播路由器之间(拓展)D 类 224~239;01-00-5E + 低 23 位,32 对 1(尚无)
移动 IP对方只用永久地址;HA 截获并封装、FA 拆封;MN 回复不经 HA(三角路由)转交地址通常 = 外地代理地址(尚无)
本篇必会题型清单(能独立做对才算过关)
  1. 给 IP 地址 + 掩码(或 /n),求网络地址、广播地址、可分配地址范围和个数(4.3 块大小法)。
  2. 定长划分求子网数 / 每子网主机数;变长划分给出各子网地址块(4.3 VLSM)。
  3. 查路由表(最长前缀匹配)、路由聚合、按拓扑填路由表(4.4)。
  4. 给 MTU 和总长度,求各分片的总长度、片偏移、MF(4.2)。
  5. 从十六进制抓包里读出首部长度、总长度、协议、地址、TTL(4.2)。
  6. 经过 NAT 前后分组的源 / 目的地址和端口(4.5)。
  7. 一次通信中 ARP 解析谁、各段帧的 MAC 地址;DHCP 各报文的地址(4.6)。
  8. RIP 收到邻居表后更新路由表;坏消息传得慢(4.8)。
  9. 链路状态下用 Dijkstra 求最短路径,链路变化后重算并聚合(4.8)。
  10. 各路由协议的封装(UDP / IP / TCP)与所在层次(4.8 层次路由)。

4.✎本篇真题闯关(40 题)

本篇各小节挂的真题全部在这里,按小节排好。可以展开后一道道做,也可以用弹窗模式连续做。做题记录(对/错)只保存在你这台电脑的浏览器里,小节标题下的题号会随之变绿或变红。

第 5 篇 · 传输层

传输层:从“主机到主机”到“进程到进程”,TCP 怎样做到可靠

网络层把分组送到了目的主机,但主机上同时跑着浏览器、QQ、下载软件……传输层用端口号把数据交给正确的进程。它有两个协议:UDP 简单、快,不保证送到;TCP 建立连接,用序号、确认、重传保证可靠,用滑动窗口做流量控制,用慢开始、拥塞避免、快重传、快恢复做拥塞控制。选择题最爱考序号和确认号的计算、三次握手四次挥手、拥塞窗口的变化;综合题(2016-41、2023-47、2026-47)会把它们串起来。

对应:王道计算机网络第 5 章难度:★★★★选择题真题 23 道

本篇地图:先看全貌,再逐节攻克

传输层的内容看起来是“两个协议”,其实可以挂在一个问题上:IP 只负责把分组尽力送到对方主机,不保证不丢、不乱、不重复——那么应用程序收到的数据怎样才能“一个字节都不差”?UDP 的回答是“不管,交给应用自己”;TCP 的回答是一整套机制:先建立连接(5.4),给每个字节编号并要求确认、丢了就重传(5.5),对方忙不过来就少发(流量控制,5.5),网络堵了也少发(拥塞控制,5.6)。

传输层5.1 端口与复用分用端口三类 · 熟知端口表 · 套接字与四元组 · 分用看目的端口5.2 UDP ★★8 B 首部 · 12 B 伪首部 · 检验和三步(相加 → 回卷 → 取反)· 面向报文5.3 TCP 首部 ★序号 / 确认号按字节 · 数据偏移 × 4 B · 六个标志 · 窗口 · MSS5.4 连接管理 ★★★三次握手 · 四次挥手 · TIME-WAIT 等 2MSL · 状态机 · 时间计算5.5 可靠传输 ★★★累积确认 · 发送窗口三指针 · RTO · 快重传 · rwnd 与零窗口5.6 拥塞控制 ★★★慢开始 · 拥塞避免 · 快重传 + 快恢复 · cwnd 逐轮 · min(cwnd, rwnd)
图 5-1 传输层知识树。红框是每年必考的“高频区”:5.4~5.6 三节合计 19 道选择题,三道 TCP 综合题也全在这里。蓝框常考计算(检验和、传输效率),白框是概念与基础。
小节选择题综合题(大题)一句话说清考什么
5.1 端口、复用分用(1)抓包题读端口分用看目的端口;熟知端口号;套接字
5.2 UDP3—UDP 提供哪些服务;首部 4 个字段;检验和反码求和
5.3 TCP 首部12011-47、2012-47 读 TCP 首部首部 20~60 B;序号、确认号、窗口的单位都是字节
5.4 连接管理62026-47握手各报文的 SYN / ACK / seq / ack;挥手的状态;释放连接的时间
5.5 可靠传输与流量控制62016-41、2026-47确认号怎么算;“还能发多少”;快重传的时刻
5.6 拥塞控制72016-41、2023-47超时 / 3 个重复确认后 cwnd 与 ssthresh;数 RTT;发送窗口取小

5.1 栏的(1)表示 2018-39 同时挂在 5.1 和 5.2。

建议的学习顺序与学时
  1. 5.1 → 5.2(约 1.5 小时):先弄清“端口是给进程编号”,再学最简单的 UDP,顺便练熟反码求和。
  2. 5.3 → 5.4(约 3 小时):TCP 首部的序号、确认号是后面所有计算的基础;握手、挥手要能默画时序图并写出每个报文的字段。
  3. 5.5 → 5.6(约 4 小时):发送窗口“三指针”和 cwnd 逐轮表是两个必会的工具,每个都要亲手做三道题以上。
  4. 最后做第 7 篇 t6 TCP 综合题(约 2 小时),把三个机制串起来。

5.1传输层的功能、端口与套接字

★ 考过选择题

为什么还要一层:从“主机到主机”到“进程到进程”

问题:你的电脑同时开着浏览器、微信和一个下载软件。一个 IP 分组到达了,网络层只知道“它是发给这台电脑的”——那么它该交给浏览器、微信还是下载软件?另外,IP 会丢分组、会让分组乱序,浏览器显示网页时却要求一个字节都不能错,谁来补这个窟窿?

比喻:公寓楼的收发室

快递员(网络层)只负责把包裹送到楼号(IP 地址)。楼里的收发室(传输层)看包裹上的房间号(端口号),把它送到具体的住户(进程)手里;住户寄出的包裹也先交到收发室,由收发室统一交给快递员。有的收发室还提供“挂号”服务(TCP):每件都登记编号、对方签收后回执,丢了重寄;有的只提供“平信”服务(UDP):贴上房间号就交出去,不管送没送到。

哪里不像:楼里的房间号是固定的,而客户进程的端口号往往是临时分配的,用完就收回;同一个进程也可以同时占用几个端口。

  • 网络层提供主机之间的逻辑通信;传输层提供应用进程之间的逻辑通信,称为端到端通信。
  • 传输层只存在于主机(端系统)中。路由器只有下三层,转发分组时根本不看传输层首部(NAT 路由器是例外,它会改端口号)。
  • 传输层的主要功能:① 复用与分用(用端口区分进程);② 差错检测(检验和覆盖首部和数据,而 IP 只检验首部);③ TCP 还提供可靠传输、流量控制、拥塞控制和连接管理。
  • 传输层向上屏蔽了下面网络的细节:不管底下是什么拓扑、经过多少路由器,应用进程看到的都是一条“端到端的逻辑通信信道”。TCP 让这条信道看起来可靠,UDP 则是一条不可靠的信道。
主机 A路由器 R1路由器 R2主机 B应用层:浏览器传输层网络层链路层物理层应用层:Web 服务器传输层网络层链路层物理层网络层链路层物理层网络层链路层物理层传输层:进程 ↔ 进程(端到端,路由器不参与)网络层:主机 ↔ 主机,经路由器一跳一跳地转发
图 5-2 端到端 vs 逐跳。传输层的“对话”只发生在两台主机之间(蓝色虚线),中间的路由器只有下三层,看不到也不处理 TCP / UDP 首部;网络层则要在每个路由器上查表转发(绿色箭头)。

传输层有两个主要协议:UDP(用户数据报协议)和 TCP(传输控制协议)。它们的数据单位分别叫 UDP 用户数据报和 TCP 报文段(segment)。两者的详细对比放在本篇最后的 5.6 对比表,学完 TCP 再看更有体会。

网络层(IP)传输层(TCP / UDP)
通信的两端主机 ↔ 主机进程 ↔ 进程
靠什么找对方IP 地址IP 地址 + 端口号(套接字)
在哪里运行主机和所有路由器只在主机
差错检验只检验首部首部 + 数据(含伪首部)
可靠性尽最大努力交付TCP 可靠;UDP 尽最大努力
数据单位IP 数据报(分组)TCP 报文段 / UDP 用户数据报

传输层的两种服务:无连接(UDP)与面向连接(TCP)

问题:同样是把数据交给另一台主机上的进程,网页、文件要求“一个字节都不能错、顺序不能乱”,而查一个域名、看直播只求“快”,丢一点也能接受。传输层怎样同时满足这两种需求?——提供两种服务,让应用自己挑。

比喻:打电话与寄明信片

面向连接像打电话:先拨号、对方接起(建立连接),再说话(传数据),说完挂断(释放连接);说的话一句接一句,对方听漏了会让你重说。无连接像寄明信片:写上地址就投进邮筒,不用先问对方在不在,每张明信片各走各的,丢了也没人告诉你。

哪里不像:真正的电话会占用一条线路(电路交换);TCP 的“连接”却只是两台主机里各自记着的一组状态(序号、窗口、缓存),中间的路由器根本不知道这条连接存在,报文段照样一个个独立选路——这一点正是常考的陷阱。

教材说法:传输层向应用层提供两种服务。

  • 面向连接的服务(TCP):通信分三个阶段——建立连接、数据传送、释放连接;提供可靠、按序、无重复的字节流传输,还有流量控制和拥塞控制。代价是首部大(20 ~ 60 B)、要握手、要维护状态。
  • 无连接的服务(UDP):不建立连接,有数据就直接发;尽最大努力交付(不确认、不重传、不保证按序),只做差错检测(检验和出错就丢弃)。好处是首部只有 8 B、没有握手时延,还支持一对多、多对多通信。
主机 A客户进程主机 B服务器进程面向连接服务(TCP):建立 → 传送 → 释放SYN① 建立连接(三次握手)SYN + ACKACK数据② 数据传送:有序号、有确认确认FIN③ 释放连接(四次挥手,略)无连接服务(UDP):有数据就发UDP 用户数据报不握手、不确认✕UDP 用户数据报丢了也没人重发
图 5-3 两种传输服务的过程对比。上半部分 TCP 先用三次握手建立连接,数据有序号和确认,最后释放连接;下半部分 UDP 直接发送,第二个数据报丢失后发送方并不知道。
无连接(UDP)面向连接(TCP)
通信前不建立连接三次握手建立连接
可靠性尽最大努力交付可靠:确认 + 重传 + 按序
数据的边界面向报文(应用交多少发多少)面向字节流(会拆分、合并)
流量 / 拥塞控制没有有
通信对象一对一、一对多、多对多只能一对一(点对点)
首部8 B20 ~ 60 B
典型应用DNS 查询、DHCP、TFTP、SNMP、RIP、实时音视频HTTP、FTP、SMTP、POP3、TELNET、BGP
跟我判断一遍:哪些说法对
  1. “TCP 是面向连接的,所以同一条 TCP 连接的报文段一定沿同一条路径传输。”——错。网络层仍是数据报服务,每个 IP 分组独立选路,可能走不同的路、乱序到达;TCP 在接收端按序号重新排好再交给应用。
  2. “UDP 不可靠,所以 UDP 不检查差错。”——错。UDP 有检验和(覆盖伪首部、首部和数据),检出错误就丢弃;它只是不负责让发送方重发。
  3. “面向连接就一定可靠。”——错。这是两件事:网络层的虚电路是面向连接的,却不一定可靠;802.11 是无连接的,却对每帧确认。只是在传输层,TCP 恰好“面向连接 + 可靠”,UDP 恰好“无连接 + 不可靠”(见 1.4 各层协议一览)。
  4. “应用用 UDP 就不可能可靠传输。”——错。可靠性可以由应用层自己做(TFTP 就自己确认、重传;HTTP/3 的 QUIC 也跑在 UDP 上)。
真题怎么考

直接问服务类型的题不多,但它是很多题的“第一步判断”:2018-33 问哪个应用层协议可以使用传输层的无连接服务(DNS);2015-33、2009-40 问邮件、FTP 用的传输层协议;2025-39 用“UDP 一问一答只要 1 个 RTT、TCP 要先握手多 1 个 RTT”出计算题。判别方法:看到“一问一答、报文短、广播、还没有 IP 地址、实时性”想 UDP;看到“文件、网页、邮件、要求可靠”想 TCP。失效的情况:DNS 也可以用 TCP(应答超过 512 B、区域传送),所以题目问“只能用”时要小心。

易错辨析
  • TCP 的“连接”是逻辑连接,只存在于两端主机;它与电路交换的“物理连接”、网络层虚电路的“沿途每个结点都记住的连接”都不同。
  • 无连接 ≠ 无差错检测;面向连接 ≠ 一定按同一路径传输。
  • 传输层的服务是给应用进程用的;网络层的服务(IP 只提供无连接的数据报服务)是给传输层用的,两层的服务类型不必相同。

端口号:给进程编的“房间号”

操作系统用进程号(PID)标识进程,但不同操作系统的进程号格式不同,而且每次启动都会变——拿它当“地址”没法让对方知道。所以 TCP/IP 用一个与操作系统无关的协议端口号(简称端口)来标识应用进程。

  • 端口号 16 位,取值 0 ~ 65535,共 216 = 65536 个。
  • 端口号只有本地意义:它只标识本主机上的进程。两台主机上的 80 端口毫无关系;要在因特网上找到一个进程,必须“IP 地址 + 端口号”一起给出。
  • TCP 和 UDP 的端口号是各自独立的:TCP 的 53 号端口和 UDP 的 53 号端口可以属于不同进程。
熟知端口 0 ~ 1023登记端口 1024 ~ 49151短暂端口 49152 ~ 65535065535服务器端:常用服务(IANA 指派)服务器端:其他服务(向 IANA 登记)客户端:临时选用,用完释放
图 5-4 端口号的三类(示意,长度不按比例)。前两类给服务器进程用,固定不变,客户才找得到它;第三类给客户进程用,只在通信时存在。

为什么服务器要用固定的熟知端口?因为通信总是由客户发起的:客户必须事先知道服务器在哪个端口“等着”,就像大家都知道报警电话是 110。而服务器回信时,只要看客户发来的报文段里的源端口就行,所以客户端口可以临时选。

应用端口传输层记忆方法 / 考点
FTP21(控制)
20(数据,主动模式)
TCP两个连接:控制连接在整个会话期间一直保持,数据连接每传一个文件建一次(6.3 节)
SSH22TCP加密的远程登录,紧挨着 FTP
TELNET23TCP明文远程登录
SMTP25TCP发邮件(客户 → 服务器、服务器 → 服务器)
DNS53UDP(查询)
TCP(区域传送)
一问一答用 UDP;应答超过 512 B 或主从服务器同步数据库时用 TCP
DHCP67(服务器)
68(客户)
UDP客户还没有 IP 地址,只能广播,不可能先建 TCP 连接(4.6 节)
TFTP69UDP简单文件传送,自己做确认重传
HTTP80TCPHTTP/3 改用基于 UDP 的 QUIC(拓展)
POP3110TCP收邮件(下载到本地)
IMAP143TCP收邮件(在服务器上管理)
SNMP161 / 162UDP网管:161 收请求,162 收陷阱(trap)报文
BGP179TCP路由协议里唯一用 TCP 的(4.8 节)
HTTPS443TCPHTTP + TLS 加密
RIP520UDP路由协议用 UDP 的那个
怎么记
  • 20 多号是“老牌 TCP 服务”:FTP 20/21、SSH 22、TELNET 23、SMTP 25,依次递增。
  • DNS 53、DHCP 67/68、TFTP 69、SNMP 161、RIP 520 都用 UDP——共同点是“一问一答、报文短”或“还没有地址”。
  • 80 → 443:HTTP 加密后换到 443;110 → 143:收邮件从 POP3 换成 IMAP。

复用与分用:两级“分拣”

复用(multiplexing):发送方的多个应用进程可以共用同一个传输层协议(TCP 或 UDP)传送数据——每个进程交下来的数据都加上带有端口号的首部,再一起交给 IP。分用(demultiplexing):接收方的传输层剥去首部后,根据目的端口号把数据交付给正确的进程。

其实分用分两级完成:IP 先看 IP 首部的协议字段(6 = TCP,17 = UDP)决定交给哪个传输层协议;TCP / UDP 再看目的端口决定交给哪个进程。这正好对应 1.4 节讲的服务访问点(SAP):网络层的 SAP 是协议字段,传输层的 SAP 是端口。

Web 服务器进程TCP 端口 80邮件服务器进程TCP 端口 25DNS 服务器进程UDP 端口 53TCPUDPIP目的端口 = 80目的端口 = 25目的端口 = 53协议字段 = 6协议字段 = 17到达的 IP 数据报分用(自下而上):先按协议字段选 TCP / UDP,再按目的端口选进程;复用(自上而下)方向相反。
图 5-5 分用的两级分拣。目的端口决定交给哪个进程(2018-39);源端口只在需要回信时才有用。

套接字:IP 地址 + 端口号

端口只有本地意义,要在整个因特网上唯一地标识一个进程(准确说是进程通信的一个端点),需要把 IP 地址和端口号拼在一起,叫套接字(socket):

套接字 socket = (IP 地址 : 端口号)  例:(59.1.1.10 : 80) 一条 TCP 连接 = {套接字 1, 套接字 2} = {(IP1 : 端口1), (IP2 : 端口2)}

每一条 TCP 连接唯一地被通信两端的两个套接字(即“源 IP、源端口、目的 IP、目的端口”这四元组)所确定。同一个套接字可以出现在多条连接里——Web 服务器的 (59.1.1.10 : 80) 同时和成千上万个客户连着,只要另一端不同,就是不同的连接。

客户 A 202.1.1.2浏览器标签 1:端口 50001浏览器标签 2:端口 50002客户 B 202.1.2.3浏览器:端口 50001服务器 S 59.1.1.10Web 服务器进程80① (202.1.1.2 : 50001, 59.1.1.10 : 80)② (202.1.1.2 : 50002, 59.1.1.10 : 80)③ (202.1.2.3 : 50001, 59.1.1.10 : 80)三条连接的服务器端套接字相同,但四元组各不相同,所以 S 能把它们分开
图 5-6 一条 TCP 连接由四元组唯一确定。①②来自同一台主机,靠客户端口区分;①③客户端口相同,靠客户 IP 区分。
跟我做一遍:从抓包里认出谁是客户、谁是服务器

在服务器 S 上抓到一个 TCP 报文段,首部前 4 个字节是 C3 51 00 50。

  1. TCP 首部的前 2 字节是源端口,后 2 字节是目的端口(UDP 也一样)。
  2. 源端口 0xC351 = 12 × 4096 + 3 × 256 + 5 × 16 + 1 = 50001:在 49152 ~ 65535 里,是客户的短暂端口。
  3. 目的端口 0x0050 = 80:熟知端口,HTTP。
  4. 结论:这是客户发给 Web 服务器的报文段。服务器回的报文段,源端口和目的端口正好对调(80 → 50001)。

综合题 2011-47、2012-47 就是这样从十六进制里读出端口,判断“这是 HTTP 访问”“哪个是客户”的。

更细一点(拓展,Kurose 教材的说法):UDP 的分用只看目的 IP + 目的端口,来自不同客户的数据报都交给同一个 UDP 套接字;TCP 服务器为每条连接创建一个新的套接字,分用时要看四元组。408 的口径简化为“分用看目的端口号”。

真题怎么考

2018-39 问“接收方 UDP 分用时依据哪个字段”——目的端口号。命题角度还有:熟知端口号属于哪个范围、某个应用用 TCP 还是 UDP、端口号几位、一条 TCP 连接由什么确定。综合题里端口号常和 NAT 一起出现(2020-47:NAPT 要改源端口)。判别口诀:“交给谁”看目的,“谁发的”看源——网络层看 IP 地址,传输层看端口。

易错辨析
  • 端口号是传输层的概念,写在 TCP / UDP 首部里,IP 首部里没有端口。
  • “端口”在链路层设备(交换机端口)、路由器(接口)里指的是硬件接口,和传输层的协议端口完全是两回事。
  • 客户端口不必是 49152 以上——很多操作系统用 1024 以上的任意空闲端口;考题说“短暂端口”时按 49152 ~ 65535 答。
  • DNS 主要用 UDP,但不是只用 UDP;DHCP 只用 UDP。

选择题变式:考纲补充

5.1 还没有以它为主的真题。下面是针对考纲知识点自编的题,做完看“考点”回到对应的讲解。

变式计网考纲补充(尚无真题)
下列关于传输层端口号的叙述中,错误的是( )。
  • A. 端口号长度为 16 位
  • B. 端口号只有本地意义,不同主机上相同的端口号互不相干
  • C. 熟知端口号的范围是 0 ~ 1023
  • D. TCP 和 UDP 的同一个端口号必须分配给同一个应用进程
展开解析

DTCP 和 UDP 的端口号各自独立,TCP 的 53 号端口和 UDP 的 53 号端口可以属于不同进程。A、B、C 都正确。

  • A 不选正确:端口号 16 位,取值 0 ~ 65535。
  • B 不选正确:端口号只标识本主机上的进程,两台主机上的 80 端口毫无关系。
  • C 不选正确:熟知端口号是 0 ~ 1023,留给最常用的服务器程序。
  • D 选错误:TCP 和 UDP 的端口号各自独立,TCP 53 和 UDP 53 可以属于不同进程。

考点:5.1 节“端口号:给进程编的房间号”。

变式计网考纲补充(尚无真题)
Web 服务器 S 的 80 端口同时与多个客户保持 TCP 连接。S 区分这些连接所依据的是( )。
  • A. 双方的端口号
  • B. 双方的 IP 地址
  • C. 双方的 IP 地址和端口号(四元组)
  • D. 目的 IP 地址和目的端口号
展开解析

C一条 TCP 连接由两端的套接字(源 IP、源端口、目的 IP、目的端口)唯一确定。只看端口号(A)区分不了来自不同主机的同一客户端口;所有连接的目的 IP 和目的端口(D)都相同。

  • A 错只看端口号区分不了来自不同主机的同一客户端口(两台主机都可能用 50001)。
  • B 错只看 IP 地址区分不了同一台主机开的多条连接(如浏览器的两个标签页)。
  • C 对对:四元组唯一确定一条连接。
  • D 错所有连接的目的 IP 和目的端口都是服务器的 (S, 80),完全相同,靠它们区分不了。

考点:5.1 节“套接字:IP 地址 + 端口号”。

5.2UDP:首部与检验和

★★ 常考选择题

UDP 为什么存在:快、轻、不建连接

问题:查一个域名的 IP 地址,只需要发一个问题、收一个回答。如果先花一个 RTT 建 TCP 连接、最后再花时间释放连接,时间就翻了几倍。视频通话时,迟到 1 秒的画面已经没用了,重传它反而会拖累后面的画面。这类应用更需要的是“快”,而不是“一个字节都不丢”。

比喻:寄明信片

写好地址和房间号,投进邮筒就走(无连接)。每张明信片独立投递,一张就是一张,邮局不会把两张合成一张,也不会把一张裁成两半(面向报文)。丢了邮局不负责,也不会通知你(尽最大努力交付)。哪里不像:明信片被雨水弄花了你未必看得出,而 UDP 有检验和,能发现“内容被改了”,发现后直接扔掉。

UDP 只在 IP 的数据报服务之上增加了很少一点功能:复用分用和差错检测(2014-39)。它的特点:

  1. 无连接:发送前不建立连接,没有握手的时延;发送方和接收方都不需要维护连接状态。
  2. 尽最大努力交付,即不保证可靠:检验和发现错误就丢弃,没有确认、没有重传。需要可靠的应用要在应用层自己做(如 TFTP、QUIC)。
  3. 面向报文:应用层交下来多长的报文,UDP 就照样加上首部发出去,不合并、不拆分,保留报文的边界。因此应用要选择合适的报文大小:太长了 IP 要分片,太短了首部开销比例大。
  4. 没有拥塞控制:网络拥塞时发送速率也不降低,适合实时应用(但可能加剧拥塞)。
  5. 支持一对一、一对多、多对一、多对多的交互通信(可以广播、多播;TCP 只能一对一)。
  6. 首部开销小:只有 8 字节(TCP 至少 20 字节)。

UDP 报文太长会怎样:UDP 不拆分报文,一个 3000 B 的用户数据报交给 IP,经过 MTU = 1500 B 的以太网时由 IP 分片(4.2 节)。任何一片丢失,目的主机都无法重组,整个用户数据报作废,而 UDP 又不重传——所以 DNS 等基于 UDP 的应用都尽量把报文控制在 512 B 左右,避免分片。

UDP 首部:8 字节、4 个字段

08162431字节源端口不需要回信时可全 0目的端口分用的依据0长度首部 + 数据,最小 8检验和全 0 表示不检验4数据(长度可变,奇数字节也可以)8首部8 字节数据部分
图 5-7 UDP 首部格式。4 个字段各 2 字节。长度字段包括首部本身,所以最小是 8(没有数据)。
字段是什么怎么考
源端口发送进程的端口;需要对方回信时填写,不需要时可全 0分用不看它(2018-39 的干扰项)
目的端口接收进程的端口分用的依据;目的端口没有对应进程时,接收方丢弃数据报并发 ICMP“端口不可达”(traceroute 就利用了这一点)
长度UDP 用户数据报的总长度(首部 + 数据),单位字节最小 8;最大 65535,但再扣掉 IP 首部 20 B,数据最多 65535 − 20 − 8 = 65507 B
检验和检测整个用户数据报(连同伪首部)在传输中有没有出错计算方法见下;在 IPv4 中是可选的,全 0 表示“没算”

跟我算:从 IP 首部推出 UDP 长度。抓到一个 IP 分组,首部第 1 字节 0x45(首部长度 5 × 4 = 20 B),总长度字段 0x0024 = 36 B,协议字段 17。那么 UDP 用户数据报长度 = 36 − 20 = 16 B(UDP 首部里的长度字段也应是 16),其中数据 16 − 8 = 8 B。抓包题里两个长度字段对得上,正好可以互相验证。

UDP 的面向报文和 TCP 的面向字节流,是两者最根本的区别之一,看图最清楚:

UDP:面向报文(保留边界)TCP:面向字节流(不保留边界)发送方应用写 3 次100 B200 B50 B各加 8 B 首部HHH3 个 UDP 用户数据报,一个报文一个接收方应用收 3 次,每次正好一个报文100 B200 B50 B同样写 3 次,进了发送缓存就连成一串350 个字节,按序编号字节流TCP 按 MSS = 200 B 切分H200 BH150 B2 个 TCP 报文段,切在哪里由 TCP 决定接收方应用读 2 次,读多少与发送时无关一次读到 300 B50 BH 表示首部;图中长度按 0.8 像素 / 字节画,首部宽度只是示意
图 5-8 面向报文 vs 面向字节流。UDP 发送方写几次、接收方就收几次,一一对应;TCP 只保证字节的顺序,不保证“写”和“读”的分界一致——应用如果需要分界,要自己在数据里加长度或分隔符。

伪首部:检验和多管一件事

计算 UDP 检验和时,要在 UDP 用户数据报前面临时加一个 12 字节的伪首部。它取自 IP 首部的几个字段,只参与计算,既不向下传送,也不向上递交。

08162431字节源 IP 地址取自 IP 首部0目的 IP 地址取自 IP 首部4全 0协议 = 17TCP 为 6UDP 长度同首部里的长度字段8伪首部12 字节
图 5-9 UDP 伪首部(12 字节)。TCP 的伪首部格式完全相同,只是协议号写 6、长度写 TCP 报文段长度。

为什么要伪首部?UDP 首部里只有端口号,没有 IP 地址。把源、目的 IP 地址和协议号也算进检验和,接收方就能顺便核对“这个数据报确实是发给我的、确实是交给 UDP 的”——万一 IP 层把它误投到别的主机或别的协议,检验和就对不上。(代价是:NAT 改了 IP 地址,就必须重算 UDP / TCP 的检验和,4.5 节讲过。)

补课:二进制反码求和,到底在算什么

先用 4 位的小数字体会:算 1101 + 0110。

  1. 普通二进制相加:1101 + 0110 = 10011,结果有 5 位,最高位溢出了一个 1。
  2. 回卷:把溢出的 1 加回到最低位:0011 + 1 = 0100。
  3. 如果这就是全部数据,检验和 = 0100 取反 = 1011。
  4. 接收方把三个数(含检验和)全加起来:1101 + 0110 + 1011 = 1 1110,回卷 1110 + 1 = 1111,全 1 → 没发现错误。

为什么要“回卷”?4 位数满 16 进 1,把这个 1 加回最低位,相当于“满 15 归零”——反码求和其实就是除以 15(16 位时是 65535)取余数的加法:13 + 6 = 19,19 除以 15 余 4,正好是 0100。所以它和相加的顺序无关,可以先分组求和再合起来,也可以全部加完再一次性回卷(溢出几就加几)。

十六进制手算小技巧:一位十六进制 = 4 位二进制;逐位相加满 16 进 1(A = 10 … F = 15)。

检验和:跟我算一遍

  1. 发送方:检验和字段先填 0;在数据报前加上伪首部;数据是奇数个字节时末尾临时补一个全 0 字节(也不发送)。
  2. 把所有内容按 16 位一组做二进制反码求和(相加,最高位的进位回卷到最低位)。
  3. 把结果取反,填入检验和字段,丢掉伪首部和补的 0,发送。
  4. 接收方:同样加上伪首部(和需要时补的 0),把所有 16 位字连同检验和一起反码求和。结果全 1(取反后全 0)→ 没发现错误,交付;否则丢弃(可以上交应用并附上出错警告,但一般是直接丢弃)。
例跟我算
主机 192.168.1.10 的进程用源端口 50000 向主机 192.168.1.1 的 UDP 7 号端口(回送服务)发送 3 字节数据“Hi!”(ASCII 码 48 69 21)。求 UDP 检验和。
跟我算

第 1 步:确定长度。UDP 长度 = 8 + 3 = 11 = 0x000B。数据是奇数个字节,末尾补 00,凑成 4869、2100 两个字。

第 2 步:把要相加的 16 位字列出来(检验和字段先写 0000):

来源内容16 位字(十六进制)小计
伪首部源 IP 192.168.1.10、目的 IP 192.168.1.1C0A8 010A C0A8 010118377
全 0 字节 + 协议号 170011
UDP 长度 11000B
UDP 首部源端口 50000、目的端口 7、长度 11、检验和 0C350 0007 000B 0000C362
数据“Hi!” + 补的 004869 21006969

第 3 步:相加。18377 + C362 + 6969 = 2B042(十六进制)。结果超过 4 位十六进制,高位溢出了 2。

第 4 步:回卷。B042 + 2 = B044。

第 5 步:取反。B044 = 1011 0000 0100 0100,逐位取反 = 0100 1111 1011 1011 = 4FBB。检验和字段填 4FBB。

第 6 步:接收方验算。12 个字里把 0000 换成 4FBB 再相加:2B042 + 4FBB = 2FFFD,回卷 FFFD + 2 = FFFF,全 1,没有错。如果传输中 “H”(48)错成了 “I”(49),同样的计算得到 0100,不是全 1,接收方丢弃这个数据报。

算出全 0 要存全 1

UDP 规定检验和字段全 0 表示“发送方没有计算检验和”。万一真算出来是 0000 怎么办?例如所有字相加正好是 1234 + EDCB = FFFF,取反得 0000——这时发送 FFFF。在反码运算里 0000 和 FFFF 都表示“零”,接收方照常验算:1234 + EDCB + FFFF = 1 FFFE,回卷得 FFFF,全 1,照样通过。

2024-39计网
若 UDP 协议在计算校验和过程中,计算机得到中间结果为 1011 1001 1011 0110 时,还需要加上最后一个 16 位数 0110 0101 1100 0101,则最终计算得到的校验和是( )。
  • A. 0001 1111 0111 1011
  • B. 0001 1111 0111 1100
  • C. 1110 0000 1000 0011
  • D. 1110 0000 1000 0100
展开解析

考点5.2 UDP 检验和的计算

C反码求和:普通二进制相加,最高位的进位回卷加到最低位;全部加完后取反。

  1. 1011 1001 1011 0110 + 0110 0101 1100 0101 = 1 0001 1111 0111 1011(17 位,最高位进位 1)。
  2. 进位回卷:0001 1111 0111 1011 + 1 = 0001 1111 0111 1100。
  3. 取反:1110 0000 1000 0011。
  • A 错只做了普通加法,丢掉了进位,也没有取反。
  • B 错0001 1111 0111 1100 是相加、回卷之后的中间结果:回卷做了,但漏了最后一步取反(取反后才是 1110 0000 1000 0011)。
  • C 对1110 0000 1000 0011。
  • D 错丢掉进位后直接取反(A 的反码),漏了回卷加 1。

三步:相加 → 进位回卷 → 取反。接收方把检验和也加进去,结果全 1 才算无错。

这道题的四个选项正好对应四种“半途而废”:A 只做了加法(丢了进位、没取反),B 回卷了但没取反,D 丢了进位直接取反,只有 C 三步都做了。按 B9B6 + 65C5 = 1 1F7B → 回卷 1F7C → 取反 E083 = 1110 0000 1000 0011 验证一遍。

真题怎么考

UDP 的 3 道选择题:2014-39 问 UDP 提供的服务(无连接、复用分用;能检错 ≠ 可靠);2018-39 问分用的字段;2024-39 考反码求和的计算。可能的变化:伪首部有哪些字段、有多长、发不发送;检验和覆盖哪些部分(伪首部 + 首部 + 数据);为什么全 0 要改存全 1;UDP 长度字段的含义;UDP 能否广播 / 多播。检验和的计算题一律用“相加 → 回卷 → 取反”三步,选项里的错误答案通常就是漏掉其中一步。

易错辨析
  • IP 首部检验和只检验首部;UDP / TCP 检验和检验伪首部 + 首部 + 数据。
  • 伪首部 12 B,不发送,也不计入 UDP 长度;补的全 0 字节也不发送。
  • UDP 检验和在 IPv4 中可选(全 0 = 不用),TCP 检验和是必须的;IPv6 中 UDP 检验和也变成必须(因为 IPv6 首部没有检验和了,拓展)。
  • 接收方验算的结果是全 1(不是全 0)才算正确;有的书说“取反后为 0”,是同一回事。
  • 检验和只能发现错误,不能纠错,也不是百分之百能发现(两个错误互相抵消时就漏检)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2014-39 改
下列字段中,不属于 UDP 首部的是( )。
  • A. 源端口
  • B. 目的端口
  • C. 长度
  • D. 序号
展开解析

DUDP 首部只有 4 个字段:源端口、目的端口、长度、检验和。序号是 TCP 的。

  • A 不选源端口是 UDP 首部的第一个字段(16 位),需要回信时填写。
  • B 不选目的端口是 UDP 首部的字段,分用就靠它。
  • C 不选长度是 UDP 首部的字段,表示首部加数据的总长度。
  • D 选序号是 TCP 首部的字段,UDP 首部里没有,选它。

变化点:由“UDP 提供什么服务”换成“UDP 首部有什么”。

变式计网由 2024-39 改
UDP 计算检验和时,中间结果为 F0F0H,最后还要加上 1234H,则最终的检验和是( )。
  • A. FCDAH
  • B. 0325H
  • C. 0324H
  • D. FCDBH
展开解析

AF0F0H + 1234H = 1 0324H,进位回卷得 0325H,取反得 FCDAH。

  • A 对对:F0F0H + 1234H = 1 0324H,回卷 0325H,取反 FCDAH。
  • B 错0325H 是相加、回卷后的中间结果,漏了最后一步取反。
  • C 错0324H 只做了普通加法,丢掉了进位,也没有取反。
  • D 错FCDBH 是丢掉进位直接取反(0324H 取反),漏了回卷加 1。

变化点:换一组数,步骤不变:相加 → 回卷 → 取反。

变式计网由 2018-39 改
计算 UDP 检验和时使用的伪首部中不包括( )。
  • A. 源 IP 地址
  • B. 源端口号
  • C. 目的 IP 地址
  • D. 协议号
展开解析

B伪首部 12B:源 IP、目的 IP、全 0 字节、协议号 17、UDP 长度。端口号在 UDP 首部里,不在伪首部中。

  • A 不选源 IP 地址是伪首部的第一个字段(取自 IP 首部)。
  • B 选端口号在 UDP 首部里,不在伪首部中,选它。
  • C 不选目的 IP 地址是伪首部的字段,用来核对数据报确实是发给本机的。
  • D 不选协议号(UDP 为 17)是伪首部的字段,它前面还有一个全 0 字节。

变化点:由“分用看哪个字段”延伸到伪首部。

变式计网考纲补充(尚无真题)
某主机计算 UDP 检验和时,取反后的结果恰好为全 0,则该主机在 UDP 首部检验和字段中应填入( )。
  • A. 全 0
  • B. 全 1
  • C. 不填写,省略检验和字段
  • D. 重新选择源端口后再计算
展开解析

BUDP 规定检验和字段全 0 表示“没有计算检验和”。算出全 0 时改填全 1:反码运算中全 0 和全 1 都表示零,接收方照常验算仍能通过。

  • A 错填全 0 会被接收方理解为“发送方没有计算检验和”,不再验算。
  • B 对对:改填全 1。
  • C 错检验和字段是 UDP 首部固定的 2 字节,不能省略。
  • D 错换源端口没有必要:反码运算中全 1 也表示零,直接改填全 1 就行。

考点:5.2 节“算出全 0 要存全 1”。

5.3TCP 的特点与报文段首部

★ 考过选择题

TCP 的五个特点

问题:IP 会丢分组、会让分组乱序、会重复交付,可网页、文件、邮件要求一个字节都不能错。TCP 就是在这样一个“不可靠的网络”之上,造出一条“可靠的管道”。

比喻:打电话 + 记账

打电话前要先拨号、对方接起来(建立连接),只能你们两个人说(点对点),两个人可以同时说话(全双工),挂电话也要互相说“再见”(释放连接)。再加上一本账:你说的每一个字都编了号,对方要报“我听到第几个字了”,没听到的你就重说(可靠)。哪里不像:电话线是真的接通了一条线路(电路交换),而 TCP 连接只是两端各自记着一些状态的逻辑连接,中间的路由器根本不知道这条“连接”存在。

  1. 面向连接:通信前先建立连接(三次握手),通信后释放连接(四次挥手)。
  2. 点对点:每条 TCP 连接只能有两个端点,所以 TCP 不支持广播和多播。
  3. 可靠交付:通过 TCP 连接传送的数据无差错、不丢失、不重复、按序到达。
  4. 全双工:两个方向可以同时传数据;双方都设有发送缓存和接收缓存。
  5. 面向字节流:把应用交下来的数据看成一串无结构的字节,每个字节都有序号;一个报文段装多少字节,由 TCP 根据对方的接收窗口和网络拥塞情况决定(见上一节的图)。
主机 A主机 B应用进程:write 写入 / read 读出应用进程:write 写入 / read 读出接收缓存发送缓存接收缓存发送缓存A → B 的报文段B → A 的报文段(可同时进行)
图 5-10 全双工:两个方向、四个缓存。发送缓存存放“应用写进来、还没发出”和“已发出、还没被确认”的数据;接收缓存存放“按序到达、应用还没读走”和“未按序到达”的数据。接收缓存剩多少空间,决定了 5.5 节的接收窗口 rwnd。

TCP 首部:逐字段读懂

TCP 的全部功能都体现在首部字段里。首部前 20 字节固定,后面是长度可变的选项(最长 40 字节),所以首部长度为 20 ~ 60 字节,必须是 4 字节的整数倍。

081624314101214字节源端口目的端口0序号 seq本报文段数据第一个字节的编号4确认号 ack期望收到对方下一个字节的编号8数据偏移× 4 B保留UAPRSF窗口 rwnd单位:字节12检验和含伪首部,协议号 6紧急指针URG = 1 时才有效16选项(长度可变,如 MSS)+ 填充(补齐到 4 B 的整数倍)20固定部分20 字节选项0 ~ 40 字节
图 5-11 TCP 首部格式。一行 32 位(4 字节)。前 5 行 20 字节是固定部分。序号、确认号、窗口都以字节为单位;数据偏移以 4 字节为单位。U A P R S F 六个 1 位的控制位依次是 URG、ACK、PSH、RST、SYN、FIN。
字段是什么怎么考
源端口、目的端口各 16 位,与 UDP 相同抓包题从这里认出 HTTP(80)、FTP(21)等
序号 seq(32 位)本报文段所发送数据的第一个字节的序号。序号范围 0 ~ 232 − 1,用完后从 0 重新开始(模 232)seq = 301、带 100 B 数据 → 这些字节编号 301 ~ 400,下一个报文段 seq = 401
确认号 ack(32 位)期望收到对方下一个报文段数据的第一个字节的序号。ack = N 表示到 N − 1 为止的所有数据都已正确收到ack = 对方 seq + 对方数据长度;中间缺数据就停在缺口处(累积确认,5.5 节)
数据偏移(4 位)即首部长度:TCP 报文段的数据部分离报文段起点有多远。单位 4 字节最小 5(20 B),最大 15(60 B);首部字节 0x50 的高 4 位 5 → 20 B。“首部长度 32 B” → 填 8
保留(6 位)今后使用,目前置 0新标准用掉了其中几位做拥塞通知(拓展),考试按 6 位保留答
6 个控制位URG、ACK、PSH、RST、SYN、FIN,各 1 位下面单独讲;握手挥手各报文的标志位是选择题高频点
窗口(16 位)发送本报文段一方的接收窗口:从本报文段的确认号算起,我还能接收多少字节它是给对方的“发送许可”;最大 65535 B(不用窗口扩大选项时)
检验和(16 位)检验首部 + 数据,计算方法同 UDP,伪首部协议号为 6TCP 的检验和是必须的(UDP 可选)
紧急指针(16 位)URG = 1 时有效,指出本报文段中紧急数据有多少字节(紧急数据放在数据部分的最前面)见下文的例子
选项MSS、窗口扩大、时间戳、SACK 等MSS 指数据部分的最大长度,不含 TCP 首部
初始序号为什么不从 0 开始,而要随机选
  • 防止新旧连接混淆:同一对主机、同样的端口刚关闭一条连接又马上建一条新的,若两次都从 0 开始编号,上一条连接迟到的旧报文段(序号正好落在新连接的窗口里)就会被当成新数据收下。每次随机选一个初始序号,新旧连接的序号区间几乎不可能重叠。
  • 安全:初始序号可以预测的话,攻击者不用看到双方的报文段,就能伪造一个序号“刚好对得上”的报文段插进连接,或者伪造 RST 把连接断掉。
  • 所以题目里两端的初始序号 x、y 总是“看起来很随意”的数(2011-39 的 11220、2019-39 的 2018 和 2046),它们之间没有任何关系。

跟我读一个 TCP 首部(抓包题的基本功)

例跟我读
在客户和 Web 服务器之间抓到一个 IP 分组,IP 首部 20 字节,总长度字段为 0x0228。其后的 TCP 首部(十六进制)为:
C3 51 00 50 00 00 27 11 00 00 13 89 50 18 FF FF 7E 21 00 00
(1) 这是谁发给谁的?(2) 序号、确认号是多少?哪些控制位为 1?(3) 携带了多少字节数据?服务器对它的确认号应是多少?
跟我读
字节内容字段与换算
0 ~ 1C3 51源端口 = 0xC351 = 50001(客户的短暂端口)
2 ~ 300 50目的端口 = 0x0050 = 80(HTTP)
4 ~ 700 00 27 11序号 = 0x2711 = 2 × 4096 + 7 × 256 + 1 × 16 + 1 = 10001
8 ~ 1100 00 13 89确认号 = 0x1389 = 4096 + 3 × 256 + 8 × 16 + 9 = 5001
12500101 0000:高 4 位是数据偏移 5 → 首部 5 × 4 = 20 B(没有选项);低 4 位是保留位
13180001 1000:最高 2 位是保留位,低 6 位依次是 URG ACK PSH RST SYN FIN = 0 1 1 0 0 0 → ACK = 1,PSH = 1
14 ~ 15FF FF窗口 = 65535 B(客户告诉服务器:我还能收 65535 字节)
16 ~ 177E 21检验和(接收方连同伪首部验算用)
18 ~ 1900 00紧急指针 0(URG = 0,本来也无效)

(1) 客户(端口 50001)发给 Web 服务器(端口 80),是一个携带 HTTP 请求数据的报文段(PSH = 1:请对方尽快交给应用)。

(2) seq = 10001,ack = 5001(客户已经收到服务器发来的、编号到 5000 为止的全部数据)。

(3) IP 总长度 0x0228 = 552 B,减去 IP 首部 20 B 和 TCP 首部 20 B,数据 = 512 B,编号 10001 ~ 10512。服务器的确认号 = 10001 + 512 = 10513,这也是客户下一个报文段的序号。

第 13 字节(标志字节)的常见取值,抓包时一眼认出
十六进制二进制(低 6 位:U A P R S F)含义出现在
0200 0000 10SYN第一次握手
1200 0100 10SYN + ACK第二次握手
1000 0100 00ACK第三次握手、纯确认、大多数数据段
1800 0110 00ACK + PSH交互式数据(HTTP 请求、键盘输入)
1100 0100 01FIN + ACK挥手的 FIN
1400 0101 00RST + ACK拒绝连接 / 异常终止

记法:从低位往高位,FIN = 1、SYN = 2、RST = 4、PSH = 8、ACK = 0x10、URG = 0x20,几个标志同时为 1 就把数加起来。

六个控制位与紧急指针

控制位置 1 的含义典型场景 / 考点
SYN同步序号:这是连接请求(SYN = 1,ACK = 0)或连接接受(SYN = 1,ACK = 1)报文段只出现在前两次握手;不带数据也消耗 1 个序号
ACK确认号字段有效连接建立后的所有报文段 ACK 都为 1;只有第一次握手的 SYN 报文段 ACK = 0
FIN本方数据已发完,请求释放(本方向的)连接不带数据也消耗 1 个序号
RST连接出现严重差错(主机崩溃等),必须释放连接再重建;也用来拒绝非法报文段或拒绝打开连接对一个没有进程监听的端口发 SYN,会收到 RST;RST 报文段不需要确认,连接立即作废
PSH推送:请接收方尽快把数据交付给应用,不必等缓存填满交互式应用(敲一个命令就想马上看到结果)
URG本报文段有紧急数据,应尽快传送;紧急指针字段有效例如用户中途要取消一个正在运行的程序(Ctrl + C)

PSH 和 URG 别混:PSH 是“这批数据请尽快交给应用”,数据仍按顺序排队,只是接收方不必等缓存攒满;URG 是“这里有要插队的数据”,紧急数据要放在报文段数据的最前面,发送方应尽快发送,接收方的应用可以先处理它。一个管“交付时机”,一个管“优先级”。

紧急指针跟我算:一个报文段 seq = 1001,携带 100 字节数据,URG = 1、紧急指针 = 20。紧急数据放在数据部分最前面,共 20 字节,即编号 1001 ~ 1020;1021 ~ 1100 是普通数据。注意:即使窗口为 0,紧急数据也可以发送;紧急指针只说明紧急数据在哪里结束,接收方怎么处理由应用决定。

客户 A服务器 S8080 端口没有进程在监听SYN = 1,seq = 3000目的端口 8080查不到监听 8080 的进程RST = 1,ACK = 1,ack = 3001拒绝连接A 的应用得到“连接被拒绝”的错误
图 5-12 RST 的一个典型用途:拒绝连接。UDP 遇到同样情况则发 ICMP“端口不可达”。

选项、MSS 与传输效率

TCP 最初只有一个选项 MSS,后来陆续增加了几个。每个选项都是“类型 + 长度 + 值”的格式,最后用填充补齐到 4 字节的整数倍。

选项作用要点
MSS(最大报文段长度)告诉对方:我能接收的报文段中,数据部分最长多少字节只在 SYN 报文段中出现;默认 536 B。以太网 MTU 1500 − IP 首部 20 − TCP 首部 20 = 1460 B
窗口扩大把 16 位的窗口值左移 S 位(S ≤ 14)窗口最大可达 65535 × 214 ≈ 1 GB;只在 SYN 中协商
时间戳① 精确测量往返时间 RTT;② 防止序号绕回(PAWS)高速网络中序号很快用完一圈,时间戳帮助区分新旧报文段
SACK(选择确认)报告“收到了哪些不连续的字节块”拓展,见 5.5 节

MSS 为什么不能太大也不能太小?太小:每个报文段至少 40 B 首部(TCP 20 + IP 20),有效数据比例太低;太大:IP 层要分片,任何一片丢失整个报文段都要重传。最理想的是让一个 TCP 报文段刚好装满一个链路层帧而不分片。

跟我算:一个满载的以太网帧里装了什么

以太网帧的数据部分最多 1500 B(MTU)。TCP 用 MSS = 1460 B 发送时,一帧从外到内是:以太网首部 14 B + IP 首部 20 B + TCP 首部 20 B + 数据 1460 B + 帧检验序列 4 B = 1518 B。真正的应用数据占 1460 ÷ 1518 ≈ 96.2%;若再算上每帧前面的前导码 8 B 和帧间最小间隔 12 B,则为 1460 ÷ 1538 ≈ 94.9%。反过来,若每个报文段只带 1 字节数据,效率就惨不忍睹——这正是后面 Nagle 算法要解决的问题。

跟我算:传输效率(2021-39)

传输效率 = 应用层数据 ÷ 整个报文。题目问“最大”效率,就取首部最短的情况:

  • UDP:首部固定 8 B → 12 ÷ (12 + 8) = 60%。
  • TCP:首部最短 20 B → 12 ÷ (12 + 20) = 37.5%;若问最小效率,按首部 60 B 算:12 ÷ 72 ≈ 16.7%。
  • 变化:若把 IP 首部(20 B)也算进去,UDP 为 12 ÷ 40 = 30%,TCP 为 12 ÷ 52 ≈ 23.1%。审题时看清“以谁为分母”。
2021-39计网
若大小为 12B 的应用层数据分别通过 1 个 UDP 数据报和 1 个 TCP 段传输,则该 UDP 数据报和 TCP 段实现的有效载荷(应用层数据)最大传输效率分别是( )。
  • A. 37.5%,16.7%
  • B. 37.5%,37.5%
  • C. 60.0%,16.7%
  • D. 60.0%,37.5%
展开解析

考点5.3 TCP 首部长度5.2 UDP 首部

D传输效率 = 应用层数据 ÷ 整个报文段。“最大”效率就取首部最短的情况。

  1. UDP 首部固定 8B:12 ÷ (12 + 8) = 60%。
  2. TCP 首部最短 20B:12 ÷ (12 + 20) = 37.5%。
  • A 错UDP 用了 37.5%(把 UDP 首部当成 20B);TCP 的 16.7% = 12 ÷ 72,是按最长首部 60B 算的,那是最小效率。
  • B 错B 的 TCP 37.5% 对了,UDP 却也写 37.5% = 12 ÷ 32:把 UDP 首部当成了 TCP 的 20B;UDP 首部固定 8B,应为 12 ÷ 20 = 60%。
  • C 错C 的 UDP 60% 对了,TCP 16.7% = 12 ÷ 72 是按最长首部 60B 算的最小效率;题目问最大效率,要取最短首部 20B:12 ÷ 32 = 37.5%。
  • D 对60.0%,37.5%。

UDP 首部 8B;TCP 首部 20~60B;IP 首部 20~60B。

拓展 两个“位数不够用”的问题

窗口只有 16 位:一个 RTT 最多只能发 65535 B。若 RTT = 100 ms,则吞吐量最多 65535 × 8 ÷ 0.1 ≈ 5.24 Mb/s——哪怕链路有 1 Gb/s 也用不上。窗口扩大选项就是为此设计的。(2016-41(3) 求“平均数据传输速率”用的也是“一个 RTT 发一个窗口”的思路。)

序号只有 32 位:232 B = 4 GB。在 1 Gb/s 的链路上,232 × 8 ÷ 109 ≈ 34.4 秒序号就用完一圈,比报文段可能在网络中存活的时间(MSL,常取 2 分钟)还短,旧报文段可能与新报文段序号相同——时间戳选项(PAWS)就是用来区分它们的。在 10 Mb/s 的链路上则要约 57 分钟才绕一圈,不成问题。

真题怎么考

选择题直接考首部的只有 2021-39(首部长度 → 传输效率),但首部字段是 5.4~5.6 所有计算的基础:序号、确认号按字节编号,窗口以字节为单位,数据偏移以 4 字节为单位。综合题 2011-47、2012-47 给出十六进制抓包,要求从 TCP 首部读出端口、序号、标志位——按上面“跟我读”的表格逐字节切即可。可能的变化:问 SYN / FIN 是否消耗序号、哪个标志位在连接建立后恒为 1、首部最长多少、MSS 是否包含首部。

易错辨析
  • TCP 的序号是给字节编的,不是给报文段编的(链路层的 GBN / SR 才给帧编号)。
  • 首部里的“窗口”是发送这个报文段的一方的接收窗口,是给对方看的;不是自己的发送窗口。
  • 三个“单位”别混:IP 首部长度 4 B、IP 片偏移 8 B、TCP 数据偏移 4 B。
  • MSS 不含首部:MSS = 1000 B 的报文段,整个报文段至少 1020 B。
  • 纯 ACK(不带数据、不带 SYN / FIN)不消耗序号,它的 seq 就是“下一个要发的字节的编号”。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2021-39 改
若大小为 20B 的应用层数据分别通过 1 个 UDP 数据报和 1 个 TCP 段传输,则两者实现的最大传输效率分别约为( )。
  • A. 71.4%,50.0%
  • B. 71.4%,25.0%
  • C. 50.0%,50.0%
  • D. 80.0%,50.0%
展开解析

AUDP:20 ÷ (20 + 8) ≈ 71.4%;TCP 最短首部 20B:20 ÷ 40 = 50%。

  • A 对对:20 ÷ 28 ≈ 71.4%,20 ÷ 40 = 50%。
  • B 错TCP 的 25% = 20 ÷ 80,是按最长首部 60B 算的最小效率;题目问最大效率,取最短首部 20B。
  • C 错UDP 也按 20B 首部算了;UDP 首部固定 8B,20 ÷ 28 ≈ 71.4%。
  • D 错80% = 20 ÷ 25,相当于把 UDP 首部算成了 5B;UDP 首部固定 8B。

变化点:数据从 12B 改为 20B。

变式计网考纲补充(尚无真题)
某 TCP 报文段的序号为 2001,携带 200 B 数据,URG = 1,紧急指针为 50,则该报文段中紧急数据的序号范围是( )。
  • A. 2001 ~ 2050
  • B. 2051 ~ 2200
  • C. 2001 ~ 2200
  • D. 2050 ~ 2200
展开解析

A紧急数据放在数据部分的最前面,紧急指针 50 表示共 50 字节:2001 ~ 2050;其后的 2051 ~ 2200 是普通数据。

  • A 对对:紧急数据在最前面,共 50 字节。
  • B 错2051 ~ 2200 是紧急数据之后的普通数据;紧急数据放在数据部分的最前面。
  • C 错2001 ~ 2200 是全部 200 字节数据,紧急指针 50 只标出了其中前 50 字节。
  • D 错把紧急指针当成了紧急数据的起点;紧急指针表示紧急数据的长度,紧急数据从 2001 开始。

考点:5.3 节“六个控制位与紧急指针”。

变式计网考纲补充(尚无真题)
某 TCP 报文段首部的数据偏移字段为二进制 1000,则该报文段的首部长度是( )。
  • A. 8 B
  • B. 16 B
  • C. 32 B
  • D. 64 B
展开解析

C数据偏移以 4 字节为单位:1000(二进制)= 8,首部长度 8 × 4 = 32 B,其中固定部分 20 B、选项 12 B。

  • A 错8 是数据偏移字段的值,单位是 4 字节,还要乘 4。
  • B 错16 = 8 × 2:单位当成了 2 字节;数据偏移以 4 字节为单位,8 × 4 = 32B。
  • C 对对:8 × 4 = 32B。
  • D 错64 = 8 × 8:单位当成了 8 字节(那是 IP 片偏移的单位);TCP 数据偏移以 4 字节为单位。

考点:5.3 节“TCP 首部:逐字段读懂”。

5.4TCP 连接管理:三次握手、四次挥手

★★★ 高频选择题综合题

TCP 连接的建立和释放是每一次 TCP 通信必经的过程。建立连接要解决三个问题:① 让双方都确知对方存在、并且愿意通信;② 协商参数(MSS、窗口扩大、是否用 SACK 等);③ 双方各自分配资源(缓存、变量、传输控制块 TCB),并把初始序号告诉对方。主动发起连接的一方叫客户,被动等待连接的一方叫服务器。

三次握手

客户 A主动打开服务器 B被动打开CLOSEDLISTENSYN-SENT① SYN = 1,seq = x不携带数据,但要消耗 1 个序号SYN-RCVD② SYN = 1,ACK = 1,seq = y,ack = x + 1同样不携带数据、消耗 1 个序号ESTABLISHED③ ACK = 1,seq = x + 1,ack = y + 1可以携带数据;不携带数据就不消耗序号ESTABLISHED
图 5-13 三次握手。两边竖线外侧的粗体字是各自进入的状态。初始序号 x、y 由双方各自随机选取,互不相关;每一次的确认号都是“对方的序号 + 1”,因为 SYN 占了一个序号(2011-39、2019-39)。
  1. 服务器先创建传输控制块 TCB,进入 LISTEN,等待客户的连接请求。
  2. 第一次:客户发连接请求报文段,SYN = 1,选一个初始序号 seq = x,进入 SYN-SENT(同步已发送)。
  3. 第二次:服务器同意,发回确认:SYN = 1、ACK = 1,ack = x + 1,并选自己的初始序号 seq = y,进入 SYN-RCVD(同步已收到)。
  4. 第三次:客户收到后再发确认:ACK = 1,seq = x + 1,ack = y + 1,进入 ESTABLISHED;服务器收到后也进入 ESTABLISHED。
序号账本的三条规则(教材原话,选择题考字眼)
  • SYN = 1 的报文段(第一、二次握手)不能携带数据,但要消耗掉一个序号。FIN 报文段也一样:即使不带数据,也消耗一个序号。
  • ACK 报文段(第三次握手)可以携带数据;如果不携带数据,就不消耗序号。所以第三次握手的 seq = x + 1,紧接着发的第一个数据字节的序号仍是 x + 1。
  • 为什么 SYN、FIN 要占一个序号?因为它们必须被对方确认,而 TCP 的确认是按序号进行的:ack = x + 1 的意思就是“序号 x(那个 SYN)我收到了”。纯 ACK 不需要被确认,所以不占序号。

口径:RFC 并不禁止 SYN 报文段携带数据(例如 TCP Fast Open),但王道、谢希仁教材和历年真题都按“SYN 不能携带数据”作答。

跟我填一遍:给出具体数字

客户 A 选初始序号 1200,服务器 B 选初始序号 4600。握手后 A 发送 500 字节数据。

报文段方向SYNACKseqack为什么
①A → B101200(无效)A 的初始序号
②B → A11460012011200 被 SYN 占用,期望下一个是 1201
③A → B01120146014600 被 B 的 SYN 占用;③ 不带数据,不占序号
数据A → B0112014601③ 没占序号,数据仍从 1201 开始,编号 1201 ~ 1700
确认B → A0146011701B 不发数据,seq 一直停在 4601

若 ③ 本身就带上这 500 字节,则 ③ 的 seq = 1201、ack = 4601,下一个数据段从 1701 开始——结果一样。

2011-39计网
主机甲向主机乙发送一个(SYN = 1,seq = 11220)的 TCP 段,期望与主机乙建立 TCP 连接,若主机乙接受该连接请求,则主机乙向主机甲发送的正确的 TCP 段可能是( )。
  • A.(SYN = 0,ACK = 0,seq = 11221,ack = 11221)
  • B.(SYN = 1,ACK = 1,seq = 11220,ack = 11220)
  • C.(SYN = 1,ACK = 1,seq = 11221,ack = 11221)
  • D.(SYN = 0,ACK = 0,seq = 11220,ack = 11220)
展开解析

考点5.4 三次握手的第二个报文段

C乙同意建立连接,回的是第二次握手:SYN = 1、ACK = 1,确认号 = 甲的初始序号 + 1 = 11221;自己的初始序号 seq 由乙任意选取。

  • A 错SYN、ACK 都必须为 1。
  • B 错确认号应为 11220 + 1 = 11221(SYN 消耗一个序号)。
  • C 对SYN = 1,ACK = 1,ack = 11221;seq = 11221 是乙随意选的一个初始序号,可以。
  • D 错SYN、ACK 都为 0,确认号也不对。

第二次握手:SYN = 1,ACK = 1,ack = x + 1,seq = y(任选)。

2019-39计网
若主机甲主动发起一个与主机乙的 TCP 连接,甲、乙选择的初始序列号分别为 2018 和 2046,则第三次握手 TCP 段的确认序列号是( )。
  • A. 2018
  • B. 2019
  • C. 2046
  • D. 2047
展开解析

考点5.4 三次握手的确认号

D第三次握手是甲对乙的 SYN 的确认,确认号 = 乙的初始序号 + 1 = 2046 + 1 = 2047。

  • A 错2018 是甲自己的初始序号(第一次握手的 seq)。
  • B 错2019 是第二次握手中乙给甲的确认号。
  • C 错2046 是乙的初始序号,忘了加 1。
  • D 对2047。

确认号永远是“对方的序号 + 对方占用的长度”;SYN 占 1。

连接建立不成功的三种常见情况
  • 服务器主机可达,但目的端口上没有进程在监听:服务器回 RST(上一节的图)。
  • 目的主机或网络不可达:路由器回 ICMP 终点不可达报文。
  • SYN 或 SYN + ACK 丢失:客户超时重传 SYN,重试若干次(间隔逐次加倍)仍不成功就放弃,应用得到“连接超时”的错误。

为什么是三次,不是两次

直觉上,“A 请求、B 同意”两次就够了。问题出在网络会延迟报文段:A 早先发出的一个连接请求在某个结点滞留了很久,等它终于到达 B 时,A 早就不想用它了。

客户 A服务器 B✕① SYN(seq = x)没丢,只是在网络某处滞留A 等不到确认,超时后重发 SYN,正常建立连接、传完数据、释放连接……过了很久……滞留的旧 SYN(seq = x)终于到达 BSYN = 1,ACK = 1,seq = y,ack = x + 1B 以为 A 又要建立一个新连接如果只有两次握手B:连接已建立!分配缓存,一直等 A 发数据(白等,资源被浪费)有了第三次握手A:我没有请求过这个连接,不予理睬(或回 RST)B:等不到第三次握手的确认,不建立连接,资源很快释放
图 5-14 失效的连接请求报文段。虚线表示一个早先发出、此刻才到达的旧报文段。第三次握手让 A 有机会说“这不是我现在要的连接”。

第三次握手还有一个作用:同步双方的初始序号。第二次握手只确认了 A 的序号 x 被 B 收到;B 的序号 y 是否被 A 收到,要靠第三次握手的 ack = y + 1 来确认。双方都知道“自己的初始序号对方已经知道了”,后面的数据才能正确编号和确认。

握手中报文段丢失会怎样
  • ① 丢失:A 超时重传 SYN。
  • ② 丢失:A 等不到确认,超时重传 SYN;B 等不到第三次握手,也会超时重传 SYN + ACK。
  • ③ 丢失:B 超时重传 SYN + ACK。但若 A 已经开始发数据(ACK = 1、ack = y + 1),B 收到数据段时就知道连接已建立。

SYN 洪泛攻击

服务器在收到第一次握手时就为连接分配资源,进入 SYN-RCVD,等第三次握手。这种“握了一半”的连接叫半连接。攻击者利用这一点:用伪造的源 IP 地址发大量 SYN,却从不完成第三次握手。

攻击者服务器 S被冒充的地址 X1、X2…SYN(源 IP 伪造为 X1)SYN + ACK 发往 X1没有人回答半连接 1:SYN-RCVD,占着缓存SYN(源 IP 伪造为 X2)SYN + ACK 发往 X2没有人回答半连接 2……每秒成千上万个半连接队列被占满,正常客户的 SYN 被丢弃
图 5-15 SYN 洪泛(SYN flooding)。这是一种拒绝服务(DoS)攻击:服务器没有被攻破,只是资源被耗尽,没法为正常用户服务。

防御办法:缩短 SYN-RCVD 的等待时间、加大半连接队列、用防火墙过滤可疑 SYN;拓展 SYN cookie:服务器收到 SYN 时先不分配资源,而是把连接信息(对方地址、端口等)经过加密运算编进自己的初始序号 y 里发回去;只有收到 ack = y + 1 的合法第三次握手时,才根据 y 还原信息、真正分配资源——伪造地址的攻击者收不到 y,也就完不成握手。

四次挥手

TCP 是全双工的,两个方向要分别关闭。一方发 FIN 只表示“我没有数据要发了”,对方仍可以继续发——所以要四次:每个方向一个 FIN、一个 ACK。

客户 A(主动关闭)服务器 B(被动关闭)ESTABLISHEDESTABLISHEDFIN-WAIT-1① FIN = 1,seq = uu = A 已发数据最后一个字节的序号 + 1;FIN 消耗 1 个序号CLOSE-WAIT② ACK = 1,seq = v,ack = u + 1B 通知自己的应用:对方不再发数据了FIN-WAIT-2B 继续发剩下的数据(半关闭)A 照常确认这些数据LAST-ACK③ FIN = 1,ACK = 1,seq = w,ack = u + 1B 的数据发完了TIME-WAIT④ ACK = 1,seq = u + 1,ack = w + 1CLOSED等待 2MSLCLOSED
图 5-16 四次挥手与状态变化。B 回 ② 之后,B → A 方向还能继续传数据(半关闭);③ 的确认号仍是 u + 1,因为这段时间 A 没有再发数据。A 发出 ④ 后进入 TIME-WAIT(2021-38 问的就是这个状态),等 2MSL 才关闭;B 收到 ④ 立即关闭。连接建立后的报文段 ACK 都为 1,图中 ① 省略了 ACK 和 ack。
  1. 第一次:A 的应用通知 TCP 关闭,A 发 FIN = 1、seq = u 的报文段,进入 FIN-WAIT-1(终止等待 1)。
  2. 第二次:B 收到 FIN,立即回确认 ack = u + 1,进入 CLOSE-WAIT(关闭等待),并通知自己的应用。A 收到确认后进入 FIN-WAIT-2,等 B 的 FIN。此时连接处于半关闭:A → B 方向已关,B → A 方向还开着。
  3. 第三次:B 的数据发完后,发 FIN = 1、ACK = 1、seq = w、ack = u + 1,进入 LAST-ACK(最后确认)。
  4. 第四次:A 收到 FIN 后回 ACK = 1、seq = u + 1、ack = w + 1,进入 TIME-WAIT(时间等待),等 2MSL 后进入 CLOSED。B 收到这个确认就进入 CLOSED。
为什么建立连接三次、释放连接却要四次

建立连接时,服务器收到 SYN 后,“同意”(ACK)和“我的初始序号”(SYN)可以同时给出,所以第二次握手把 SYN 和 ACK 合在一个报文段里。释放连接时,B 收到 A 的 FIN 只说明“A 不再发了”,B 自己可能还有数据没发完:B 要先回 ACK,等自己的应用把数据发完、决定关闭时才能发 FIN——ACK 和 FIN 之间隔着一段不确定的时间,一般不能合并,于是成了四次。B 正好没有数据要发时,二者也可以合并(下面 2022-39 的“至少”就是这种情况)。

跟我填一遍:带半关闭的四次挥手

接着上面的例子:A 的 500 字节(1201 ~ 1700)已被确认;B 一直没发数据。现在 A 先关闭,B 在收到 FIN 后又发了 300 字节的处理结果,然后关闭。

报文段方向标志seqack为什么
①A → BFIN、ACK17014601A 的数据到 1700 为止,FIN 占 1701
②B → AACK46011702FIN 占了 1701,期望 1702
数据B → AACK46011702B 的 300 字节编号 4601 ~ 4900(② 是纯 ACK,不占序号)
确认A → BACK17024901A 在 FIN-WAIT-2 中照样确认数据
③B → AFIN、ACK49011702B 的 FIN 占 4901
④A → BACK17024902A 进入 TIME-WAIT

验算数据量:A 发了 FIN 序号 − (SYN 序号 + 1) = 1701 − 1201 = 500 字节;B 发了 4901 − 4601 = 300 字节(2020-39 就是这个公式)。

2020-39计网
若主机甲与主机乙建立 TCP 连接时发送的 SYN 段中的序号为 1000,在断开连接时,甲发送给乙的 FIN 段中的序号为 5001,则在无任何重传的情况下,甲向乙已经发送的应用层数据的字节数为( )。
  • A. 4002
  • B. 4001
  • C. 4000
  • D. 3999
展开解析

考点5.4 SYN、FIN 占用序号

CSYN 占用序号 1000,数据从 1001 开始编号;FIN 的序号 5001 表示数据的最后一个字节是 5000。

  1. 数据字节:1001 ~ 5000。
  2. 共 5000 − 1001 + 1 = 4000 字节。
  • A 错4002:多算了 SYN 和 FIN 两个序号。
  • B 错4001 = 5001 − 1000:把 SYN 占用的那个序号也算成了数据。
  • C 对4000。
  • D 错3999 = 5000 − 1001:用末字节减首字节时忘了 + 1;数据占 1001 ~ 5000,共 5000 − 1001 + 1 = 4000 字节。

数据量 = FIN 的序号 − (SYN 的序号 + 1)。

2021-38计网
若客户首先向服务器发送 FIN 段请求断开 TCP 连接,则当客户收到服务器发送的 FIN 段并向服务器发送了 ACK 段后,客户的 TCP 状态转换为( )。
  • A. CLOSE_WAIT
  • B. TIME_WAIT
  • C. FIN_WAIT_1
  • D. FIN_WAIT_2
展开解析

考点5.4 四次挥手的状态

B主动关闭方(客户)的状态:发 FIN → FIN-WAIT-1;收到 ACK → FIN-WAIT-2;收到对方 FIN 并回 ACK → TIME-WAIT;等 2MSL → CLOSED。

  • A 错CLOSE-WAIT 是被动关闭方(服务器)收到 FIN 并回 ACK 后的状态。
  • B 对TIME-WAIT。
  • C 错FIN-WAIT-1 是客户刚发出 FIN 时的状态。
  • D 错FIN-WAIT-2 是客户收到对自己 FIN 的 ACK 后的状态。

主动方:FIN-WAIT-1 → FIN-WAIT-2 → TIME-WAIT → CLOSED;被动方:CLOSE-WAIT → LAST-ACK → CLOSED。

半关闭有实际用处:比如客户把一个计算任务的全部输入上传给服务器后,就发 FIN 表示“输入完了”;服务器读到输入结束,才开始计算,算完把结果发回,再发自己的 FIN。如果“我发完”就等于“整个连接断开”,服务器就没法把结果送回来了。

TIME-WAIT 为什么要等 2MSL

MSL(最长报文段寿命):一个报文段在网络中能存活的最长时间,超过就被丢弃。RFC 793 建议 2 分钟,实际常用 30 秒、1 分钟等。A 发完最后一个 ACK 后不立即关闭,而是等 2MSL,理由有两个:

  1. 保证最后一个 ACK 能到达 B。这个 ACK 可能丢失,B 收不到就会超时重传 FIN;A 还在 TIME-WAIT,就能收到重传的 FIN、重发 ACK 并重新计时。如果 A 已经关闭,就不会理睬重传的 FIN,B 永远无法正常关闭。
  2. 防止“已失效的报文段”出现在新连接中。等 2MSL,本连接持续期间产生的所有报文段都会从网络中消失,下一个用同样四元组建立的新连接就不会收到上一个连接的旧报文段。
客户 A服务器 BFIN-WAIT-2LAST-ACK③ FINTIME-WAIT✕④ ACK丢失等不到确认,超时重传的 FIN重发 ACK,并重新开始 2MSL 计时CLOSED2MSL 内没有再收到 FINCLOSED
图 5-17 最后一个 ACK 丢失时,TIME-WAIT 救了场。为什么是 2MSL:最坏情况下,④ 在网络中耗了 1 个 MSL 才丢失,B 重传的 FIN 又要 1 个 MSL 才能到达 A,所以 A 至少要等 2MSL 才能确信“B 已经不会再发 FIN 了”。
释放连接的时间怎么算(2022-39)

“至少”的情况:B 收到 FIN 时自己也没有数据要发,立即把 ACK 和 FIN 合成一个报文段发回(第 2、3 次挥手合并)。忽略发送时延,从 A 发 FIN 算起:

时刻事件
0A 发 FIN,进入 FIN-WAIT-1
0.5 RTTB 收到,立即发 ACK + FIN,进入 LAST-ACK
1 RTTA 收到,发最后的 ACK,进入 TIME-WAIT
1.5 RTTB 收到最后的 ACK,B 关闭
1 RTT + 2MSLA 关闭

2022-39:RTT = 50 ms,MSL = 800 ms → A 关闭于 50 + 1600 = 1650 ms,B 关闭于 75 ms。

2022-39计网
假设客户 C 和服务器 S 已建立一个 TCP 连接,通信往返时间 RTT = 50ms,最长报文段寿命 MSL = 800ms,数据传输结束后,C 主动请求断开连接。若从 C 主动向 S 发出 FIN 段时刻算起,则 C 和 S 进入 CLOSED 状态所需的时间至少分别是( )。
  • A. 850ms,50ms
  • B. 1650ms,50ms
  • C. 850ms,75ms
  • D. 1650ms,75ms
展开解析

考点5.4 连接释放的时间

D“至少”:S 收到 C 的 FIN 后立即把 ACK 和 FIN 一起发回(第 2、3 次挥手合并)。

  1. 0:C 发 FIN。25ms:S 收到,立即发 ACK + FIN。
  2. 50ms(1 RTT):C 收到,发出最后的 ACK,进入 TIME-WAIT,再等 2MSL = 1600ms → C 在 1650ms 关闭。
  3. 75ms(1.5 RTT):S 收到最后的 ACK → S 在 75ms 关闭。
  • A 错C 只等了 1 个 MSL;S 应在收到最后的 ACK(75ms)时关闭,不是 50ms。
  • B 错C 对了,S 的时间少算了半个 RTT。
  • C 错S 对了,C 只等了 1 个 MSL。
  • D 对1650ms,75ms。

主动方:1 RTT + 2MSL;被动方:1.5 RTT。

跟我算:从建立连接到关闭的总时间(2024-38 型)

H 向服务器发送 7000 B,MSS = 1000 B,RTT = 20 ms,MSL = 1 s,慢开始门限很大,接收窗口足够大,忽略发送时延。H 数据发完、全部被确认后首先断开连接。求从 H 请求建立连接到 H 进入 CLOSED 至少要多久。

时刻事件cwnd
0H 发 SYN—
1 RTT收到 SYN + ACK;发第三次握手的 ACK,同时发第 1 个数据段(第三次握手可以携带数据)1
2 RTT第 1 段被确认;发第 2、3 段2
3 RTT第 2、3 段被确认;发第 4 ~ 7 段(共 7 段,全部发完)4
4 RTT第 4 ~ 7 段被确认;H 发 FIN—
5 RTT收到服务器的 ACK + FIN,发最后的 ACK,进入 TIME-WAIT—
5 RTT + 2MSLH 进入 CLOSED—

总时间 = 5 × 20 ms + 2 × 1 s = 2.1 s。服务器则在 5.5 RTT = 110 ms 时关闭。套用到 2024-38(3000 B = 3 段:1 + 2,数据只用 2 个 RTT):4 RTT + 2MSL = 0.04 s + 60 s = 60.04 s。

口径:真题把“报文传输结束”理解为数据全部被确认,然后才发 FIN(所以不选 60.03 s)。数轮次时,“第 k 轮发出的段在下一个 RTT 时刻被确认”。

2024-38计网
假设主机 H 通过 TCP 向服务器发送长度为 3000B 的报文,往返时间 RTT = 10ms,最长报文段寿命 MSL = 30s,最大报文段长度 MSS = 1000B,忽略 TCP 段的传输时延,报文传输结束后 H 首先请求断开连接,则从 H 请求建立 TCP 连接时刻起,到 H 进入 CLOSED 状态为止,所需时间至少是( )。
  • A. 30.03s
  • B. 30.04s
  • C. 60.03s
  • D. 60.04s
展开解析

考点5.4 连接建立与释放的时间5.6 慢开始

D分三段计时(忽略发送时延)。

  1. 建立连接:SYN 发出到收到 SYN + ACK,1 RTT。第三次握手的 ACK 可以和第一个数据段一起发。
  2. 传数据:3000B = 3 个 MSS。慢开始 cwnd = 1:第 1 轮发 1000B,第 2 轮 cwnd = 2 发 2000B,共 2 RTT。
  3. 释放连接:H 发 FIN,服务器立即回 ACK + FIN,1 RTT 后 H 回最后的 ACK,进入 TIME-WAIT 等 2MSL。
  4. 合计 4 RTT + 2MSL = 0.04s + 60s = 60.04s。
  • A 错30.03s = 3 RTT + 1MSL:TIME-WAIT 只等了 1 个 MSL,数据传输也少算了 1 RTT。
  • B 错30.04s = 4 RTT + 1MSL:RTT 部分算对了,但 TIME-WAIT 要等 2MSL = 60s,只等了 1 个 MSL。
  • C 错60.03s = 3 RTT + 2MSL:数据只算了 1 RTT,忽略了慢开始从 cwnd = 1 开始。
  • D 对60.04s。

建立 1 RTT + 数据(按慢开始数轮次)+ 释放 1 RTT + 2MSL。

TCP 有限状态机:11 个状态一张图

前面的握手、挥手图都是“按时间”画的;状态机则是“按状态”画的:每个方框是一个状态,每条箭头写着“收到什么 / 发出什么”。客户和服务器走的是图中两条不同的主路径。

主动打开 / 发 SYN 被动打开 收 SYN / 发 SYN+ACK 收 SYN+ACK / 发 ACK 收 ACK 关闭 / 发 FIN 收 FIN / 发 ACK 收 ACK 收 FIN / 发 ACK 收 ACK 收 FIN+ACK/ 发 ACK 收 FIN / 发 ACK 关闭 / 发 FIN 收 ACK 等待 2MSL 超时 CLOSED SYN-SENT LISTEN SYN-RCVD ESTABLISHED FIN-WAIT-1 CLOSE-WAIT FIN-WAIT-2 CLOSING LAST-ACK TIME-WAIT CLOSED(即顶上的 CLOSED) 蓝:客户(主动方) 绿:服务器(被动方) 灰虚线:同时关闭(少见)
图 5-18 TCP 有限状态机(11 个状态)。箭头上“收到 / 发出”:斜线前是触发条件,斜线后是同时做的动作。用下面的小工具选一种情形,点“下一步”逐步高亮。
当前状态收到 / 发生发出进入谁走这条
CLOSED应用主动打开SYNSYN-SENT客户
CLOSED应用被动打开—LISTEN服务器
LISTENSYNSYN + ACKSYN-RCVD服务器
SYN-SENTSYN + ACKACKESTABLISHED客户
SYN-RCVDACK—ESTABLISHED服务器
ESTABLISHED应用关闭FINFIN-WAIT-1主动关闭方
ESTABLISHEDFINACKCLOSE-WAIT被动关闭方
FIN-WAIT-1对 FIN 的 ACK—FIN-WAIT-2主动关闭方
FIN-WAIT-1FIN + ACKACKTIME-WAIT主动关闭方
FIN-WAIT-1FIN(同时关闭)ACKCLOSING双方
FIN-WAIT-2FINACKTIME-WAIT主动关闭方
CLOSING对 FIN 的 ACK—TIME-WAIT双方
TIME-WAIT2MSL 计时到—CLOSED主动关闭方
CLOSE-WAIT应用关闭FINLAST-ACK被动关闭方
LAST-ACK对 FIN 的 ACK—CLOSED被动关闭方
SYN-SENTSYN(同时打开,拓展)SYN + ACKSYN-RCVD双方
任何状态RST—CLOSED(LISTEN 方回到 LISTEN)—
一眼分清的记法
  • 带 WAIT 的有 4 个:主动方 FIN-WAIT-1、FIN-WAIT-2、TIME-WAIT;被动方 CLOSE-WAIT。
  • “等什么”:FIN-WAIT-1 等对自己 FIN 的确认;FIN-WAIT-2 等对方的 FIN;CLOSE-WAIT 等自己的应用说“关吧”;LAST-ACK 等最后一个确认;TIME-WAIT 等时间(2MSL)。
  • 只有主动关闭的一方经过 TIME-WAIT;只有被动打开的一方经过 LISTEN 和 SYN-RCVD。

保活计时器与 RST:连接的“异常结束”

问题:客户和服务器建立了连接,客户突然断电了。服务器上这条连接会一直占着资源吗?

TCP 用保活计时器(keepalive timer)解决:服务器每收到一次客户的数据,就重新设置保活计时器(通常 2 小时)。若 2 小时内没收到客户的任何数据,服务器就发一个探测报文段,以后每隔 75 秒发一个;若一连 10 个探测报文段都没有响应,服务器就认为客户出了故障,关闭这个连接。前后共约 2 小时 + 10 × 75 秒(12.5 分钟)。

另一种异常结束是 RST:一方发现连接出了严重问题(例如收到一个不属于任何连接的报文段、应用异常退出),直接发 RST,连接立即作废,不经过四次挥手、也不进入 TIME-WAIT。

TCP 的计时器作用在哪一节
重传计时器(RTO)报文段发出后超时未确认就重传5.5
持续计时器收到零窗口通知后启动,到期发零窗口探测报文段,防止死锁5.5
保活计时器长时间没有数据时探测对方是否还在本节
时间等待计时器(2MSL)主动关闭方在 TIME-WAIT 状态等待本节
真题怎么考:5.4 的 6 道选择题只有 4 类
  • 握手报文段的字段(2011-39、2019-39):画出三次握手,确认号一律是“对方序号 + 1”。陷阱选项常把 seq 和 ack 写成一样,或忘了加 1。
  • 数据量(2020-39):FIN 序号 − (SYN 序号 + 1)。
  • 状态(2021-38):按状态机写出主动方 FIN-WAIT-1 → FIN-WAIT-2 → TIME-WAIT → CLOSED,被动方 CLOSE-WAIT → LAST-ACK → CLOSED。
  • 时间(2022-39、2024-38):“至少”就合并第 2、3 次挥手、第三次握手捎带数据;数据按慢开始数轮次;主动方最后加 2MSL。

综合题 2026-47 把握手次数、确认号、挥手次数、最后一个报文段的 seq / ack 一起考了,见第 7 篇 t6。可能的新考法:SYN 洪泛攻击利用的是哪个状态(SYN-RCVD)、哪一方经历 TIME-WAIT、保活计时器的作用、RST 的用途。

易错辨析
  • 第二次握手的 seq 是服务器自己随机选的,和客户的序号没有关系;只有 ack 和客户有关。
  • 第三次握手可以携带数据;若携带了数据,就要消耗相应的序号。
  • TIME-WAIT 在主动关闭方,不一定是客户——服务器先关闭时,TIME-WAIT 在服务器。
  • CLOSE-WAIT 是被动方收到 FIN 后的状态,不是“等着关闭的主动方”。
  • 挥手的第 2、3 次可以合并成一个报文段(被动方没有数据要发时),此时只需要“三次挥手”,但教材和题目的标准答案仍说“四次挥手”。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2011-39 改
主机甲向主机乙发送一个(SYN = 1,seq = 5000)的 TCP 段请求建立连接,若乙接受,则乙发回的 TCP 段可能是( )。
  • A. (SYN = 0,ACK = 1,seq = 5001,ack = 5001)
  • B. (SYN = 1,ACK = 1,seq = 5000,ack = 5000)
  • C. (SYN = 1,ACK = 1,seq = 8000,ack = 5001)
  • D. (SYN = 1,ACK = 0,seq = 8000,ack = 5001)
展开解析

C第二次握手:SYN = 1、ACK = 1,ack = 5000 + 1 = 5001,seq 由乙任选。

  • A 错第二次握手 SYN 必须为 1;SYN = 0 的段不是对连接请求的同意。
  • B 错确认号应为 5000 + 1 = 5001(SYN 消耗一个序号),写成 5000 错了。
  • C 对对:SYN = 1、ACK = 1、ack = 5001,seq 由乙任选。
  • D 错ACK 必须为 1,确认号字段才有效;ACK = 0 时写 ack = 5001 也不起作用。

变化点:换一个初始序号,并把“乙的 seq 与甲无关”放进正确选项。

变式计网由 2020-39 改
若主机甲建立 TCP 连接时 SYN 段的序号为 3000,断开连接时甲发出的 FIN 段序号为 8001,无重传,则甲向乙发送的应用层数据字节数为( )。
  • A. 5001
  • B. 5002
  • C. 4999
  • D. 5000
展开解析

D数据从 3001 开始,到 8000 结束:8001 − 3001 = 5000。

  • A 错5001 = 8001 − 3000:把 SYN 占用的那个序号也算成了数据。
  • B 错5002 多算了 SYN 和 FIN 两个序号(从 3000 数到 8001)。
  • C 错4999 = 8000 − 3001:末字节减首字节时忘了 + 1;3001 ~ 8000 共 5000 字节。
  • D 对对:8001 − 3001 = 5000。

变化点:换一组序号,公式:FIN 序号 − (SYN 序号 + 1)。

变式计网由 2022-39 改
客户 C 与服务器 S 已建立 TCP 连接,RTT = 100ms,MSL = 500ms,C 主动断开连接。从 C 发出 FIN 算起,C 和 S 进入 CLOSED 至少分别需要( )。
  • A. 1100ms,150ms
  • B. 600ms,100ms
  • C. 1100ms,100ms
  • D. 600ms,150ms
展开解析

AC:1 RTT + 2MSL = 100 + 1000 = 1100ms;S:1.5 RTT = 150ms。

  • A 对对:C 1100ms,S 150ms。
  • B 错C 只等了 1 个 MSL(100 + 500),S 也少算了半个 RTT。
  • C 错C 对了,但 S 要在收到最后的 ACK(1.5 RTT = 150ms)时关闭,写成 100ms 少了半个 RTT。
  • D 错S 对了,但 C 的 TIME-WAIT 要等 2MSL = 1000ms,只等了 1 个 MSL。

变化点:换一组 RTT 和 MSL。

变式计网由 2021-38 改
若客户首先发送 FIN 段请求断开 TCP 连接,则服务器发出自己的 FIN 段后进入的状态是( )。
  • A. CLOSE-WAIT
  • B. LAST-ACK
  • C. TIME-WAIT
  • D. FIN-WAIT-2
展开解析

B被动关闭方:收到 FIN、回 ACK → CLOSE-WAIT;发出自己的 FIN → LAST-ACK;收到最后的 ACK → CLOSED。

  • A 错CLOSE-WAIT 是服务器收到客户 FIN、回 ACK 之后的状态,发出自己的 FIN 后就离开它了。
  • B 对对:发出 FIN 后进入 LAST-ACK。
  • C 错TIME-WAIT 只有主动关闭的一方(这里是客户)才经历。
  • D 错FIN-WAIT-2 是主动关闭方(客户)收到对自己 FIN 的确认后的状态。

变化点:由主动方的状态换成被动方。

变式计网考纲补充(尚无真题)
SYN 洪泛攻击使服务器上的大量 TCP 连接停留在( )。
  • A. LISTEN 状态
  • B. SYN-RCVD 状态
  • C. SYN-SENT 状态
  • D. CLOSE-WAIT 状态
展开解析

B服务器收到 SYN 后回 SYN + ACK、为连接分配资源,进入 SYN-RCVD 等待第三次握手;攻击者伪造源地址,第三次握手永远不会到来,这些“半连接”占满队列。

  • A 错LISTEN 是服务器等待连接请求的初始状态,收到 SYN 后就离开它了。
  • B 对对:半连接停在 SYN-RCVD。
  • C 错SYN-SENT 是发起连接的一方(客户)发出 SYN 后的状态,不在服务器上。
  • D 错CLOSE-WAIT 是被动关闭方收到 FIN 后的状态,属于连接释放,不是半连接。

考点:5.4 节“SYN 洪泛攻击”。

变式计网考纲补充(尚无真题)
若 TCP 连接中由服务器首先发送 FIN 请求释放连接,则释放过程中要经历 TIME-WAIT 状态的是( )。
  • A. 服务器
  • B. 客户
  • C. 服务器和客户都要经历
  • D. 服务器和客户都不经历
展开解析

ATIME-WAIT 属于主动关闭的一方(先发 FIN 的一方),与谁是客户无关。这里服务器主动关闭,客户是被动方,经历 CLOSE-WAIT、LAST-ACK。

  • A 对对:主动关闭的服务器经历 TIME-WAIT。
  • B 错客户是被动关闭方,经历 CLOSE-WAIT、LAST-ACK,不经历 TIME-WAIT。
  • C 错只有主动关闭的一方经历 TIME-WAIT(双方同时关闭除外),这里只有服务器。
  • D 错主动关闭方一定要经历 TIME-WAIT,等 2MSL 才关闭。

考点:5.4 节“TCP 有限状态机”。

变式计网考纲补充(尚无真题)
TCP 的保活计时器(keepalive timer)的作用是( )。
  • A. 计算超时重传时间
  • B. 打破零窗口时双方互相等待的死锁
  • C. 控制 TIME-WAIT 状态的等待时间
  • D. 在长时间没有数据往来时,探测对方是否已经故障
展开解析

D服务器 2 小时收不到客户的数据,就每隔 75 秒发一个探测报文段,连续 10 个无响应就关闭连接。B 是持续计时器的作用,C 是 2MSL 计时器,A 是重传计时器。

  • A 错计算超时重传时间、控制重传的是重传计时器,不是保活计时器。
  • B 错打破零窗口时双方互相等待的死锁的是持续计时器。
  • C 错控制 TIME-WAIT 等待时间的是 2MSL 计时器(时间等待计时器)。
  • D 对对:长时间无数据时探测对方是否故障。

考点:5.4 节“保活计时器与 RST”。

变式计网考纲补充(尚无真题)
客户发送 FIN 并收到服务器的确认后(服务器尚未发送 FIN),下列叙述中正确的是( )。
  • A. 客户不能再接收服务器的数据
  • B. 服务器仍可以向客户发送数据,客户仍要对这些数据进行确认
  • C. 连接已经完全释放
  • D. 服务器不能再发送数据,只能发送 FIN
展开解析

B这时连接处于半关闭:客户 → 服务器方向已关闭,服务器 → 客户方向仍然打开。客户在 FIN-WAIT-2 状态照样接收并确认数据。

  • A 错客户只关闭了自己的发送方向,处于 FIN-WAIT-2,仍要接收服务器的数据。
  • B 对对:半关闭,服务器 → 客户方向仍然打开。
  • C 错服务器还没发 FIN,服务器 → 客户方向仍然打开,连接处于半关闭,没有完全释放。
  • D 错服务器只是确认了客户的 FIN,自己还可以继续发数据,发完才发 FIN。

考点:5.4 节“四次挥手”中的半关闭。

5.5TCP 可靠传输与流量控制

★★ 常考选择题

问题:IP 交给 TCP 的分组可能出错、丢失、乱序、重复。TCP 要让应用看到的字节流和发送方写进去的一模一样。它用四样工具对付四种问题:

IP 可能出的问题TCP 的对策
出错检验和:发现出错就丢弃,当作丢失处理(不发否认,等发送方重传)
丢失确认 + 重传:超时没收到确认就重传(超时重传);收到 3 个重复确认就提前重传(快重传)
乱序序号:接收方按序号把失序到达的数据先缓存,凑齐了再按序交给应用
重复序号:已经收到过的字节再来一次就丢弃(但仍要发确认)

这些机制都建立在以字节为单位的滑动窗口之上,原理和第 3 篇的连续 ARQ(GBN、SR)一脉相承,区别是 TCP 按字节编号、采用累积确认,对失序的报文段通常先缓存而不是丢弃(像 SR),超时只重传最早未确认的那一个报文段。

序号、确认号与累积确认

下一个报文段的序号 = 本报文段序号 + 本报文段数据字节数 确认号 = 按序收到的最后一个字节的序号 + 1(中间缺了,就停在缺口处)
双方都在发数据时:三条规则
  1. 我的 seq = 对方上一次给我的 ack(对方说“我期望你下一个字节是几号”)。
  2. 我的 ack = 对方的 seq + 对方的数据长度(对方的数据按序收到时)。
  3. 中间有缺口时,ack 停在缺口的第一个字节,后面收到的先缓存。

例(2013-39):甲收到乙的段(seq = 1913,ack = 2046,100 字节)→ 甲接下来发的段 seq = 2046,ack = 1913 + 100 = 2013。

累积确认:确认号 N 表示“N − 1 及以前的字节全部收到了”。好处是确认丢了也不要紧:只要后面一个更大的确认到达,前面的就都被确认了。下面跟着一个例子走一遍(每个报文段 100 字节):

发送方 A接收方 Bseq = 1001(100 B)字节 1001 ~ 1100,按序到达ack = 1101✕seq = 1101(100 B)丢失seq = 1201(100 B)失序到达,先放进接收缓存ack = 1101仍然要 1101:重复确认seq = 1301(100 B)失序到达,缓存ack = 1101又一个重复确认(只有 2 个,不够快重传)seq = 1101 那个报文段的重传计时器超时重传 seq = 1101(100 B)缺口补上ack = 1401一次确认 1101 ~ 1400 全部
图 5-19 累积确认。缺口(1101 ~ 1200)没补上之前,确认号一直停在 1101;缺口补上后,确认号直接跳到 1401,缓存里的 1201 ~ 1400 一起交给应用。
  • 推迟确认:接收方可以不必每收到一个报文段就确认,而是稍等一会儿(不超过 0.5 秒),一次确认多个,减少确认报文段的数量;但对连续收到的满长报文段,至少每隔一个就要确认一次。
  • 捎带确认:接收方自己也有数据要发时,把确认号放在自己的数据报文段里一起发,不单独发确认。
  • 408 的计算题若不特别说明,都按“每收到一个报文段就确认一次”处理。
2009-38计网
主机甲与主机乙之间已建立一个 TCP 连接,主机甲向主机乙发送了两个连续的 TCP 段,分别包含 300 字节和 500 字节的有效载荷,第一个段的序列号为 200,主机乙正确接收到两个段后,发送给主机甲的确认序列号是( )。
  • A. 500
  • B. 700
  • C. 800
  • D. 1000
展开解析

考点5.5 确认号的计算

D第一段序号 200、300 字节,占 200 ~ 499;第二段序号 500、500 字节,占 500 ~ 999。两段都收到,确认号 = 最后一个字节 + 1 = 1000。

  • A 错500 是第二段的序号,只确认了第一段。
  • B 错700 = 200 + 500,漏了第一段的 300 字节。
  • C 错800 = 300 + 500,是数据总量,不是序号,忘了起点 200。
  • D 对1000。

确认号 = 起始序号 + 按序收到的总字节数。

2011-40计网
主机甲与主机乙之间已建立一个 TCP 连接,主机甲向主机乙发送了 3 个连续的 TCP 段,分别包含 300 字节、400 字节和 500 字节的有效载荷,第 3 个段的序号为 900。若主机乙仅正确接收到第 1 和第 3 个段,则主机乙发送给主机甲的确认序号是( )。
  • A. 300
  • B. 500
  • C. 1200
  • D. 1400
展开解析

考点5.5 累积确认

B先倒推各段序号:第 3 段 900,第 2 段 900 − 400 = 500,第 1 段 500 − 300 = 200。

  1. 乙按序收到第 1 段(200 ~ 499),第 2 段(500 ~ 899)缺失。
  2. 确认号 = 期望的下一个字节 = 500。第 3 段先缓存。
  • A 错300 是第 1 段的数据长度,不是序号。
  • B 对500。
  • C 错1200 是三段数据的总长度,不是序号。
  • D 错1400 = 900 + 500:好像第 2 段也收到了。TCP 是累积确认,中间有缺口就停在缺口处。

累积确认:缺哪个字节,确认号就是哪个。

2013-39计网
主机甲与主机乙之间已建立一个 TCP 连接,双方持续有数据传输,且数据无差错与丢失。若甲收到 1 个来自乙的 TCP 段,该段的序号为 1913、确认序号为 2046、有效载荷为 100 字节,则甲立即发送给乙的 TCP 段的序号和确认序号分别是( )。
  • A. 2046、2012
  • B. 2046、2013
  • C. 2047、2012
  • D. 2047、2013
展开解析

考点5.5 序号与确认号

B乙的段 seq = 1913、ack = 2046、100 字节数据。

  1. 乙说“期望收到 2046”→ 甲接下来发的段 seq = 2046。
  2. 乙这段数据占 1913 ~ 2012,甲收到后确认号 = 2012 + 1 = 2013。
  • A 错2012 是收到的最后一个字节,确认号要再加 1。
  • B 对2046,2013。
  • C 错C 是 2047、2012:两个数都错了一位——序号直接取对方的确认号 2046,不必加 1;确认号是对方最后一个字节 2012 再加 1 = 2013。
  • D 错序号 2047 多加了 1:对方期望的正是 2046。

我的 seq = 对方的 ack;我的 ack = 对方的 seq + 对方的数据长度。

以字节为单位的滑动窗口

发送方维持一个发送窗口:窗口内的字节可以连续发出去而不必等确认;窗口外的字节不允许发。窗口用三个指针描述:

1234567891011121314151617181920212223242526发送窗口(由 rwnd 和 cwnd 中较小者决定)已确认已发送、未确认允许发送、尚未发送不允许发送P1 = 确认号P2P3可用窗口 = P3 − P2 = 发送窗口 − 已发送未确认的量
图 5-20 TCP 发送窗口的三个指针。窗口后沿 P1 就是收到的确认号;窗口大小 = min(rwnd, cwnd);还能发送的只有 P2 ~ P3 这一段,要从窗口中减掉“已发送、未确认”的部分(2010-39、2021-40、2025-38)。
  • P1(窗口后沿)= 最新收到的确认号。后沿只会前移(收到新确认),不会后退。
  • P2 = 下一个要发送的字节的序号。P1 ~ P2 − 1 是“已发送、未确认”,它们必须留在发送缓存里,以备重传。
  • P3(窗口前沿)= P1 + 发送窗口大小。前沿通常前移;对方缓存满了、窗口通告变小时可能不动;TCP 标准强烈不赞成前沿往回缩。

跟着三步看窗口怎样“滑动”(每格 100 字节;B 通告 rwnd = 500,A 的拥塞窗口足够大):

① 发出 1001 ~ 1300(3 段)后。即使 B 只收到后两段、确认号仍是 1001,窗口也不动901~10001001~11001101~12001201~13001301~14001401~15001501~16001601~17001701~1800P1 = 1001 P2 = 1301 P3 = 1501 → 发送窗口 500 B,可用 200 B② 收到 ack = 1301、rwnd = 500:窗口后沿跳到 1301,整体前移901~10001001~11001101~12001201~13001301~14001401~15001501~16001601~17001701~1800P1 = P2 = 1301 P3 = 1801 → 可用 500 B③ 把 1301 ~ 1800 全部发出:可用窗口为 0,只能等新的确认901~10001001~11001101~12001201~13001301~14001401~15001501~16001601~17001701~1800P1 = 1301 P2 = P3 = 1801 → 可用 0 B
图 5-21 滑动窗口的三步。灰:已确认;蓝:已发送未确认;绿:允许发送;白:不允许发送;紫色括号是发送窗口。窗口是否前移只看确认号:失序到达的数据在接收方缓存着,但只要缺口没补上,确认号不变,发送窗口就不动。
“还能发多少”的解题步骤
  1. 窗口后沿 = 最新收到的确认号。
  2. 发送窗口 = min(对方通告的 rwnd,自己的 cwnd)。收到新确认时若处于慢开始,cwnd 要先加 1 个 MSS(2025-38)。
  3. 窗口前沿 = 确认号 + 发送窗口 − 1;已经发到哪里了(下一个要发的序号),就从那里一直可以发到前沿。

2010-39:窗口 = min(4000, 2000) = 2000,从刚确认的位置算起;第 2 个段的 1000 B 还没确认、占着窗口 → 还能发 1000 B。2021-40:窗口 501 ~ 1000,其中 501 ~ 700 已在 t0 发出 → 还能发 701 ~ 1000。

2010-39计网
主机甲和主机乙之间已建立了一个 TCP 连接,TCP 最大段长度为 1000 字节。若主机甲的当前拥塞窗口为 4000 字节,在主机甲向主机乙连续发送两个最大段后,成功收到主机乙发送的第一个段的确认段,确认段中通告的接收窗口大小为 2000 字节,则此时主机甲还可以向主机乙发送的最大字节数是( )。
  • A. 1000
  • B. 2000
  • C. 3000
  • D. 4000
展开解析

考点5.5 发送窗口与可用窗口

A发送窗口 = min(cwnd, rwnd) = min(4000, 2000) = 2000B,从刚确认的位置算起。

  1. 甲发了两个 1000B 的段,只收到第一个的确认,第二个段的 1000B 还在窗口里“已发送未确认”。
  2. 还能发 2000 − 1000 = 1000B。
  • A 对1000。
  • B 错2000:没有减去已发送未确认的 1000B。
  • C 错3000 = 4000 − 1000:用了拥塞窗口,忽略了接收窗口的限制。
  • D 错4000 = cwnd:既没和 rwnd = 2000 取小,也没减去已发送未确认的 1000B。

还能发 = min(cwnd, rwnd) − 已发送未确认。

2021-40计网
设主机甲通过 TCP 向主机乙发送数据,部分过程如下图所示。甲在 t0 时刻发送一个序号 seq = 501、封装 200B 数据的段,在 t1 时刻收到乙发送的序号 seq = 601、确认序号 ack_seq = 501、接收窗口 rcvwnd = 500B 的段,则甲在未收到新的确认段之前,可以继续向乙发送的数据序号范围是( )。 甲乙时间t₀seq = 501,200B 数据seq = 601,ack_seq = 501,rcvwnd = 500Bt₁
  • A. 501 ~ 1000
  • B. 601 ~ 1100
  • C. 701 ~ 1000
  • D. 801 ~ 1100
展开解析

考点5.5 发送窗口

C乙的确认号 501:501 以后的字节乙都还没确认(包括甲在 t0 发的那 200 字节)。窗口从 501 开始,大小 500B。

  1. 发送窗口:501 ~ 1000。
  2. 其中 501 ~ 700 已在 t0 发出、尚未确认。
  3. 还能发 701 ~ 1000。
  • A 错501 ~ 1000 是整个窗口,其中 501 ~ 700 已经发过了。
  • B 错601 是乙自己数据的序号,与甲的发送窗口无关。
  • C 对701 ~ 1000。
  • D 错起点和终点都不对:下一个该发的是 701,窗口前沿是 1000。

窗口 = [ack,ack + rwnd − 1];再扣掉已发出的部分。

2025-38计网
主机甲通过 TCP 向主机乙发送数据的部分过程如下图,seq 为序号,ack_seq 为确认序号,rcwnd 为接收窗口。甲在 t0 时刻的拥塞窗口和发送窗口均为 2000B,拥塞控制阈值为 8000B,MSS = 1000B。甲始终以 MSS 发送 TCP 段。若甲在 t1 时刻收到如图所示的确认段,则甲在未收到新的确认段之前,还可以继续向乙发送的 TCP 段数是( )。 甲乙t₀seq = 2001,1000B 数据seq = 3001,1000B 数据seq = 4001,ack_seq = 3001rcwnd = 4000Bt₁
  • A. 2
  • B. 3
  • C. 4
  • D. 5
展开解析

考点5.5 可用窗口5.6 慢开始

At0 起甲发出 2001 和 3001 两个段,窗口 2000B 用满了。t1 收到 ack_seq = 3001,确认了第一个段。

  1. cwnd = 2000B < 阈值 8000B,处于慢开始:每收到一个新确认,cwnd 加 1 个 MSS → 3000B。
  2. 发送窗口 = min(3000, 4000) = 3000B,从 3001 开始:3001 ~ 6000。
  3. 3001 ~ 4000 那个段已发出未确认;还能发 4001 ~ 6000,共 2000B = 2 个段。
  • A 对2 个。
  • B 错3:没有减去已发送未确认的 3001 段(或者只看了接收窗口 4000B:3001 + 4000 − 4001 = 3000B,忽略了拥塞窗口)。
  • C 错4:把接收窗口 4000B 整个当成了还能发的量。
  • D 错5 个段 = 5000B,要从 4001 一直发到 9000;可就算只看接收窗口,前沿也只到 3001 + 4000 − 1 = 7000,最多 3 段,再受 cwnd = 3000B 限制只剩 2 段,5 段不可能。

先更新 cwnd(慢开始每个新 ACK 加 1 MSS),再取 min(cwnd, rwnd),最后减去在途数据。

接收窗口:接收方也有一个窗口,大小等于接收缓存中还空着的部分。按序收到但还没被应用读走的数据、失序到达而暂存的数据,都占着接收缓存。接收方把这个窗口值写进确认报文段的“窗口”字段通告给发送方,这就是下面要讲的流量控制。

超时重传:重传时间 RTO 怎么定

问题:重传计时器设多长?太短,确认还在路上就重传了,白白增加网络负担;太长,真丢了也要干等很久。而 TCP 连接的往返时间 RTT 差别很大(同一个局域网里几毫秒,跨洋几百毫秒),还会随网络负载变化——所以 RTO 不能是常数,要根据测到的 RTT 随时调整。

补课:加权平均(“新的只占一小份”)

期末成绩 = 平时 × 30% + 考试 × 70% 是加权平均。RTT 的平滑也一样:新的平均值 = 旧平均 × 7/8 + 新样本 × 1/8。新样本只占 1/8 的分量,所以偶尔一个特别大或特别小的样本不会让平均值大起大落;但如果样本持续变大,平均值也会一点点跟上去。

加权平均往返时间 RTTS = (1 − α) × 旧 RTTS + α × 新 RTT 样本 (α 推荐 1/8;第一次测量时 RTTS 就取样本值) RTT 偏差 RTTD = (1 − β) × 旧 RTTD + β × |RTTS − 新 RTT 样本| (β 推荐 1/4;第一次取样本值的一半) 超时重传时间 RTO = RTTS + 4 × RTTD

为什么要加 4 倍偏差:RTT 忽大忽小(偏差大)时,RTO 要留更多余量,否则稍慢一点的确认就会被误判为丢失。

例跟我算
某 TCP 连接第一次测得 RTT 样本 40 ms,第二次测得 48 ms(α = 1/8,β = 1/4)。求每次测量后的 RTTS、RTTD 和 RTO。
跟我算
测量RTTSRTTDRTO
第 1 次(40 ms)取样本值 = 40样本的一半 = 2040 + 4 × 20 = 120 ms
第 2 次(48 ms)7/8 × 40 + 1/8 × 48 = 35 + 6 = 413/4 × 20 + 1/4 × |41 − 48| = 15 + 1.75 = 16.7541 + 4 × 16.75 = 108 ms

再练一个只算 RTTS 的:旧 RTTS = 30 ms,新样本 26 ms → 0.875 × 30 + 0.125 × 26 = 26.25 + 3.25 = 29.5 ms(不是简单平均 28 ms)。

口径说明:上面按教材的写法,先算新的 RTTS,再用新 RTTS 算 RTTD(谢希仁教材习题 5-41 的答案就是这样算的)。RFC 6298 的次序相反——先用旧 RTTS 更新 RTTD,再更新 RTTS,本例会得到 RTTD = 17、RTO = 109 ms(拓展)。408 至今没有考过 RTTD 的数值计算。

发送方 A接收方 B报文段 M(第一次发送)走得很慢RTO 到了,还没收到确认重传报文段 M确认 M 的 ACK这个 ACK 是对第一次发送的确认,还是对重传的确认?按前者算 RTT 偏大,按后者算偏小——干脆不算
图 5-22 重传带来的“确认二义性”。发送方分不清收到的确认对应哪一次发送,测出的 RTT 样本就不可信。

Karn 算法:计算加权平均 RTTS 时,只要报文段重传了,就不采用它的往返时间样本。但这样又有新问题:如果网络时延突然变大,报文段一直超时重传,RTO 就永远得不到更新。修正的 Karn 算法:报文段每重传一次,就把 RTO 加倍(如 108 → 216 → 432 ms);直到某个报文段不用重传就收到确认,才重新按公式计算 RTO。

冗余 ACK 与快重传

超时重传要等 RTO,往往几百毫秒。能不能早一点发现丢失?能——接收方每收到一个失序的报文段,就立即对已按序收到的数据发出重复确认(冗余 ACK)。发送方一旦连续收到 3 个重复确认,就知道那个报文段很可能丢了,不等计时器超时立即重传,这就是快重传。

发送方 A接收方 BM1:seq = 1(1000 B)ack = 1001正常的确认(不算重复)✕M2:seq = 1001丢失M3:seq = 2001失序,缓存ack = 1001(第 1 个重复确认)M4:seq = 3001失序,缓存ack = 1001(第 2 个重复确认)M5:seq = 4001失序,缓存ack = 1001(第 3 个重复确认)收到 3 个重复确认:不等超时,立即重传 M2重传 M2:seq = 1001ack = 5001M2 ~ M5 一次确认
图 5-23 快重传。一共收到 4 个 ack = 1001:第 1 个是正常确认,后 3 个才是“重复确认”。数清楚这一点就能做对 2019-38。

为什么要等 3 个,而不是 1 个?因为 IP 可能让报文段乱序到达:M3 比 M2 先到一点点也会产生 1 个重复确认,并不代表 M2 丢了。连续 3 个重复确认才比较有把握。快重传之后,发送方还要调整拥塞窗口(快恢复),见 5.6 节。

2019-38计网
某客户通过一个 TCP 连接向服务器发送数据的部分过程如下图所示。客户在 t0 时刻第一次收到确认序列号 ack_seq = 100 的段,并发送序列号 seq = 100 的段,但发生丢失。若 TCP 支持快速重传,则客户重新发送 seq = 100 段的时刻是( )。 客户服务器时间ack_seq = 100t₀seq = 100丢失seq = 200seq = 300seq = 400t₁t₂t₃ack_seq = 100ack_seq = 100ack_seq = 100t₄t₄ 时刻 seq = 100 超时
  • A. t1
  • B. t2
  • C. t3
  • D. t4
展开解析

考点5.5 快重传

C快重传:连续收到 3 个重复确认,就立即重传,不等超时。

  1. t0 收到的 ack_seq = 100 是第一次(原始确认)。
  2. t1、t2、t3 收到的三个 ack_seq = 100 是第 1、2、3 个重复确认。
  3. t3 时刻凑满 3 个重复确认,立即重传 seq = 100 的段。
  • A 错t1 只是第 1 个重复确认。
  • B 错t2 只是第 2 个重复确认。
  • C 对t3。
  • D 错t4 是超时重传的时刻,支持快重传时不用等到这里。

“重复确认”不算第一次那个:一共收到 4 个相同的 ack 时重传。

拓展 选择确认 SACK:累积确认只能说“1001 以前都收到了”,没法说“2001 ~ 5000 我也收到了”,于是发送方重传时可能把已经收到的也重发一遍。SACK 选项让接收方报告收到的不连续字节块的边界(如 “2001 ~ 5000”),发送方只重传真正缺的部分。SACK 要在建立连接时双方协商同意才能使用,一个首部最多报告 4 个字节块。

TCP 的可靠传输像 GBN 还是 SR

第 3 篇学过链路层的两种连续 ARQ。TCP 的做法是两者的“混合”,选择题偶尔会考这种对比:

GBN(回退 N 帧)SR(选择重传)TCP
编号对象帧帧字节
确认方式累积确认逐个确认累积确认(可选 SACK)
失序到达丢弃缓存通常缓存(标准没有规定,实际都缓存)
超时重传什么出错帧及其后已发的所有帧只重传超时的那一帧只重传最早未确认的那个报文段
接收窗口1> 1由接收缓存的空闲空间决定(rwnd)
窗口大小固定固定动态:min(rwnd, cwnd)
接收方什么时候发确认(了解即可)
  • 按序到达一个报文段、前面的都已确认:可以等一会儿(推迟确认,最多 0.5 秒),看下一个报文段来不来,好一起确认。
  • 按序到达、而且还有一个在等推迟确认的:立即发一个累积确认,两个一起确认。
  • 失序到达(前面有缺口):立即发重复确认,指出缺口的第一个字节——快重传就靠它。
  • 到达的报文段补上了缺口(部分或全部):立即确认。

流量控制:让发送方别把接收方淹没

问题:服务器的网卡很快,可接收方的应用程序忙着别的事,迟迟不从接收缓存里读数据。发送方若还照常猛发,接收缓存满了,后来的数据只能丢掉,白白重传。

比喻:往杯子里倒水

接收缓存是杯子,应用读数据是有人在喝。倒水的人(发送方)看不见杯子,只能听喝水的人喊“还能倒 200 毫升”(rwnd)。喝得慢,杯子剩的空间就小,喊的数也小;喊“0”就得停。哪里不像:喊话(确认报文段)要在网络里走一段时间,而且可能丢失——所以才需要后面的持续计时器。

流量控制(flow control)就是让发送方的发送速率不要太快,使接收方来得及接收。TCP 用滑动窗口实现:接收方在每个确认报文段的窗口字段里通告自己的接收窗口 rwnd(= 接收缓存的空闲空间),发送方的发送窗口不能超过 rwnd。

发送方 A接收方 B接收缓存 3000 B,应用暂时不读seq = 1(1000 B)ack = 1001,rwnd = 2000缓存里 1000 B 没被读走,还空 2000 Bseq = 1001(1000 B)ack = 2001,rwnd = 1000seq = 2001(1000 B)ack = 3001,rwnd = 0缓存满:零窗口通知停止发送,启动持续计时器持续计时器到时零窗口探测报文段:seq = 3001(1 B)ack = 3001,rwnd = 0仍然没空,探测的 1 字节被丢弃应用读走 2000 B,缓存空出 2000 B✕窗口更新:ack = 3001,rwnd = 2000丢失!持续计时器又到时(间隔加倍)零窗口探测报文段:seq = 3001(1 B)ack = 3002,rwnd = 1999这次 1 字节被收下发送窗口 3002 ~ 5000,继续发送
图 5-24 流量控制与零窗口。前三个确认的“确认号 + rwnd − 1”都是 3000:应用不读数据时,窗口后沿右移、前沿不动,窗口越缩越小直到 0(2015-39 就是这个现象)。窗口更新报文段丢了,若没有持续计时器,A 等 B 通知、B 等 A 发数据,双方永远互相等待(死锁)。
例跟我算
甲向乙发数据,MSS = 1 KB,慢开始门限 32 KB,甲一直有数据要发。乙为连接分配 20 KB 接收缓存,收到的数据全部存入、从不被取走,每个段都确认。从连接建立起,第几轮之后甲的发送窗口变为 0?
跟我算
轮次cwndrwnd = 20 − 已存入发送窗口 = 取小本轮后已存入
112011
221923
341747
4813815
51655(被 rwnd 卡住)20
6210020

第 5 轮之后缓存已满,rwnd = 0,发送窗口为 0。注意第 6 行的 cwnd 是 21 而不是 32:慢开始是“每回来一个确认加 1”,第 5 轮只发了 5 个段、只回来 5 个确认,所以 16 + 5 = 21。2015-39 是这道题的前 4 轮(缓存 16 KB:1 + 2 + 4 + 8 = 15,剩 1 KB);2016-41 则是同样的“填满缓存”过程再加上时间和速率的计算。

零窗口与持续计时器

  • 接收方通告 rwnd = 0 后,发送方停止发送数据(紧急数据和零窗口探测除外)。
  • 接收方腾出空间后,会发一个“窗口更新”的确认报文段。但不带数据的确认报文段不会被确认,丢了也没人重传——这正是死锁的来源。
  • 所以发送方收到零窗口通知就启动持续计时器(persistence timer)。计时器到时,就发一个零窗口探测报文段(只带 1 字节数据);接收方必须确认它,并在确认里给出当前的窗口值。窗口仍为 0,就重设计时器(间隔逐次加倍);窗口不为 0,死锁就打破了。
拓展 糊涂窗口综合征与 Nagle 算法

糊涂窗口综合征:接收方的应用每次只读 1 个字节,接收方就通告 rwnd = 1,发送方于是发一个只带 1 字节数据的报文段——这个报文段有 40 字节首部,效率只有 1 ÷ 41 ≈ 2.4%。如此反复,网络里全是“小包”。解决:接收方等缓存空出至少一个 MSS 或一半空间时,才通告窗口(在此之前通告 0);发送方也不要发太小的报文段。

Nagle 算法(发送方):应用逐个字节交给 TCP 时,先发第一个字节,后面到来的字节先攒在缓存里;等收到前一个报文段的确认,或攒够一个 MSS(或发送窗口的一半)时,再把攒下的一起发出。网络慢时自动攒多一些,网络快时发得勤一些。

真题怎么考:5.5 的 6 道选择题
  • 确认号(2009-38、2011-40、2013-39):按“三条规则”算;遇到缺口停在缺口。
  • 还能发多少(2010-39、2021-40、2025-38):画三指针,min(cwnd, rwnd) 再减在途数据;2025-38 还要先按慢开始更新 cwnd。
  • 快重传的时刻(2019-38,挂在 5.6):第 3 个重复确认到达时,第一个正常确认不算。
  • rwnd 的变化(2015-39,挂在 5.6):数据不被取走,rwnd = 缓存 − 已存入的数据。

还没考过、但在考纲里的:RTO 的计算、Karn 算法、持续计时器的作用、零窗口探测报文段的长度、推迟确认和捎带确认。本节末尾的变式卡专门练了这几个点。

易错辨析
  • TCP 对出错的报文段不发否认,直接丢弃,靠超时或重复确认触发重传。
  • 重复确认的个数从第 2 个相同的 ack 算起:“收到 3 个重复确认”= 一共收到 4 个相同的 ack。
  • 发送窗口 ≠ 接收窗口:发送窗口还受 cwnd 限制,而且 rwnd 的通知要经过网络传过来,有时延。
  • 流量控制是端到端、点对点的,只涉及发送方和接收方;拥塞控制是全局的(5.6)。
  • 持续计时器针对“零窗口死锁”,保活计时器针对“对方失联”,别混。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2009-38 改
主机甲与乙已建立 TCP 连接,甲连续发送两个段,分别包含 200B 和 300B 数据,第一个段的序号为 1000,乙正确收到两个段后发回的确认号是( )。
  • A. 1200
  • B. 1300
  • C. 1500
  • D. 1501
展开解析

C1000 + 200 + 300 = 1500。

  • A 错1200 是第二个段的序号,只确认了第一个段。
  • B 错1300 = 1000 + 300,漏了第一个段的 200 字节。
  • C 对对:1000 + 200 + 300 = 1500。
  • D 错确认号是期望收到的下一个字节:最后一个字节是 1499,确认号 1500,不必再加 1。

变化点:换一组数。

变式计网由 2011-40 改
甲向乙连续发送 3 个 TCP 段,分别包含 200B、300B、400B 数据,第 3 个段的序号为 1500。若乙只正确收到第 1、3 个段,则乙发给甲的确认号是( )。
  • A. 1000
  • B. 1500
  • C. 1900
  • D. 1200
展开解析

D倒推:第 2 段序号 1500 − 300 = 1200,第 1 段 1200 − 200 = 1000。第 2 段缺失,确认号停在 1200。

  • A 错1000 是第 1 段的序号;第 1 段已正确收到,确认号要越过它到 1200。
  • B 错1500 是第 3 段的序号;第 2 段(1200 ~ 1499)缺失,累积确认不能越过缺口。
  • C 错1900 是三段都收到后的确认号(1500 + 400);第 2 段丢了,第 3 段只能先缓存。
  • D 对对:确认号停在缺口 1200。

变化点:换一组数,仍是“缺哪个字节,确认号就是哪个”。

变式计网由 2013-39 改
甲收到乙的一个 TCP 段:序号 3000、确认号 1500、数据 200B,则甲立即发回的 TCP 段的序号和确认号分别是( )。
  • A. 1500,3200
  • B. 1501,3200
  • C. 1500,3199
  • D. 3200,1500
展开解析

A甲的 seq = 乙的 ack = 1500;甲的 ack = 3000 + 200 = 3200。

  • A 对对:seq = 1500,ack = 3200。
  • B 错甲的序号就是乙期望的 1500,不必再加 1。
  • C 错3199 是乙这段数据的最后一个字节,确认号要再加 1:3200。
  • D 错序号和确认号写反了:甲的 seq 来自乙的 ack(1500),甲的 ack 来自乙的 seq + 数据长度(3200)。

变化点:换一组数。

变式计网由 2010-39 改
甲的拥塞窗口为 6000B,MSS = 1000B。甲连续发送两个最大段后收到第一个段的确认,确认段中通告的接收窗口为 3000B,此时甲还可以发送的最大字节数是( )。
  • A. 1000
  • B. 2000
  • C. 3000
  • D. 5000
展开解析

B发送窗口 = min(6000, 3000) = 3000,扣掉已发未确认的 1000,还能发 2000B。

  • A 错1000 是原题 2010-39(rwnd = 2000)的结果;这里 rwnd = 3000,窗口 3000 减在途 1000 剩 2000。
  • B 对对:min(6000, 3000) − 1000 = 2000。
  • C 错3000 是整个发送窗口 min(6000, 3000),没减去已发未确认的 1000B。
  • D 错5000 = 6000 − 1000:用了拥塞窗口,忽略了接收窗口 3000 的限制。

变化点:拥塞窗口和接收窗口都换了。

变式计网由 2021-40 改
甲在 t0 时刻发送一个 seq = 1001、封装 400B 数据的段,t1 时刻收到乙的 ack_seq = 1001、rcvwnd = 1000B 的段,则甲在未收到新的确认前还可以发送的序号范围是( )。
  • A. 1001 ~ 2000
  • B. 1401 ~ 2400
  • C. 1401 ~ 2000
  • D. 1001 ~ 1400
展开解析

C窗口 1001 ~ 2000,其中 1001 ~ 1400 已发,还能发 1401 ~ 2000。

  • A 错1001 ~ 2000 是整个窗口,其中 1001 ~ 1400 已经在 t0 发出。
  • B 错把窗口从 1401 起算了;窗口要从确认号 1001 起算,前沿是 1001 + 1000 − 1 = 2000。
  • C 对对:1401 ~ 2000。
  • D 错1001 ~ 1400 是 t0 已发出、还没被确认的数据,不是还可以发的。

变化点:换一组数,窗口从确认号算起。

变式计网考纲补充(尚无真题)
TCP 测得原来的加权平均往返时间 RTTS = 30ms,新的 RTT 样本为 26ms,α = 1/8,则更新后的 RTTS 是( )。
  • A. 26ms
  • B. 28ms
  • C. 30.5ms
  • D. 29.5ms
展开解析

DRTTS = (1 − 1/8) × 30 + 1/8 × 26 = 26.25 + 3.25 = 29.5ms。28ms 是两者的简单平均,不是加权平均。

  • A 错26ms 直接用了新样本,没有做加权平均。
  • B 错28ms 是新旧两个值的简单平均(各占 1/2);新样本只占 1/8。
  • C 错30.5 = 7/8 × 30 + 1/8 × 34:把新样本的偏差方向弄反了;26 < 30,平均值应该变小。
  • D 对对:26.25 + 3.25 = 29.5ms。

考点:5.5 节“超时重传与快重传”中的 RTTS 公式。

变式计网考纲补充(尚无真题)
根据(修正的)Karn 算法,下列说法中正确的是( )。
  • A. 重传报文段的往返时间样本也要计入加权平均往返时间
  • B. 每重传一次,超时重传时间 RTO 减半
  • C. 计算加权平均往返时间时不采用重传报文段的样本;报文段每重传一次,RTO 加倍
  • D. RTO 固定不变,与往返时间无关
展开解析

C重传后收到的确认分不清对应哪一次发送,所以不采样(A 错);但不采样会让 RTO 得不到更新,于是规定每重传一次 RTO 加倍(B、D 错)。

  • A 错重传后收到的确认分不清对应哪一次发送,样本不可信,Karn 算法规定不采用。
  • B 错每重传一次 RTO 加倍,不是减半;减半只会让重传更频繁、网络更堵。
  • C 对对:不采样,RTO 加倍。
  • D 错RTO 要随测得的 RTT 动态调整,不是固定值。

考点:5.5 节“超时重传:重传时间 RTO 怎么定”。

变式计网考纲补充(尚无真题)
TCP 发送方收到接收窗口为 0 的通知后启动持续计时器,其目的是( )。
  • A. 防止接收方“窗口变大”的通知丢失后双方互相等待
  • B. 测量往返时间
  • C. 检测接收方主机是否已经关机
  • D. 让旧连接的报文段从网络中消失
展开解析

A不带数据的确认报文段丢了没人重传;持续计时器到时发零窗口探测报文段,逼接收方回一个带当前窗口值的确认,打破死锁。C 是保活计时器,D 是 TIME-WAIT 的作用。

  • A 对对:防止窗口更新报文丢失后的死锁。
  • B 错测量往返时间靠的是确认的到达时刻(或时间戳选项),不需要持续计时器。
  • C 错检测对方主机是否故障是保活计时器的作用。
  • D 错让旧连接的报文段从网络中消失是 TIME-WAIT 等 2MSL 的作用。

考点:5.5 节“零窗口与持续计时器”。

变式计网考纲补充(尚无真题)
某 TCP 连接第一次测得的往返时间样本为 30 ms,按 RTO = RTTS + 4 × RTTD 计算,此时的 RTO 为( )。
  • A. 60 ms
  • B. 90 ms
  • C. 120 ms
  • D. 30 ms
展开解析

B第一次测量时 RTTS 取样本值 30 ms,RTTD 取样本值的一半 15 ms,RTO = 30 + 4 × 15 = 90 ms。

  • A 错60 = 30 + 2 × 15:偏差只乘了 2;公式是 RTT_S + 4 × RTT_D。
  • B 对对:30 + 4 × 15 = 90ms。
  • C 错120ms 对应 RTT_D = 22.5ms(30 + 4 × 22.5);第一次测量时 RTT_D 取样本值的一半 15ms。
  • D 错30ms 直接把样本值当成了 RTO,没有加 4 倍偏差留余量。

考点:5.5 节 RTO 的计算。

5.6TCP 拥塞控制

★★★ 高频选择题综合题

拥塞:网络里的“堵车”

问题:接收方的缓存很大、rwnd 很大,发送方就可以放开猛发吗?不行——中间的路由器和链路是大家共用的。如果每台主机都只看对方的 rwnd 拼命发,路由器的队列很快排满,分组被大量丢弃,各主机又纷纷重传,网络越来越堵,真正送到的数据反而越来越少(4.1 节的负载—吞吐量曲线)。

比喻:试探着往高速路上放车

车队出发时先放 1 辆车上路,平安到达就放 2 辆、4 辆、8 辆(慢开始);车多到一定程度就小心点,每趟只多放 1 辆(拥塞避免);一旦听说前面严重堵车(超时),马上只放 1 辆,从头试;如果只是听说个别车被耽误(3 个重复确认),就把车队规模砍一半,再慢慢加(快恢复)。哪里不像:司机没人统一指挥,每个发送方都是自己根据“丢没丢包”来猜网络堵不堵。

拥塞:对网络中某一资源的需求超过了它所能提供的可用部分,网络性能变坏。拥塞控制就是防止过多的数据注入网络,使路由器和链路不致过载。

流量控制拥塞控制
目的别把接收方淹没别把网络堵死
范围点对点(端到端)全局性,涉及所有主机、路由器
谁说了算接收方通告 rwnd发送方自己估计 cwnd
依据接收缓存的空闲空间是否出现超时、重复确认(丢包)

发送方为每条连接维持一个拥塞窗口 cwnd,它的大小取决于网络的拥塞程度,并且动态变化。只要没出现拥塞,cwnd 就增大一些,以便多发;一出现拥塞(或可能出现),cwnd 就减小。发送方怎么知道拥塞了?靠丢包:超时,或收到 3 个重复确认(现代网络传输差错极少,丢包几乎都是路由器队列溢出造成的)。

发送窗口 = min(接收窗口 rwnd,拥塞窗口 cwnd)

另设一个慢开始门限 ssthresh:cwnd < ssthresh 时用慢开始;cwnd ≥ ssthresh 时用拥塞避免(RFC 规定门限减半时不小于 2 个 MSS,408 题目一般不涉及这个下限)。408 的题目通常以 MSS 为单位、以“轮次”(一个 RTT)为单位计算,并假设接收方每个报文段都确认、发送方总有数据要发、rwnd 足够大(题目另有说明时除外)。

联系 4.1 节:拥塞控制分开环和闭环两类。TCP 的拥塞控制是典型的闭环控制——发送方监测网络状态(是否丢包)、把它当作反馈、据此调整 cwnd;它不依赖路由器发通知。(ICMP 的“源点抑制”报文就是一种由路由器发出的通知,实际网络中已经废弃;但考试仍把它算在 ICMP 五类差错报告里,4.6 节。)

四个算法

算法什么时候cwnd 怎么变
慢开始连接刚建立,或超时之后;cwnd < ssthresh从 1 开始,每收到一个对新数据的确认加 1 个 MSS,即每轮翻倍:1、2、4、8……(翻倍会超过 ssthresh 时只增到 ssthresh)
拥塞避免cwnd ≥ ssthresh每轮只加 1(加法增大,线性增长)
超时重传计时器超时:网络很可能严重拥塞ssthresh = cwnd ÷ 2,cwnd = 1,重新慢开始
快重传 + 快恢复收到 3 个重复确认:只是个别报文段丢失,网络并不太堵立即重传丢失的报文段;ssthresh = cwnd ÷ 2,cwnd = 新的 ssthresh,接着拥塞避免
超时收到 3 个重复确认
说明什么连后面报文段的确认都没回来:网络可能严重拥塞后面的报文段都到了,只是个别报文段丢失:拥塞不严重
怎样重传超时重传快重传(不等计时器)
ssthreshcwnd ÷ 2cwnd ÷ 2
cwnd1新的 ssthresh
接下来慢开始拥塞避免
第 1 轮:cwnd = 1发 1 段,收回 1 个确认每个确认 + 1 → cwnd = 2第 2 轮:cwnd = 2发 2 段,收回 2 个确认每个确认 + 1 → cwnd = 4第 3 轮:cwnd = 4发 4 段,收回 4 个确认每个确认 + 1 → cwnd = 8第 4 轮:cwnd = 8发 8 段,收回 8 个确认每个确认 + 1 → cwnd = 16一轮(一个 RTT)里发出 cwnd 个段、收回 cwnd 个确认,每个确认让 cwnd 加 1,所以每轮翻倍
图 5-25 慢开始为什么“每轮翻倍”。规则是“每个确认 + 1”,翻倍是结果。如果接收方采用推迟确认(每两个段确认一次),增长就没有这么快——所以题目要说明“对每个段都确认”。

拥塞避免的“每轮加 1”同样可以按确认来算:每收到一个确认,cwnd 增加 MSS × MSS ÷ cwnd。例如 cwnd = 4 个 MSS 时,每个确认加 1/4,一轮收回 4 个确认,正好加 1。

名字容易误导:“慢开始”的“慢”是指 cwnd 从 1 开始、一开始注入网络的数据少,增长其实是指数级的,最快;“拥塞避免”只是让 cwnd 增长得慢一些,不能完全避免拥塞。

轮次(RTT)cwnd(MSS)ssthresh = 16ssthresh = 12ssthresh = 812481617181920212223241248121314151689101112慢开始拥塞避免(每轮 + 1)超时:ssthresh = 24 ÷ 2,cwnd = 13 个重复确认:ssthresh = cwnd = 16 ÷ 2
图 5-26 拥塞窗口变化的全过程。超时后从 1 重新慢开始;收到 3 个重复确认只减半,不回到 1。注意慢开始翻倍到超过 ssthresh 时,408 的做法是只增到 ssthresh(图中 8 → 12 而不是 16)。

cwnd 逐轮表:跟我算三道

先统一“第几轮”的说法

“第 n 轮的 cwnd”指第 n 个 RTT 里发送时用的窗口;“经过 n 个 RTT 后的 cwnd”“第 n 个 RTT 的段都被确认时的 cwnd”指这一轮的确认全部回来之后的值,等于第 n + 1 轮发送时用的窗口。2009-39 问的是后者(4 个 RTT 后为 9),2015-39 问的也是后者(4 个 RTT 后 cwnd = 16)。做题前先把题目问的是哪一个圈出来。

例 1超时
TCP 连接从 cwnd = 1 开始,ssthresh = 16(单位 MSS)。第 9 轮发送时(cwnd = 20)发生超时,之后不再出错。写出第 1 ~ 15 轮发送时的 cwnd。
跟我算
轮次123456789101112131415
cwnd1248161718192012481011
阶段慢开始拥塞避免(16 起每轮 + 1)超时:ssthresh = 10,慢开始拥塞避免

关键两步:① 超时时 ssthresh = 20 ÷ 2 = 10,cwnd = 1;② 第 13 轮 cwnd = 8,翻倍是 16,超过了新门限 10,所以第 14 轮只到 10,之后每轮加 1。

例 23 个重复确认
条件同例 1,但第 9 轮(cwnd = 20)收到的是 3 个重复确认。写出第 10 ~ 13 轮的 cwnd。
跟我算

快重传 + 快恢复:ssthresh = 20 ÷ 2 = 10,cwnd = 10,直接拥塞避免:第 10 ~ 13 轮依次为 10、11、12、13。比较例 1:同一时刻出事,超时后第 13 轮 cwnd 只有 8,重复确认后已经是 13——这就是“快恢复”的“快”。

上面的小工具已按例 1 设置(“超时发生在第 9 轮末”表示第 9 轮发出的数据出现超时)。把超时轮次清成 0、在“3 个重复确认”里填 9,就得到例 2。

补课:从 a 翻倍到 b 要几轮

每轮翻倍:1 → 2 → 4 → 8 → 16,从 1 到 2k 要 k 轮,k = log2(2k)。从 a 到 b(b 是 a 的 2 的幂倍)要 log2(b ÷ a) 轮:4 → 64 是 log216 = 4 轮。每轮加 1:从 a 到 b 要 b − a 轮。

例 3至少 / 最长
MSS = 1 KB,RTT = 10 ms,不出现拥塞,接收窗口足够大。cwnd 从 4 KB 增长到 64 KB,至少需要多长时间?最长呢?若某时刻 cwnd = W 时超时,再次增长到 W 至少要多少个 RTT?
跟我算

至少:ssthresh ≥ 64,一直慢开始:4 → 8 → 16 → 32 → 64,4 个 RTT = 40 ms(2017-39 同理:1 → 32 KB 用 5 个 RTT = 25 ms)。

最长:ssthresh ≤ 4,一直拥塞避免,每轮加 1:64 − 4 = 60 个 RTT = 600 ms(2020-38 同理:8 → 32 要 24 个 RTT = 48 ms)。

超时后恢复到 W:ssthresh = W ÷ 2,从 1 慢开始到 W ÷ 2 要 log2(W ÷ 2) 轮,再拥塞避免到 W 要 W ÷ 2 轮。W = 16:3 + 8 = 11 个 RTT(2022-38);W = 32:4 + 16 = 20 个 RTT。

2009-39计网
一个 TCP 连接总是以 1KB 的最大段长发送 TCP 段,发送方有足够多的数据要发送。当拥塞窗口为 16KB 时发生了超时,如果接下来的 4 个 RTT(往返时间)时间内的 TCP 段的传输都是成功的,那么当第 4 个 RTT 时间内发送的所有 TCP 段都得到肯定应答时,拥塞窗口大小是( )。
  • A. 7KB
  • B. 8KB
  • C. 9KB
  • D. 16KB
展开解析

考点5.6 超时后的慢开始与拥塞避免

C超时:ssthresh = 16 ÷ 2 = 8KB,cwnd = 1KB。

  1. 第 1、2、3 个 RTT 后(慢开始):2、4、8KB,达到门限 8。
  2. 第 4 个 RTT 后(拥塞避免,加 1):9KB。
  • A 错7KB 不在任何一步上:超时后 4 个 RTT 末的 cwnd 依次是 2、4、8、9KB(慢开始到门限 8 后每轮加 1);7 = 1 + 2 + 4 只是前 3 轮发送量之和,不是窗口。
  • B 错8KB:只数了 3 个 RTT。
  • C 对9KB。
  • D 错16KB:慢开始一直翻倍,忽略了门限变成 8。

超时后:门限减半,cwnd 回到 1;到门限后每轮加 1。

2014-38计网
主机甲和主机乙已建立了 TCP 连接,甲始终以 MSS = 1KB 大小的段发送数据,并一直有数据发送;乙每收到一个数据段都会发出一个接收窗口为 10KB 的确认段。若甲在 t 时刻发生超时时拥塞窗口为 8KB,则从 t 时刻起,不再发生超时的情况下,经过 10 个 RTT 后,甲的发送窗口是( )。
  • A. 10KB
  • B. 12KB
  • C. 14KB
  • D. 15KB
展开解析

考点5.6 发送窗口 = min(cwnd, rwnd)

A超时:ssthresh = 8 ÷ 2 = 4KB,cwnd = 1KB。

  1. 10 个 RTT 的 cwnd:2、4(到门限),5、6、7、8、9、10、11、12。
  2. 乙的接收窗口始终 10KB → 发送窗口 = min(12, 10) = 10KB。
  • A 对10KB。
  • B 错12KB 是拥塞窗口,忘了受接收窗口限制。
  • C 错14KB:10 个 RTT 后 cwnd 只有 12KB,何况还要受 rwnd = 10KB 限制。
  • D 错15KB 比接收窗口 10KB 还大,发送窗口 = min(cwnd, rwnd) 不可能超过 10KB;何况 10 个 RTT 后 cwnd 只有 12KB。

问“发送窗口”,最后一步一定和 rwnd 比。

2015-39计网
主机甲和主机乙新建一个 TCP 连接,甲的拥塞控制初始阈值为 32KB,甲向乙始终以 MSS = 1KB 大小的段发送数据,并一直有数据发送;乙为该连接分配 16KB 接收缓存,并对每个数据段进行确认,忽略段传输延迟。若乙收到的数据全部存入缓存,不被取走,则甲从连接建立成功时刻起,未发生超时的情况下,经过 4 个 RTT 后,甲的发送窗口是( )。
  • A. 1KB
  • B. 8KB
  • C. 16KB
  • D. 32KB
展开解析

考点5.6 慢开始5.5 流量控制

A新连接从慢开始(门限 32KB 很大):4 个 RTT 依次发 1、2、4、8KB,共 15KB,全部存进乙的 16KB 缓存且不被取走。

  1. 4 个 RTT 后 cwnd = 16KB。
  2. 乙的缓存只剩 16 − 15 = 1KB → rwnd = 1KB。
  3. 发送窗口 = min(16, 1) = 1KB。
  • A 对1KB。
  • B 错8KB 是第 4 轮发送时的 cwnd。
  • C 错16KB 是 4 个 RTT 后的 cwnd,也是乙缓存的总大小,但缓存已经快满了。
  • D 错32KB 是初始门限 ssthresh:4 个 RTT 内 cwnd 只增到 16KB,而且乙的缓存只剩 1KB,发送窗口 = min(16, 1) = 1KB。

数据不被取走,rwnd = 缓存 − 已存入的数据。

2017-39计网
若甲向乙发起一个 TCP 连接,最大段长 MSS = 1KB,RTT = 5ms,乙开辟的接收缓存为 64KB,则甲从连接建立成功至发送窗口达到 32KB,需经过的时间至少是( )。
  • A. 25ms
  • B. 30ms
  • C. 160ms
  • D. 165ms
展开解析

考点5.6 慢开始的时间

A“至少”:一直处于慢开始,每个 RTT 翻倍(接收缓存 64KB 足够大,不限制)。

  1. 1 → 2 → 4 → 8 → 16 → 32KB,共 5 次翻倍。
  2. 5 × 5ms = 25ms。
  • A 对25ms。
  • B 错30ms = 6 × 5ms:多算了 1 个 RTT(1 → 32KB 只翻倍 5 次),可能把建立连接的握手也算了进去,但题目从“连接建立成功”起计时。
  • C 错160ms = 32 × 5ms:相当于每个 RTT 只多发 1KB、从 0 数到 32KB(就算从 1KB 线性加到 32KB 也要 31 个 RTT = 155ms),都不是“至少”;“至少”要一直慢开始翻倍,只要 5 个 RTT。
  • D 错165ms = 33 × 5ms:在 C 的线性数法上又多算了 1 个 RTT(比如把握手也算进来),而题目从“连接建立成功”起计时;“至少”只要 5 个 RTT = 25ms。

从 1 到 2k 需要 k 个 RTT。

2020-38计网
若主机甲与主机乙已建立一条 TCP 连接,最大段长(MSS)为 1KB,往返时间(RTT)为 2ms,则在不出现拥塞的前提下,拥塞窗口从 8KB 增长到 32KB 所需的最长时间是( )。
  • A. 4ms
  • B. 8ms
  • C. 24ms
  • D. 48ms
展开解析

考点5.6 拥塞避免的时间

D问“最长”时间:假设 ssthresh ≤ 8KB,cwnd 从 8KB 起一直处于拥塞避免,每个 RTT 只加 1KB。

  1. 8 → 32 需要 24 个 RTT。
  2. 24 × 2ms = 48ms。
  • A 错4ms = 2 个 RTT:一直慢开始(8 → 16 → 32),这是最短时间。
  • B 错8ms = 4 个 RTT:一直慢开始只要 2 个 RTT(8 → 16 → 32,即 A 的 4ms),一直拥塞避免要 24 个 RTT(48ms);“最长”取后者,4 个 RTT 既不是最短也不是最长。
  • C 错24ms:把 24 个 RTT 当成了 24ms,忘了乘 RTT = 2ms。
  • D 对48ms。

最长 → 全程加法增大;最短 → 全程翻倍。

2022-38计网
假设主机甲和主机乙已建立一个 TCP 连接,最大段长 MSS = 1KB,甲一直有数据向乙发送,当甲的拥塞窗口为 16KB 时,计时器发生了超时,则甲的拥塞窗口再次增长到 16KB 所需要的时间至少是( )。
  • A. 4 RTT
  • B. 5 RTT
  • C. 11 RTT
  • D. 16 RTT
展开解析

考点5.6 超时后的恢复时间

C超时:ssthresh = 8KB,cwnd = 1KB。

  1. 慢开始:1 → 2 → 4 → 8,用 3 个 RTT。
  2. 拥塞避免:8 → 9 → … → 16,用 8 个 RTT。
  3. 共 11 RTT。
  • A 错4 RTT:1 → 16 一直翻倍,忽略了门限变成 8。
  • B 错5 RTT 相当于把 1、2、4、8、16 这 5 个值数成了 5 个 RTT(从 1 翻倍到 16 只要 4 次),而且同样忽略了门限已降为 8;超时后要 3(慢开始 1 → 8)+ 8(拥塞避免 8 → 16)= 11 个 RTT。
  • C 对11 RTT。
  • D 错16 RTT:既没用慢开始,又多数了一轮——即使从 1 开始每轮只加 1,到 16 也只要 15 个 RTT;正确过程是先慢开始 1 → 8 用 3 个 RTT,再拥塞避免 8 → 16 用 8 个 RTT,共 11 个。

超时后恢复到原窗口 W:log2(W/2) 个 RTT 慢开始 + W/2 个 RTT 拥塞避免。

AIMD 与快恢复的两种写法

拥塞避免阶段“每轮加 1”,出现拥塞时“门限减半”,合起来叫 AIMD(Additive Increase Multiplicative Decrease,加法增大、乘法减小)。如果网络里只有 3 个重复确认这种“轻微拥塞”,cwnd 会画出一条锯齿线:

轮次cwnd816加法增大:每轮 + 13 个重复确认:减半
图 5-27 AIMD 的锯齿。慢慢加、一下子砍一半:增加要谨慎,减少要果断。多条 TCP 连接共用一段瓶颈链路时,AIMD 还能让它们的速率逐渐趋于公平(拓展)。
拓展 Tahoe、Reno 与“+3”

早期的 TCP Tahoe 没有快恢复:收到 3 个重复确认也是快重传之后 cwnd = 1、重新慢开始。TCP Reno 加上了快恢复。快恢复有两种写法:教材和 408 真题用 cwnd = 新 ssthresh;RFC 5681 用 cwnd = ssthresh + 3 个 MSS,理由是“收到 3 个重复确认,说明有 3 个报文段已经离开网络、到了接收方缓存里”。做 408 的题一律用 cwnd = ssthresh。

路由器也可以配合:主动队列管理(AQM,如随机早期检测 RED)在队列快满但还没满时就随机丢弃少量分组,让部分 TCP 连接提前减速,避免队列溢出时所有连接同时超时、一齐回到慢开始(全局同步)。

真题怎么考:5.6 的 7 道选择题
  • 超时后数轮次(2009-39、2022-38):先写 ssthresh = cwnd ÷ 2、cwnd = 1,再逐轮列表;翻倍越过门限时只到门限。
  • 发送窗口取小(2014-38、2015-39):cwnd 算完最后一步和 rwnd 比;rwnd 会因为数据不被取走而变小。
  • 至少 / 最长时间(2017-39、2020-38):至少 → 全程翻倍;最长 → 全程加 1。别忘了乘 RTT。
  • 快重传的时刻(2019-38,讲在 5.5)。

综合题 2016-41(接收缓存 20 KB 被填满的过程 + 平均速率)、2023-47(FTP 上传文件:每轮 cwnd、总时间)把握手、窗口、拥塞控制串在一起,见第 7 篇 t6。这个方法失效的情形:题目说“推迟确认(每两个段确认一次)”时,慢开始不再是每轮翻倍;题目给的 rwnd 比 cwnd 小时,发送窗口被 rwnd 卡住,cwnd 再大也发不出去(2026-47)。

四个易错点
  • 题目问“发送窗口”时,最后一定要和 rwnd 取较小值(2014-38:cwnd 已到 12,但 rwnd = 10,发送窗口 10)。
  • rwnd 会变:接收方缓存里的数据不被取走,rwnd 越来越小(2015-39)。
  • 问“最长时间”时,假设 ssthresh 很小、一直线性增长;问“至少”时,尽量走慢开始(2017-39、2020-38)。
  • 超时后第一轮 cwnd = 1,数 RTT 时从这一轮开始算:16 超时后,1 → 2 → 4 → 8 用 3 个 RTT,8 → 16 再用 8 个 RTT,共 11 个(2022-38)。
  • 发送窗口被 rwnd 卡住时,慢开始的 cwnd 不再“每轮翻倍”:它是每回来一个确认加 1,这一轮只发了几个段、就只加几(2026-47(2):收到第二个确认时 cwnd = 3 MSS;5.5 节“缓存 20 KB”的例子)。拥塞避免阶段则按教材口径“每轮加 1”。

综合题示范:把握手、窗口、拥塞控制串起来

TCP 综合题(2016-41、2023-47、2026-47)的共同套路:先算握手的确认号,再逐轮列 cwnd 和发送窗口,然后数 RTT 算时间,最后写挥手报文段的字段。下面这道自编题把这些步骤全走一遍,做法和真题完全一样。

例综合
主机 H 通过 TCP 向服务器 S 上传一个 50 000 B 的文件。H 选的初始序号为 1000,S 选的初始序号为 5000;MSS = 1000 B,RTT = 10 ms,慢开始门限初值为 8 MSS;S 的应用及时取走数据,通告的接收窗口始终为 10 000 B;S 对每个段都确认,确认段不带数据;忽略发送时延,无差错、无丢失;第三次握手可以携带数据。
(1) H 收到的第二次握手报文段中,确认号是多少?
(2) H 收到确认号为多少的确认段时,cwnd 首次达到慢开始门限?
(3) 列出每一轮的 cwnd、发送窗口和实际发送的段数。从第几轮起发送窗口受接收窗口限制?
(4) 从 H 发出 SYN 到 H 确认文件全部被 S 收到,需要多少时间?以“第一个数据段发出到全部被确认”计,平均传输速率是多少?
(5) H 发出的 FIN 段的序号是多少?若 S 收到后立即把 ACK 和 FIN 合并发回,H 最后发出的确认段的 seq 和 ack 各是多少?
跟我做

(1) 第二次握手确认 H 的 SYN:ack = 1000 + 1 = 1001。文件数据从 1001 开始编号,到 51000 结束,共 50 个段。

(2) 慢开始阶段每收到一个新确认,cwnd 加 1:cwnd 从 1 到 8 要收到 7 个确认,即第 7 个段(1001 + 6000 = 7001 ~ 8000)的确认。确认号 = 8001。此后进入拥塞避免,每轮加 1。

轮次12345678
cwnd(MSS)12489101112
发送窗口 = min(cwnd, 10)12489101010
实际发送段数1248910106(只剩 6 段)
累计1371524344450

(3) 见上表。第 7 轮 cwnd = 11 > rwnd = 10,从第 7 轮起发送窗口被接收窗口卡在 10。(第 7、8 轮处于拥塞避免,cwnd 按“每轮加 1”的教材口径计;即使按“每个确认加 1/cwnd”细算,发送窗口仍是 10,答案不变。)

(4) 握手 1 个 RTT;第 1 轮的数据随第三次握手在 10 ms 时发出,第 k 轮在 k × 10 ms 发出,第 8 轮的段在 90 ms 被确认。共 90 ms。平均速率 = 50 000 × 8 bit ÷ 80 ms = 5 Mb/s。

(5) 数据最后一个字节是 51000,FIN 的序号 = 51001。S 不发数据,它的 SYN 占 5000,以后的报文段 seq 都是 5001;S 回的 ACK + FIN:seq = 5001,ack = 51002。H 最后的确认段:seq = 51002,ack = 5002。

综合题最容易丢分的四处
  • (2) 型问题按“每个确认加 1”数,不是按轮数:第 n 个段的确认让 cwnd 变成 n + 1。
  • 发送窗口每一轮都要和 rwnd 比;rwnd 如果随缓存被填满而变小(2016-41),要逐轮重算。
  • 最后一轮只发剩下的段,不要按窗口大小把文件“发多了”。
  • 不发数据的一方,其后所有报文段的 seq 都是“初始序号 + 1”;FIN 也占一个序号,所以对 FIN 的确认号要再加 1。

TCP 与 UDP 全面对比:应用为什么这样选

UDPTCP
连接无连接,没有握手时延面向连接(三次握手建立,四次挥手释放)
可靠性尽最大努力交付;检验和发现错误就丢弃可靠:无差错、不丢失、不重复、按序
数据单位面向报文:不合并、不拆分,保留边界面向字节流:按字节编号,怎么分段由 TCP 决定
通信方式一对一、一对多、多对一、多对多(可广播、多播)只能一对一(点对点),全双工
首部8 字节20 ~ 60 字节
流量 / 拥塞控制没有,速率由应用决定有(rwnd、cwnd)
检验和IPv4 中可选必须
状态不维护连接状态,服务器能同时服务更多客户每条连接都要维护缓存、序号、计时器等状态
应用传输层为什么
DNS 查询UDP一问一答、报文短:建连接的时间比查询本身还长;丢了应用重发一次即可(区域传送用 TCP)
DHCPUDP客户还没有 IP 地址,只能广播,而 TCP 不支持广播
SNMP、RIP、TFTPUDP报文短、周期性发送,或由应用自己做简单的确认重传
IP 电话、视频会议、直播UDP(常加 RTP)实时性第一:迟到的数据没用,宁可丢一点也不能等重传;不希望网络拥塞时被迫降速
HTTP/1.1、HTTP/2、HTTPSTCP网页、文件一个字节都不能错
FTP、SMTP、POP3、IMAP、SSH、TELNETTCP文件、邮件、命令要求可靠、按序
BGPTCP路由信息量大,要可靠传送;TCP 连接还能顺便检测邻站是否在线
HTTP/3UDP(QUIC)拓展:在 UDP 之上自己实现可靠传输和拥塞控制,减少握手时延、避免一个丢包卡住所有数据

“UDP 比 TCP 快”要说准确:UDP 并不会让比特在链路上跑得更快,传播时延和发送时延对两者是一样的。UDP 省掉的是建立连接的握手时延、等待重传的时延和拥塞控制强迫的降速,首部也小一些。如果网络很好、几乎不丢包,一条已经建立好的 TCP 连接传大文件,速率并不比 UDP 慢。

一句话判断:要可靠、量大、不急 → TCP;要快、量小、能容忍丢失或要广播 → UDP。用 UDP 的应用如果也需要可靠,就在应用层自己做(确认、重传、编号)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2009-39 改
TCP 以 1KB 的最大段长发送,拥塞窗口为 24KB 时发生超时,若接下来 5 个 RTT 内的传输都成功,则第 5 个 RTT 的段都得到确认时拥塞窗口为( )。
  • A. 12KB
  • B. 16KB
  • C. 17KB
  • D. 13KB
展开解析

D门限 12KB,cwnd:1 → 2 → 4 → 8 → 12(到门限)→ 13。

  • A 错12KB 是第 4 个 RTT 后到达门限的值,第 5 个 RTT 还要拥塞避免加 1。
  • B 错16KB 是慢开始 8 → 16 翻倍越过了门限;门限是 24 ÷ 2 = 12,翻倍只能到 12。
  • C 错17KB 是在越过门限的 16 上又加了 1;正确是到 12 后再加 1 得 13。
  • D 对对:2、4、8、12、13。

变化点:超时时的窗口和经过的 RTT 数都变了;8 翻倍到 16 超过门限,只能到 12。

变式计网由 2014-38 改
甲始终以 MSS = 1KB 发送数据,乙每次确认都通告接收窗口 8KB。若甲在 t 时刻超时时拥塞窗口为 10KB,此后不再超时,经过 8 个 RTT 后,甲的发送窗口是( )。
  • A. 8KB
  • B. 5KB
  • C. 10KB
  • D. 12KB
展开解析

A门限 5KB:2、4、5、6、7、8、9、10 → cwnd = 10KB;发送窗口 = min(10, 8) = 8KB。

  • A 对对:cwnd 到 10KB,与 rwnd = 8KB 取小。
  • B 错5KB 是新门限 10 ÷ 2,不是 8 个 RTT 后的窗口;之后还要拥塞避免一路加上去。
  • C 错10KB 是 8 个 RTT 后的 cwnd,忘了和接收窗口 8KB 取小。
  • D 错12KB 多数了 2 个 RTT(8 个 RTT 后 cwnd 只有 10KB),而且还要与 rwnd = 8KB 取小。

变化点:又是“cwnd 超过了 rwnd”,最后一步取小。

变式计网由 2022-38 改
假设 MSS = 1KB,甲的拥塞窗口为 32KB 时发生超时,则拥塞窗口再次增长到 32KB 所需的时间至少是( )。
  • A. 5 RTT
  • B. 20 RTT
  • C. 16 RTT
  • D. 32 RTT
展开解析

B门限 16:1 → 16 用 4 个 RTT,16 → 32 线性增长用 16 个 RTT,共 20 RTT。

  • A 错5 RTT 是从 1 一直翻倍到 32(2⁵ = 32),忽略了门限已降为 16。
  • B 对对:慢开始 4 个 RTT + 拥塞避免 16 个 RTT。
  • C 错16 RTT 只算了拥塞避免 16 → 32 那一段,漏了慢开始 1 → 16 的 4 个 RTT。
  • D 错32 RTT 是不用慢开始、每轮只加 1 的数法(1 → 32 也只要 31 个 RTT);正确是 4 + 16 = 20。

变化点:超时时的窗口从 16KB 改为 32KB。

变式计网由 2019-38 改
TCP 快重传中,发送方在( )时立即重传丢失的报文段。
  • A. 收到第 1 个重复确认
  • B. 收到 2 个重复确认
  • C. 收到 3 个重复确认
  • D. 重传计时器超时
展开解析

C收到 3 个重复确认就立即重传,不必等超时。

  • A 错1 个重复确认可能只是报文段乱序到达,不能说明丢失。
  • B 错2 个重复确认也还不够把握,规定要 3 个。
  • C 对对:3 个重复确认。
  • D 错等计时器超时是超时重传;快重传的意义就是不等超时。

变化点:由图读时刻换成规则本身。

变式计网考纲补充(尚无真题)
TCP 发送方的拥塞窗口为 24 MSS 时收到 3 个重复确认,执行快重传和快恢复后,ssthresh 和 cwnd 分别为( )。
  • A. 12 MSS,1 MSS
  • B. 24 MSS,12 MSS
  • C. 12 MSS,15 MSS
  • D. 12 MSS,12 MSS
展开解析

D快恢复:ssthresh = cwnd ÷ 2 = 12,cwnd = 新的 ssthresh = 12,接着拥塞避免。A 是超时后的处理;C 是 RFC 5681 的“+3”写法,408 不采用。

  • A 错12、1 是超时后的处理(cwnd = 1、重新慢开始);收到 3 个重复确认执行快恢复,cwnd 不回到 1。
  • B 错门限没有减半:ssthresh 应为 24 ÷ 2 = 12,24 是原来的 cwnd。
  • C 错15 = 12 + 3 是 RFC 5681 的“+3”写法;408 的教材和真题用 cwnd = 新 ssthresh = 12。
  • D 对对:ssthresh = cwnd = 12。

考点:5.6 节“四个算法”。

变式计网考纲补充(尚无真题)
下列应用层协议中,通常使用 UDP 传送报文的是( )。
  • A. SMTP
  • B. HTTP/1.1
  • C. DHCP
  • D. BGP
展开解析

CDHCP 客户还没有 IP 地址,要靠广播找服务器,只能用 UDP(端口 67 / 68)。SMTP、HTTP/1.1、BGP 都用 TCP。

  • A 错SMTP 用 TCP 的 25 端口传送邮件,要求可靠。
  • B 错HTTP/1.1 用 TCP(端口 80),网页要可靠传送。
  • C 对对:DHCP 用 UDP 67 / 68。
  • D 错BGP 发言人之间用 TCP 连接(端口 179)交换路由信息。

考点:5.6 节“TCP 与 UDP 全面对比”。

变式计网考纲补充(尚无真题)
下列关于 TCP 流量控制与拥塞控制的叙述中,正确的是( )。
  • A. 发送窗口取接收窗口与拥塞窗口中的较小者
  • B. 流量控制是全局性的,涉及网络中所有路由器
  • C. 拥塞窗口由接收方在确认报文段中通告
  • D. 只要接收窗口足够大,发送方就不会引起网络拥塞
展开解析

A发送窗口 = min(rwnd, cwnd)。流量控制是点对点的(B 错);接收方通告的是 rwnd,cwnd 是发送方自己估计的(C 错);接收方能收得下不等于网络扛得住(D 错)。

  • A 对对:发送窗口 = min(rwnd, cwnd)。
  • B 错流量控制是点对点的,只涉及发送方和接收方;全局性的是拥塞控制。
  • C 错接收方通告的是接收窗口 rwnd;拥塞窗口 cwnd 由发送方根据丢包情况自己估计。
  • D 错接收方收得下不等于网络扛得住,发得太快照样会把中间路由器堵塞,所以还要拥塞控制。

考点:5.6 节“拥塞:网络里的堵车”。

第 5 篇自测
  1. UDP 分用时看哪个字段?TCP 呢?
    答案
    都看目的端口号(TCP 连接还要结合双方的 IP 和端口,即四元组)。
  2. 用反码求和算 0x8F3A 与 0x9C21 的检验和。
    答案
    0x8F3A + 0x9C21 = 0x12B5B,进位回卷得 0x2B5C,取反得 0xD4A3。
  3. UDP 伪首部有多长?包括哪些字段?发不发送?
    答案
    12 字节:源 IP、目的 IP、全 0 字节、协议号 17、UDP 长度。只用于计算检验和,不发送。
  4. 一个 TCP 首部的第 12、13 字节是 0x80、0x12,首部多长?这是什么报文段?
    答案
    0x80 高 4 位 = 8 → 首部 32 B(有 12 B 选项)。0x12 低 6 位 = 010010 → ACK = 1、SYN = 1,是第二次握手的报文段(选项里通常有 MSS)。
  5. TCP 首部长度可变,接收方靠哪个字段知道数据部分从第几个字节开始?若该字段为 6,数据部分前面有几字节选项?
    答案
    靠数据偏移(首部长度)字段,单位 4 字节。6 × 4 = 24 B 首部,其中固定部分 20 B,选项 4 B(例如一个 MSS 选项)。
  6. 客户 SYN 的 seq = 100,服务器 SYN 的 seq = 300,客户第三次握手不带数据,接着发第一个 500 字节的数据段,它的 seq 和 ack 各是多少?
    答案
    seq = 101(第三次握手不带数据不消耗序号),ack = 301。
  7. 为什么建立连接要三次握手?
    答案
    防止已失效的连接请求报文段突然又传到服务器,服务器误以为是新请求而建立连接、白白等待;同时让双方都确认自己的初始序号已被对方收到。
  8. 服务器先发 FIN 关闭连接,哪一方会进入 TIME-WAIT?哪一方会进入 CLOSE-WAIT?
    答案
    主动关闭的服务器进入 TIME-WAIT;客户是被动关闭方,进入 CLOSE-WAIT。TIME-WAIT 跟着“主动关闭”走,不跟着“客户”走。
  9. TIME-WAIT 为什么是 2MSL?
    答案
    保证最后一个 ACK 丢失时对方重传的 FIN 还能收到并重发 ACK(ACK 最多走 1 个 MSL,重传的 FIN 最多再走 1 个 MSL);让本连接的旧报文段在网络中全部消失。
  10. SYN 洪泛攻击让服务器的大量连接停在哪个状态?
    答案
    SYN-RCVD(半连接):服务器回了 SYN + ACK,却永远等不到第三次握手。
  11. 第一次测得 RTT 样本 60 ms,求 RTO。第二次样本 76 ms 后,RTTS 是多少?(α = 1/8)
    答案
    第一次:RTTS = 60,RTTD = 30,RTO = 60 + 120 = 180 ms。第二次:RTTS = 7/8 × 60 + 1/8 × 76 = 52.5 + 9.5 = 62 ms。
  12. 发送方收到 ack 分别为 2001、3001、3001、3001、3001 的 5 个确认,它在收到第几个确认时快重传?重传哪个序号?
    答案
    第 2 个确认 ack = 3001 是对新数据的正常确认,第 3、4、5 个才是重复确认,所以在收到第 5 个确认时重传 seq = 3001 的报文段。
  13. 乙通告 rwnd = 3000B,甲 cwnd = 5000B,最新确认号 1001,甲已发到 2500(下一个要发 2501),还能发多少字节?
    答案
    发送窗口 min(3000, 5000) = 3000,窗口 1001 ~ 4000;已发到 2500,还能发 2501 ~ 4000,共 1500 字节。
  14. 接收方通告零窗口后,若随后的“窗口更新”报文段丢失,TCP 靠什么避免双方永远等待?
    答案
    持续计时器:发送方收到零窗口通知就启动它,到时发送零窗口探测报文段(1 字节),接收方的确认会带上当前窗口值。
  15. cwnd = 20 时收到 3 个重复确认,之后 3 个 RTT 内都正常,cwnd 变成多少?若是超时呢(ssthresh 原来很大)?
    答案
    重复确认:ssthresh = cwnd = 10,之后 11、12、13 → 13。超时:ssthresh = 10,cwnd = 1,之后 2、4、8 → 8。
  16. 拥塞控制和流量控制都会限制发送窗口,二者分别由谁决定?
    答案
    流量控制由接收方通告的 rwnd 决定(接收缓存的空闲空间);拥塞控制由发送方自己估计的 cwnd 决定。发送窗口 = min(rwnd, cwnd)。
  17. DHCP 为什么用 UDP 而不用 TCP?
    答案
    客户还没有 IP 地址,必须用广播找服务器;TCP 只支持点对点连接,不能广播,而且建连接要先有地址。
  18. 一个 IP 分组首部长度字段为 5、总长度为 0x0030,协议字段为 17。其中 UDP 的数据部分有多少字节?
    答案
    IP 总长 48 B − IP 首部 20 B = UDP 用户数据报 28 B;再减去 UDP 首部 8 B,数据 20 B。
  19. 主动关闭方在 TIME-WAIT 期间又收到对方重传的 FIN,该怎么做?
    答案
    重发一个 ACK,并重新开始 2MSL 计时——这正是 TIME-WAIT 存在的第一个理由。
  20. 某报文段 FIN = 1、seq = 7001、不携带数据,对方对它的确认号是多少?
    答案
    FIN 占一个序号,确认号 = 7001 + 1 = 7002。
  21. “同一条 TCP 连接上的报文段一定沿同一条路径到达,所以不会乱序。”这句话错在哪里?
    答案
    TCP 的连接只存在于两端主机,网络层仍是无连接的数据报服务,每个 IP 分组独立选路,可能乱序到达;是 TCP 在接收端按序号重新排序,才让应用看到有序的字节流(5.1 两种服务)。
  22. 客户 SYN 的 seq = 5000,第三次握手的报文段同时携带了 200 字节数据。这个报文段的 seq 是多少?客户下一个报文段的 seq 是多少?
    答案
    SYN 占序号 5000,第三次握手的 seq = 5001,它携带的数据编号 5001 ~ 5200;下一个报文段 seq = 5201。若第三次握手不带数据,它不占序号,下一个报文段仍从 5001 开始。
  23. 一条 TCP 连接的两个端点是什么?只给出两台主机的 IP 地址,能确定一条 TCP 连接吗?
    答案
    端点是套接字(IP 地址 : 端口号),一条连接由两端的套接字(四元组)唯一确定。只给 IP 地址不行:同一对主机之间可以同时有多条连接,要靠端口号区分。

一页总结与必会题型

主题核心结论必背数字真题
端口传输层 = 进程到进程(端到端);分用看目的端口;一条 TCP 连接由四元组确定端口 16 位;熟知 0 ~ 1023;短暂 49152 ~ 655352018-39
UDP无连接、不可靠、面向报文、无拥塞控制;检验和含 12 B 伪首部,相加 → 回卷 → 取反首部 8 B;协议号 17;全 0 = 不检验2014-39、2018-39、2024-39
TCP 首部序号、确认号、窗口以字节计;数据偏移以 4 B 计;SYN、FIN 各占 1 个序号首部 20 ~ 60 B;协议号 6;MSS 14602021-39、2011-47、2012-47
连接管理握手:确认号 = 对方序号 + 1;挥手:主动方 FIN-WAIT-1 → 2 → TIME-WAIT,被动方 CLOSE-WAIT → LAST-ACK;“至少”时间:合并挥手、捎带数据TIME-WAIT 2MSL;保活 2 h、75 s、10 次2011-39、2019-39、2020-39、2021-38、2022-39、2024-38、2026-47
可靠传输与流量控制累积确认停在缺口;还能发 = min(cwnd, rwnd) − 在途;3 个重复确认快重传;零窗口靠持续计时器RTO = RTTS + 4RTTD;α = 1/8、β = 1/42009-38、2010-39、2011-40、2013-39、2021-40、2025-38
拥塞控制慢开始翻倍(不越过门限)、拥塞避免加 1;超时 → 门限减半、cwnd = 1;3 个重复确认 → 门限减半、cwnd = 门限恢复到 W:log2(W/2) + W/2 个 RTT2009-39、2014-38、2015-39、2017-39、2019-38、2020-38、2022-38、2016-41、2023-47
本篇必会题型清单(能独立做对才算过关)
  1. UDP / TCP 检验和的反码求和(5.2)。
  2. 从十六进制 TCP 首部读出端口、序号、确认号、首部长度、标志位(5.3)。
  3. 传输效率:数据 ÷(数据 + 首部),分清首部取最短还是最长、算不算 IP 首部(5.3)。
  4. 三次握手、四次挥手各报文段的 SYN / ACK / FIN、seq、ack;由 SYN 和 FIN 的序号求数据量(5.4)。
  5. 主动方、被动方在挥手过程中的状态(5.4 状态机)。
  6. 从建立连接到关闭(或到释放)的时间:握手 + 数据轮次 + 挥手 + 2MSL(5.4)。
  7. 多段数据、丢段时的确认号;双向通信时的 seq / ack(5.5)。
  8. “还能发多少”:三指针 + min(cwnd, rwnd)(5.5)。
  9. 快重传在第几个确认时发生(5.5)。
  10. cwnd 逐轮表:超时、3 个重复确认、至少 / 最长时间、与 rwnd 取小(5.6)。
  11. TCP 综合题:握手确认号 → 逐轮 cwnd 与发送窗口 → 总时间与平均速率 → 挥手报文段字段(5.6 综合题示范)。

5.✎本篇真题闯关(27 题)

本篇各小节挂的真题全部在这里,按小节排好。可以展开后一道道做,也可以用弹窗模式连续做。做题记录(对/错)只保存在你这台电脑的浏览器里,小节标题下的题号会随之变绿或变红。

第 6 篇 · 应用层

应用层:DNS、FTP、电子邮件、HTTP,以及“打开一个网页”的全过程

应用层协议规定应用进程之间怎样交换报文:报文的类型和格式、各字段的含义、什么时候发。408 考的应用层协议只有四个——DNS、FTP、电子邮件(SMTP、POP3、IMAP)、HTTP。选择题考它们用什么传输层协议、什么端口、查询方式和连接方式;计算题考 DNS 查询次数和 HTTP 的 RTT 个数。最后一节把前面五篇串起来:一台新主机打开一个网页,依次用到哪些协议——这是综合题的高频背景(2011-47、2021-47)。

对应:王道计算机网络第 6 章难度:★★选择题真题 18 道

本篇地图:先看全貌,再逐节攻克

应用层的每个协议都可以用同一组问题来学:它解决什么问题?用 TCP 还是 UDP、哪个端口?谁发起、怎么交互(时序图)?报文长什么样?把这四问答清楚,选择题就不会丢分;计算题只有两类——DNS 查几次、HTTP 要几个 RTT。

应用层6.1 应用模型C/S:服务器固定、客户主动 · P2P:对等、越多越快6.2 DNS ★★★域名树 · 四类服务器 · 递归 / 迭代 · 查几次 · 资源记录 · UDP 536.3 FTP ★控制连接 21(一直开)· 数据连接(主动 20 / 被动)· 带外6.4 电子邮件 ★★★SMTP 推(25)· POP3 / IMAP 拉(110 / 143)· MIME · 7 位 ASCII6.5 HTTP ★★★URL · 持续 / 非持续 / 流水线的 RTT · 报文与状态码 · Cookie · 缓存6.6 全过程 ★★DHCP → ARP → DNS → TCP → HTTP,每一步的地址
图 6-1 应用层知识树。DNS、电子邮件、HTTP 三块合计 14 道选择题,是本篇的重点;6.6 是综合题的常见背景。
小节选择题综合题一句话说清考什么
6.1 应用模型2—C/S 与 P2P 的特点;UDP / TCP 请求要几个 RTT
6.2 DNS42021-47递归 / 迭代各发几次;用 UDP;查询时间
6.3 FTP22023-47(连接)控制连接与数据连接;20 / 21 是谁的端口
6.4 电子邮件5—哪一段用 SMTP / POP3;SMTP 只能传 7 位 ASCII
6.5 HTTP52011-47RTT 个数;报文首部的含义;Cookie
6.6 全过程(1)2015-47、2020-47、2021-47依次用到哪些协议;各帧 / 分组的地址
建议的学习顺序与学时
  1. 6.1 → 6.2(约 2 小时):DNS 的“查几次、要多久”是计算题,迭代时序图要会画。
  2. 6.3 → 6.4(约 1.5 小时):FTP、邮件主要是概念,抓住“谁连谁、用什么端口、推还是拉”。
  3. 6.5(约 2 小时):HTTP 的 RTT 计算是重点,报文和状态码会读即可。
  4. 6.6(约 1 小时):把 DHCP、ARP、DNS、TCP、HTTP 串成一张时序图,为第 7 篇 t7 打底。
先认识一下:应用层协议总表
协议做什么传输层 / 端口模式连接与状态
DNS域名 → IP 地址UDP 53(区域传送用 TCP)C/S一问一答
FTP文件传送TCP 21(控制)、20(主动模式数据)C/S控制连接持续、数据连接非持续;有状态;带外
SMTP发送邮件(推)TCP 25C/S带内,命令和邮件在同一连接
POP3 / IMAP读取邮件(拉)TCP 110 / 143C/SIMAP 在服务器保存状态
HTTP取网页等 Web 对象TCP 80(HTTPS 443)C/S无连接、无状态;1.1 默认持续连接
DHCP分配 IP 地址等配置UDP 67 / 68C/S4.6 节
TELNET / SSH远程登录TCP 23 / 22C/SSSH 加密
SNMP网络管理UDP 161 / 162C/S了解

应用层协议规定的是:交换的报文有哪些类型(请求、响应)、报文的语法(有哪些字段、怎样描述)、字段的语义(含义)、何时发送和怎样响应。它是网络应用的一部分,但不是全部——浏览器、邮件客户端这些程序里只有一小块在“说协议”。

6.1网络应用模型:C/S 与 P2P

★ 考过选择题

客户 / 服务器与对等模型

比喻:食堂与聚餐

C/S 像食堂:窗口(服务器)一直开着,地点固定,学生(客户)主动去打饭,学生之间不互相打饭;人一多窗口就排长队。P2P 像大家各带一道菜的聚餐:每个人既吃别人的菜,也把自己的菜分给别人;来的人越多,菜反而越多。哪里不像:P2P 网络里“带来的菜”是数据的副本,分出去自己并不少。

C/S:所有请求都找服务器服务器客户客户客户客户客户P2P:结点之间直接交换对等方对等方对等方对等方对等方对等方
图 6-2 C/S 与 P2P。C/S 中通信总是“客户 ↔ 服务器”,客户之间不直接通信(2019-40 的错误选项);P2P 中任意两个结点都可以直接交换数据。
客户 / 服务器(C/S)对等(P2P)
角色服务器总是打开、有固定地址(熟知端口),被动等待;客户主动发起每个结点既是客户也是服务器,地位对等
客户之间不直接通信直接交换数据
可扩展性用户越多服务器越忙,服务器是瓶颈和单点故障用户越多,提供服务的结点也越多,可扩展性好
管理集中管理,容易控制分散,难管理、安全性差
例子Web、FTP、电子邮件、DNSBT 下载、P2P 流媒体、区块链

拓展 文件分发时间:服务器上传速率 us,要把大小为 F 的文件发给 N 个用户,每个用户下载速率至少 d、上传速率 u。C/S 时服务器要上传 N 份:DC/S = max(NF ÷ us,F ÷ d);P2P 时总上传能力是 us + Nu:DP2P = max(F ÷ us,F ÷ d,NF ÷ (us + Nu))。跟我算:F = 1000 Mb,us = 100 Mb/s,d = 50 Mb/s,u = 10 Mb/s,N = 100:C/S 要 max(1000, 20) = 1000 s;P2P 要 max(10, 20, 100000 ÷ 1100) ≈ 90.9 s。N 增到 1000 时,C/S 涨到 10000 s,P2P 只到 99 s——这就是“分发大文件时 P2P 通常更快”(2019-40 的 D 项)。

2019-40计网
下列关于网络应用模型的叙述中,错误的是( )。
  • A. 在 P2P 模型中,结点之间具有对等关系
  • B. 在客户/服务器(C/S)模型中,客户与客户之间可以直接通信
  • C. 在 C/S 模型中,主动发起通信的是客户,被动通信的是服务器
  • D. 在向多用户分发一个文件时,P2P 模型通常比 C/S 模型所需时间短
展开解析

考点6.1 C/S 与 P2P

B本题选错误的叙述。C/S 模型中客户只与服务器通信,客户与客户之间不能直接通信(例如两个浏览器不能直接互访)。

  • A 正确P2P 中各结点地位对等,既是客户又是服务器。
  • B 错误C/S 中客户之间不直接通信。
  • C 正确客户主动发起,服务器被动等待。
  • D 正确P2P 中每个下载者也同时上传,分发大文件通常更快。

C/S:客户找服务器;P2P:大家互相找。

用 UDP 还是 TCP:一次请求要几个 RTT

用 UDP:请求一去、应答一回,1 RTT。用 TCP:先三次握手 1 RTT(第三次握手可以捎带请求),再请求 + 应答 1 RTT,至少 2 RTT。这就是 DNS 这类“一问一答”的应用选 UDP 的原因(5.6 节的应用选择表)。

2025-39计网
Time 是一个提供时间查询服务的 C/S 架构网络应用,支持客户通过 UDP 和 TCP 向 Time 服务器请求时间。若某客户与 Time 服务器通信往返时间为 8ms,则该客户分别通过 UDP 和 TCP 向该服务器请求服务,所需的最少时间分别是( )。
  • A. 8ms,8ms
  • B. 8ms,16ms
  • C. 16ms,8ms
  • D. 16ms,16ms
展开解析

考点6.1 UDP 与 TCP 请求的时间

BUDP 不用建立连接:请求 + 应答 = 1 RTT = 8ms。TCP:三次握手 1 RTT(第三次握手捎带请求),请求 + 应答 1 RTT,共 2 RTT = 16ms。

  • A 错TCP 忽略了建立连接的 1 RTT。
  • B 对8ms,16ms。
  • C 错C 是 16ms、8ms:两个值颠倒了——需要先握手的是 TCP(2 RTT = 16ms),UDP 一问一答只要 1 RTT = 8ms。
  • D 错UDP 无连接,不需要先花 1 RTT 建立连接。

UDP 1 RTT;TCP 至少 2 RTT(握手 + 请求响应)。

真题怎么考:6.1 的 2 道选择题

2019-40:C/S 中客户只和服务器通信,客户之间不能直接通信;P2P 中每个下载者也在上传,向很多用户分发同一个文件通常比 C/S 快。2025-39:一问一答的服务,UDP 只要 1 RTT,TCP 要先握手再请求,至少 2 RTT(第三次握手可以捎带请求)。可能的新考法:C/S 的瓶颈在服务器(用户越多越慢);P2P 结点既是客户又是服务器;分发时间 DC/S = max(NF ÷ us, F ÷ d)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2019-40 改
下列关于 P2P 模型的叙述中,错误的是( )。
  • A. 每个结点既可以是客户也可以是服务器
  • B. 结点之间可以直接交换数据
  • C. 适合大文件的分发
  • D. 用户越多,服务器负担越重
展开解析

DP2P 中下载者同时也在上传,用户越多提供服务的结点也越多,没有“中心服务器负担越重”的问题——那是 C/S 的缺点。

  • A 不选正确:P2P 中每个结点既可以请求服务,也可以提供服务。
  • B 不选正确:P2P 结点之间直接交换数据,不经中心服务器转发。
  • C 不选正确:下载者同时也在上传,分发大文件比 C/S 快。
  • D 选错误:P2P 用户越多,提供服务的结点也越多;“服务器负担越重”是 C/S 的缺点。

变化点:由 C/S 的错误说法换成 P2P。

变式计网由 2025-39 改
某客户与服务器之间的 RTT 为 10ms,分别通过 UDP 和 TCP 请求一次服务(请求与应答各一个报文),所需最少时间分别为( )。
  • A. 10ms,20ms
  • B. 10ms,10ms
  • C. 20ms,20ms
  • D. 10ms,30ms
展开解析

AUDP 一问一答 1 RTT = 10ms;TCP 握手 1 RTT + 请求应答 1 RTT = 20ms。

  • A 对对:UDP 10ms,TCP 20ms。
  • B 错TCP 忽略了三次握手的 1 RTT;第三次握手可以捎带请求,但握手本身省不掉。
  • C 错UDP 无连接,不需要先花 1 RTT 建连,一问一答只要 10ms。
  • D 错TCP 多算了 1 个 RTT:第三次握手可以捎带请求,握手 1 RTT + 请求应答 1 RTT = 20ms。

变化点:换一个 RTT。

变式计网考纲补充(尚无真题)
下列关于 P2P 模型的叙述中,正确的是( )。
  • A. 每个结点只能作为客户
  • B. 结点之间必须通过中心服务器转发数据
  • C. 参与的结点越多,系统总的上传能力越强
  • D. 不能用于文件分发
展开解析

CP2P 中每个结点既是客户又是服务器,下载者同时也在上传,所以规模越大总服务能力越强。

  • A 错P2P 中每个结点既是客户也是服务器,不是只能作客户。
  • B 错P2P 结点之间直接交换数据;必须经中心服务器的是 C/S 的通信方式。
  • C 对对:结点越多,总上传能力越强。
  • D 错P2P 恰恰最适合文件分发(如 BT 下载),参与的结点越多分发越快。

考点:6.1 节“客户 / 服务器与对等模型”。

6.2域名系统 DNS

★★ 常考选择题

问题:人记得住 www.pku.edu.cn,网络层只认 202.112.7.13 这样的 IP 地址;而且网站换了服务器、IP 变了,用户不该需要知道。DNS 就是因特网的“电话簿”:一个分布式的数据库,把域名解析为 IP 地址。DNS 是应用层协议,查询报文通常用 UDP,端口 53(2018-33)。

比喻:问路找人

你想找“北京大学计算机学院张老师”。先问本单位的门卫(本地域名服务器);门卫不知道,就去问“全国总台”(根):“北大在哪?”总台说“去问教育系统(edu.cn)”;教育系统说“去问北大(pku.edu.cn)”;北大传达室终于告诉你张老师的电话。门卫把答案记在小本上(缓存),下次有人再问就不必跑一圈。哪里不像:门卫只记一段时间,过期就要重新问(生存时间 TTL)。

层次域名空间

域名采用层次结构,各级之间用“.”隔开,从右往左级别降低:www.cs.pku.edu.cn 中 cn 是顶级域名,edu 是二级,pku 是三级,cs 是四级,www 是主机名。每一级只要求在上一级内不重名,所以全世界的域名都唯一。

根(无名字)comeduorgnetcnus顶级abcwwwmaileducompkucs→ www.cs.pku.edu.cn→ abc.com(二级域名)→ www.abc.com、mail.abc.com
图 6-3 因特网的域名树。一个域名就是从树叶往上一直读到树根的那条路径。顶级域名分国家(cn、us)、通用(com 公司、edu 教育、org 非营利组织、net 网络服务、gov 政府)和基础结构域名(arpa,用于反向解析)。

四类域名服务器与“区”

一台服务器装不下全世界的域名,DNS 把名字空间切成许多区(zone):一个区是由一个服务器负责管辖的范围,可以是一个域,也可以只是域的一部分(如 pku.edu.cn 可以把 cs.pku.edu.cn 单独划为一个区)。负责一个区的服务器就是这个区的权限域名服务器。

服务器知道什么 / 做什么考点
根域名服务器最高层,知道所有顶级域名服务器的地址;本地服务器自己解析不了时首先求助根全世界只有 13 个“名字”(a ~ m.root-servers.net),但每个都有大量镜像(任播,4.7 节),实际有上千台
顶级域名服务器管理在本顶级域名下注册的所有二级域名,回答“下一步问谁”com、cn 等
权限域名服务器负责一个区,保存区内主机名到 IP 的映射,能给出最终答案“问到哪一级为止”= 问到能解析出该主机的权限服务器
本地域名服务器离用户最近(每个单位、每个 ISP 都有),主机发出的 DNS 查询首先发给它;代主机去查,并缓存结果主机配置里的“首选 DNS”;严格说不属于上面的层次结构

递归查询与迭代查询

迭代查询(本地 DNS 发 3 次)主机本地 DNS根顶级 .com权限 abc.com1234本地 DNS 依次问根、顶级、权限,各 1 次递归查询(本地 DNS 只发 1 次)主机本地 DNS根顶级 .com权限 abc.com1234本地 DNS 只问根 1 次,其余逐级代问
图 6-4 两种查询方式。主机向本地域名服务器一般用递归查询(主机只发 1 次,最终拿到答案);本地域名服务器向根等一般用迭代查询(被问的服务器只回答“你再去问谁”,由本地服务器自己一个一个问)。

按时间顺序画出来(主机解析 www.abc.com,所有缓存为空,本地服务器迭代):

主机本地 DNS根顶级 com权限 abc.com① 递归:www.abc.com 的 IP?② 迭代:www.abc.com?“去问 com 服务器(地址 x)”③ www.abc.com?“去问 abc.com 服务器(地址 y)”④ www.abc.com?“www.abc.com = 5.6.7.8”最终答案写入缓存(TTL 内有效)⑤ 5.6.7.8
图 6-5 一次完整的域名解析。本地服务器发出 3 个查询(②③④),主机只发 1 个(①)。若改成“全部递归”,本地服务器只发 ②,后面由根代问 com、com 代问 abc.com,答案沿原路逐级返回。

查询次数与时间:跟我算

数查询次数
  • 全部递归:主机发 1 次,本地服务器发 1 次(2010-40)。
  • 本地服务器迭代:要问几级就发几次。解析 www.abc.xyz.com 最多要问根、com、xyz.com、abc.xyz.com 四个服务器 → 4 次;本地缓存中有记录 → 0 次(2016-40)。注意“4 次”只是这道题的层数,不是通用结论:解析 mail.cs.pku.edu.cn 最多要 5 次。
  • 算时间时,题目常给“局域网内访问 Internet 上服务器的 RTT”:主机到本地域名服务器(同在局域网)的时延忽略;本地服务器每迭代问一个服务器花 1 RTT(2020-40)。
例跟我算
主机 H 与本地域名服务器在同一局域网(时延忽略),本地服务器访问因特网上各服务器的 RTT 都是 20 ms,H 访问 Web 服务器的 RTT 也是 20 ms。H 点击 http://www.abc.com/index.html(纯文本页面,忽略发送时延)。本地服务器迭代查询,求从点击到收到页面的最短和最长时间。
跟我算

最长:本地服务器缓存全空,依次问根、com、abc.com:3 × 20 = 60 ms;然后 TCP 握手 1 RTT = 20 ms;HTTP 请求 + 响应 1 RTT = 20 ms。共 100 ms。

最短:本地服务器(或 H 自己)缓存里就有 www.abc.com 的 IP,DNS 时间 0;TCP + HTTP = 2 × 20 = 40 ms。

2020-40 是同一个模型,RTT 换成 10 ms:最短 20 ms、最长 50 ms。

2010-40计网
如果本地域名服务器无缓存,当采用递归方法解析另一网络某主机域名时,用户主机、本地域名服务器发送的域名请求消息数分别为( )。
  • A. 一条、一条
  • B. 一条、多条
  • C. 多条、一条
  • D. 多条、多条
展开解析

考点6.2 递归查询

A递归查询:被问的服务器负责替提问者把答案找回来。主机问本地服务器 1 次;本地服务器(缓存为空)问根 1 次,之后由根、顶级……一级级代问,结果原路返回。

  • A 对一条、一条。
  • B 错本地服务器发多条是迭代查询的情况。
  • C 错主机只向本地服务器发一次请求。
  • D 错D 是多条、多条,两处都错:递归方式下主机只向本地服务器发 1 条请求,本地服务器也只向根发 1 条,之后由根、顶级服务器逐级代问。

递归:每个人只问一次,由下家负责到底;迭代:提问者自己挨个问。

2016-40计网
在下图(2016 年题 33~41 图)所示的网络中,假设所有域名服务器均采用迭代查询方式进行域名解析。当 H4 访问规范域名为 www.abc.xyz.com 的网站时,域名服务器 201.1.1.1 在完成该域名解析过程中,可能发出 DNS 查询的最少和最多次数分别是( )。 InternetWeb 服务器 S 130.18.10.1R1201.1.3.9L0(NAT)R2R3L1201.1.3.1201.1.2.0/25201.1.1.0/24E0DNS 服务器201.1.1.1E1 192.168.3.254SwitchHubH1192.168.3.2H2192.168.3.3H3192.168.3.251H4192.168.3.252R1~R3 为路由器Switch 为 100Base-T 交换机Hub 为 100Base-T 集线器H1~H4 的默认域名服务器均为 201.1.1.1
  • A. 0,3
  • B. 1,3
  • C. 0,4
  • D. 1,4
展开解析

考点6.2 迭代查询的次数

C201.1.1.1 是 H1~H4 的本地域名服务器。

  1. 最少:它的缓存里已有 www.abc.xyz.com 的记录,直接回答,发出 0 次查询。
  2. 最多:缓存全空,依次问根(得到 com 服务器)、com(得到 xyz.com 服务器)、xyz.com(得到 abc.xyz.com 服务器)、abc.xyz.com(得到 www 的地址),共 4 次。
  • A 错最多少算了一级:www 的地址要由 abc.xyz.com 的权限服务器给出。
  • B 错缓存命中时一次都不用发,最少是 0。
  • C 对0,4。
  • D 错D 的最多 4 次对了,但最少写成 1:本地服务器缓存里已有 www.abc.xyz.com 的记录时直接回答,一次查询都不用发,最少是 0。

最多次数 = 域名的级数(从根数到能解析主机的那一级);最少 0(缓存)。

2020-40计网
假设下图所示网络中的本地域名服务器只提供递归查询服务,其他域名服务器均只提供迭代查询服务;局域网内主机访问 Internet 上各服务器的往返时间(RTT)均为 10ms,忽略其他各种时延。若主机 H 通过超链接 http://www.abc.com/index.html 请求浏览纯文本 Web 页 index.html,则从点击超链接开始到浏览器接收到 index.html 页面为止,所需最短时间与最长时间分别是( )。 局域网本地域名服务器路由器HInternet根域名服务器com 顶级域名服务器abc.com 域名服务器www.abc.com
  • A. 10ms,40ms
  • B. 10ms,50ms
  • C. 20ms,40ms
  • D. 20ms,50ms
展开解析

考点6.2 DNS 查询时间6.5 HTTP 的 RTT

DH 与本地域名服务器同在局域网,这段时延忽略。

  1. 最短:H 或本地服务器缓存中有 www.abc.com 的地址,不用查 Internet 上的服务器;TCP 握手 1 RTT + HTTP 请求响应 1 RTT = 20ms。
  2. 最长:缓存全空,本地服务器依次迭代询问根、com、abc.com 共 3 RTT;再加握手和请求响应 2 RTT,共 5 RTT = 50ms。
  • A 错最短漏了 TCP 握手;最长 40ms 比正确值少 1 个 RTT。
  • B 错最短 10ms 漏了 TCP 握手。
  • C 错最长 40ms 少算 1 个 RTT:3 次迭代查询 + 握手 + 请求响应一共 5 个 RTT。
  • D 对20ms,50ms。

总时间 = DNS 迭代次数 × RTT + TCP 握手 1 RTT + HTTP 1 RTT。

2018-33计网
下列 TCP/IP 应用层协议中,可以使用传输层无连接服务的是( )。
  • A. FTP
  • B. DNS
  • C. SMTP
  • D. HTTP
展开解析

考点6.2 DNS 使用 UDP

B“无连接服务”就是 UDP。四个协议中只有 DNS 使用 UDP(端口 53):查询报文短,一问一答,不值得先建连接。

  • A 错FTP 用 TCP(21、20)。
  • B 对DNS 用 UDP。
  • C 错SMTP 用 TCP(25)。
  • D 错HTTP 用 TCP(80)。

用 UDP 的应用层协议:DNS、DHCP、SNMP、RIP、TFTP。

高速缓存:每个域名服务器(以及主机)都缓存最近解析过的记录,并给每条记录设置生存时间 TTL;过期就删除,以免地址变了还用旧的。有缓存时可以大大减少查询,最好情况下一次也不用查。本地服务器还常缓存顶级域名服务器的地址,所以实际上很少需要问根。

资源记录:DNS 数据库里存的是什么

权限域名服务器里存的不只是“主机名 → IP”,而是一条条资源记录(RR),格式为(名字,值,类型,生存时间)。常用类型:

类型名字 → 值例子用在哪里
A主机名 → IPv4 地址www.abc.com → 5.6.7.8最常用的“域名解析”
AAAA主机名 → IPv6 地址www.abc.com → 2001:db8::8IPv6(4.7 节)
NS域 → 负责该域的权限域名服务器的主机名abc.com → dns.abc.com迭代查询中“你去问谁”的依据
CNAME别名 → 规范主机名www.abc.com → web1.abc.com一台主机多个名字;CDN 常用
MX邮件域 → 邮件服务器的主机名abc.com → mail.abc.com发邮件给 x@abc.com 时,SMTP 先查 MX 找对方邮件服务器
PTRIP 地址 → 主机名(反向解析)8.7.6.5.in-addr.arpa → www.abc.com由 IP 反查域名

2016-40 题干里说“规范域名为 www.abc.xyz.com”,“规范”二字正是相对于 CNAME 的“别名”而言的。

拓展 DNS 报文与“递归”标志

DNS 的查询和应答用同一种报文格式:12 字节首部,后面是问题、回答、授权、附加四个部分(后三部分装的都是资源记录)。

08162431字节标识查询和应答配对用标志QR、RD、RA 等0问题数回答 RR 数4授权 RR 数附加 RR 数8首部12 字节
图 6-6 DNS 报文首部。标志字段里:QR 区分查询(0)和应答(1);RD(期望递归)由查询方置 1,表示“请替我查到底”;RA(递归可用)由应答方置 1,表示“我支持递归”。主机发给本地服务器的查询通常 RD = 1,本地服务器发给根等的查询 RD = 0——这就是“递归”和“迭代”在报文里的体现。

DNS 还有两个常见用法:负载均衡——一个热门域名对应多条 A 记录(多台服务器),DNS 每次按不同顺序返回,把访问分散开;反向解析——由 IP 地址查域名,用 PTR 记录(如邮件服务器检查对方 IP 是否有合法域名,以过滤垃圾邮件)。

真题怎么考:6.2 的 4 道选择题
  • 传输层(2018-33):DNS 用 UDP(无连接);FTP、SMTP、HTTP 都用 TCP。
  • 查询报文数(2010-40、2016-40):递归时每一级只发 1 条;迭代时本地服务器问几级发几条,缓存命中 0 条。
  • 时间(2020-40):DNS 迭代次数 × RTT + TCP 握手 + HTTP 请求响应。

可能的新考法:根 / 权限服务器的作用;资源记录类型(MX 给邮件服务器、CNAME 是别名);DNS 缓存的作用与 TTL;DNS 什么时候用 TCP(区域传送、应答超过 512 B)。

易错辨析
  • 本地域名服务器不在根、顶级、权限的层次里,它是“代主机去问”的那一台。
  • “迭代”的服务器只返回下一步问谁,不代问;“递归”的服务器代问到底,再把结果返回。
  • DNS 查询次数不一定是 4:要按域名的层数和缓存情况数。
  • 域名大小写不敏感;一台主机可以有多个域名,一个域名也可以对应多个 IP(负载均衡)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2016-40 改
假设所有域名服务器均采用迭代查询。主机访问 mail.cs.pku.edu.cn 时,本地域名服务器在解析过程中可能发出 DNS 查询的最少和最多次数分别是( )。
  • A. 0,4
  • B. 0,5
  • C. 1,5
  • D. 1,6
展开解析

B最少:本地缓存命中,0 次。最多:依次问根、cn、edu.cn、pku.edu.cn、cs.pku.edu.cn,共 5 次。

  • A 错最多 4 次是 www.abc.xyz.com 的层数(2016-40);mail.cs.pku.edu.cn 多一级,要问 5 次。
  • B 对对:最少 0 次,最多根、cn、edu.cn、pku.edu.cn、cs.pku.edu.cn 共 5 次。
  • C 错缓存里有记录时本地服务器直接回答,一次都不用发,最少是 0。
  • D 错最少应为 0;最多 6 次是把主机名 mail 也当成了一级要问的服务器。

变化点:域名多了一级,最多次数加 1。

变式计网由 2010-40 改
若本地域名服务器无缓存,主机向本地服务器递归查询、本地服务器向其他服务器迭代查询,解析另一网络某主机的域名时,主机、本地域名服务器发送的查询请求数分别为( )。
  • A. 一条,一条
  • B. 多条,一条
  • C. 一条,多条
  • D. 多条,多条
展开解析

C主机只问本地服务器一次;本地服务器迭代地依次问根、顶级、权限服务器,发出多条。

  • A 错一条、一条是全部递归的情况(2010-40);本地服务器改为迭代后要逐个去问根、顶级、权限服务器。
  • B 错主机向本地服务器是递归查询,只发一条;发多条的是本地服务器。
  • C 对对:主机一条,本地服务器多条。
  • D 错主机只发一条:递归查询下,本地服务器负责把答案查回来,主机不用再问别人。

变化点:“全部递归”换成“本地服务器迭代”。

变式计网由 2020-40 改
在 2020-40 的条件下,若局域网内主机访问 Internet 上各服务器的 RTT 改为 20ms,则所需最短、最长时间分别是( )。
  • A. 20ms,80ms
  • B. 40ms,80ms
  • C. 20ms,100ms
  • D. 40ms,100ms
展开解析

D最短 2 RTT = 40ms;最长 3 次迭代 + 握手 + 请求响应 = 5 RTT = 100ms。

  • A 错最短漏了一个 RTT(TCP 握手、HTTP 各 1 个,共 40ms);最长也少算了 1 个 RTT。
  • B 错最短对了;最长是 5 个 RTT(3 次迭代 + 握手 + 请求响应)= 100ms,80ms 少了 1 个 RTT。
  • C 错最长对了;最短至少要 TCP 握手 1 RTT + HTTP 1 RTT = 40ms,20ms 漏了握手。
  • D 对对:最短 40ms,最长 100ms。

变化点:RTT 翻倍,结果都翻倍。

变式计网考纲补充(尚无真题)
发送方邮件服务器要找到收件人 bob@b.com 所在的邮件服务器,应向 DNS 查询 b.com 的( )。
  • A. MX 记录
  • B. A 记录
  • C. CNAME 记录
  • D. PTR 记录
展开解析

AMX 记录给出一个邮件域对应的邮件服务器主机名;再查该主机名的 A 记录得到 IP。CNAME 是别名,PTR 用于反向解析。

  • A 对对:MX 记录给出邮件域的邮件服务器。
  • B 错A 记录给的是主机名对应的 IPv4 地址;要先由 MX 记录查出邮件服务器的主机名,再查它的 A 记录。
  • C 错CNAME 记录给的是别名对应的规范主机名,不说明哪台是邮件服务器。
  • D 错PTR 记录用于由 IP 地址反查域名,方向正好相反。

考点:6.2 节“资源记录”。

变式计网考纲补充(尚无真题)
下列关于根域名服务器的叙述中,正确的是( )。
  • A. 它保存了因特网上所有主机的 IP 地址
  • B. 本地域名服务器无法解析时首先求助于它,它知道所有顶级域名服务器的地址
  • C. 主机发出的 DNS 查询首先发给它
  • D. 全世界只有 13 台物理服务器
展开解析

B根只知道顶级域名服务器在哪;主机的查询首先发给本地域名服务器;13 是根服务器的“名字”个数,每个都有大量镜像。

  • A 错根服务器只知道顶级域名服务器的地址,并不保存所有主机的 IP 地址(那要逐级去问)。
  • B 对对:本地服务器解析不了时先问根,根知道所有顶级域名服务器的地址。
  • C 错主机发出的 DNS 查询首先发给本地域名服务器,本地服务器解析不了才去问根。
  • D 错13 是根服务器“名字”的个数(a ~ m),每个都有大量镜像(任播),实际有上千台。

考点:6.2 节“四类域名服务器与区”。

6.3文件传送协议 FTP

★ 考过选择题

两条连接:控制连接与数据连接

FTP 提供交互式的文件访问和传送:列目录、上传、下载、改名、删除,还能在不同操作系统、不同文件格式之间传文件。它使用 TCP,采用 C/S 方式,最大的特点是使用两条 TCP 连接:

FTP 客户控制进程数据传送进程FTP 服务器控制进程 · 21数据传送进程 · 20控制连接数据连接控制连接:客户 → 服务器 21 端口,整个会话期间保持,传命令和应答(带外传送)数据连接:主动模式下服务器 20 端口 → 客户临时端口,每传一个文件建立一次,传完关闭
图 6-7 FTP 的控制连接与数据连接。命令走控制连接(2009-40),文件走数据连接;因为命令和数据分开,称控制信息是“带外”传送的(HTTP、SMTP 的命令和数据在同一条连接里,是“带内”)。
  • 控制连接:客户连服务器的 21 端口,在整个会话期间一直保持打开,传送命令(USER、PASS、LIST、RETR 下载、STOR 上传、QUIT 等)和应答。
  • 数据连接:每传送一个文件(或一次目录列表)建立一次,传完就关闭。FTP 服务器要为每个会话记住当前目录、登录用户等状态,所以 FTP 是有状态的(HTTP 无状态)。

数据连接由谁发起,分两种模式:

FTP 客户控制连接已建立(客户 → 服务器 21)FTP 服务器主动模式(PORT):服务器主动连客户PORT 命令:我在端口 50001 等你走控制连接服务器用自己的 20 端口 → 客户 50001建立数据连接(服务器发起 TCP 握手)传文件传完关闭数据连接被动模式(PASV):客户主动连服务器PASV 命令走控制连接应答:我在端口 50123 等你服务器临时打开一个端口客户 → 服务器 50123建立数据连接(客户发起 TCP 握手)传文件
图 6-8 主动模式与被动模式。区别只在“数据连接谁先发起”:主动模式服务器用 20 端口去连客户;被动模式客户去连服务器临时打开的端口。客户在防火墙或 NAT 后面时,外面的服务器连不进来,只能用被动模式。
跟我走一遍:一次 FTP 会话(主动模式)
  1. 客户与服务器 21 端口三次握手,控制连接建立;服务器回 220 欢迎信息。
  2. 客户在控制连接上发 USER、PASS 登录(这就是 2023-47 说的“登录时建立的是控制连接”)。
  3. 客户发 PORT 告知自己的数据端口,再发 LIST:服务器从 20 端口连过来,建立第 1 条数据连接,传完目录列表就关闭。
  4. 客户再发 PORT、RETR file.txt:服务器建立第 2 条数据连接,传文件,传完关闭。
  5. 客户发 QUIT,服务器回 221,控制连接最后释放。

整个会话 1 条控制连接、2 条数据连接;控制连接从头开到尾(持续),数据连接用一次关一次(非持续)。

2009-40计网
FTP 客户和服务器间传递 FTP 命令时,使用的连接是( )。
  • A. 建立在 TCP 之上的控制连接
  • B. 建立在 TCP 之上的数据连接
  • C. 建立在 UDP 之上的控制连接
  • D. 建立在 UDP 之上的数据连接
展开解析

考点6.3 FTP 的两条连接

AFTP 使用 TCP;命令和应答在控制连接(服务器 21 端口)上传送,文件在数据连接上传送。

  • A 对建立在 TCP 之上的控制连接。
  • B 错数据连接传的是文件内容,不是命令。
  • C 错C 的“控制连接”对了,但 FTP 的两条连接都建立在 TCP 上(控制连接连服务器 21 端口),不用 UDP。
  • D 错D 两处都错:FTP 不用 UDP,而且命令走的是控制连接,不是数据连接。

FTP:命令走 21(控制连接,全程保持),文件走 20(数据连接,一次一建)。

2017-40计网
下列关于 FTP 协议的叙述中,错误的是( )。
  • A. 数据连接在每次数据传输完毕后就关闭
  • B. 控制连接在整个会话期间保持打开状态
  • C. 服务器与客户端的 TCP 20 端口建立数据连接
  • D. 客户端与服务器的 TCP 21 端口建立控制连接
展开解析

考点6.3 FTP 的端口与连接

C本题选错误的叙述。20 是服务器一方的端口:主动模式下,服务器用自己的 20 端口去连接客户指定的临时端口,而不是连接客户的 20 端口;被动模式下连 20 端口都不用。

  • A 正确A 说得对:数据连接是非持续的,每传完一个文件(或一次目录列表)就关闭,下一次再新建。
  • B 正确控制连接在整个会话期间保持打开。
  • C 错误客户端的数据端口是临时端口,不是 20。
  • D 正确客户连服务器的 21 端口建立控制连接。

21、20 都是服务器端的熟知端口;客户端用临时端口。

真题怎么考

2009-40 问命令走哪条连接(TCP 上的控制连接);2017-40 的陷阱是“服务器与客户端的 TCP 20 端口建立数据连接”——20 是服务器自己的端口,不是客户端的。综合题 2023-47 问“控制连接是持久的还是非持久的、登录时建立的是哪条连接”(控制连接持久、数据连接非持久、登录建立控制连接)。可能的新考法:主动 / 被动模式各由谁发起;为什么说 FTP 是带外的;FTP 是否有状态。

易错辨析
  • 21 端口、20 端口都是服务器上的;客户用的是临时端口。
  • 被动模式下服务器也不用 20 端口,而是临时开一个端口。
  • FTP 用 TCP;“简单文件传送协议” TFTP 才用 UDP(69 端口),它只有读、写两种操作,常用于无盘工作站、设备升级。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2017-40 改
FTP 采用被动模式(PASV)时,数据连接的建立方式是( )。
  • A. 客户主动连接服务器指定的临时端口
  • B. 服务器从 20 端口主动连接客户
  • C. 客户主动连接服务器的 21 端口
  • D. 服务器从 21 端口主动连接客户
展开解析

A被动模式下服务器打开一个临时端口并告诉客户,由客户主动去连;主动模式才是服务器从 20 端口连客户。

  • A 对对:客户连服务器在 PASV 应答里给出的临时端口。
  • B 错服务器从 20 端口主动连客户是主动模式(PORT)的做法。
  • C 错21 端口是控制连接用的;被动模式下客户连的是服务器在 PASV 应答里给出的临时端口。
  • D 错两种模式都没有“服务器从 21 端口连客户”:21 只用于控制连接,而且由客户发起。

变化点:主动模式换成被动模式。

变式计网由 2009-40 改
FTP 客户从服务器下载文件时,文件内容通过( )传送。
  • A. 建立在 TCP 之上的控制连接
  • B. 建立在 TCP 之上的数据连接
  • C. 建立在 UDP 之上的控制连接
  • D. 建立在 UDP 之上的数据连接
展开解析

B命令和应答走控制连接,文件内容走数据连接,两者都建立在 TCP 之上。

  • A 错控制连接传送的是命令和应答,文件内容走数据连接。
  • B 对对:文件走 TCP 上的数据连接。
  • C 错FTP 不用 UDP,控制连接建立在 TCP 上,而且文件也不走控制连接。
  • D 错FTP 不用 UDP,数据连接也建立在 TCP 上。

变化点:“传递命令”换成“传送文件”。

变式计网考纲补充(尚无真题)
FTP 工作在被动模式(PASV)时,数据连接( )。
  • A. 由服务器用 20 端口主动连接客户
  • B. 与控制连接共用同一条 TCP 连接
  • C. 使用 UDP 传送
  • D. 由客户主动连接服务器临时打开的端口
展开解析

D被动模式下服务器只“开门等待”,由客户发起数据连接;主动模式才是服务器用 20 端口连客户。FTP 的两条连接都用 TCP。

  • A 错服务器用 20 端口主动连客户是主动模式(PORT)。
  • B 错FTP 的命令和数据分别走两条连接(带外传送),数据连接不与控制连接共用。
  • C 错FTP 的两条连接都用 TCP,不用 UDP。
  • D 对对:由客户主动连服务器临时打开的端口。

考点:6.3 节“主动模式与被动模式”。

6.4电子邮件:SMTP、POP3、IMAP、MIME

★★ 常考选择题

组成:用户代理、邮件服务器、两类协议

比喻:寄信和取信

你把信投进自家附近的邮局(发送方邮件服务器),邮局之间负责转运到对方的邮局(接收方邮件服务器),信就放在对方的信箱里;对方什么时候有空,自己去邮局取(拉)。寄信、转运是“推”(SMTP),取信是“拉”(POP3 / IMAP)。哪里不像:邮件服务器之间是直接建立 TCP 连接送达的,不像邮政那样经过中间转运站。

发件人用户代理SMTP(推)发送方邮件服务器SMTP(推)TCP 25接收方邮件服务器(邮箱)POP3 / IMAP(拉)TCP 110 / 143收件人用户代理用浏览器收发邮件时,用户代理与邮件服务器之间用 HTTP;邮件服务器之间仍用 SMTP
图 6-9 电子邮件系统的组成与协议。“推”用 SMTP:用户代理 → 邮件服务器,邮件服务器 → 邮件服务器;“拉”用 POP3 或 IMAP:邮件服务器 → 用户代理(2012-40)。
  • 三个组成部分:用户代理(邮件客户端软件,如 Outlook、Foxmail,负责写、读、显示)、邮件服务器(收发邮件、报告投递结果,全天运行)、邮件协议。所有邮件协议都用 TCP(2015-33)。
  • 电子邮件地址的格式:用户名@邮件服务器的域名,如 bob@b.com。发送方邮件服务器先用 DNS 查 b.com 的 MX 记录,找到对方邮件服务器(6.2 节)。

SMTP:发信的三个阶段

SMTP(简单邮件传送协议,TCP 25)负责发送:把邮件从用户代理推到邮件服务器,或在邮件服务器之间推送;不能用来从服务器取邮件(2013-40)。它是 C/S 方式:发送方是 SMTP 客户,接收方邮件服务器是 SMTP 服务器。SMTP 的命令和应答都是可读的 ASCII 文本:

发送方邮件服务器(SMTP 客户)接收方邮件服务器(25 端口)① 连接建立TCP 三次握手(目的端口 25)220 服务就绪HELO a.com报上自己的主机名250 OK② 邮件传送MAIL FROM: <alice@a.com>250 OKRCPT TO: <bob@b.com>有几个收件人就发几次250 OKDATA354 请输入邮件,以单独一行的“.”结束首部 + 空行 + 主体,最后一行“.”250 OK③ 连接释放QUIT221 再见释放 TCP 连接
图 6-10 SMTP 的三个阶段。回答都以 3 位数字开头:2xx 成功、3xx 需要更多输入、4xx / 5xx 出错。用户代理把邮件交给自己的邮件服务器时,用的也是这一套。
  • SMTP 只能传送 7 位 ASCII 码文本(2018-40):图片、视频、可执行文件、中文都要先用 MIME 编码。
  • 邮件服务器之间直接建 TCP 连接传送;对方服务器暂时连不上,邮件留在发送方服务器的队列里,稍后重试。
跟我走一遍:alice@a.com 给 bob@b.com 发一封带照片的信
  1. Alice 的用户代理把照片按 MIME(base64)编码成 ASCII,加上首部(To、Subject……),用 SMTP 交给 a.com 的邮件服务器(TCP 25)。
  2. a.com 的邮件服务器把信放进发送队列;用 DNS 查 b.com 的 MX 记录,得到 mail.b.com 及其 IP。
  3. a.com 邮件服务器作为 SMTP 客户,直接与 mail.b.com 的 25 端口建 TCP 连接,按三个阶段把信送过去;mail.b.com 把它放进 Bob 的邮箱。
  4. Bob 的用户代理用 POP3(110)或 IMAP(143)连上 mail.b.com,取回这封信,再按 MIME 解码出照片。

四段里:第 1、3 段是 SMTP(推),第 4 段是 POP3 / IMAP(拉),第 2 段的 DNS 用 UDP。若 Bob 用网页邮箱,第 4 段改成 HTTP。

2013-40计网
下列关于 SMTP 协议的叙述中,正确的是( )。
I. 只支持传输 7 比特 ASCII 码内容 II. 支持在邮件服务器之间发送邮件
III. 支持从用户代理向邮件服务器发送邮件 IV. 支持从邮件服务器向用户代理发送邮件
  • A. 仅 I、II 和 III
  • B. 仅 I、II 和 IV
  • C. 仅 I、III 和 IV
  • D. 仅 II、III 和 IV
展开解析

考点6.4 SMTP 的功能

A逐条判断。

  1. I 对:SMTP 只能传 7 位 ASCII 码,其他内容要先用 MIME 编码。
  2. II 对:邮件服务器之间用 SMTP。
  3. III 对:用户代理发信给邮件服务器用 SMTP。
  4. IV 错:邮件服务器 → 用户代理是“取信”,用 POP3 或 IMAP。
  • A 对仅 I、II 和 III。
  • B 错B 选了错误的 IV(邮件服务器 → 用户代理是取信,用 POP3 / IMAP),又漏了正确的 III(用户代理发信给邮件服务器用 SMTP)。
  • C 错C 选了错误的 IV,又漏了正确的 II:邮件服务器之间转发邮件用的正是 SMTP。
  • D 错D 选了错误的 IV,又漏了正确的 I:SMTP 只能传 7 位 ASCII 码,非 ASCII 内容要先用 MIME 编码。

SMTP 只“推”,不负责把邮件交到收件人的用户代理。

2018-40计网
无需转换即可由 SMTP 协议直接传输的内容是( )。
  • A. JPEG 图形
  • B. MPEG 视频
  • C. EXE 文件
  • D. ASCII 文本
展开解析

考点6.4 SMTP 与 MIME

DSMTP 只能传送 7 位 ASCII 码文本。图像、视频、可执行文件都是二进制数据,要先经 MIME 编码成 ASCII 才能传。

  • A 错JPEG 图形是二进制,需要 MIME 转换。
  • B 错MPEG 视频也是二进制数据,含大量不属于 7 位 ASCII 的字节,要先用 MIME(如 base64)编码才能交给 SMTP。
  • C 错EXE 可执行文件同样是二进制数据,必须先经 MIME 编码成 ASCII,SMTP 才能传。
  • D 对ASCII 文本可直接传送。

SMTP 只认 7 位 ASCII;其余一律 MIME。

SMTPHTTP
方向推:发送方主动把邮件推给接收方服务器拉:浏览器主动把对象从服务器拉回来
内容编码只能 7 位 ASCII,其他内容靠 MIME可以直接传任意二进制数据
多个对象一封邮件的所有部分(正文、附件)放在一个报文里每个对象(页面、图片)分别用一个响应报文
相同点都用 TCP 持续连接;命令和应答都是可读的 ASCII 文本;都有“状态码”式的回答

POP3 与 IMAP:取信

POP3(TCP 110)IMAP(TCP 143)
邮件放在哪下载到本机,通常“下载后删除”(也可设为保留)一直保存在服务器上
能做什么读取、删除;一条 TCP 连接中可以取多封邮件(2025-40)在服务器上建文件夹、移动邮件;可以只下载首部或一部分;按条件搜索
多设备在一台电脑下载后,另一台看不到手机、电脑看到的一致
状态会话之间不保存状态服务器保存用户的状态信息
方向都只负责“邮件服务器 → 用户代理”(拉),都不能发送邮件

基于万维网的电子邮件:用浏览器收发邮件(网页邮箱)时,浏览器与邮件服务器之间用 HTTP,邮件服务器之间仍用 SMTP。

2025-40计网
关于 POP3,正确的是( )。
I. 支持用户代理从邮件服务器读取邮件 II. 支持用户代理向邮件服务器发送邮件
III. 支持邮件服务器之间发送与接收邮件 IV. 支持一条 TCP 连接收取多封邮件
  • A. I、IV
  • B. II、III
  • C. I、II、III
  • D. I、III、IV
展开解析

考点6.4 POP3 的功能

A逐条判断。

  1. I 对:POP3 用于用户代理从邮件服务器读取邮件。
  2. II 错:发送邮件用 SMTP。
  3. III 错:邮件服务器之间用 SMTP。
  4. IV 对:一次 POP3 会话在同一条 TCP 连接上可以取多封邮件。
  • A 对I、IV。
  • B 错II、III 都是 SMTP 的功能。
  • C 错C 的 I 对,但选了错误的 II、III(用户代理发信、服务器之间转发都用 SMTP),又漏了正确的 IV。
  • D 错D 的 I、IV 对,但多选了 III:邮件服务器之间发送和接收邮件用的是 SMTP,不是 POP3。

POP3 只做一件事:用户代理从服务器拉邮件。

2015-33计网
通过 POP3 协议接收邮件时,使用的传输层服务类型是( )。
  • A. 无连接不可靠的数据传输服务
  • B. 无连接可靠的数据传输服务
  • C. 有连接不可靠的数据传输服务
  • D. 有连接可靠的数据传输服务
展开解析

考点6.4 POP3 使用 TCP

DPOP3 运行在 TCP 之上(端口 110),TCP 提供面向连接的可靠服务。

  • A 错无连接不可靠是 UDP 的服务。
  • B 错TCP/IP 传输层没有“无连接可靠”的服务。
  • C 错C 的“有连接”对了,但 POP3 所用的 TCP 有确认、重传,是可靠的,不是“不可靠”。
  • D 对有连接可靠。

所有邮件协议(SMTP、POP3、IMAP)都用 TCP。

电子邮件的格式与 MIME

一封电子邮件分为信封和内容两部分,内容又分首部和主体(中间空一行)。用户写好首部和主体后,邮件系统自动从首部提取信息写到信封上。首部最重要的几行:To:(收件人的电子邮件地址,可以有多个)、Subject:(主题)、From:(发件人,通常由邮件系统自动填入)、Cc:(抄送)。

MIME(通用因特网邮件扩充)解决 SMTP 只能传 7 位 ASCII 的问题,它没有改动也没有取代 SMTP,只是在邮件首部增加了几行说明、并把非 ASCII 内容编码成 ASCII:

MIME 增加的首部作用
MIME-VersionMIME 的版本(没有这一行就是普通的纯文本邮件)
Content-Type邮件主体的数据类型,如 text/plain、image/jpeg、video/mpeg、multipart/mixed(带附件)
Content-Transfer-Encoding主体的传送编码方式,如 7 位 ASCII、quoted-printable、base64
Content-Description、Content-Id可读的说明、邮件的唯一标识

拓展 base64 跟我算:把 3 个字节(24 位)切成 4 组 6 位,每组 0 ~ 63 对应一个可打印字符(A ~ Z 是 0 ~ 25,a ~ z 是 26 ~ 51,0 ~ 9 是 52 ~ 61,“+”“/”是 62、63)。“Man”= 01001101 01100001 01101110 → 010011 010110 000101 101110 = 19、22、5、46 → TWFu。编码后长度变为原来的 4/3。quoted-printable 则只把少数非 ASCII 字节写成“=XX”,适合主要是英文、偶有特殊字符的文本。

发送方用户代理把非 ASCII 内容按 MIME 编码成 ASCII 交给 SMTP;接收方用户代理再按 MIME 解码。所以 MIME 的工作在用户代理里完成,邮件服务器之间传的仍是 7 位 ASCII。

2012-40计网
若用户 1 与用户 2 之间发送和接收电子邮件的过程如下图所示,则图中①、②、③阶段分别使用的应用层协议可以是( )。 用户 1①用户 1 的邮件服务器②用户 2 的邮件服务器③用户 2
  • A. SMTP、SMTP、SMTP
  • B. POP3、SMTP、POP3
  • C. POP3、SMTP、SMTP
  • D. SMTP、SMTP、POP3
展开解析

考点6.4 SMTP 与 POP3

D①用户代理 → 邮件服务器:推,用 SMTP;②邮件服务器 → 邮件服务器:推,用 SMTP;③用户 2 从自己的邮件服务器取信:拉,用 POP3(或 IMAP)。

  • A 错③不能用 SMTP,SMTP 只负责发送(推)。
  • B 错B 的 ②(SMTP)、③(POP3)对了,错在 ①:用户 1 把邮件交给自己的邮件服务器是“推”,要用 SMTP;POP3 只能从服务器取信。
  • C 错①用了 POP3,③用了 SMTP,两处都反了。
  • D 对SMTP、SMTP、POP3。

发(推)用 SMTP,收(拉)用 POP3 / IMAP。

真题怎么考:6.4 的 5 道选择题

核心只有一张图:推用 SMTP、拉用 POP3 / IMAP、浏览器用 HTTP、全都在 TCP 上。2012-40 填三段协议;2013-40、2025-40 判断 SMTP、POP3 能做什么;2015-33 问 POP3 用的传输服务;2018-40 问 SMTP 能直接传什么。可能的新考法:IMAP 与 POP3 的区别;MIME 是否取代 SMTP;网页邮件哪一段用 HTTP;发邮件前怎样找到对方邮件服务器(DNS 的 MX 记录)。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2012-40 改
用户 1 用浏览器登录网页邮箱给用户 2 发信,用户 2 用 Outlook 收信。三个阶段(浏览器 → 用户 1 的邮件服务器 → 用户 2 的邮件服务器 → Outlook)使用的协议依次可以是( )。
  • A. SMTP、SMTP、POP3
  • B. HTTP、HTTP、POP3
  • C. HTTP、SMTP、POP3
  • D. HTTP、SMTP、SMTP
展开解析

C浏览器与邮件服务器之间用 HTTP;邮件服务器之间用 SMTP;Outlook 取信用 POP3(或 IMAP)。

  • A 错第一阶段用户用的是浏览器(网页邮箱),浏览器与邮件服务器之间用 HTTP,不是 SMTP。
  • B 错邮件服务器之间转发邮件用 SMTP;HTTP 只用于浏览器和网页邮箱服务器之间。
  • C 对对:HTTP、SMTP、POP3。
  • D 错Outlook 从服务器取信是“拉”,用 POP3 或 IMAP;SMTP 只能“推”。

变化点:第一个阶段换成网页邮箱。

变式计网由 2013-40 改
下列关于 POP3 与 IMAP 的叙述中,正确的是( )。
  • A. POP3 用于邮件服务器之间转发邮件
  • B. POP3 和 IMAP 都使用 UDP
  • C. IMAP 用于用户代理发送邮件
  • D. IMAP 允许用户在服务器上管理邮件文件夹
展开解析

DPOP3、IMAP 都用于读取邮件、都基于 TCP;IMAP 的邮件保存在服务器上,可以在服务器上建文件夹管理。

  • A 错邮件服务器之间转发邮件用 SMTP;POP3 用于用户代理从服务器读取邮件。
  • B 错POP3(110)和 IMAP(143)都基于 TCP,不用 UDP。
  • C 错IMAP 是读取邮件的协议;用户代理发送邮件用 SMTP。
  • D 对对:IMAP 的邮件留在服务器上,可以建文件夹管理。

变化点:SMTP 换成 POP3/IMAP。

变式计网由 2018-40 改
在电子邮件中传送图片、中文等非 ASCII 内容,需要( )。
  • A. 由 MIME 把内容编码为 ASCII 后交给 SMTP 传送
  • B. 改用 POP3 传送
  • C. 改用 UDP 传送
  • D. 由 DNS 转换编码
展开解析

ASMTP 只能传 7 位 ASCII;MIME 在不改动 SMTP 的前提下对非 ASCII 内容编码。

  • A 对对:MIME 编码成 ASCII,再交给 SMTP。
  • B 错POP3 是读取邮件的协议,不能用来发信,也不负责内容编码。
  • C 错电子邮件协议都用 TCP;换成 UDP 既不可靠,也解决不了 SMTP 只能传 7 位 ASCII 的限制。
  • D 错DNS 只做域名解析,不做内容编码转换。

变化点:由“哪些内容能直接传”换成“其他内容怎么传”。

变式计网考纲补充(尚无真题)
下列关于 MIME 的叙述中,正确的是( )。
  • A. MIME 取代了 SMTP
  • B. MIME 是用户代理从邮件服务器读取邮件的协议
  • C. 用 Content-Type 首部说明邮件主体的数据类型
  • D. 使用 MIME 后,邮件服务器之间可以直接传送任意二进制数据
展开解析

CMIME 没有改动、也没有取代 SMTP,只是在邮件首部加几行说明(MIME-Version、Content-Type、Content-Transfer-Encoding 等),并把非 ASCII 内容编码成 ASCII;邮件服务器之间传的仍是 7 位 ASCII。读取邮件用 POP3/IMAP。

  • A 错MIME 没有改动也没有取代 SMTP,邮件仍由 SMTP 传送。
  • B 错读取邮件的协议是 POP3、IMAP;MIME 只是邮件内容的格式和编码规定。
  • C 对对:Content-Type 说明主体的数据类型。
  • D 错MIME 把非 ASCII 内容编码成 ASCII,邮件服务器之间传的仍是 7 位 ASCII,不是任意二进制。

考点:6.4 节“电子邮件的格式与 MIME”。

变式计网考纲补充(尚无真题)
下列关于 IMAP 与 POP3 的叙述中,正确的是( )。
  • A. IMAP 用于发送邮件,POP3 用于接收邮件
  • B. IMAP 允许用户在服务器上管理邮件文件夹,并可以只下载邮件的一部分
  • C. POP3 和 IMAP 都使用 UDP
  • D. IMAP 不能在多台设备上同步查看邮件
展开解析

B两者都是“拉”取邮件的协议、都用 TCP(110 / 143);IMAP 把邮件留在服务器上,所以多设备看到的一致。

  • A 错IMAP 和 POP3 都是“拉”取邮件的协议;发送邮件用 SMTP。
  • B 对对:IMAP 在服务器上管理文件夹,可只下载一部分。
  • C 错POP3(110)和 IMAP(143)都用 TCP,不用 UDP。
  • D 错IMAP 把邮件留在服务器上,正好能在多台设备上同步查看;不能同步的是“下载后删除”的 POP3。

考点:6.4 节“POP3 与 IMAP”。

6.5万维网 WWW 与 HTTP

★★ 常考选择题

URL、HTML 与 HTTP 的分工

万维网(WWW)是一个分布式的超媒体系统,三个关键技术各管一件事:URL 回答“资源在哪”,HTML 回答“页面长什么样”,HTTP 回答“怎么把它取过来”。

http://www.abc.com:80/news/index.html协议主机(域名或 IP)端口路径<协议>://<主机>:<端口>/<路径>  端口用默认值(HTTP 80、HTTPS 443)时可以省略
图 6-11 URL 的结构。URL 的协议部分不止 http,还可以是 https、ftp 等;主机名部分大小写不敏感。
  • HTTP 使用 TCP(端口 80),但 HTTP 本身是无连接(通信前不需要先建立 HTTP 连接)和无状态(服务器不记得曾经服务过的客户,同一个页面请求两次,服务器都当作新请求处理)的。
  • 浏览器打开一个网页的大致过程:解析 URL → DNS 查主机的 IP → 建 TCP 连接 → 发 HTTP 请求 → 服务器返回 HTML 文件 → 浏览器解析 HTML,再请求其中引用的图片、脚本等对象 → 显示。

非持续连接与持续连接:RTT 怎么数

浏览器Web 服务器SYNSYN + ACKACK + HTTP 请求HTTP 响应(文件)1 RTT建立 TCP1 RTT请求 + 响应非持续连接:每个对象 2 RTT(+ 文件发送时间)持续连接(非流水线):首个对象 2 RTT,之后每个对象 1 RTT持续连接 + 流水线:所有引用对象合起来约 1 RTT
图 6-12 取一个对象的时间。第三次握手的 ACK 可以捎带 HTTP 请求,所以一个对象最少 2 RTT(外加文件的发送时间)。
方式做法取 1 个页面 + N 个引用对象
非持续连接(HTTP/1.0)每个对象单独建立一条 TCP 连接,传完就关闭串行:(N + 1) × 2 RTT;浏览器开 N 条并行连接:2 + 2 = 4 RTT
持续连接、非流水线同一条连接传多个对象,但收到上一个响应才发下一个请求2 RTT + N × 1 RTT
持续连接、流水线(HTTP/1.1 默认)不等响应就连续发出多个请求2 RTT + 约 1 RTT
例跟我算
一个页面引用了同一服务器上的 5 个小图像,RTT = 20 ms,忽略文件的发送时间,DNS 已解析。分别按四种方式算取完全部内容的时间。
跟我算
  • 非持续、串行:6 个对象 × 2 RTT = 12 RTT = 240 ms。
  • 非持续、并行(取到页面后同时开 5 条连接):页面 2 RTT + 图像 2 RTT = 4 RTT = 80 ms。
  • 持续、非流水线:握手 1 + 页面 1 + 图像 5 = 7 RTT = 140 ms。
  • 持续、流水线:握手 1 + 页面 1 + 图像一起 1 = 3 RTT = 60 ms。

为什么页面必须先单独取:浏览器要先拿到 HTML,才知道里面引用了哪些对象。

题目若给了 MSS 和文件大小,还要考虑 TCP 的慢开始:服务器的 cwnd 从 1 开始,每轮翻倍。2022-40 中服务器先用 cwnd = 1 发完 1 MSS 的页面,cwnd 变为 2;3 MSS 的图像再按 2、1 分两轮发完,所以总共 1(握手)+ 1(页面)+ 2(图像)= 4 RTT。

例综合计时
H 访问 http://www.abc.com/p.html。本地域名服务器的缓存里已有 com 顶级域名服务器的地址(但没有 abc.com 的记录),它向因特网上各服务器迭代查询;所有 RTT 都是 15 ms,H 与本地服务器之间时延忽略。p.html 为 1 MSS,引用 1 幅 6 MSS 的图像;HTTP/1.1 持续连接、非流水线;服务器慢开始从 cwnd = 1 起,门限足够大;忽略发送时延。求从点击到收到全部内容的最短时间。
跟我算
  1. DNS:已知 com 服务器,只需问 com、abc.com 两次:2 RTT。
  2. TCP 握手:1 RTT(第三次握手捎带页面请求)。
  3. 页面 1 MSS,cwnd = 1,一轮发完:1 RTT;收到确认后 cwnd = 2。
  4. 图像 6 MSS:第一轮 cwnd = 2 发 2 个,第二轮 cwnd = 4 发剩下 4 个:2 RTT。

合计 2 + 1 + 1 + 2 = 6 RTT = 90 ms。和 2022-40 比,多了 DNS 的 2 RTT,图像的轮数也要按慢开始数。

2022-40计网
假设主机 H 通过 HTTP/1.1 请求浏览某 Web 服务器 S 上的 Web 页 news408.html,news408.html 引用了同目录下的 1 幅图像,news408.html 文件大小为 1 MSS(最大段长),图像文件大小为 3 MSS,H 访问 S 的往返时间 RTT = 10ms,忽略 HTTP 响应报文的首部开销和 TCP 段传输时延。若 H 已完成域名解析,则从 H 请求与 S 建立 TCP 连接时刻起,到接收到全部内容止,所需的时间至少是( )。
  • A. 30ms
  • B. 40ms
  • C. 50ms
  • D. 60ms
展开解析

考点6.5 持续连接的时间5.6 慢开始

BHTTP/1.1 持续连接,全部内容用同一条 TCP 连接;服务器的拥塞窗口从 1 MSS 开始慢开始。

  1. 第 1 个 RTT:三次握手,第三次握手捎带对 news408.html 的请求。
  2. 第 2 个 RTT:服务器以 cwnd = 1 发出 html(1 MSS);H 收到后解析出图像,立即请求图像。
  3. 第 3 个 RTT:cwnd = 2,发出图像的 2 MSS。
  4. 第 4 个 RTT:cwnd = 4,发出剩下的 1 MSS。共 4 RTT = 40ms。
  • A 错30ms:把 3 MSS 的图像当成一轮发完,忽略了 cwnd 从小到大增长。
  • B 对40ms。
  • C 错50ms:若图像另建一条 TCP 连接(非持续),要多 1 RTT 握手且 cwnd 重新从 1 开始:1 + 1 + 1 + 2 = 5 RTT。HTTP/1.1 默认持续连接,不必如此。
  • D 错60ms = 6 RTT:比最慢的合理做法(图像另建一条连接、cwnd 重新从 1 开始,C 的 5 RTT)还多 1 个 RTT;HTTP/1.1 持续连接“至少”只要 4 RTT。

给了 MSS 和文件大小,就按慢开始数轮:1、2、4……个 MSS。

2024-40计网
若浏览器不支持并行 TCP 连接,使用非持久的 HTTP/1.0 协议请求浏览 1 个 Web 页,该页中引用同一个网站上 7 个小图像文件,则从浏览器传输 Web 页请求建立 TCP 连接开始,到接收完所有内容为止,所需要的往返时间 RTT 数至少是( )。
  • A. 4
  • B. 9
  • C. 14
  • D. 16
展开解析

考点6.5 非持续连接的时间

DHTTP/1.0 非持续连接、不能并行:每个对象都要单独建立 TCP 连接(1 RTT)再请求响应(1 RTT),一个接一个进行。

  1. 对象数 = 1 个 Web 页 + 7 个图像 = 8。
  2. 8 × 2 RTT = 16 RTT。
  • A 错4:这是允许并行连接时的结果——页面 2 RTT,7 个图像同时取再 2 RTT。
  • B 错9:这是持续连接、非流水线的结果——握手 1 + 页面 1 + 图像 7。
  • C 错14 = 7 × 2:漏了 Web 页本身。
  • D 对16。

非持续串行:(N + 1) × 2;持续非流水线:2 + N;持续流水线:2 + 1;非持续并行:2 + 2。

HTTP/1.0HTTP/1.1
默认连接非持续(Connection: close)持续(keep-alive),默认使用流水线
Host 首部可以没有必须有:一台服务器托管多个网站时靠它区分
缓存控制Expires、If-Modified-Since增加 Cache-Control、ETag 等,控制更细
方法GET、HEAD、POST增加 PUT、DELETE、OPTIONS 等

HTTP 报文:逐行读懂

HTTP 报文是面向文本的,每一行都是可读的 ASCII 字符,以回车换行(CRLF)结束。请求报文和响应报文都由三部分组成:开始行、首部行、实体主体,首部行和实体主体之间空一行。

请求报文GET/index.htmlHTTP/1.1方法URL(路径)版本Host: www.abc.comConnection: keep-aliveUser-Agent: Mozilla/5.0Cookie: 1678↑ 首部行(“名字: 值”)空行(CRLF)实体主体(GET 一般为空;POST 放提交的数据)响应报文HTTP/1.1200OK版本状态码短语Date: …Content-Type: text/htmlContent-Length: 1024Set-Cookie: 1678↑ 首部行空行(CRLF)实体主体:<html> … </html>
图 6-13 HTTP 请求报文与响应报文。开始行在请求报文中叫请求行(方法 URL 版本),在响应报文中叫状态行(版本 状态码 短语)。
方法意义要点
GET请求读取 URL 标志的信息最常用;参数可以附在 URL 后面(?a=1)
HEAD请求读取 URL 标志的信息的首部不返回实体主体,用来检查链接是否有效、对象是否修改过
POST给服务器添加信息(如提交表单、上传)数据放在实体主体里
PUT在指明的 URL 下存储一个文档上传 / 替换整个资源
DELETE删除指明的 URL 所标志的资源—
OPTIONS、TRACE、CONNECT查询选项、回环测试、用于代理了解
状态码类别常见的
1xx通知信息(收到了,正在处理)100 Continue
2xx成功200 OK
3xx重定向(还要再做点什么)301 永久移走(新地址在 Location 首部)、302 临时移走、304 Not Modified(缓存的副本仍可用,见下)
4xx客户的差错400 请求有语法错、403 禁止访问、404 Not Found
5xx服务器的差错500 服务器内部错误、503 暂时无法服务;做网关或代理的服务器从上游收到无效响应时回 502,等上游超时回 504

记法:1 收到、2 成功、3 转走、4 你错、5 我错。首部 Connection: close 表示用完就关闭(非持续连接);Connection: keep-alive 表示持续连接;Host 写服务器的域名(一台服务器可以托管多个网站,靠它区分)。

跟我读一个响应报文
HTTP/1.1 301 Moved Permanently
Location: https://www.abc.com/index.html
Connection: keep-alive
Content-Length: 0

状态码 301:对象已永久移走,新地址在 Location 首部里(这里是改用 HTTPS);浏览器会自动再向新地址发一次请求——又多了 TCP 握手(新端口 443)和 TLS 握手的时间。keep-alive:服务器愿意保持这条连接;Content-Length: 0:没有实体主体。

2015-40计网
某浏览器发出的 HTTP 请求报文如下:
GET /index.html HTTP/1.1
Host: www.test.edu.cn
Connection: Close
Cookie: 123456
下列叙述中,错误的是( )。
  • A. 该浏览器请求浏览 index.html
  • B. index.html 存放在 www.test.edu.cn 上
  • C. 该浏览器请求使用持续连接
  • D. 该浏览器曾经浏览过 www.test.edu.cn
展开解析

考点6.5 HTTP 请求报文与 Cookie

C本题选错误的叙述。Connection: Close 表示本次请求完成后关闭连接,即非持续连接;请求持续连接应写 keep-alive。

  • A 正确请求行 GET /index.html:请求的是 index.html。
  • B 正确Host 首部说明对象所在的主机是 www.test.edu.cn。
  • C 错误Close 是非持续连接。
  • D 正确Cookie 是该网站以前在响应中发给浏览器的,带着它说明曾经访问过。

Connection:close 非持续,keep-alive 持续。请求带 Cookie → 以前来过。

浏览器Web 服务器后台数据库第一次访问:GET /(不带 Cookie)生成识别码 1678,建一条用户记录200 OK + Set-Cookie: 1678浏览器把“该网站 → 1678”存进 Cookie 文件一周后再访问GET /cart,首部带 Cookie: 1678按 1678 查出这个用户的购物车200 OK:显示上次放进购物车的商品
图 6-14 Cookie 的工作过程。HTTP 协议本身仍然无状态;“记住”是靠浏览器每次把识别码带上、服务器在后台数据库里查出来实现的。

Cookie 的范围与期限:服务器在 Set-Cookie 里可以指定有效期(不指定则关闭浏览器就失效)以及适用的域名、路径;浏览器只把 Cookie 发回给设置它的那个网站,一个网站读不到别的网站的 Cookie。Cookie 只是存在客户端的一小段文本(识别码),不是程序。

Cookie 的典型用途:用户跟踪、记住登录状态、购物车、个性化推荐(2026-40)。请求报文里带 Cookie,说明浏览器以前访问过这个站点(2015-40 的 D 项)。缺点是涉及隐私:网站能据此记录用户的浏览习惯。

2026-40计网
下列叙述中不属于 cookie 的技术典型用途的是( )。
  • A. 用户跟踪
  • B. 个性化推荐
  • C. 构建虚拟购物车
  • D. 缩短 web 对象的响应时间
展开解析

考点6.5 Cookie 的用途

DCookie 用来让无状态的 HTTP“记住”用户:服务器发给浏览器一个识别码,浏览器以后每次访问都带上。

  • A 是用户跟踪:靠识别码把同一用户的多次访问联系起来。
  • B 是个性化推荐:根据记录的偏好定制内容。
  • C 是虚拟购物车:跨页面记住放进购物车的商品。
  • D 不是缩短 Web 对象的响应时间靠的是代理服务器(Web 缓存)等;Cookie 反而让请求首部变长。

Cookie 解决“无状态”;Web 缓存解决“慢”。

Web 缓存(代理服务器)与条件 GET

问题:全校几千人每天都打开同一个新闻网站的首页,每次都从千里之外的服务器取一遍,既慢又浪费学校的出口带宽。Web 缓存(代理服务器)把最近请求过的对象保存在本地:浏览器把请求先发给代理,代理有就直接返回,没有再去源服务器取、顺便存一份。

可缓存的对象可能已经过期。代理不想每次都重新下载整个对象,就发条件 GET:在请求首部加上 If-Modified-Since(自从某时以来改过吗);没改过,源服务器只回一个不带实体主体的 304 Not Modified。

浏览器代理服务器(Web 缓存)源服务器GET /logo.png缓存中没有GET /logo.png200 OK + Last-Modified: 9 月 1 日 + 图片200 OK + 图片代理同时把图片存进缓存过了一阵,另一位用户请求同一对象GET /logo.png缓存里有,但可能已过期条件 GET:If-Modified-Since: 9 月 1 日304 Not Modified(不带图片)没改过,省下传图片的时间200 OK + 缓存里的图片
图 6-15 Web 缓存与条件 GET。代理对浏览器是服务器,对源服务器又是客户。缓存命中时,响应时间和出口流量都大大减少。

跟我算:缓存省了多少出口带宽。某单位每秒平均发出 20 个 Web 请求,对象平均大小 1 Mb,出口链路 25 Mb/s。不用缓存时出口链路利用率 = 20 × 1 ÷ 25 = 80%,排队时延会很大;装一台代理服务器,命中率 40%,只有 60% 的请求要走出口:0.6 × 20 × 1 ÷ 25 = 48%。花一台服务器的钱,比把出口链路升级划算得多。

浏览器自己也有缓存,原理相同。这正是“缩短 Web 对象的响应时间”的技术——2026-40 里它是 Web 缓存的用途,而不是 Cookie 的用途。

拓展 HTTPS、HTTP/2、HTTP/3 与 CDN

HTTPS = HTTP + TLS(传输层安全协议),默认端口 443。TCP 连接建好后,先做一次 TLS 握手,双方协商出一个只有自己知道的会话密钥,之后的 HTTP 报文都加密传送;服务器还要出示由权威机构(CA)签发的数字证书,证明“我真的是 www.abc.com”。

浏览器Web 服务器(443)先完成 TCP 三次握手ClientHello:我支持的加密算法 + 随机数ServerHello + 数字证书(含服务器的公钥)用 CA 的公钥验证证书是否可信用服务器公钥加密的“预主密钥”只有服务器能解开双方算出同一个会话密钥双方算出同一个会话密钥之后的 HTTP 报文都用会话密钥加密加密的 HTTP 请求加密的 HTTP 响应
图 6-16 HTTPS 的 TLS 握手(简化)。公钥加密只用来安全地交换会话密钥,真正的数据用会话密钥(对称加密)加密,因为对称加密快得多。
  • HTTP/2:仍用 TCP;报文改成二进制帧,一条 TCP 连接上可以多路复用多个请求 / 响应(不必排队等前一个),并压缩首部、允许服务器主动推送。但一个 TCP 报文段丢失,整条连接上的所有请求都要等它重传(队头阻塞)。
  • HTTP/3:改用基于 UDP 的 QUIC 协议——在 UDP 之上自己实现可靠传输、拥塞控制和加密,把建连接和 TLS 握手合并(通常 1 RTT,再次连接甚至 0 RTT),各请求的数据流互不阻塞。这是“应用自己在 UDP 上做可靠传输”的典型例子(5.6 节)。
  • CDN(内容分发网络):网站把图片、视频等内容复制到分布在各地的边缘服务器上;用户解析域名时,DNS(常借助 CNAME 记录)把他引到离他最近、负载最轻的边缘服务器,就近取内容。和 Web 缓存一样是“把内容搬到离用户近的地方”。
源服务器(美国)边缘服务器 · 北京边缘服务器 · 上海边缘服务器 · 广州预先复制内容北京用户DNS 把他引到最近的节点,就近取内容
图 6-17 CDN 就近分发。用户感觉网站“变快了”,源服务器的压力也小了。
真题怎么考:6.5 的 5 道选择题
  • RTT 个数(2022-40、2024-40,以及 2020-40 的后半段):先看是否持续、是否流水线、是否并行,再看要不要算慢开始。
  • 读报文(2015-40):Connection: close = 非持续;带 Cookie = 来过;Host = 文件所在的主机。
  • Cookie(2026-40):用户跟踪、购物车、推荐;“缩短响应时间”是缓存的事。
  • 访问网页用到的协议(2014-40,见 6.6)。

可能的新考法:状态码类别(304、404);HEAD 与 GET 的区别;条件 GET 的首部;HTTPS 的端口与作用;HTTP/3 用 UDP。

易错辨析
  • HTTP 用 TCP 是“有连接”的,但 HTTP 协议本身无连接、无状态——两件事不矛盾。
  • HTTP/1.1 默认持续连接;HTTP/1.0 默认非持续连接。
  • “非持续连接”时每个对象都要 1 RTT 握手;持续连接只握手一次。
  • 304 不是错误,是“用你缓存里的就行”;4xx 才是客户的错。

选择题变式:真题换个条件再做一遍

每道题都由一道真题改动一两个条件而来。先做本节的真题,再做这里的变式,最后看“变化点”:改了什么、答案为什么跟着变。最后标“考纲补充”的,是针对还没考过的考纲知识点自编的题,看“考点”回到对应的讲解。

变式计网由 2024-40 改
浏览器使用持续连接、非流水线方式的 HTTP/1.1 请求 1 个 Web 页,该页引用同一网站上 7 个小图像,从建立 TCP 连接开始到接收完所有内容,至少需要的 RTT 数是( )。
  • A. 3
  • B. 9
  • C. 4
  • D. 16
展开解析

B握手 1 + 页面 1 + 7 个图像各 1 = 9。

  • A 错3 是持续连接、流水线的结果(握手 + 页面 + 7 个图像一起 1 个 RTT);非流水线要一个一个请求。
  • B 对对:1 + 1 + 7 = 9。
  • C 错4 是非持续连接但允许并行连接的结果;题目是持续连接、非流水线。
  • D 错16 是非持续连接、串行(HTTP/1.0)的结果:8 个对象各 2 RTT。

变化点:非持续串行(16)换成持续非流水线(9);持续流水线则为 3。

变式计网由 2022-40 改
在 2022-40 中,若图像文件改为 7MSS,其余不变,则从请求建立 TCP 连接到收到全部内容至少需要( )。
  • A. 40ms
  • B. 60ms
  • C. 50ms
  • D. 70ms
展开解析

C握手 1 RTT;html 1MSS(cwnd = 1)1 RTT;图像按 cwnd = 2、4 分两轮发 6MSS,还剩 1MSS 再一轮:共 1 + 1 + 3 = 5 RTT = 50ms。

  • A 错40ms 是原题图像 3MSS 时的结果;图像变成 7MSS 后要按 cwnd = 2、4、8 发三轮。
  • B 错60ms 多算了一轮:图像 7MSS 在 cwnd = 2、4 两轮发完 6MSS,第三轮发剩下的 1MSS 就完了,共 5 RTT。
  • C 对对:1 + 1 + 3 = 5 RTT = 50ms。
  • D 错70ms 相当于 7 个 RTT,好像图像每个 MSS 各算一轮;慢开始下 7MSS 只要 3 轮。

变化点:图像变大,慢开始要多一轮。

变式计网由 2015-40 改
某浏览器发出的 HTTP 请求报文中含首部行“Connection: keep-alive”,且没有 Cookie 首部行,则下列叙述中正确的是( )。
  • A. 浏览器请求使用非持续连接
  • B. 浏览器一定曾经访问过该网站
  • C. 服务器必须关闭连接
  • D. 浏览器请求使用持续连接
展开解析

Dkeep-alive 表示持续连接;没有 Cookie 不能断定访问过。

  • A 错Connection: keep-alive 正是请求持续连接;请求非持续连接要写 close。
  • B 错没有 Cookie 首部行,不能断定访问过;带 Cookie 才说明以前访问过(2015-40)。
  • C 错keep-alive 是希望保持连接,服务器不必在响应后关闭连接。
  • D 对对:keep-alive 表示持续连接。

变化点:Close 换成 keep-alive。

变式计网由 2026-40 改
服务器通过 HTTP 响应首部“Set-Cookie”发给浏览器的识别码,通常保存在( )。
  • A. 浏览器所在主机的 Cookie 文件中
  • B. DNS 服务器
  • C. 代理服务器的缓存中
  • D. 路由器中
展开解析

ACookie 由服务器生成,保存在用户主机(浏览器管理的 Cookie 文件)中,服务器端数据库中也有对应记录。

  • A 对对:保存在用户主机的 Cookie 文件中。
  • B 错DNS 服务器只保存域名与 IP 地址的映射,不保存网站发给用户的 Cookie。
  • C 错代理服务器缓存的是 Web 对象,不保存给每个用户的 Cookie 识别码。
  • D 错路由器只在网络层转发分组,不保存应用层的 Cookie。

变化点:由 Cookie 的用途延伸到它存在哪里。

变式计网考纲补充(尚无真题)
浏览器向代理服务器请求一个已缓存的对象,代理用条件 GET 向源服务器确认。若该对象自缓存以来没有被修改,源服务器返回的状态码是( )。
  • A. 200 OK
  • B. 301 Moved Permanently
  • C. 304 Not Modified
  • D. 404 Not Found
展开解析

C条件 GET 带 If-Modified-Since 首部;没改过就回 304,且不带实体主体,代理直接用缓存的副本。

  • A 错200 OK 会连同整个对象一起返回;对象没改过时只回 304,不带实体主体。
  • B 错301 表示对象已永久移到新地址;这里对象还在原处,只是没有改过。
  • C 对对:304 Not Modified。
  • D 错404 表示对象不存在;这里对象存在,只是没有改过。

考点:6.5 节“Web 缓存与条件 GET”。

变式计网考纲补充(尚无真题)
只想获取某个 Web 对象的首部信息(如最后修改时间),而不需要对象本身时,应使用的 HTTP 方法是( )。
  • A. HEAD
  • B. GET
  • C. POST
  • D. PUT
展开解析

AHEAD 只返回首部,不返回实体主体;GET 返回整个对象;POST 向服务器提交数据;PUT 存储文档。

  • A 对对:HEAD 只返回首部。
  • B 错GET 会返回整个对象(实体主体),题目只要首部信息。
  • C 错POST 用于向服务器提交数据(如表单),不是读取首部。
  • D 错PUT 用于在指明的 URL 下存储文档,也不是读取首部。

考点:6.5 节“HTTP 报文”中的方法表。

变式计网考纲补充(尚无真题)
HTTP 响应状态码 404 表示( )。
  • A. 服务器内部错误
  • B. 请求成功
  • C. 对象已永久移走
  • D. 请求的对象在服务器上不存在
展开解析

D4xx 是客户的差错,404 是“找不到”;5xx 是服务器的差错,3xx 是重定向,2xx 是成功。

  • A 错服务器内部错误是 500(5xx 是服务器的差错)。
  • B 错请求成功是 200(2xx 表示成功)。
  • C 错对象已永久移走是 301(3xx 是重定向)。
  • D 对对:404 Not Found。

考点:6.5 节“HTTP 报文”中的状态码表。

变式计网考纲补充(尚无真题)
下列关于 HTTPS 与 HTTP/3 的叙述中,错误的是( )。
  • A. HTTPS 的默认端口是 443
  • B. HTTPS 在 HTTP 与 TCP 之间加入了 TLS 进行加密
  • C. HTTP/3 基于 UDP 之上的 QUIC 协议
  • D. HTTP/3 仍然依靠 TCP 的拥塞控制
展开解析

DHTTP/3 不用 TCP,可靠传输和拥塞控制都由 QUIC 在 UDP 之上自己实现。

  • A 不选正确:HTTPS 默认端口 443(HTTP 是 80)。
  • B 不选正确:HTTPS = HTTP + TLS,TLS 位于 HTTP 和 TCP 之间负责加密。
  • C 不选正确:HTTP/3 基于 QUIC,QUIC 运行在 UDP 之上。
  • D 选错误:HTTP/3 不用 TCP,可靠传输和拥塞控制都由 QUIC 在 UDP 之上自己实现。

考点:6.5 节“HTTPS、HTTP/2、HTTP/3 与 CDN”(拓展)。

6.6融合:一台新主机打开一个网页的全过程

★★ 常考选择题综合题

一张时序图串起五篇

设一台主机刚接入校园网,用户在浏览器中输入 http://www.abc.com/index.html。所有缓存(ARP、DNS)都是空的,DNS 服务器和 Web 服务器都不在本网络。按时间顺序:

新主机 HDHCP 服务器默认网关 R本地 DNSWeb 服务器① DHCP:拿到 IP、掩码、默认网关、DNS 服务器地址DISCOVER(广播)源 0.0.0.0 → 255.255.255.255,UDP 68 → 67OFFERREQUEST(广播)ACK:IP、掩码、网关 R、DNS 地址② ARP:DNS 服务器在别的网络,先找网关的 MACARP 请求(广播):谁是 R 的 IP?ARP 响应(单播):R 的 MAC③ DNS:解析 www.abc.com(帧发给 R,再由 R 转发)DNS 查询(UDP 53)迭代问根、com、abc.comDNS 应答:Web 服务器的 IP④ TCP 三次握手(目的端口 80)SYNSYN + ACKACK + HTTP GET /index.html⑤ HTTP 响应;之后取引用对象、四次挥手HTTP/1.1 200 OK + index.html
图 6-18 一次网页访问用到的全部协议。跨网络的报文实际都经网关 R 转发、沿途路由器逐跳转发,图中简化成直线。DHCP、ARP 只在本网络内进行;DNS、TCP、HTTP 的分组要穿过因特网。
步做什么协议与封装关键地址
1获取 IP 地址等配置DHCP → UDP → IP → 以太网帧DISCOVER、REQUEST:源 IP 0.0.0.0,目的 IP 255.255.255.255;帧目的 MAC 全 F(广播)。得到本机 IP、掩码、默认网关、DNS 服务器地址
2找默认网关的 MACARP(直接封装在帧中)DNS 服务器若不在本网络,DNS 查询要交给网关,所以先 ARP 解析网关 IP;请求广播,响应单播
3把域名解析为 IPDNS → UDP(53)→ IP目的 IP = 本地域名服务器;本地服务器按需向根、顶级、权限服务器迭代查询
4建立 TCP 连接TCP 三次握手目的 IP = Web 服务器,目的端口 80;源端口为客户临时端口。帧的目的 MAC 仍是网关(跨网络)
5请求与响应HTTP → TCP → IPGET 请求可捎带在第三次握手中;沿途每个路由器查路由表转发、改写帧的 MAC;经过 NAT 时改源 IP 和端口
6取引用对象、释放连接HTTP、TCP 四次挥手持续连接可以复用同一条 TCP 连接;最后主动关闭方进入 TIME-WAIT

跟我填一遍:每个帧、每个分组的地址。设 DHCP 分给 H 的地址是 10.0.0.5,网关 R 的内网接口 10.0.0.1(MAC 记作 MAC-R),本地 DNS 服务器 202.1.1.1,Web 服务器 61.1.1.80;H 的 MAC 记作 MAC-H,H 选的临时端口 50001 / 50002。

帧(H 发出)源 MAC目的 MAC源 IP目的 IP源端口 → 目的端口
DHCP DISCOVERMAC-HFF-FF-FF-FF-FF-FF0.0.0.0255.255.255.255UDP 68 → 67
ARP 请求(问 10.0.0.1)MAC-HFF-FF-FF-FF-FF-FF(ARP 不经 IP、不用端口)
DNS 查询MAC-HMAC-R10.0.0.5202.1.1.1UDP 50001 → 53
TCP SYNMAC-HMAC-R10.0.0.561.1.1.80TCP 50002 → 80
HTTP GET(随第三次握手)MAC-HMAC-R10.0.0.561.1.1.80TCP 50002 → 80

要点:只要目的主机不在本网络,帧的目的 MAC 一律是默认网关的 MAC,而 IP 分组的目的地址始终是最终目的主机;若 10.0.0.5 是私有地址,分组出 NAT 路由器时源 IP 和源端口会被改写(4.5 节)。

这类综合题的固定问法
  • 某一步用到哪些协议、按什么顺序(应用层 → 传输层 → 网络层 → 链路层逐层封装)。
  • 某个帧、某个分组的源 / 目的 MAC 地址和 IP 地址各是什么:IP 端到端不变,MAC 逐段改写;NAT 前后 IP 改变。
  • 一共要几个 RTT:DNS 迭代次数 + TCP 握手 + HTTP 请求响应(+ 慢开始的轮数)。
  • 抓包数据中找字段:以太网帧首部 14B(目的 MAC 6、源 MAC 6、类型 2),IP 首部从第 15 字节开始,TCP 首部紧跟 IP 首部(第 7 篇题型 t3、t7 详细训练)。
2014-40计网
使用浏览器访问某大学 Web 网站主页时,不可能使用到的协议是( )。
  • A. PPP
  • B. ARP
  • C. UDP
  • D. SMTP
展开解析

考点6.6 访问网页用到的协议

D访问网页可能用到:接入链路的 PPP(拨号接入)、解析网关 MAC 的 ARP、DNS 所用的 UDP,以及 TCP、HTTP、IP 等。SMTP 只在发送邮件时使用。

  • A 可能通过 PPP 接入 ISP 时会用到。
  • B 可能要把分组交给默认网关,需 ARP 解析网关的 MAC。
  • C 可能访问网站先要用 DNS 把域名解析成 IP 地址,DNS 查询通常封装在 UDP 中(端口 53),所以可能用到 UDP。
  • D 不可能浏览网页不发邮件,用不到 SMTP。

浏览网页:DHCP、ARP、DNS(UDP)、TCP、HTTP、IP、链路层协议。

真题怎么考

选择题 1 道:2014-40 问访问网页“不可能”用到的协议——PPP(拨号上网时的链路层)、ARP(找下一跳的 MAC)、UDP(DNS 查询用它)都可能用到,只有发邮件的 SMTP 用不到。以这张图为背景的综合题有 2011-47(抓包读地址、ARP、HTTP 的 RTT 个数、NAT 改哪些字段)、2015-47(DHCP 可分配范围、ARP 第一帧、网关配错)、2020-47(两级 NAT)、2021-47(DNS 的逐层封装、交换表、H2 收到的广播帧),做法见第 7 篇 t7。

选择题变式:考纲补充

6.6 没有以它为主的选择题真题。下面是针对“一次访问全过程”自编的题,做完看“考点”回到对应的讲解。

变式计网考纲补充(尚无真题)
一台刚开机、尚未配置 IP 地址的主机访问网页,它发出的第一个报文属于( )。
  • A. ARP
  • B. DNS
  • C. DHCP
  • D. HTTP
展开解析

C还没有 IP 地址,先用 DHCP 获取地址、默认网关和 DNS 服务器地址;之后才是 ARP(找网关 MAC)、DNS、TCP、HTTP。

  • A 错ARP 用来找网关的 MAC,要先知道网关的 IP 地址,而网关地址也要从 DHCP 获得。
  • B 错DNS 查询要先知道 DNS 服务器的地址、自己也要有 IP 地址,这些都要先从 DHCP 获得。
  • C 对对:先用 DHCP 获取地址。
  • D 错HTTP 要先有 IP 地址、解析出服务器地址、建好 TCP 连接,排在最后。

考点:6.6 节“一张时序图串起五篇”。

变式计网考纲补充(尚无真题)
主机 H 访问另一网络中的 Web 服务器 S,H 发出的封装 HTTP 请求的以太网帧,其目的 MAC 地址和 IP 分组的目的 IP 地址分别是( )。
  • A. S 的 MAC 地址,S 的 IP 地址
  • B. 默认网关的 MAC 地址,S 的 IP 地址
  • C. 默认网关的 MAC 地址,默认网关的 IP 地址
  • D. 广播地址,S 的 IP 地址
展开解析

BIP 地址端到端不变,始终是 S;帧只负责这一段链路,下一站是默认网关,所以目的 MAC 是网关的。

  • A 错S 在另一个网络,帧到不了它;帧的目的 MAC 是这一段的下一站——默认网关。
  • B 对对:目的 MAC 是网关,目的 IP 是 S。
  • C 错目的 IP 写成了网关:IP 地址端到端不变,始终是最终目的 S。
  • D 错这是单播帧,交给默认网关;只有 ARP 请求等才用广播地址。

考点:6.6 节“跟我填一遍:每个帧、每个分组的地址”。

第 6 篇自测
  1. DNS、FTP、SMTP、POP3、HTTP、DHCP 各用什么传输层协议、什么端口?
    答案
    DNS:UDP 53;FTP:TCP 21(控制)、20(数据,主动模式);SMTP:TCP 25;POP3:TCP 110;HTTP:TCP 80;DHCP:UDP 67(服务器)/ 68(客户)。
  2. C/S 模型中客户之间能直接通信吗?向很多用户分发同一个大文件,C/S 和 P2P 哪个快?
    答案
    不能,客户只与服务器通信。P2P 通常更快:用户越多,参与上传的结点越多。
  3. 本地域名服务器用迭代查询解析 mail.cs.pku.edu.cn,缓存全空,它最多发几次查询?
    答案
    根、cn、edu.cn、pku.edu.cn、cs.pku.edu.cn 共 5 次(问到能解析出 mail 这台主机的权限服务器为止)。
  4. 根域名服务器知道什么?它能直接告诉你 www.abc.com 的 IP 吗?
    答案
    它知道所有顶级域名服务器的地址。一般不能直接给出 www.abc.com 的 IP,只能告诉本地服务器“去问 com 服务器”。
  5. 给 bob@b.com 发邮件时,发送方邮件服务器怎样知道对方邮件服务器是哪台主机?
    答案
    用 DNS 查询 b.com 的 MX 记录,得到对方邮件服务器的主机名,再查它的 A 记录得到 IP 地址。
  6. FTP 被动模式下,数据连接由谁发起?连的是服务器的哪个端口?
    答案
    由客户发起,连服务器在 PASV 应答里告知的临时端口(不是 20)。
  7. 用户在网页上写邮件发给朋友,朋友用 Outlook 收信,依次用到哪些协议?
    答案
    浏览器 → 发送方邮件服务器:HTTP;发送方 → 接收方邮件服务器:SMTP;接收方邮件服务器 → Outlook:POP3 或 IMAP。
  8. SMTP 发信分哪三个阶段?传送邮件内容用哪条命令?
    答案
    连接建立、邮件传送、连接释放。MAIL FROM 给发件人,RCPT TO 给收件人,DATA 之后传邮件内容,以单独一行的“.”结束。
  9. POP3 和 IMAP 最主要的区别是什么?
    答案
    POP3 一般把邮件下载到本机(下载后删除);IMAP 把邮件一直保存在服务器上,可以在服务器上管理文件夹、只下载部分内容,多设备看到的一致。
  10. RTT = 20ms,页面引用 3 个小图像,HTTP/1.1 持续连接非流水线,不计发送时间,取完全部内容至少要多久?流水线呢?
    答案
    非流水线:握手 1 + 页面 1 + 图像 3 = 5 RTT = 100ms。流水线:1 + 1 + 1 = 3 RTT = 60ms。
  11. 不支持并行连接的 HTTP/1.0 浏览器,取一个引用了 4 个图像的页面至少几个 RTT?
    答案
    5 个对象,每个 2 RTT,共 10 RTT。
  12. 响应状态码 304 和 404 各表示什么?
    答案
    304 Not Modified:对象没改过,用缓存里的副本(对条件 GET 的回答);404 Not Found:请求的对象不存在(客户的差错)。
  13. 为什么说 HTTP 无状态,却能实现“记住我”?
    答案
    HTTP 协议本身不保存客户信息;Cookie 由服务器生成、浏览器保存,每次请求时带上,服务器再据此在后台数据库中查到用户。
  14. HTTPS 的默认端口是多少?HTTP/3 的传输层用什么?
    答案
    HTTPS 是 443(HTTP + TLS,运行在 TCP 上);HTTP/3 用基于 UDP 的 QUIC。
  15. 一台新主机开机后访问网页,它发出的第一个帧属于哪个协议?目的 MAC 是什么?
    答案
    DHCP 的 DISCOVER(封装在 UDP、IP 中),帧的目的 MAC 是广播地址 FF-FF-FF-FF-FF-FF。
  16. DNS 域名服务器分哪四类?主机的 DNS 查询首先发给哪一类?根域名服务器有多少个?
    答案
    根域名服务器、顶级域名服务器、权限域名服务器、本地域名服务器;主机的查询首先发给本地域名服务器(它代主机去问,严格说不在前三级的层次里)。根服务器有 13 个“名字”(a ~ m),每个都有大量镜像。
  17. HTTP 请求报文由哪几部分组成?响应报文的第一行叫什么、包括什么?
    答案
    请求行(方法、URL、版本)、首部行、空行、实体主体;响应报文的开始行叫状态行(版本、状态码、短语)。

一页总结与必会题型

主题核心结论必背数字真题
应用模型C/S:服务器固定,客户之间不通信;P2P:对等,规模大时分发更快;UDP 请求 1 RTT,TCP 至少 2 RTT—2019-40、2025-39
DNS主机 → 本地递归;本地 → 根 / 顶级 / 权限迭代;问几级发几次,缓存命中 0 次;资源记录 A、NS、CNAME、MXUDP 532010-40、2016-40、2018-33、2020-40
FTP控制连接一直开,数据连接每个文件一次;主动模式服务器连客户,被动模式客户连服务器;带外、有状态TCP 21(控制)、20(主动模式数据)2009-40、2017-40
电子邮件推 SMTP、拉 POP3 / IMAP、网页邮件用 HTTP;SMTP 只传 7 位 ASCII,MIME 编码其他内容25、110、1432012-40、2013-40、2015-33、2018-40、2025-40
HTTP无连接、无状态,靠 Cookie 记人;非持续 2 RTT / 对象,持续 + 流水线最快;条件 GET 得 304TCP 80;HTTPS 4432014-40、2015-40、2022-40、2024-40、2026-40
全过程DHCP → ARP → DNS → TCP → HTTP;IP 不变、MAC 逐段换—2011-47、2015-47、2020-47、2021-47
本篇必会题型清单(能独立做对才算过关)
  1. 各应用层协议的传输层协议和端口(5.1 端口表)。
  2. DNS 递归 / 迭代时各方发几条查询;解析一次最多要问几个服务器(6.2)。
  3. 从点击链接到收到页面的最短 / 最长时间(DNS + TCP + HTTP)(6.2)。
  4. FTP 两条连接的端口、持续性、谁发起(6.3)。
  5. 邮件各段用什么协议;SMTP / POP3 能做什么(6.4)。
  6. HTTP 持续 / 非持续 / 流水线 / 并行的 RTT 个数,含慢开始(6.5)。
  7. 读 HTTP 请求、响应报文的首部(6.5)。
  8. 一次网页访问依次用到的协议与地址(6.6)。

6.✎本篇真题闯关(20 题)

本篇各小节挂的真题全部在这里,按小节排好。可以展开后一道道做,也可以用弹窗模式连续做。做题记录(对/错)只保存在你这台电脑的浏览器里,小节标题下的题号会随之变绿或变红。

第 7 篇 · 综合题专项

大题满分训练营:7 类综合题逐类击破

前六篇按知识讲,这一篇按题型讲。2009—2026 年计算机网络一共考了 19 道综合题(每年一道,2014 年两道),拆开看只有 7 类。每一类都按同一个顺序教:这类题长什么样 → 做它必须会的几件事 → 解题模板 → 一道真题完整示范(连答题卡怎么写都给出) → 常见丢分点 → 自编模拟大题 → 条件一变答案怎么变。每类配两道自编模拟大题,部分类别附“预测小题”(考纲有、真题还没考过的点);最后一节是三套计网部分的整卷模拟(8 道选择题 + 1 道综合题)。

建议:学完第 1~6 篇再来每类先自己在纸上做,再点开解答对照7 类 · 19 道真题 · 14 道模拟大题 · 6 道预测小题 · 3 套整卷

7.1先弄清楚:计网大题怎么考、怎么给分

408 的第 47 题(2014 年是第 42、43 题,2016 年是第 41 题)是计算机网络综合题,9 分左右,一般 3~5 个小问。它几乎总是给一张网络拓扑图(或一段抓包数据、一张时序图),然后在这个场景里问:地址怎么分、路由表怎么写、分组的地址怎么变、窗口和时间怎么算。

打个比方

计网大题像一次“跟踪快递”:给你一张地图(拓扑图),告诉你每个站点的地址(IP、MAC),然后问你一个包裹从 A 到 B 的路上,每一站换了什么标签(MAC 地址、TTL、NAT 后的源地址)、走了多久(RTT、传播时延)、一次能发多少(窗口)。地图读懂了,题就做了一半。

阅卷是怎么给分的

  • 按得分点给分。路由表题一般“每条路由 2 分,目的网络、前缀长度、下一跳、接口各 0.5 分”(2013-47 评分说明);计算题分成“算出单个量”“列出式子”“得出结果”几步。只写结果不写过程,往往拿不满。
  • 理由要写到“点子”上。例如“能否访问 Internet”,要写出“默认网关配成了 DHCP 服务器的地址,分组交不到路由器”,只写“网关错了”可能扣分。
  • 罗列不给分。“需要修改哪些字段”若把 IP 首部所有字段都列一遍,不给分(2011-47 评分说明)。

答题卡上的五条规矩

  1. 先读图,再读题。把图上每个接口的地址抄到草稿纸上,先算出每个接口所在的网络(地址 & 掩码),标出哪些设备是路由器、交换机、集线器。
  2. 地址写全。网络地址写成“点分十进制 + 前缀”或“地址 + 掩码”两种都行,但不能缺;MAC 地址写全 6 个字节;十六进制数据要注明(加 H 或写 0x)。
  3. 路由表按题给的表结构写,每一行都填满:直连网络下一跳写“直接交付”(或“—”),不能写本路由器自己的地址。
  4. 计算题先写公式再代数。“发送时延 = 帧长 ÷ 速率 = 1518 × 8 ÷ 10Mbps = 1214.4μs”。单位写清:B 与 bit、ms 与 μs、K 在存储中是 1024、在速率中是 1000(题目另有说明时以题目为准)。
  5. “是/否、能/不能”一定跟一句理由。题目写着“说明理由”的,没有理由的答案一般只给一半分。
✗ 容易丢分的写法

(2009-47 第 2 问)
202.118.1.0 E1
202.118.1.128 E2
202.118.3.2 L0
0.0.0.0 L0

问题:没写掩码,特定主机路由和默认路由都认不出来;没写下一跳。

✓ 得分点齐全的写法

202.118.1.0 / 255.255.255.128 / 直接交付 / E1
202.118.1.128 / 255.255.255.128 / 直接交付 / E2
202.118.3.2 / 255.255.255.255 / 202.118.2.2 / L0
0.0.0.0 / 0.0.0.0 / 202.118.2.2 / L0

7 类题型 × 18 年分布

下表每一格是那一年考的那道题(题号),点一下直接弹出题目和满分解答。一道题跨两类时两格都标出(虚线框的是“次要归类”)。IP 地址规划与路由表、一次访问的全过程、TCP 是出现最多的三类;2017 年以后几乎每年都把两三类揉在一道题里。

这一篇怎么用

  1. 每类开头写了先要读哪几节,先把那几节的例题做一遍。
  2. 读“必须会的几件事”和“解题模板”,把模板抄在自己的本子上。
  3. 跟着“完整示范”走一遍,重点看绿色的“答题卡这样写”——这是考场上真正要写下来的内容。
  4. 点小节标题下的红色题号,先在纸上自己做完,再看解答对照;做完自评,题号会变绿或变红,方便二刷。
  5. 真题做完再做本类的模拟大题(虚线框,按 408 风格自编)和“条件一变答案怎么变”,检验是否真的会了。
  6. 每类还有模拟大题 2,换一个角度再考一遍;部分类别后附预测小题——考纲里有、真题还没以大题形式考过的点,按大题的问法先练一遍。

7.2① IP 地址规划、路由表与路由聚合

★★★ 高频综合题

先读:4.3 IPv4 地址与子网 4.4 路由表与聚合 4.2 分片

这类题长什么样

给一张拓扑:几台路由器,每个接口标了地址,局域网只写“局域网 1、局域网 2”或给出需求。问你怎么分地址、路由表怎么写、某个分组走哪个口。这是计网大题的“老主力”:2009、2013、2014、2018 年都以它为主,2025 年第 3 问也是它。

常见问法考过的地方
按主机数划分子网,给出各子网地址(定长或变长)2009-47(1),2018-47(1),2025-47(3)
子网的广播地址、子网地址、还能接多少台主机2018-47(1)
写出某路由器的路由表(直连、间接、特定主机、默认路由)2009-47(2),2013-47(1),2014-43(1)
用路由聚合使路由项最少2009-47(3),2013-47(1),2014-43(1)
某目的地址的分组从哪个接口转发(最长前缀匹配)2013-47(2),2014-43(2)
TTL 还剩多少、分片(最大片数据、片数、片偏移)2014-43(2),2018-47(2)
路由器之间用什么协议交换路由信息2013-47(3)

做这类题必须会的 5 件事

① 由主机数定前缀。需要 N 个可分配地址 → 主机位 n 满足 2n − 2 ≥ N → 前缀 32 − n。常用:≥ 120 → /25(126);≥ 60 → /26(62);≥ 30 → /27(30);≥ 500 → /23(510);两个路由器之间的点对点链路 → /30(2)。

② 变长划分先大后小、按块对齐。把大地址块画成一条数轴,先放最大的子网(起点必须是它块大小的倍数),再放次大的……题目若已固定某个子网(如 H 的地址落在哪个子网),先把它放上去,再排其余的。

③ 路由表四种行。

路由类型目的网络 / 掩码下一跳接口
直连网络该网络地址 / 该网络掩码直接交付(或“—”)连着它的那个口
间接(经别的路由器)目的网络 / 掩码(能聚合就聚合)相邻路由器在共同网络上的接口地址通向那个相邻路由器的口
特定主机路由主机地址 / 255.255.255.255同上同上
默认路由(到互联网)0.0.0.0 / 0.0.0.0通往外网的相邻路由器接口同上

④ 聚合:同一个下一跳才能合。把要合的网络写成二进制找共同前缀;合出来的块若多包进了别的网络,要看那部分是否另有更长前缀的路由(2013-47:194.17.20.0/23 包进了 E0 的 194.17.20.128/25,但它有 /25 的直连路由,所以没问题)。

⑤ 转发与 TTL。多条匹配取最长前缀;分组每经过一个路由器 TTL 减 1(主机不减);输出链路 MTU 小于分组长度且 DF = 0 时分片,每片数据取 8 的倍数。

解题模板

  1. 标网络。把图上每个接口地址 & 掩码,写出它所在的网络;两个路由器之间的链路也是一个网络。
  2. 分地址(如果要分)。主机数 → 前缀 → 在数轴上从大到小对齐放好,写出每个子网的网络地址/前缀,必要时写出可分配范围。
  3. 列去处。站在要写表的那台路由器上,把所有目的网络按“从哪个口出去、下一跳是谁”分组。
  4. 合并与补充。同一下一跳的网络尝试聚合;题目要求时加特定主机路由(/32)和默认路由(/0)。
  5. 填表。按题给表头逐列填,下一跳写相邻路由器在共同网络上的地址,直连写“直接交付”。
  6. 回答转发类问题。把目的地址逐行与表匹配,取最长前缀;数途经路由器个数得 TTL。
完整示范2009 年第 47 题计算机网络

某网络拓扑如下图所示,路由器 R1 通过接口 E1、E2 分别连接局域网 1、局域网 2,通过接口 L0 连接路由器 R2,并通过路由器 R2 连接域名服务器与互联网。R1 的 L0 接口的 IP 地址是 202.118.2.1;R2 的 L0 接口的 IP 地址是 202.118.2.2,L1 接口的 IP 地址是 130.11.120.1,E0 接口的 IP 地址是 202.118.3.1;域名服务器的 IP 地址是 202.118.3.2。

互联网L1130.11.120.1R2L0 202.118.2.2202.118.2.1 L0R1E1局域网 1E2局域网 2E0202.118.3.1域名服务器202.118.3.2

R1 和 R2 的路由表结构为:

目的网络 IP 地址子网掩码下一跳 IP 地址接口

(1) 将 IP 地址空间 202.118.1.0/24 划分为 2 个子网,分别分配给局域网 1、局域网 2,每个局域网需分配的 IP 地址数不少于 120 个。请给出子网划分结果,说明理由或给出必要的计算过程。

(2) 请给出 R1 的路由表,使其明确包括到局域网 1 的路由、局域网 2 的路由、域名服务器的主机路由和互联网的路由。

(3) 请采用路由聚合技术,给出 R2 到局域网 1 和局域网 2 的路由。

先在纸上自己做一遍,再点这里展开满分解答

考点4.3 子网划分4.4 路由表、特定主机路由、默认路由、聚合训练营 ①

先把条件翻译成大白话
  • 202.118.1.0/24 一共 256 个地址,要平分给两个局域网,每个至少 120 个可分配地址。
  • R1 的 E1、E2 直连两个局域网;R1 的其他去处(域名服务器、互联网)都要经 L0 交给 R2,下一跳是 R2 的 L0:202.118.2.2。
  • 路由表四列:目的网络、子网掩码、下一跳、接口。直连网络的下一跳写“直接交付”(或留空)。
(1) 子网划分

先由主机数定主机位:2n − 2 ≥ 120 → n = 7;前缀 = 32 − 7 = 25。/24 借 1 位,正好两个子网。

答题卡这样写

每个局域网需要不少于 120 个地址,27 − 2 = 126 ≥ 120,而 26 − 2 = 62 < 120,所以主机号取 7 位,子网号 32 − 24 − 7 = 1 位,子网掩码 255.255.255.128(/25)。

局域网 1:202.118.1.0/25(可分配 202.118.1.1 ~ 202.118.1.126);局域网 2:202.118.1.128/25(可分配 202.118.1.129 ~ 202.118.1.254)。(两者对调也对。)

(2) R1 的路由表

四类路由各一条:两个直连网络、一条特定主机路由(掩码全 1)、一条默认路由(0.0.0.0/0)。

答题卡这样写
目的网络 IP 地址子网掩码下一跳 IP 地址接口
202.118.1.0255.255.255.128直接交付E1
202.118.1.128255.255.255.128直接交付E2
202.118.3.2255.255.255.255202.118.2.2L0
0.0.0.00.0.0.0202.118.2.2L0

特定主机路由的掩码是 255.255.255.255(与目的地址相与后仍是它本身,前缀最长、最优先);互联网用默认路由,掩码 0.0.0.0。下一跳不能写成 R1 自己的 202.118.2.1。

(3) R2 到两个局域网的聚合路由
答题卡这样写

202.118.1.0/25 与 202.118.1.128/25 前 24 位相同,聚合为 202.118.1.0/24;R2 到它们都经 L0 发给 R1。

目的网络 IP 地址子网掩码下一跳 IP 地址接口
202.118.1.0255.255.255.0202.118.2.1L0
  • 主机数 → 主机位 n(2n − 2 ≥ 需求)→ 前缀 32 − n → 按块大小对齐排地址。
  • 路由表四类:直连(直接交付)、间接(下一跳 = 相邻路由器在共同网络上的接口)、特定主机(/32)、默认(/0)。
这类题最常见的丢分点
  • 下一跳写成本路由器自己的接口地址。
  • 聚合时把下一跳不同的网络合在一起;或聚合后网络地址没有把主机位清零(写成 202.118.1.128/24)。
  • “还能接多少台主机”忘了减去路由器接口占用的地址(2018-47)。
  • 特定主机路由写成 /24 掩码;默认路由写成 255.255.255.255。
  • 分片时每片数据不是 8 的倍数;片偏移没除以 8。

模拟大题:一个 /22 分给三个部门(按 408 风格自编)

模拟题变长子网划分 + 路由表 + 聚合计网 · 约 9 分

某单位申请到地址块 202.100.64.0/22。路由器 R1 的 E0、E1、E2 接口分别连接研发部、生产部、行政部的局域网,三个部门分别需要至少 500、200、100 个 IP 地址;R1 的 S0 接口通过一条点对点链路连接 ISP 的路由器 R2,R2 的另一端连接 Internet。点对点链路的地址也从该地址块中分配,且放在地址块的最末端。

研发部(≥500)E0生产部(≥200)E1行政部(≥100)E2R1S0点对点链路 /30R2Internet

(1) 请为三个部门和点对点链路分配子网(给出网络地址和前缀长度),要求地址块的剩余空间尽可能大且连续。

(2) 设 R1 的 S0 接口地址为该点对点链路的第一个可用地址,R2 的为第二个。请给出 R1 的路由表(目的网络、子网掩码、下一跳、接口)。

(3) R2 到该单位所有网络的路由应如何写(一条)?

(4) 若 R2 收到一个目的地址为 202.100.66.200 的分组,R1 从哪个接口转发它?若 R2 发出时 TTL = 64,该分组到达目的主机时 TTL 为多少?

先在纸上自己做一遍,再点这里展开满分解答
(1) 子网分配
答题卡这样写

研发部 ≥ 500:29 − 2 = 510,需 /23;生产部 ≥ 200:28 − 2 = 254,需 /24;行政部 ≥ 100:27 − 2 = 126,需 /25;点对点链路 2 个地址,需 /30。

按从大到小、块对齐分配:研发部 202.100.64.0/23(64.0 ~ 65.255);生产部 202.100.66.0/24;行政部 202.100.67.0/25;点对点链路放在最末端:202.100.67.252/30。剩余 202.100.67.128 ~ 202.100.67.251,连续可用。

(2) R1 的路由表
答题卡这样写

链路 202.100.67.252/30 的可用地址为 .253、.254,R1 的 S0 = 202.100.67.253,R2 = 202.100.67.254。

目的网络子网掩码下一跳接口
202.100.64.0255.255.254.0直接交付E0
202.100.66.0255.255.255.0直接交付E1
202.100.67.0255.255.255.128直接交付E2
202.100.67.252255.255.255.252直接交付S0
0.0.0.00.0.0.0202.100.67.254S0
(3) R2 的聚合路由
答题卡这样写

所有网络都在 202.100.64.0/22 内,且都经 R1:目的网络 202.100.64.0/22(掩码 255.255.252.0),下一跳 202.100.67.253。

(4) 转发接口与 TTL
答题卡这样写

202.100.66.200 属于 202.100.66.0/24(生产部),R1 从 E1 直接交付。途经 R1 一个路由器(R2 发出时的 TTL 已是它转发后的值),到达时 TTL = 64 − 1 = 63。

“R2 发出时 TTL = 64”指离开 R2 时的值,之后只有 R1 再减 1。若题目说“源主机发出时 TTL = 64”,就要数源主机到目的主机途经的所有路由器。

模拟大题 2:等分子网、聚合与“路由环路”(按 408 风格自编)

模拟题定长子网划分 + 最少路由项 + 环路 + 分片计网 · 约 9 分

某单位分到地址块 211.70.16.0/24,准备等分成 4 个子网,前 3 个依次给 LAN1、LAN2、LAN3,第 4 个暂时留空。R1 的 E0 连 LAN1、E1 连 LAN2,S0(10.0.0.1)经点对点链路 10.0.0.0/30 连 R2 的 S0(10.0.0.2),这条链路的 MTU = 1006B;R2 的 E0 连 LAN3,S1(202.1.1.2)连 ISP 的路由器(202.1.1.1)。各路由器的局域网接口取所在子网的第一个可用地址。LAN3 中有 Web 服务器 211.70.16.130。

LAN1LAN2E0E1R1S0 10.0.0.110.0.0.2 S010.0.0.0/30,MTU 1006BR2E0LAN3Web 服务器 211.70.16.130S1 202.1.1.2202.1.1.1ISPInternet

(1) 给出 LAN1 ~ LAN3 的网络地址、可分配地址范围和广播地址。每个子网最多还能接多少台主机?

(2) 写出 R2 的路由表,要求路由项最少(目的网络、子网掩码、下一跳、接口)。

(3) ISP 路由器只用一条路由指向该单位,应怎样写?此时若 ISP 收到目的地址为 211.70.16.200 的分组,会发生什么?R2 怎样改进?

(4) Web 服务器向 LAN1 中的主机发送一个总长 4000B 的 IP 分组(首部 20B,DF = 0)。R2 转发时分几片?写出各片的总长度、片偏移和 MF。若服务器发出时 TTL = 64,到达目的主机时 TTL 是多少?

先在纸上自己做一遍,再点这里展开满分解答
(1) 子网
答题卡这样写

/24 等分 4 份 → 借 2 位,前缀 /26,每块 64 个地址:

子网网络地址可分配范围广播地址
LAN1211.70.16.0/26.1 ~ .62211.70.16.63
LAN2211.70.16.64/26.65 ~ .126211.70.16.127
LAN3211.70.16.128/26.129 ~ .190211.70.16.191

每个子网 26 − 2 = 62 个可分配地址,扣掉路由器接口 1 个,最多还能接 61 台主机。

“还能接多少台”要减去路由器接口(2018-47 就在这里扣分)。

(2) R2 的路由表
答题卡这样写
目的网络子网掩码下一跳接口
211.70.16.128255.255.255.192直接交付E0
211.70.16.0255.255.255.12810.0.0.1S0
10.0.0.0255.255.255.252直接交付S0
202.1.1.0255.255.255.252直接交付S1
0.0.0.00.0.0.0202.1.1.1S1

LAN1(.0/26)和 LAN2(.64/26)下一跳都是 R1,且正好拼成 211.70.16.0/25,聚合成一条。

(3) 一条路由与环路
答题卡这样写

ISP:目的网络 211.70.16.0/24(255.255.255.0),下一跳 202.1.1.2。

211.70.16.200 落在留空的第 4 个子网。ISP 按 /24 交给 R2;R2 表中只有默认路由能匹配,又把它交回 ISP——分组在 ISP 与 R2 之间来回兜圈,每过一次 TTL 减 1,减到 0 时被丢弃,路由器向源主机发 ICMP 时间超过报文。

改进:R2 增加一条 211.70.16.192/26(或整个 211.70.16.0/24)的“丢弃”路由——按最长前缀匹配,LAN1 ~ LAN3 的分组仍走更长的前缀,只有发往空闲地址的分组被直接丢弃。

聚合能省路由项,但聚合块里若有“没人用”的地址,就要想到这种环路。

(4) 分片与 TTL
答题卡这样写

每片数据最多 ⌊(1006 − 20) ÷ 8⌋ × 8 = 984B;原数据 4000 − 20 = 3980B = 4 × 984 + 44,分 5 片:

片12345
总长度100410041004100464
片偏移0123246369492
MF11110

途经 R2、R1 两个路由器,到达时 TTL = 64 − 2 = 62。

片偏移以 8B 为单位:984 ÷ 8 = 123。MTU 1006 不是“整齐”的数,先减首部、再向下取 8 的倍数。

举一反三:条件一变,答案怎么变

在哪道题上改条件改成答案怎么变
2009-47(1)两个局域网各需不少于 60 个地址
看答案主机位 6,前缀 /26:可取 202.118.1.0/26 和 202.118.1.64/26(或其他对齐的 /26);聚合时两个 /26 相邻才能合成 /25。
2009-47(1)局域网 1 需 200 个、局域网 2 需 50 个
看答案/24 不够分:200 需要 /24(254),50 需要 /26,合计超过 256 个地址——无法满足,要说明理由。
2009-47(2)去掉到域名服务器的特定主机路由
看答案域名服务器的分组会走默认路由,下一跳同样是 202.118.2.2,结果不变,只是少一行。
2013-47(1)R3 下的网络改为 194.17.22.0/24
看答案194.17.20.0/25 与 194.17.22.0/24 不相邻,不能合成一个块而不包进无关地址;R2 需要分别写两条经 S1 的路由,共 4 条。
2014-43(2)R2—R4 链路费用改为 8
看答案到 R4:经 R2 为 3 + 8 = 11,经 R3 为 2 + 6 = 8,改走 R3。192.1.7.0/24 的下一跳变为 10.1.1.10(L1),不能再与 192.1.6.0/24 聚合,路由表变成 4 条;TTL 仍为 64 − 3 = 61(R1、R3、R4)。
2018-47(2)技术部 MTU 改为 576B
看答案每片数据 ⌊(576 − 20) ÷ 8⌋ × 8 = 552B;1480 ÷ 552 → 3 片(552、552、376),片偏移 0、69、138。

7.3② 路由算法与路由协议:Dijkstra、RIP、BGP

★★★ 高频综合题

先读:4.8 路由算法与 RIP/OSPF/BGP 4.4 路由表

这类题长什么样

给出链路状态信息或拓扑和费用,让你用 Dijkstra 求最短路径(2014-42,与数据结构“图”交叉);或者给出几个自治系统,问 RIP/OSPF 的选择、RIP 的收敛时间、BGP 的会话和选路(2024-47)。

常见问法考过的地方
按 Dijkstra 依次给出到各网络的最短路径和费用2014-42(3)
设计存储链路状态信息的数据结构(邻接表)2014-42(2)
根据最短路径写路由表、算 TTL、LSI 要增加什么2014-43
RIP 与 OSPF 怎么选;RIP 最多多少跳2024-47(1)(2)
RIP 多久才能让所有路由器学到某条路由2024-47(3)
BGP 用 eBGP 还是 iBGP、用什么报文、按什么选路2024-47(4)(5),2013-47(3)

做这类题必须会的 4 件事

① Dijkstra 表格法。从源点出发,每一步在“未确定”的结点里选当前距离最小的确定下来,再用它更新邻居的距离;答题时按确定的先后列出“目的、路径、费用”。到网络的费用 = 到它所连路由器的距离 + 直连费用。

② RIP 的“一次交换只走一跳”。初始距离向量只含直连网络。一个网络离某路由器 k 跳,这个路由器要在第 k 次交换后才学到它;若交换周期 30s、从第 1 次交换(0s)算起,需要 (k − 1) × 30s。RIP 距离 ≤ 15,16 为不可达,所以大网络选 OSPF。

③ BGP 三件事。不同 AS 的边界路由器之间是 eBGP 会话,同一 AS 内传递外部路由用 iBGP;路由用 UPDATE 报文通告;BGP 报文用 TCP 传。无策略时先选 AS 路径最短的,再选离自己最近的出口(“热土豆”)。

④ TTL。经过 k 个路由器要减 k,TTL 至少设为 k + 1 才能到达。

解题模板

  1. 把表或图变成带权图。列出每条链路的两端和费用、每个路由器的直连网络和费用。
  2. Dijkstra 列表。表头:步骤、确定的结点、到各结点的当前距离;每步圈出最小值。
  3. 从最短路径树得路由。到每个网络的“第一跳”就是路由表的下一跳;下一跳相同的网络再聚合。
  4. 协议题对号入座。AS 内:RIP(小、跳数)或 OSPF(大、链路状态、可分区);AS 间:BGP(eBGP/iBGP、UPDATE、TCP)。
完整示范2014 年第 42 题计算机网络

某网络中的路由器运行 OSPF 路由协议,题 42 表是路由器 R1 维护的主要链路状态信息(LSI),题 42 图是根据题 42 表及 R1 的接口名构造出来的网络拓扑。

R1 的 LSIR2 的 LSIR3 的 LSIR4 的 LSI备注
Router ID10.1.1.110.1.1.210.1.1.510.1.1.6标识路由器的 IP 地址
Link1ID10.1.1.210.1.1.110.1.1.610.1.1.5所连路由器的 Router ID
IP10.1.1.110.1.1.210.1.1.510.1.1.6Link1 的本地 IP 地址
Metric3366Link1 的费用
Link2ID10.1.1.510.1.1.610.1.1.110.1.1.2所连路由器的 Router ID
IP10.1.1.910.1.1.1310.1.1.1010.1.1.14Link2 的本地 IP 地址
Metric2424Link2 的费用
Net1Prefix192.1.1.0/24192.1.6.0/24192.1.5.0/24192.1.7.0/24直连网络 Net1 的网络前缀
Metric1111到达直连网络 Net1 的费用

题 42 表 R1 所维护的 LSI

192.1.1.0/241E0R1L0 10.1.1.1310.1.1.2R21192.1.6.0/24L1 10.1.1.9210.1.1.1010.1.1.13410.1.1.14R3R4610.1.1.510.1.1.6192.1.5.0/2411192.1.7.0/24

题 42 图 R1 构造的网络拓扑

(1) 本题中的网络可抽象为数据结构中的哪种逻辑结构?

(2) 针对题 42 表中的内容,设计合理的链式存储结构,以保存题 42 表中的链路状态信息(LSI)。要求给出链式存储结构的数据类型定义,并画出对应题 42 表的链式存储结构示意图(示意图中可仅以 ID 标识结点)。

(3) 按照迪杰斯特拉(Dijkstra)算法的策略,依次给出 R1 到达题 42 图中子网 192.1.x.x 的最短路径及费用。

先在纸上自己做一遍,再点这里展开满分解答

考点4.8 OSPF 与 Dijkstra训练营 ②(本题与数据结构“图”交叉)

先把表翻译成图
  • 4 个路由器是顶点;Link 是带权的边:R1—R2 费用 3,R1—R3 费用 2,R2—R4 费用 4,R3—R4 费用 6。
  • 每个路由器挂一个直连网络,费用 1:R1—192.1.1.0/24,R2—192.1.6.0/24,R3—192.1.5.0/24,R4—192.1.7.0/24。
(1) 逻辑结构
答题卡这样写

图(带权无向图)。

(2) 链式存储结构

用邻接表:每个路由器一个表头结点,后面挂一串“弧结点”,弧结点要么表示一条到其他路由器的链路(ID、本地 IP、费用),要么表示一个直连网络(前缀、掩码、费用)。

答题卡这样写
typedef struct {            // 到另一个路由器的链路
    unsigned int id;        // 所连路由器的 Router ID
    unsigned int ip;        // 本地接口 IP
    int metric;             // 费用
} Link;
typedef struct {            // 直连网络
    unsigned int prefix, mask;
    int metric;
} Net;
typedef struct ArcNode {    // 弧结点
    int flag;               // 1 = 链路,2 = 直连网络
    union { Link link; Net net; } info;
    struct ArcNode *next;
} ArcNode;
typedef struct HNode {      // 表头结点:一个路由器
    unsigned int routerId;
    ArcNode *first;
    struct HNode *next;     // 也可以把表头放在数组里(邻接表)
} HNode;

示意图:R1 → [Link 10.1.1.2, 3] → [Link 10.1.1.5, 2] → [Net 192.1.1.0/24, 1];R2 → [Link 10.1.1.1, 3] → [Link 10.1.1.6, 4] → [Net 192.1.6.0/24, 1];R3 → [Link 10.1.1.6, 6] → [Link 10.1.1.1, 2] → [Net 192.1.5.0/24, 1];R4 → [Link 10.1.1.5, 6] → [Link 10.1.1.2, 4] → [Net 192.1.7.0/24, 1]。

评分说明:只要采用可行的链式结构(邻接表、表头数组 + 两类结点链表等)并能保存表中全部信息,图示与定义一致即可给分。

(3) Dijkstra:到各子网的最短路径和费用(按求出的先后)
答题卡这样写
步骤目的网络最短路径费用
1192.1.1.0/24直接到达1
2192.1.5.0/24R1 → R3 → 192.1.5.0/243
3192.1.6.0/24R1 → R2 → 192.1.6.0/244
4192.1.7.0/24R1 → R2 → R4 → 192.1.7.0/248

到 R4 有两条路:经 R2 为 3 + 4 = 7,经 R3 为 2 + 6 = 8,取 7,再加直连网络费用 1 得 8。结果要按费用不减的次序给出(这就是 Dijkstra 的求解顺序)。

  • Dijkstra 表格法:每一步从未确定的结点中选当前距离最小的,确定它,再用它更新邻居。
  • 到网络的费用 = 到该网络所连路由器的最短距离 + 直连费用。
这类题最常见的丢分点
  • Dijkstra 结果没有按费用不减的顺序给出;到网络的费用忘了加直连的 1。
  • RIP 收敛时间多算一个周期:初始交换本身就把直连网络告诉了邻居。
  • 把 iBGP、eBGP 说反;说 BGP 用 UDP。

模拟大题:链路断开前后的最短路径(按 408 风格自编)

模拟题Dijkstra + 路由表 + 链路故障计网 · 约 9 分

某自治系统内 5 台路由器运行 OSPF,拓扑及链路费用如下图所示。Rk(k = 1 ~ 5)各直连一个网络 172.16.k.0/24,直连费用均为 1。

2125831R1R2R3R4R5172.16.1.0/24172.16.2.0/24172.16.3.0/24172.16.4.0/24172.16.5.0/24

(1) 按 Dijkstra 算法的执行顺序,依次给出 R1 到 R2 ~ R5 的最短路径和费用。

(2) 写出 R1 到其他 4 个网络的路由(目的网络、下一跳路由器),下一跳相同的在不多包含地址的前提下尽量聚合。

(3) 172.16.1.0/24 中的主机向 172.16.5.0/24 中的主机发送 TTL = 32 的分组,到达时 TTL 是多少?

(4) 若 R3—R5 链路断开,R1 到 R4、R5 的最短路径和费用变为多少?R1 的路由表中哪些项要改变?

先在纸上自己做一遍,再点这里展开满分解答
(1) Dijkstra
答题卡这样写
步骤确定的结点最短路径费用
1R3R1 → R31
2R2R1 → R22
3R5R1 → R3 → R54
4R4R1 → R3 → R5 → R45

(到 R2:直达 2,经 R3 为 1 + 2 = 3,取 2;到 R4:经 R2 为 2 + 5 = 7,经 R3 直达为 1 + 8 = 9,经 R3、R5 为 1 + 3 + 1 = 5,取 5。)

(2) R1 的路由
答题卡这样写

172.16.2.0/24 → 下一跳 R2;172.16.3.0/24 → R3;172.16.4.0/23(聚合 4、5 两个网络)→ R3。172.16.3.0/24 与 172.16.4.0/23 虽然下一跳相同,但合成一个块会多包进无关地址,不再合并。

(3) TTL
答题卡这样写

路径 R1 → R3 → R5,经过 3 个路由器,到达时 TTL = 32 − 3 = 29。

(4) R3—R5 断开后
答题卡这样写

到 R4:经 R2 为 2 + 5 = 7,经 R3 为 1 + 8 = 9,最短 R1 → R2 → R4,费用 7;到 R5:只能经 R4,R1 → R2 → R4 → R5,费用 8。

R1 路由表中 172.16.4.0/23(原下一跳 R3)改为下一跳 R2;172.16.3.0/24 仍经 R3 不变。

模拟大题 2:RIP 收到邻居的距离向量之后(按 408 风格自编)

模拟题RIP 距离向量更新 + 不可达 + 收敛时间计网 · 约 9 分

某自治系统内运行 RIP。路由器 R4 的邻居是 R1、R2、R3,R4 当前的路由表如下:

目的网络距离下一跳
N17R1
N22R2
N35R2
N44R3

现在 R4 收到 R2 发来的距离向量:N1 距离 2,N2 距离 4,N3 距离 7,N5 距离 3。

(1) 写出 R4 更新后的路由表,并说明每一项为什么这样变。

(2) 之后 R2 通告 N3 的距离为 16,R4 怎么处理?再之后 R3 通告 N3 的距离为 4,R4 又怎么处理?

(3) RIP 每 30s 交换一次路由信息。某个新网络接到 R2 上,从 R2 第一次通告它(记为 0s)开始,离 R2 有 3 段链路的路由器 Rx 最早何时学到这个网络?Rx 中它的距离是多少?

(4) 什么是 RIP 的“坏消息传得慢”?RIP 为什么把距离 16 规定为不可达?

先在纸上自己做一遍,再点这里展开满分解答
(1) 更新后的表
答题卡这样写

先把 R2 通告的每个距离加 1(经过 R2 要多走一跳):N1 3、N2 5、N3 8、N5 4,再逐项比较:

目的网络距离下一跳理由
N13R2经 R2 为 3,比原来的 7 短,替换
N25R2原下一跳就是 R2,以 R2 的最新消息为准,即使变长也要更新
N38R2同上,下一跳相同,更新为 8
N44R3R2 没有通告 N4,不变
N54R2原表没有,新增

最常错的是 N2、N3:以为“变长了就不理”。下一跳相同时必须照新消息改——R2 说路变远了,经 R2 的路就是变远了。

(2) 不可达与恢复
答题卡这样写

R2 通告 N3 = 16:下一跳相同,R4 把 N3 改为 16(不可达),下一跳 R2。

R3 通告 N3 = 4:经 R3 为 5,比 16 短,改为 N3,5,R3。

(3) 收敛时间
答题卡这样写

每交换一次,消息只能往外传一段链路。离 R2 1 段的路由器在第 1 次交换(0s)后学到,2 段的在第 2 次(30s)后,3 段的 Rx 在第 3 次交换后学到,最早 60s。

R2 到直连网络的距离为 1,每过一个路由器加 1,Rx 中的距离为 4。

(4) 坏消息传得慢
答题卡这样写

某网络断开后,相邻路由器可能仍从对方收到“经我可达”的旧消息,互相把距离加 1 地传来传去,要很多轮交换才知道它不可达(“好消息传得快、坏消息传得慢”)。RIP 把 16 规定为不可达,相当于给这种“数到无穷”设了上限,同时也限制了 RIP 只适合小网络(最多 15 跳)。

可以补一句:水平分割、毒性逆转等办法能缓解,但不能完全消除这个问题。

举一反三:条件一变,答案怎么变

在哪道题上改条件改成答案怎么变
2014-42(3)R1—R2 费用改为 5
看答案192.1.1.0/24:1;192.1.5.0/24:3(经 R3);192.1.6.0/24:经 R2 为 5 + 1 = 6,经 R3、R4 为 2 + 6 + 4 + 1 = 13,取 6;192.1.7.0/24:经 R2 为 5 + 4 + 1 = 10,经 R3 为 2 + 6 + 1 = 9,改走 R1 → R3 → R4,费用 9。
2024-47(2)AS3 内最多经过 10 个路由器
看答案初始 TTL 至少 11。
2024-47(3)网络 210.2.4.0/24 改为挂在 R12 上
看答案R11、R13 离 R12 一跳,R14、R15、R16 各两跳(R12—R11—R14、R12—R13—R15、R12—R13—R16),第 2 次交换后都学到,至少 30s。
2024-47(5)经 R13 的 AS 路径改为 AS4 AS10 AS12 AS19
看答案经 R11 的路径最短(3 个 AS),R14、R15 的下一跳都选 R11。
2013-47(3)问 R2 与 R3 之间
看答案同一 AS 内,用内部网关协议(如 RIP,封装在 UDP 中;或 OSPF,直接封装在 IP 中)。

预测小题:OSPF 分区域(层次路由)

考纲写着“层次路由”,OSPF 的区域划分是它最典型的例子,真题还没以大题形式考过,下面按大题的问法练一遍。先读 4.8。

预测小题区域边界路由器 + LSA 洪泛范围 + 跨区域路径考纲补充(尚无真题)· 约 4 ~ 6 分

某自治系统运行 OSPF,划分为主干区域 0 和区域 1、区域 2(如图)。R3 同时属于区域 0 和区域 1,R4 同时属于区域 0 和区域 2;R5 在主干区域内,并用 BGP 与其他自治系统交换路由。

其他自治系统(BGP)R5R3R4R1R2R6R7主干区域 0区域 1区域 2

(1) 哪些是区域边界路由器?哪些是主干路由器?哪个是自治系统边界路由器?

(2) R1 发出的链路状态通告会洪泛到哪些路由器?R1 知不知道区域 2 内部的详细拓扑?

(3) R1 所连网络中的主机向 R7 所连网络发分组(按跳数最少),依次经过哪些路由器?

(4) 把一个自治系统划分成多个区域有什么好处?OSPF 报文封装在什么里面传送?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

区域边界路由器:R3、R4(各连两个区域);主干路由器:主干区域里的 R3、R4、R5;自治系统边界路由器:R5(与其他 AS 交换路由)。

(2)
答题卡这样写

只在区域 1 内洪泛:R2、R3 收到(R3 不把它原样传进主干)。R1 不知道区域 2 的详细拓扑,只从 R3 得到区域外网络的汇总信息(“到某网络、费用多少”)。

(3)
答题卡这样写

区域间的分组必须经过主干区域:R1 → R2 → R3 → R4 → R6 → R7。

(4)
答题卡这样写

链路状态只在区域内洪泛,交换的信息量小;每个路由器的链路状态数据库小,算最短路径快;层次清楚,网络规模可以做大。OSPF 报文直接封装在 IP 数据报中(协议字段 89),不用 TCP 或 UDP。

和 RIP 对比着记:RIP 用 UDP(端口 520)、只和邻居交换整个路由表;OSPF 用 IP、向区域内所有路由器洪泛“与自己相邻的链路状态”。

7.4③ 报文首部分析:从十六进制抓包里读地址、序号和 TTL

★★ 常考综合题

先读:3.7 以太网帧 4.2 IP 首部 5.3 TCP 首部 5.4 三次握手

这类题长什么样

题目给一段十六进制数据(一个以太网帧的前若干字节,或若干个 IP 分组的前 40 字节),再附上帧、IP 首部、TCP 首部的结构图,问你里面的地址、端口、序号、标志、TTL 是多少,推出发生了什么。2011、2012 年考过,是“拿图对着数”的题,只要偏移数对,几乎不会错。

常见问法考过的地方
目的 / 源 IP 地址、默认网关的 MAC 地址是什么2011-47(1)
哪几个分组是某主机发的、哪几个完成了三次握手2012-47(1)
哪几个分组需要填充(以太网最短帧)2012-47(1)
对方已收到多少字节(确认号 − 起始序号)2012-47(2)
经过了多少个路由器(TTL 之差,用标识找同一分组)2012-47(3)
经过路由器 / NAT 时要改哪些字段2011-47(4)
用什么协议确定目的 MAC、HTTP 需要几个 RTT2011-47(2)(3)

做这类题必须会的 4 件事

① 三层首部的字节地图。以 IP 分组起点为第 0 字节:

层字节内容
以太网帧(在 IP 之前)帧 0 ~ 5目的 MAC
帧 6 ~ 11源 MAC
帧 12 ~ 13类型(08 00 = IPv4,08 06 = ARP);帧第 14 字节起是 IP 分组
IP 首部0版本 + 首部长度(45 = IPv4,20B)
2 ~ 3总长度(字节)
4 ~ 5标识(找“同一个分组”用它)
6 ~ 7标志 + 片偏移(40 00 = DF 置 1)
8TTL
9协议(06 = TCP,11 = UDP,01 = ICMP)
10 ~ 11首部检验和
12 ~ 15 / 16 ~ 19源 IP / 目的 IP
TCP 首部(首部长度 × 4 之后)0 ~ 1 / 2 ~ 3源端口 / 目的端口(00 50 = 80)
4 ~ 7序号
8 ~ 11确认号
12高 4 位:数据偏移(×4 = TCP 首部长度)
13标志:02 = SYN,12 = SYN + ACK,10 = ACK,18 = ACK + PSH,11 = ACK + FIN

② 十六进制 → 点分十进制:每字节单独换:c0 a8 00 08 = 192.168.0.8;40 aa 62 20 = 64.170.98.32。

③ 从数据推事件。SYN 的 seq + 1 = 对方 ack;数据量 = 最新确认号 − 数据起始序号;TTL 之差 = 途经路由器数;总长度 < 46 → 以太网需要填充。

④ 转发时改什么。普通路由器:TTL − 1、重算首部检验和(需要分片时再改总长度、标志、片偏移)。NAT 路由器:另改源 IP(出方向)或目的 IP(入方向),NAPT 还改端口,TCP/UDP 检验和也要重算。

解题模板

  1. 先画竖线切字段。在题目数据上按“帧首部 14B | IP 首部 | TCP 首部 | 数据”画竖线,每行 16 字节时特别注意行尾换行处。
  2. 每个分组做一张小表:总长度、标识、TTL、源、目的、端口、seq、ack、标志。
  3. 按问题查表:方向看源 IP,握手看标志,数据量看序号差,路由器数看 TTL 差(用标识对应同一分组)。
  4. 答案带上原始数据:写“第 31~34 字节 40 aa 62 20,即 64.170.98.32”,阅卷一眼可见。
完整示范2012 年第 47 题计算机网络

主机 H 通过快速以太网连接 Internet,IP 地址为 192.168.0.8,服务器 S 的 IP 地址为 211.68.71.80。H 与 S 使用 TCP 通信时,在 H 上捕获的其中 5 个 IP 分组如题 47-a 表所示。

编号IP 分组的前 40 字节内容(十六进制)
145 00 00 30 01 9b 40 00 80 06 1d e8 c0 a8 00 08 d3 44 47 50
0b d9 13 88 84 6b 41 c5 00 00 00 00 70 02 43 80 5d b0 00 00
245 00 00 30 00 00 40 00 31 06 6e 83 d3 44 47 50 c0 a8 00 08
13 88 0b d9 e0 59 9f ef 84 6b 41 c6 70 12 16 d0 37 e1 00 00
345 00 00 28 01 9c 40 00 80 06 1d ef c0 a8 00 08 d3 44 47 50
0b d9 13 88 84 6b 41 c6 e0 59 9f f0 50 f0 43 80 2b 32 00 00
445 00 00 38 01 9d 40 00 80 06 1d de c0 a8 00 08 d3 44 47 50
0b d9 13 88 84 6b 41 c6 e0 59 9f f0 50 18 43 80 e6 55 00 00
545 00 00 28 68 11 40 00 31 06 06 7a d3 44 47 50 c0 a8 00 08
13 88 0b d9 e0 59 9f f0 84 6b 41 d6 50 10 16 d0 57 d2 00 00

题 47-a 表(IP 分组头和 TCP 段头结构见图 4-2、图 5-1)

(1) 题 47-a 表中的 IP 分组中,哪几个是由 H 发送的?哪几个完成了 TCP 连接建立过程?哪几个在通过快速以太网传输时进行了填充?

(2) 根据题 47-a 表中的 IP 分组,分析 S 已经收到的应用层数据字节数是多少?

(3) 若题 47-a 表中的某个 IP 分组在 S 发出时的前 40 字节如题 47-b 表所示,则该 IP 分组到达 H 时经过了多少个路由器?

来自 S 的分组45 00 00 28 68 11 40 00 40 06 ec ad d3 44 47 50 ca 76 01 06
13 88 a1 08 e0 59 9f f0 84 6b 41 d6 50 10 16 d0 b7 d6 00 00

题 47-b 表

先在纸上自己做一遍,再点这里展开满分解答

考点4.2 IP 首部5.3 TCP 首部5.4 三次握手3.7 以太网最短帧与填充训练营 ③

先把每个分组切开(IP 首部 20B,第 13~16 字节是源 IP,第 17~20 字节是目的 IP;TCP 首部从第 21 字节开始)
编号总长度TTL源 → 目的seqack标志
10x30 = 480x80H → S846b 41c5—SYN
20x30 = 480x31S → He059 9fef846b 41c6SYN、ACK
30x28 = 400x80H → S846b 41c6e059 9ff0ACK(SYN = 0)
40x38 = 560x80H → S846b 41c6e059 9ff0ACK、PSH,带 16B 数据
50x28 = 400x31S → He059 9ff0846b 41d6ACK

所有分组的 IP 首部检验和都能验算通过(反码求和得 FFFF),说明上面的数字抄得没错。

(1) 谁发的、哪几个完成握手、哪几个要填充
答题卡这样写

源 IP 地址(第 13~16 字节)为 c0 a8 00 08(192.168.0.8)的是 H 发出的:1、3、4 号。

1 号 SYN = 1、ACK = 0,seq = 846b41c5H;2 号 SYN = 1、ACK = 1,ack = 846b41c6H;3 号 ACK = 1、SYN = 0,ack = e0599ff0H。1、2、3 号完成了三次握手。

以太网帧的数据部分最少 46B,总长度只有 40B(0x28)的 3、5 号分组需要填充。

(2) S 已收到的应用层数据
答题卡这样写

H 的数据从序号 846b41c6H 开始(3、4 号的 seq);S 发出的 5 号分组确认号为 846b41d6H,说明 S 已收到 846b41c6H ~ 846b41d5H 的数据,共 846b41d6H − 846b41c6H = 10H = 16 字节。(与 4 号分组总长 56B − 20B − 20B = 16B 一致。)

(3) 经过了多少个路由器

先找出是哪一个分组:标识字段(第 5~6 字节)都是 68 11 → 就是 5 号。再比 TTL。

答题卡这样写

题 47-b 表分组的标识为 6811H,与 5 号分组相同,是同一个分组。S 发出时 TTL = 40H = 64,H 收到时 TTL = 31H = 49,每经过一个路由器 TTL 减 1,共经过 64 − 49 = 15 个路由器。

两表中该分组的目的 IP 不同(S 发出时是 ca 76 01 06 = 202.118.1.6,到 H 时是 192.168.0.8),目的端口也不同(a1 08 → 0b d9):H 用私有地址,中途经过了 NAT。找对应分组要看标识,不能看地址。

  • 判断方向看源 IP;判断握手看 SYN/ACK 位和 seq/ack;判断填充看总长度是否 < 46B。
  • 数据量 = 对方确认号 − 自己起始序号;路由器数 = TTL 之差。
这类题最常见的丢分点
  • 把行首的字节计数(0000、0010……)当成数据。
  • 数偏移时忘了以太网首部 14B,或把 IP 首部长度当作固定 20B 而题中其实有选项。
  • “经过了多少个路由器”用地址找分组——经过 NAT 后地址变了,要用标识找。
  • 罗列所有字段当作“需要修改的字段”。

模拟大题:一个 SYN 帧里能读出什么(按 408 风格自编)

模拟题以太网帧 → IP → TCP 逐字节分析计网 · 约 9 分

主机 H 通过 NAT 路由器 R 接入 Internet,R 的内网接口 MAC 为 00-0f-e2-11-22-33,外网地址为 58.19.24.3。在 H 上捕获到一个以太网帧(不含前导码和 CRC)如下:

H192.168.10.2300-0f-e2-11-22-33RNAPT58.19.24.3Internet服务器202.38.64.10
0000  00 0f e2 11 22 33 00 1e  4f 2a 9c 01 08 00 45 00
0010  00 30 4a 2c 40 00 40 06  1b ac c0 a8 0a 17 ca 26
0020  40 0a c3 5a 00 50 1a 2b  3c 4d 00 00 00 00 70 02
0030  fa f0 99 1b 00 00 02 04  05 b4 01 01 04 02

(1) H 的 MAC 地址和 IP 地址各是什么?该帧要发往哪个 IP 地址的哪个端口?对方运行的很可能是什么应用?

(2) 这个 TCP 段是三次握手的第几次?若对方接受连接,回复的 TCP 段中 SYN、ACK 的值和确认号是多少?该段选项中通告的 MSS 是多少?

(3) 该 IP 分组的首部长度、总长度、TTL 各是多少?途中能否被分片?

(4) R 采用 NAPT,把 H 的端口映射为 6001。R 转发该分组时,IP 首部和 TCP 首部中哪些字段会改变?改成什么(检验和只需说明是否重算)?

先在纸上自己做一遍,再点这里展开满分解答
先切字段
  • 帧 0~5:00-0f-e2-11-22-33(R 的内网接口);6~11:00-1e-4f-2a-9c-01(H);12~13:08 00 → IPv4。
  • IP:45(20B)00 | 00 30(48)| 4a 2c | 40 00(DF = 1)| 40(TTL 64)06(TCP)| 1b ac | c0 a8 0a 17 | ca 26 40 0a。
  • TCP:c3 5a(50010)| 00 50(80)| 1a 2b 3c 4d(seq)| 00 00 00 00 | 70(首部 28B)02(SYN)| fa f0 | 99 1b | 00 00 | 选项 02 04 05 b4(MSS = 1460)01 01 04 02。
(1)
答题卡这样写

源 MAC(帧第 7~12 字节)00-1e-4f-2a-9c-01 是 H 的 MAC;源 IP(IP 首部第 13~16 字节)c0 a8 0a 17 = 192.168.10.23。

目的 IP ca 26 40 0a = 202.38.64.10,目的端口 00 50 = 80,对方很可能是 Web(HTTP)服务器。

(2)
答题卡这样写

标志字节 02:SYN = 1、ACK = 0,是第一次握手,seq = 1a2b3c4dH。对方回复 SYN = 1、ACK = 1,确认号 = 1a2b3c4dH + 1 = 1a2b3c4eH。选项 02 04 05 b4 表示 MSS = 05b4H = 1460 字节。

(3)
答题卡这样写

首部长度 5 × 4 = 20B,总长度 0030H = 48B(TCP 首部 7 × 4 = 28B,不带数据),TTL = 40H = 64。标志字段 40 00 中 DF = 1,不允许分片(它只有 48B,本来也不需要)。

(4)
答题卡这样写

IP 首部:源 IP 由 c0 a8 0a 17 改为 3a 13 18 03(58.19.24.3);TTL 由 40H 改为 3fH;首部检验和重算(改为 95 55)。

TCP 首部:源端口由 c3 5a(50010)改为 17 71(6001);检验和重算(伪首部中的源 IP 和源端口都变了,改为 bd ae)。其余字段不变。

括号中的检验和已用程序验算:改动后的首部按反码求和结果为全 1。

模拟大题 2:三个分片的 IP 首部(按 408 风格自编)

模拟题标识 / 标志 / 片偏移逐字节 + 再分片计网 · 约 9 分

主机 H(以太网,MTU = 1500B)向服务器发送了一个较大的 UDP 数据报。在 H 的出口处捕获到 3 个 IP 分组,它们的首部(各 20B,十六进制)如下:

分片 1:45 00 05 dc 1c 46 20 00 3f 11 3c 0f c0 a8 01 0a cb 00 71 09
分片 2:45 00 05 dc 1c 46 20 b9 3f 11 3b 56 c0 a8 01 0a cb 00 71 09
分片 3:45 00 02 38 1c 46 01 72 3f 11 5e 41 c0 a8 01 0a cb 00 71 09

(1) 三个分组是否属于同一个数据报?依据是什么?源、目的 IP 地址和上层协议各是什么?

(2) 每个分片的 MF、片偏移(以字节计)和数据部分长度各是多少?哪一片是最后一片?

(3) 原 IP 数据报的总长度是多少?UDP 用户数据有多长?

(4) 途中有一段 MTU = 576B 的链路。哪些分片还要再分片?写出再分片后各片的总长度、片偏移(以 8B 为单位)和 MF。

(5) 这些分片在哪里重组?若它们到达目的主机前经过 3 个路由器,到达时 TTL 是多少?

先在纸上自己做一遍,再点这里展开满分解答
先切字段
  • 45:版本 4、首部 5 × 4 = 20B;05 dc / 02 38:总长度 1500 / 568;1c 46:标识。
  • 标志 + 片偏移 2 字节:20 00 = 0010 0000 0000 0000 → MF = 1、偏移 0;20 b9 = 0010 0000 1011 1001 → MF = 1、偏移 0b9H = 185;01 72 = 0000 0001 0111 0010 → MF = 0、偏移 172H = 370。
  • 3f:TTL 63;11:协议 17(UDP);接着 2 字节检验和;c0 a8 01 0a = 192.168.1.10;cb 00 71 09 = 203.0.113.9。
(1)
答题卡这样写

三者标识都是 1c46H,源 IP、目的 IP、协议也都相同,属于同一个数据报。源 IP 192.168.1.10,目的 IP 203.0.113.9,协议字段 11H = 17,上层是 UDP。

(2)
答题卡这样写
分片MF片偏移数据长度
110 × 8 = 01500 − 20 = 1480B
21185 × 8 = 14801480B
30370 × 8 = 2960568 − 20 = 548B

MF = 0 的分片 3 是最后一片。偏移首尾相接(0 → 1480 → 2960),没有缺片。

(3)
答题卡这样写

数据共 1480 + 1480 + 548 = 3508B,原数据报总长 = 3508 + 20 = 3528B;UDP 首部 8B,用户数据 3508 − 8 = 3500B。

UDP 首部只在第 1 片里,后面的分片没有 UDP 首部——所以路由器无法按端口过滤后续分片。

(4)
答题卡这样写

分片 3 总长 568B ≤ 576B,不用再分。分片 1、2 各 1500B,每片数据最多 ⌊(576 − 20) ÷ 8⌋ × 8 = 552B,1480 = 552 + 552 + 376,各分 3 片:

总长度片偏移MF
分片 1 → 1a、1b、1c572、572、3960、69、1381、1、1
分片 2 → 2a、2b、2c572、572、396185、254、3231、1、1

再分片时 MF 要“继承”:分片 1、2 本身 MF = 1,它们切出来的最后一片 MF 仍是 1;片偏移从原分片的偏移接着算(185 + 69 = 254)。

(5)
答题卡这样写

只在目的主机重组,路由器不重组。TTL = 3fH = 63,经过 3 个路由器,到达时为 60。

题中三个首部检验和已用程序验算(verify/09/p7_train.py):把含检验和的 10 个 16 位字反码求和,结果为 FFFFH。

举一反三:条件一变,答案怎么变

在哪道题上改条件改成答案怎么变
2011-47(3)HTTP/1.1 持续连接、流水线方式
看答案请求页面 1 RTT,5 个图像的请求连续发出,再 1 RTT,共 2 个 RTT。
2011-47(3)HTTP/1.0 非持续连接、串行,从建立 TCP 连接算起
看答案每个对象 2 RTT(握手 + 请求响应),6 个对象共 12 个 RTT。
2011-47(4)R 不是 NAT 路由器,出口 MTU = 400B
看答案源地址不变;但总长 495B > 400B 且 DF = 1(40 00),不能分片,R 丢弃分组并向源主机发 ICMP 终点不可达(需要分片但 DF 置位)。
2012-47(2)5 号分组的确认号为 846b4226H
看答案846b4226H − 846b41c6H = 60H = 96 字节。
2012-47(3)H 收到时 TTL 为 2cH
看答案40H − 2cH = 14H = 20 个路由器。
2012-47(1)4 号分组总长度改为 0x2e
看答案46B 正好是以太网数据部分的最小值,不需要填充;需要填充的仍只有 3、5 号。

预测小题:IPv6 地址与分片

IPv6 在选择题里考过特点,大题还没考过它的首部和分片。先读 4.7。

预测小题地址压缩 + 基本首部 + 只在源点分片考纲补充(尚无真题)· 约 4 ~ 6 分

(1) 把 IPv6 地址 2001:0db8:0000:0000:0008:0800:200c:417a 写成最简形式。ff02::1 是哪一类地址?

(2) IPv6 基本首部多长?与 IPv4 首部相比取消了哪些字段?

(3) 某源主机经路径 MTU = 1280B 的路径发送 3000B 的上层数据(除分片首部外没有其他扩展首部,分片首部 8B)。每片的数据部分最多多长?分几片?各片的 IPv6 分组总长是多少?若途中某路由器发现分组太大,它怎么处理?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

每组去掉前导 0,连续的全 0 组用 :: 代替(只能用一次):2001:db8::8:800:200c:417a。ff02::1 以 ff 开头,是组播地址(本链路上的所有结点)。

(2)
答题卡这样写

基本首部固定 40B。取消了:首部长度(固定了)、首部检验和、与分片有关的标识 / 标志 / 片偏移(移到分片扩展首部)、选项(改用扩展首部)。

(3)
答题卡这样写

每片数据 ≤ 1280 − 40 − 8 = 1232B,且是 8 的倍数(1232 = 154 × 8),可取 1232B。3000 = 1232 + 1232 + 536,分 3 片;各片总长 = 40 + 8 + 数据 = 1280B、1280B、584B。

IPv6 只由源点分片,途中路由器不分片:分组太大时丢弃它,并向源点发 ICMPv6“分组太大”差错报文,源点据此调小分片。

IPv4 的路由器可以分片(DF = 0 时),IPv6 的路由器不能——选择题最爱考这一句。

7.5④ 局域网:设备选择、冲突域与广播域、CSMA/CD、DHCP、802.11

★★★ 高频综合题

先读:3.5 CSMA/CD 3.6 802.11 地址 3.9 设备与冲突域、广播域 4.6 DHCP

这类题长什么样

一张局域网拓扑,有几个位置标着“设备 1、设备 2”让你选(路由器、交换机、集线器),再问冲突和广播的范围、CSMA/CD 的时间和距离、DHCP 报文怎么走、无线帧的地址。2010、2019、2022 年考过。

常见问法考过的地方
设备 x 应选路由器、交换机还是集线器2019-47(1),2022-47(1)
哪些设备的接口要配 IP、配什么2019-47(2)
检测到冲突的最短 / 最长时间、最远距离2010-47(1),2022-47(2)
停等方式下的有效数据率2010-47(2)
广播分组 / 广播帧能被谁收到2019-47(4),2022-47(3)
DHCP 报文类型、目的 MAC2022-47(3)
802.11 帧的地址 1、2、32022-47(4)

做这类题必须会的 4 件事

① 由“域”的关系反推设备。不同网络(不同子网 / 不同广播域)之间 → 路由器;同一广播域、不同冲突域 → 交换机;同一冲突域 → 集线器。只有路由器(和主机)接口需要 IP 地址。

② CSMA/CD 的三个时间。检测冲突最短 τ、最长 2τ;最短帧发送时间 ≥ 2 ×(传播时延 + 中间设备时延);由此求最远距离或最短帧长。

③ 广播的传播范围。链路层广播帧(ARP 请求、DHCP 发现)在整个广播域内泛洪,路由器挡住;IP 广播地址(主机号全 1)同样只在本网络。

④ 802.11 三个地址。地址 1 = 这一跳的接收者,地址 2 = 这一跳的发送者,地址 3 = AP 另一侧的那个(发往 AP 时是最终目的,从 AP 发出时是最初源)。

解题模板

  1. 标子网。每台主机地址 & 掩码,分出几个网络;网络之间必然是路由器。
  2. 标域。用题目给的“同一广播域 / 冲突域”关系确定交换机和集线器。
  3. 时间和距离题:先求 τ(或最短帧时间的一半),再减设备时延,最后乘传播速度。
  4. “谁能收到”:先判断是广播还是单播;广播看广播域,单播看交换机表是否已学到。
  5. 无线帧:画出这一跳的收、发双方,再按地址 1、2、3 填。
完整示范2022 年第 47 题计算机网络

某网络拓扑如下图所示,R 为路由器,S 为以太网交换机,AP 是 802.11 接入点,路由器的 E0 接口和 DHCP 服务器的 IP 地址配置如图中所示;H1 与 H2 属于同一个广播域,但不属于同一个冲突域;H2 和 H3 属于同一个冲突域;H4 和 H5 已经接入网络,并通过 DHCP 动态获取了 IP 地址。现有路由器、100BaseT 以太网交换机和 100BaseT 集线器(Hub)三类设备各若干台。

InternetRE0 192.168.0.1/2500-11-11-11-11-A1SDHCP 服务器192.168.0.2/2500-11-11-11-11-B1AP00-11-11-11-11-C1(无线)H4192.168.0.3/2500-11-11-11-11-D1H5192.168.0.4/2500-11-11-11-11-E1设备 1H1设备 2H2H3

(1) 设备 1 和设备 2 应该分别选择哪类设备?

(2) 若信号传播速度为 2 × 108m/s,以太网最小帧长为 64B,信号通过设备 2 时会产生额外的 1.51μs 的时间延迟,则 H2 与 H3 之间可以相距的最远距离是多少?

(3) 在 H4 通过 DHCP 动态获取 IP 地址过程中,H4 首先发送了 DHCP 报文 M,M 是哪种 DHCP 报文?路由器 E0 接口能否收到封装 M 的以太网帧?S 向 DHCP 服务器转发的封装 M 的以太网帧的目的 MAC 地址是什么?

(4) 若 H4 向 H5 发送一个 IP 分组 P,则 H5 收到的封装 P 的 802.11 帧的地址 1、地址 2 和地址 3 分别是什么?

先在纸上自己做一遍,再点这里展开满分解答

考点3.9 冲突域与广播域3.5 CSMA/CD 最远距离4.6 DHCP3.6 802.11 地址训练营 ④

(1) 设备 1、设备 2
答题卡这样写

H1、H2 同一广播域但不同冲突域 → 设备 1 隔离冲突域而不隔离广播域,是 100BaseT 以太网交换机;H2、H3 同一冲突域 → 设备 2 不隔离冲突域,是 100BaseT 集线器。

(2) H2 与 H3 的最远距离
答题卡这样写

100BaseT 速率 100Mbps,最小帧 64B 的发送时间 = 512bit ÷ 100Mbps = 5.12μs,它应不小于往返时延,所以单程时延 ≤ 2.56μs。

单程时延 = 传播时延 + 集线器时延 1.51μs,传播时延 ≤ 2.56 − 1.51 = 1.05μs。

最远距离 = 1.05μs × 2 × 108m/s = 210m。

(3) 报文 M
答题卡这样写

M 是 DHCP 发现报文(DHCPDISCOVER)。它以广播帧发送,E0 接口与 H4 在同一广播域,能收到封装 M 的帧。S 向 DHCP 服务器转发的这个帧目的 MAC 仍是广播地址 FF-FF-FF-FF-FF-FF。

(4) H5 收到的 802.11 帧的三个地址
答题卡这样写

H4 与 H5 同在一个 BSS,帧经 AP 转发。H5 收到的是 AP 发出的帧(来自 AP):地址 1 = 接收者 H5 00-11-11-11-11-E1,地址 2 = 发送者 AP 00-11-11-11-11-C1,地址 3 = 源站 H4 00-11-11-11-11-D1。

  • “同一广播域、不同冲突域” → 交换机;“同一冲突域” → 集线器;“不同广播域” → 路由器。
  • 最远距离:最短帧时间 ÷ 2 − 设备时延,再乘传播速度。
这类题最常见的丢分点
  • 最远距离忘了减集线器时延,或减的是往返两次(单程只经过一次)。
  • 有效数据率用 1518B 而不是 1500B;漏掉确认帧的发送时间。
  • 认为路由器接口收不到广播帧——同一广播域内的路由器接口也会收到,只是不转发。

模拟大题:一个楼层的有线 + 无线网络(按 408 风格自编)

模拟题收帧范围 + CSMA/CD + 802.11 地址计网 · 约 9 分

某楼层网络如下图所示。路由器 R 的 E0(192.168.10.1/24)连交换机 S1,E1(192.168.20.1/24)连交换机 S2。S1 的一个端口连 100BaseT 集线器 Hub,Hub 连主机 H1、H2;S1 的另一个端口直接连 H3。S2 连主机 H4 和无线接入点 AP,笔记本 L1 通过 AP 接入。已知 AP、L1、H4 的 MAC 地址分别为 00-aa-00-00-00-01、00-bb-00-00-00-01、00-cc-00-00-00-04。信号传播速度 2 × 108m/s,以太网最短帧长 64B,信号经过 Hub 产生 0.56μs 的时延。设各交换机已学到所有主机的端口。

RE0 192.168.10.1/24E1 192.168.20.1/24S1S2HubH3H1H2H400-cc-00-00-00-04AP00-aa-00-00-00-01(无线)L100-bb-00-00-00-01

(1) H1 向 H3 发送一个单播帧,在物理层上哪些主机能收到这个帧的信号?

(2) H1 与 H2 之间理论上可以相距的最远距离是多少?

(3) H1 刚开机、ARP 表为空,访问 H4 时发出的第一个帧是什么帧?哪些主机和路由器接口能收到它?

(4) L1 向 H4 发送一个 IP 分组,L1 发出的 802.11 帧的地址 1、地址 2、地址 3 分别是什么?H4 收到的以太网帧的源 MAC 地址是什么?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

Hub 把 H1 的信号从所有端口转发,H2 和 S1 都收到;S1 已学到 H3 的端口,只从该端口转发,H3 收到。所以除 H1 外,H2、H3 能收到。

(2)
答题卡这样写

最短帧发送时间 = 512bit ÷ 100Mbps = 5.12μs,单程时延不能超过 2.56μs;减去 Hub 时延 0.56μs,传播时延 ≤ 2μs,最远距离 = 2μs × 2 × 108m/s = 400m。

(3)
答题卡这样写

H4 在另一个网络(192.168.20.0/24),H1 要把分组交给默认网关 192.168.10.1,第一个帧是查询网关 MAC 的 ARP 请求帧(目的 MAC 全 F)。它在 192.168.10.0/24 这个广播域内泛洪:H2、H3 和 R 的 E0 接口能收到;路由器不转发广播,H4、L1 收不到。

(4)
答题卡这样写

L1 与 H4 同在 192.168.20.0/24,分组经 AP 直接交给 H4。L1 发往 AP 的帧:地址 1 = AP 00-aa-00-00-00-01,地址 2 = L1 00-bb-00-00-00-01,地址 3 = 目的 H4 00-cc-00-00-00-04。

AP 把 802.11 帧转换成以太网帧时,源 MAC 仍是 L1 的 00-bb-00-00-00-01(AP 是链路层设备,不改写源地址)。

模拟大题 2:一帧一帧地看交换机学习(按 408 风格自编)

模拟题逐帧自学习 + 谁收到 + 退避 + VLAN 陷阱计网 · 约 9 分

某实验室网络如下图所示,全部是 10BaseT(10Mbps)。交换机 S1、S2 的交换表初始为空,各主机的 ARP 表中已有彼此的 MAC 地址(不会发 ARP)。随后依次发送 4 个单播帧:① H1 → H5;② H5 → H1;③ H3 → H4;④ H4 → H3。

H1H2S1123HubH3H441S223H5H6

(1) H1 ~ H6 分属几个冲突域?几个广播域?

(2) 对每个帧,指出除发送方外哪些主机的网卡能收到它;写出 4 个帧发完后 S1、S2 的交换表。

(3) 若 H3、H4 同时发帧发生冲突,按二进制指数退避,第 3 次冲突后最长要等多久再重传?第 12 次冲突后 r 从多大的范围中选?第 1 次冲突后,两站又选到相同 r(再次冲突)的概率是多少?

(4) 现要按端口划分 VLAN,把 H1、H3、H5 划入 VLAN 10,H2、H4、H6 划入 VLAN 20,能否做到?为什么?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

交换机每个端口是一个冲突域,集线器不隔离冲突:{H1}、{H2}、{H3、H4}、{H5}、{H6},主机分属 5 个冲突域。交换机、集线器都不隔离广播,只有 1 个广播域。

(2) 逐帧
答题卡这样写
帧交换机怎么处理收到的主机
① H1 → H5S1 记下 H1@1,不知 H5,从 2、3、4 泛洪;S2 记下 H1@1,不知 H5,从 2、3 泛洪H2、H3、H4、H5、H6(只有 H5 收下)
② H5 → H1S2 记下 H5@2,已知 H1@1,只从 1 转发;S1 记下 H5@4,已知 H1@1,只从 1 转发H1
③ H3 → H4Hub 把信号送给 H4 和 S1 的端口 3;S1 记下 H3@3,不知 H4,从 1、2、4 泛洪;S2 记下 H3@1,从 2、3 泛洪H4、H1、H2、H5、H6
④ H4 → H3Hub 送给 H3 和 S1 的端口 3;S1 记下 H4@3,H3 也在端口 3(进来的端口),丢弃不转发H3

交换表:S1 = {H1:1,H5:4,H3:3,H4:3};S2 = {H1:1,H5:2,H3:1}。(S2 从没收到过 H4 发的帧,表里没有 H4。)

帧 ③ 的目的 H4 其实就在 Hub 上,但 S1 此时还不认识 H4,照样泛洪——“交换机只学源地址”。

(3) 退避
答题卡这样写

10Mbps 以太网争用期 = 512bit ÷ 10Mbps = 51.2μs。第 3 次冲突后 r ∈ {0, 1, …, 7},最长等 7 × 51.2 = 358.4μs。第 12 次冲突后 k = min(12, 10) = 10,r ∈ {0, 1, …, 1023}(16 次仍失败则放弃并报告上层)。第 1 次冲突后 r ∈ {0, 1},两站选到同一个值的概率为 1/2。

(4) VLAN
答题卡这样写

不能。H3、H4 经集线器接在 S1 的同一个端口 3 上,按端口划分 VLAN 时同一端口只能属于同一个 VLAN,H3、H4 不能分进两个 VLAN(除非把 Hub 换成交换机,让它们各占一个端口)。另外,即使划分成功,VLAN 10 和 VLAN 20 之间通信也要经过路由器(或三层交换机)。

举一反三:条件一变,答案怎么变

在哪道题上改条件改成答案怎么变
2010-47(1)两主机相距 1km
看答案τ = 5μs:最短 5μs,最长 10μs。
2010-47(2)速率改为 100Mbps,其余不变
看答案数据帧 121.44μs,确认帧 5.12μs,周期 121.44 + 5.12 + 20 = 146.56μs,有效速率 12000bit ÷ 146.56μs ≈ 81.9Mbps。
2022-47(2)设备 2 的时延改为 2.56μs
看答案单程时延已被设备时延用完,传播时延只能为 0——H2、H3 理论上无法相距任何距离,说明这样的设备不能用在该冲突域中。
2022-47(4)H4 向 H1 发送 IP 分组
看答案H1 在另一个网络,分组要交给网关 R:H4 发往 AP 的帧地址 1 = AP(C1),地址 2 = H4(D1),地址 3 = R 的 E0(A1)。
2019-47(4)H1 发往 192.168.1.63
看答案192.168.1.63 是 192.168.1.0/26 的广播地址,只有 H2 接收。
2019-47(1)H3、H4 也改为 192.168.1.4/26、192.168.1.5/26
看答案四台主机同一网络,设备 1 可以是交换机(此时 R 的内网接口要改为同一网络中的地址,作为网关)。

预测小题:IP 组播地址怎样映射成以太网地址

考纲有“IP 组播”,组播地址到 MAC 地址的映射还没考过。先读 4.10。

预测小题D 类地址 + 01-00-5E + 低 23 位 + IGMP考纲补充(尚无真题)· 约 4 ~ 6 分

(1) 230.11.200.7 是哪一类地址?它对应的以太网组播 MAC 地址是什么?

(2) 230.139.200.7 对应的 MAC 地址是什么?这说明了什么?主机怎样处理?

(3) RIP 第 2 版把路由信息发往 224.0.0.9,对应的 MAC 地址是什么?

(4) 主机怎样让本网络上的组播路由器知道它要接收某个组的数据?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

首字节 230 在 224 ~ 239 之间,是 D 类(组播)地址。映射规则:MAC 前 25 位固定为 01-00-5E 再加一个 0,后 23 位取 IP 地址的低 23 位。11 = 0000 1011,去掉最高位后为 000 1011 = 0BH;200 = C8H;7 = 07H。MAC = 01-00-5E-0B-C8-07。

(2)
答题卡这样写

139 = 1000 1011,最高位被去掉后同样是 0BH,MAC 也是 01-00-5E-0B-C8-07。IP 组播地址有 28 位可变,MAC 只用了 23 位,有 5 位丢掉,所以 25 = 32 个组播地址映射到同一个 MAC。网卡会收下这个帧,主机还要在 IP 层再按组地址过滤一次,丢掉不属于自己加入的组的分组。

(3)
答题卡这样写

低 23 位:0.0.9 → 01-00-5E-00-00-09。

(4)
答题卡这样写

用 IGMP:主机加入组时发成员报告;组播路由器周期性发查询,没有主机回应的组就不再往这个网络转发。IGMP 报文封装在 IP 数据报中。

7.6⑤ 链路层可靠传输:GBN / SR、捎带确认与信道利用率

★★ 常考综合题

先读:3.3 停等、GBN、SR 与信道利用率 1.3 时延

这类题长什么样

给一张时序图(Sx,y、Rx,y 的收发过程)或一条长时延链路(卫星),问窗口里还能发几个帧、要重发哪几个、利用率多少、序号至少几位。2017、2025 年考过。

常见问法考过的地方
对方已正确接收了哪几个帧2017-47(1)
还能发送几个帧,第一个、最后一个是哪个(含捎带的确认号)2017-47(2)
超时后要重发几个、重发哪个2017-47(3)
最大信道利用率(捎带确认时确认帧也要发送时间)2017-47(4)
卫星链路的传播时延、吞吐量、传文件时间2025-47(1)
满足利用率要求的最小窗口、最少序号位数2025-47(2)

做这类题必须会的 4 件事

① 两种窗口上限。n 位序号:GBN 发送窗口 ≤ 2n − 1;SR 发送窗口 = 接收窗口 ≤ 2n−1。

② 累积确认读法。确认号 y 表示“期望收到 y”,即 y 之前的都收到了。自己发帧时捎带的 y,要填按序收到对方的最后一帧 + 1(失序的帧在 GBN 中被丢弃,不算)。

③ 利用率公式。U = W × TD ÷ (TD + RTT + TA),超过 1 取 1。捎带确认:TA = 对方一个数据帧的发送时间;忽略确认帧:TA = 0。

④ 卫星链路。地面 → 卫星 → 地面,单向传播 ≈ 2 × 36000km ÷ 3 × 105km/s = 0.24s,RTT ≈ 0.48s。传一个文件的最少时间 = 发送时间 + 单向传播时延(瓶颈速率决定发送时间)。

解题模板

  1. 在时序图上标确认。把每个收到的 Rx,y 的 y 圈出来,最大的 y 就是窗口后沿。
  2. 画窗口。从后沿起数 W 个序号(循环),标出哪些已发、哪些可发。
  3. 重发:GBN 从超时帧起到已发的最后一帧全部重发;SR 只重发超时帧。
  4. 利用率:先算 TD、周期,再乘窗口,最后和 1 比。
  5. 序号位数:由窗口反推,GBN 用 2n − 1 ≥ W,SR 用 2n−1 ≥ W。
完整示范2017 年第 47 题计算机网络

甲乙双方均采用后退 N 帧协议(GBN)进行持续的双向数据传输,且双方始终采用捎带确认,帧长均为 1000B。Sx,y 和 Rx,y 分别表示甲方和乙方发送的数据帧,其中:x 是发送序号;y 是确认序号(表示希望接收对方的下一帧序号);数据帧的发送序号和确认序号字段均为 3 比特。信道传输速率为 100Mbps,RTT = 0.96ms。下图给出了甲方发送数据帧和接收数据帧的两种场景,其中 t0 为初始时刻,此时甲方的发送和确认序号均为 0,t1 时刻甲方有足够多的数据待发送。

甲方时间t₀S₀,₀S₁,₀S₂,₀S₃,₀R₀,₁S₄,₁R₁,₃R₃,₃t₁?⋮?(a)甲方时间t₀S₀,₀S₁,₀S₂,₀R₀,₁R₁,₂S₃,₂S₄,₂R₂,₂t₁?⋮?(b)S₂,₀ 超时

(1) 对于图 (a),t0 时刻到 t1 时刻期间,甲方可以断定乙方已正确接收的数据帧数是多少?正确接收的是哪几个帧(请用 Sx,y 形式给出)?

(2) 对于图 (a),从 t1 时刻起,甲方在不出现超时且未收到乙方新的数据帧之前,最多还可以发送多少个数据帧?其中第一个帧和最后一个帧分别是哪个(请用 Sx,y 形式给出)?

(3) 对于图 (b),从 t1 时刻起,甲方在不出现新的超时且未收到乙方新的数据帧之前,需要重发多少个数据帧?重发的第一个帧是哪个(请用 Sx,y 形式给出)?

(4) 甲方可以达到的最大信道利用率是多少?

先在纸上自己做一遍,再点这里展开满分解答

考点3.3 GBN 的窗口、累积确认、重传、信道利用率训练营 ⑤

先把条件翻译成大白话
  • 3 位序号,GBN 发送窗口最大 23 − 1 = 7。
  • Rx,y 的 y 是乙期望收到的甲方下一帧:y = 3 说明乙已按序收到甲的 0、1、2 号帧。
  • 甲发出的帧 Sx,y 的 y 要填“甲期望的乙的下一帧”:甲按序收到了乙的哪些帧,就填最后一个 + 1。
(1) 图 (a):乙已正确接收的帧
答题卡这样写

甲最后收到的确认是 R3,3(及 R1,3),确认序号 3 表示乙期望收甲的 3 号帧,即已正确收到 0 ~ 2 号帧:共 3 个,分别是 S0,0、S1,0、S2,0。

(2) 图 (a):t1 后最多还能发几个

窗口 7,从 3 号开始:3~7、0、1 这 7 个序号可以在途;3、4 已发出未确认,还能发 5、6、7、0、1 共 5 个。确认号:甲按序收到乙的 R0、R1,R3 失序(缺 R2)被丢弃,期望乙的 2 号帧,y = 2。

答题卡这样写

GBN 发送窗口最大为 23 − 1 = 7。已确认到 2 号,窗口为 3、4、5、6、7、0、1,其中 3、4 号(S3,0、S4,1)已发送。最多还可发送 5 个数据帧。

甲已按序收到乙的 0、1 号帧,3 号帧失序被丢弃,确认序号应为 2。第一个帧为 S5,2,最后一个帧为 S1,2。

(3) 图 (b):要重发几个
答题卡这样写

乙最新的确认 R2,2 表示期望 2 号帧,即 2 号帧未被确认;S2,0 超时后,GBN 要重发 2 号及其后已发送的 3、4 号,共 3 个。甲已按序收到乙的 0、1、2 号帧,确认序号为 3,重发的第一个帧是 S2,3。

(4) 最大信道利用率
答题卡这样写

发送一帧 TD = 1000 × 8 ÷ 100Mbps = 0.08ms。捎带确认,确认要等乙发一个数据帧,也需 0.08ms。

一个周期 = TD + RTT + TA = 0.08 + 0.96 + 0.08 = 1.12ms,窗口 7 帧可发 7 × 0.08 = 0.56ms。

最大信道利用率 = 0.56 ÷ 1.12 = 50%。

捎带确认时确认帧就是对方的数据帧,它的发送时间不能忽略(TA = TD)。

  • Rx,y 的 y 就是累积确认号:y 之前的全收到了。
  • 自己发的帧里的 y:按序收到对方的最后一帧 + 1,失序的不算。
这类题最常见的丢分点
  • 捎带确认时把 TA 当成 0(2017-47 利用率会算成 7 × 0.08 ÷ 1.04 ≈ 53.8%)。
  • 重发帧的确认号还写旧值:重发时要填当前最新的确认号(S2,3,不是 S2,0)。
  • 卫星单向传播时延只算一段 36000km(0.12s)。

模拟大题:卫星链路上的 SR 协议(按 408 风格自编)

模拟题利用率、窗口、序号位数与 SR 重传计网 · 约 9 分

甲、乙两站通过卫星链路通信,数据传输速率 2Mbps,单向传播时延 250ms,数据帧长 1000B,确认帧长度忽略不计。

(1) 若采用停等协议,信道利用率是多少?

(2) 若采用选择重传(SR)协议,发送窗口为 32,信道利用率是多少?帧序号至少多少位?

(3) 要使信道利用率不低于 50%,SR 的发送窗口至少多大?帧序号至少多少位?若改用 GBN 呢?

(4) 另一对站点采用 3 位序号的 SR 协议,收发窗口均为最大值。发送方已发出 0 ~ 3 号帧,收到了 1、2 号帧的确认,随后 0 号帧超时。此时发送方应重发哪些帧?重发后若收到 0 号帧的确认,发送方还可以立即发送哪几个帧?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

TD = 1000 × 8 ÷ 2Mbps = 4ms;周期 = 4 + 2 × 250 = 504ms;停等利用率 = 4 ÷ 504 ≈ 0.79%。

(2)
答题卡这样写

U = 32 × 4 ÷ 504 ≈ 25.4%。SR 要求 W ≤ 2n−1,2n−1 ≥ 32 → n ≥ 6,序号至少 6 位。

(3)
答题卡这样写

W × 4 ÷ 504 ≥ 50% → W ≥ 63,发送窗口至少 63。SR:2n−1 ≥ 63 → n = 7;GBN:2n − 1 ≥ 63 → n = 6。

(4)
答题卡这样写

3 位序号,SR 窗口最大 22 = 4。1、2 号已单独确认,0 号超时 → 只重发 0 号帧(3 号尚未超时,不重发)。

收到 0 号的确认后,0、1、2 都已确认,窗口后沿移到 3,窗口为 3、4、5、6;3 号已发出未确认,还可以立即发送 4、5、6 号帧。

模拟大题 2:帧长一变,窗口要多大(按 408 风格自编)

模拟题停等 / GBN 利用率 + 窗口与序号位数 + 丢帧重传计数计网 · 约 9 分

甲、乙之间是一条 8Mbps 的点对点链路,单向传播时延 3ms。甲向乙发送数据帧,帧长 1000B;确认帧很短,发送时延忽略;乙收到正确的帧立即确认。

(1) 采用停—等协议,信道利用率是多少?

(2) 采用 3 位序号的 GBN,发送窗口取最大值,信道利用率是多少?

(3) 帧长改为 500B,3 位序号 GBN 的利用率是多少?要使利用率达到 100%,发送窗口至少多大?GBN、SR 的序号各至少几位?

(4) 回到 1000B、3 位序号 GBN。甲连续发出 0 ~ 6 号帧,其中 2 号帧丢失,其余正确到达。乙对 3 ~ 6 号帧怎样处理、发出什么确认?甲超时后重发哪些帧?为把 0 ~ 6 号帧全部送达,甲一共发送了多少个数据帧?若改用序号足够的 SR 呢?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

TD = 1000 × 8 ÷ 8Mbps = 1ms;一个周期 = 1 + 2 × 3 = 7ms;U = 1 ÷ 7 ≈ 14.3%。

(2)
答题卡这样写

3 位序号,GBN 发送窗口最大 23 − 1 = 7;7 × 1ms = 7ms ≥ 周期 7ms,发送方在第一个确认回来之前一直有帧可发,U = 100%。

(3)
答题卡这样写

TD = 0.5ms,周期 = 0.5 + 6 = 6.5ms;W = 7 时 U = 7 × 0.5 ÷ 6.5 ≈ 53.8%。

要 100%:W × 0.5 ≥ 6.5 → W ≥ 13。GBN:2n − 1 ≥ 13 → n = 4;SR:2n − 1 ≥ 13 → n = 5。

帧变短,发一帧的时间变短,但等确认的时间(2 × 3ms)不变——要“填满管道”就得窗口更大、序号更多。

(4)
答题卡这样写

乙按序接收,3 ~ 6 号都不是期望的 2 号,全部丢弃,每收到一帧就重发对 1 号帧的确认(表示 0、1 已收到)。甲的 2 号帧超时后,重发 2、3、4、5、6 共 5 帧。总共发送 7 + 5 = 12 帧。

SR:乙缓存 3 ~ 6,甲只重发 2 号,共 7 + 1 = 8 帧。

举一反三:条件一变,答案怎么变

在哪道题上改条件改成答案怎么变
2017-47(4)序号字段改为 4 位
看答案GBN 窗口最大 15,15 × 0.08 = 1.2ms ≥ 周期 1.12ms,利用率可达 100%。
2017-47(4)乙不捎带,用极短的确认帧(发送时间忽略)
看答案周期 0.08 + 0.96 = 1.04ms,U = 0.56 ÷ 1.04 ≈ 53.8%。
2017-47(2)改用 SR(3 位序号,收发窗口最大)
看答案窗口 4,已确认到 2,窗口为 3、4、5、6,3、4 已发,最多还能发 2 个:S5,y、S6,y(y 取按序收到乙的最后一帧 + 1 = 2)。
2025-47(2)SLP 帧长改为 3000B
看答案TD = 0.12s,W × 0.12 ÷ 0.6 ≥ 0.8 → W ≥ 4;GBN 2n − 1 ≥ 4 → 3 位。
2025-47(1)上传 8000B 的文件
看答案8000 × 8 ÷ 200kbps = 0.32s,加 0.24s,至少 0.56s。

7.7⑥ TCP:握手挥手的序号、拥塞窗口与接收窗口、时间计算

★★★ 高频综合题

先读:5.4 连接管理 5.5 滑动窗口与流量控制 5.6 拥塞控制

这类题长什么样

一次文件传输的全过程:给出初始序号、MSS、门限、接收缓存、RTT,问握手挥手时的标志和序号、某个时刻的 cwnd / rwnd / 发送窗口、传完要多久、平均速率多少。2016、2023、2026 年都考这一类。

常见问法考过的地方
握手:第二次握手的 SYN、ACK、确认号2016-41(1),2026-47(1)
收到第 k 个确认 / 某个确认号时的 cwnd、rwnd、发送窗口2016-41(2),2023-47(3),2026-47(2)
发送窗口为 0 时下一个序号、平均速率2016-41(3)
文件第一个字节的序号、挥手报文的序号和确认号2023-47(2),2026-47(3)
从建连到确认收完(或到释放连接)需要多少时间2016-41(4),2023-47(4),2026-47(4)
FTP 的控制连接、数据连接2023-47(1)

做这类题必须会的 4 件事

① 序号账本。SYN、FIN 各占 1 个序号;数据从 ISN + 1 开始;不发数据的一方,之后的 seq 一直是 ISN + 1。确认号 = 对方下一个应发的序号。

② cwnd 的两种“步长”。慢开始:每收到一个新确认 +1 MSS(等价于每轮翻倍,到门限为止);拥塞避免:每轮 +1 MSS。题目问“收到某个确认时”,就按每个确认数;问“第 k 轮”,就按轮数。超时:门限 = cwnd ÷ 2,cwnd = 1;3 个重复确认:门限 = cwnd = cwnd ÷ 2。

③ 发送窗口 = min(cwnd, rwnd)。接收缓存只进不出时 rwnd = 缓存 − 已收到的数据;rwnd 为 0 时发送窗口为 0。

④ 数时间。握手 1 RTT(第三次握手可带数据);数据按轮计 RTT,最后一轮的确认回来才算“确认收完”;释放:主动方 1 RTT + 2MSL,被动方 1.5 RTT。

解题模板

  1. 列序号账本:C 的 ISN、数据范围、FIN 序号;S 的 ISN、FIN 序号。
  2. 列轮次表:轮次 | cwnd | rwnd | 本轮发几个段 | 累计发送 | 本轮结束时收到的确认号。
  3. 从表里读答案:某确认号对应哪一行,当时 cwnd、rwnd 是多少;累计达到文件大小是第几轮。
  4. 时间:握手 1 RTT + 数据轮数 × RTT(+ 挥手);平均速率 = 数据量 ÷ 时间,注意 K 是 1000 还是 1024。
完整示范2023 年第 47 题计算机网络

如下图所示,主机 H 登录到 FTP 服务器后,向服务器上传一个大小为 18000B 的文件 F,假设 H 传输 F 建立数据连接时,选择的初始序号为 100,MSS = 1000B,拥塞控制的初始阈值是 4MSS,RTT = 10ms,忽略 TCP 的传输时延,在 F 的传送过程中,H 以 MSS 段向服务器发送数据,且始终没有错误、丢包和乱序。

H交换机路由器InternetFTP 服务器

(1) FTP 的控制连接是持久的还是非持久的?FTP 的数据连接是持久的还是非持久的?H 登录服务器时,建立的 TCP 连接是控制连接还是数据连接?

(2) H 通过数据连接发送 F 时,F 的第一个字节序号是多少?在断开数据连接的过程中,FTP 服务器发送的第二次挥手的 ACK 段的确认序号是多少?

(3) F 发送过程中,当 H 收到确认序号为 2101 的确认段时,H 的拥塞窗口调整为多少?收到确认序号为 7101 的确认段时,H 的拥塞窗口调整为多少?

(4) H 从请求建立数据连接开始,到确认 F 已被服务器全部接收为止,至少需要多长时间?期间应用层数据平均发送速率是多少?

先在纸上自己做一遍,再点这里展开满分解答

考点6.3 FTP 的两条连接5.4 序号计数5.6 慢开始与拥塞避免训练营 ⑥

先把条件翻译成大白话
  • SYN 序号 100,数据从 101 开始;18000B = 18 个 MSS。
  • cwnd 从 1 MSS 开始慢开始(每收到一个确认加 1 MSS),到 4 MSS 后拥塞避免(每轮加 1)。
(1) 控制连接与数据连接
答题卡这样写

控制连接是持久的(整个会话期间保持);数据连接是非持久的(每传一个文件建立一次,传完关闭)。H 登录时建立的是控制连接。

(2) 第一个字节序号;第二次挥手的确认序号
答题卡这样写

SYN 占用序号 100,F 的第一个字节序号为 101。F 占 101 ~ 18100,H 的 FIN 序号为 18101,服务器第二次挥手的确认序号 = 18101 + 1 = 18102。

(3) 两个时刻的 cwnd

确认号 1101、2101、3101 依次确认第 1、2、3 个段;慢开始每个确认加 1:2、3、4 MSS。之后进入拥塞避免,一轮(4 个段 3101 ~ 7100)全部确认后加 1。

答题卡这样写

收到确认号 1101 时 cwnd = 2MSS,收到 2101 时 cwnd = 3MSS(慢开始,每收到一个确认加 1MSS)。

收到 3101 时 cwnd = 4MSS,达到阈值,进入拥塞避免。之后发出的 4 个段(3101 ~ 7100)全部被确认(确认号 7101)时,cwnd 加 1,为 5MSS。

(4) 最少时间与平均速率
答题卡这样写

建立连接 1 RTT。数据按轮发送:1、2、4、5、6 个 MSS,累计 1、3、7、12、18 个,用 5 个 RTT 发完并被确认。共 6 RTT = 60ms。

平均发送速率 = 18000B ÷ 60ms = 3 × 105B/s = 2.4Mbps。

“确认 F 已被全部接收”只算到最后一个确认到达,不包括释放连接。

  • 数轮次:慢开始 1、2、4……到门限后每轮 + 1,累加到文件大小为止。
  • 第二次挥手的确认号 = FIN 的序号 + 1 = 最后一个数据字节 + 2。
这类题最常见的丢分点
  • 第一个数据字节写成 ISN(应为 ISN + 1);挥手的确认号漏了 FIN 占的 1。
  • 到门限后仍按“每个确认 +1”增长。
  • 发送窗口忘了与 rwnd 取小(2016-41、2026-47 都靠这一步拉开分数)。
  • 速率单位:20KB/s(K = 1024)换成比特率是 163.84kbps,不是 20.48kbps。

模拟大题:上传 30 个 MSS 的文件(按 408 风格自编)

模拟题序号、拥塞窗口、时间全流程计网 · 约 9 分

客户 C 与服务器 S 建立 TCP 连接后,C 向 S 上传一个 30000B 的文件。C 的初始序号为 5000,S 的初始序号为 9000,MSS = 1000B,C 的拥塞窗口初始为 1MSS、门限为 8MSS;S 的接收窗口始终为 12000B;RTT = 20ms,忽略发送时延;S 不向 C 发送数据,对每个段都及时确认。

(1) 第二次握手 TCP 段的 seq 和确认号各是多少?文件第一个字节和最后一个字节的序号是多少?

(2) 按轮次(每轮一个 RTT)写出 C 每轮开始时的拥塞窗口和发送窗口,直到文件发完。

(3) 从 C 发出 SYN 开始,到 C 收到文件最后一个字节的确认为止,最少需要多长时间?

(4) 若 C 在拥塞窗口为 10MSS 时收到 3 个重复确认,门限和拥塞窗口变为多少?若是超时呢?

(5) 文件发完后 C 主动释放连接,C 发出的 FIN 的序号是多少?S 回复的确认号是多少?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

第二次握手:seq = 9000,确认号 = 5000 + 1 = 5001。文件占 30000 个序号:第一个字节 5001,最后一个字节 35000。

(2)
答题卡这样写
轮次cwnd(MSS)rwnd(MSS)发送窗口本轮发送累计
1112111
2212223
3412447
48128815
59129924
61012106(剩余)30

前 4 轮慢开始,到门限 8 后拥塞避免每轮加 1;rwnd = 12 始终不构成限制。

(3)
答题卡这样写

握手 1 RTT,数据 6 轮 6 RTT,共 7 RTT = 140ms。

(4)
答题卡这样写

3 个重复确认:门限 = 10 ÷ 2 = 5MSS,cwnd = 5MSS(快恢复,之后拥塞避免)。超时:门限 = 5MSS,cwnd = 1MSS(重新慢开始)。

(5)
答题卡这样写

最后一个数据字节是 35000,C 的 FIN 序号为 35001;S 的确认号为 35002。

模拟大题 2:RTO、快重传与 cwnd 逐轮(按 408 风格自编)

模拟题RTO 计算 + 冗余确认 + 拥塞窗口全过程计网 · 约 9 分

主机甲与乙之间已建立 TCP 连接,MSS = 1000B,甲向乙连续发送大量数据。

(1) 甲当前的 RTTS = 30ms、RTTD = 10ms,新测得一个 RTT 样本 46ms。取 α = 1/8、β = 1/4,求新的 RTTS、RTTD 和 RTO。

(2) 某时刻甲依次发出序号为 2001、3001、4001、5001、6001 的 5 个报文段(各 1000B),3001 号段丢失,其余按序到达。乙依次发出的确认号是什么?甲什么时候、重传哪个段?重传的段到达后乙的确认号是多少?

(3) 甲的拥塞窗口初值 1MSS、门限 8MSS,每轮一个 RTT。第 8 轮发送时收到 3 个重复确认,第 11 轮发送时超时,其余时间不发生拥塞。写出第 1 ~ 16 轮每轮开始时的 cwnd,并指出哪些轮的 cwnd 是按慢开始(翻倍)得到的,哪些是按拥塞避免(加 1)得到的。

(4) 不考虑接收窗口时,第 1 ~ 8 轮一共发送多少个报文段?若乙通告的接收窗口始终为 10MSS,第 7 轮甲的发送窗口是多少?

先在纸上自己做一遍,再点这里展开满分解答
(1) RTO
答题卡这样写

RTTS = (1 − 1/8) × 30 + 1/8 × 46 = 26.25 + 5.75 = 32ms;

RTTD = (1 − 1/4) × 10 + 1/4 × |32 − 46| = 7.5 + 3.5 = 11ms;

RTO = RTTS + 4 × RTTD = 32 + 44 = 76ms。

按教材顺序:先更新 RTTS,再用新的 RTTS 算 RTTD(5.5 节)。按 RFC 6298 先用旧的 30ms 算 RTTD 得 11.5ms、RTO = 78ms——考试按教材。

(2) 快重传
答题卡这样写

乙收到 2001 号段后确认号 3001;之后收到 4001、5001、6001 都不是期望的 3001,各发一个确认号仍为 3001 的重复确认(共 3 个)。甲收到 3 个重复确认后立即重传 3001 号段,不等超时(快重传)。乙已缓存 4001 ~ 7000,3001 号段到达后确认号变为 7001。

(3) cwnd 逐轮
答题卡这样写
轮12345678910111213141516
cwnd1248910111267812456
门限8888888866644444

慢开始(翻倍)得到的:第 2、3、4、13、14 轮;拥塞避免(加 1)得到的:第 5 ~ 8、10、11、15、16 轮。第 9 轮的 6 是快恢复(门限 = 12 ÷ 2 = 6,cwnd = 门限)得到的;第 12 轮的 1 是超时(门限 = 8 ÷ 2 = 4,cwnd = 1)得到的。

快恢复后 cwnd 直接等于新门限,进入拥塞避免,不再从 1 开始;只有超时才回到 1。

(4)
答题卡这样写

1 + 2 + 4 + 8 + 9 + 10 + 11 + 12 = 57 个报文段。第 7 轮 cwnd = 11,发送窗口 = min(11, 10) = 10MSS。

举一反三:条件一变,答案怎么变

在哪道题上改条件改成答案怎么变
2016-41(2)(3)S 的接收缓存改为 16KB
看答案第 8 个确认时 rwnd = 8KB,cwnd = 9KB,发送窗口 8KB。缓存满时已发 16KB(1 + 2 + 4 + 8 + 1),下一个序号 101 + 16 × 1024 = 16485,用 5 个 RTT,平均速率 16KB/s。
2016-41(4)问 H3 进入 CLOSED 的最短时间(MSL = 1s)
看答案H3 在 1 RTT 后收到 S 的 FIN,发 ACK 后等 2MSL:0.2 + 2 = 2.2s。
2023-47(3)初始阈值改为 8MSS
看答案收到 2101 时仍为 3MSS;收到 7101 时仍在慢开始,每个确认加 1:8MSS。
2023-47(4)文件改为 30000B(阈值 4MSS)
看答案每轮 1、2、4、5、6、7 个,累计 1、3、7、12、18、25,第 7 轮发剩下的 5 个,数据 7 RTT,加握手共 8 RTT = 80ms。
2026-47(2)接收窗口改为 2000B
看答案发送窗口 = min(1500, 2000) = 1500B。

7.8⑦ 一次访问的全过程:DHCP、ARP、DNS、NAT、交换机表

★★★ 高频综合题

先读:6.6 打开一个网页的全过程 4.6 ARP、DHCP 4.5 NAT 3.9 交换机自学习

这类题长什么样

一台主机(常常是刚开机、ARP 表为空、交换表为空)去访问某个网站或服务器。题目沿着时间线问:先用了什么协议、某个帧或分组的源/目的地址是什么、交换机学到了什么、谁能收到哪些帧、NAT 前后地址怎么变。2011(部分)、2015、2020、2021 年考过。

常见问法考过的地方
DHCP 可分配的范围;DHCP 报文的源、目的 IP2015-47(1),2022-47(3)
ARP 表为空时发出的第一个帧的目的 MAC;发往外网的帧的目的 MAC2015-47(2),2011-47(1)(2)
子网掩码 / 网关配错时能否访问某服务器、Internet2015-47(3)
NAT 表怎么配;分组经过各 NAT 路由器后的源、目的 IP2020-47
除 HTTP 外还用了哪个应用层协议,怎样逐层封装2021-47(1)
交换机的交换表内容;某主机能收到哪些帧2021-47(2)(3)

做这类题必须会的 4 件事

① 时间线。(DHCP 拿地址)→ ARP(DNS 服务器在本网络就问它,否则问网关)→ DNS 查询(UDP)→ ARP 网关 → TCP 三次握手 → HTTP。每一步问自己:这是广播还是单播?

② IP 不变、MAC 逐段变。主机发往外网的帧:目的 MAC = 默认网关;路由器转发后源 MAC = 路由器出接口。经过 NAT:出方向改源 IP(和源端口),入方向改目的 IP(和目的端口)。

③ 交换机只学源地址。谁发过帧,谁就进表;表中没有目的地址或是广播帧才泛洪。“某主机收到了几个帧”=它所在端口被泛洪了几次(广播帧 + 目的未知的单播帧)。

④ 配置错误的后果。掩码错 → 判断“是否同一网络”出错;网关错 → 只能访问本网络,出不去。

解题模板

  1. 把拓扑上的地址抄成表:设备、IP/前缀、MAC、所在网络、交换机端口。
  2. 按时间线列出每一个帧:协议、源 MAC、目的 MAC、源 IP、目的 IP、交换机从哪些端口转发。
  3. 边列边更新交换表(每个帧的源 MAC → 进入端口)。
  4. 按问题查表作答,每个答案带一句理由(“因为 DNS 服务器与 H1 在同一网络”“因为是广播帧”)。
完整示范2021 年第 47 题计算机网络

某网络拓扑如下图所示,以太网交换机 S 通过路由器 R 与 Internet 互联。路由器部分接口、本地域名服务器、H1、H2 的 IP 地址和 MAC 地址如图中所示。在 t0 时刻 H1 的 ARP 表和 S 的交换表均为空,H1 在此刻利用浏览器通过域名 www.abc.com 请求访问 Web 服务器,在 t1(t1 > t0)时刻 S 第一次收到了封装 HTTP 请求报文的以太网帧,假设从 t0 到 t1 期间网络未发生任何与此次 Web 访问无关的网络通信。

InternetWeb 服务器 www.abc.comR192.168.1.1/2500-11-22-33-44-aa2S1本地域名服务器192.168.1.126/2500-11-22-33-44-bb3H2192.168.1.3/2500-11-22-33-44-dd4H1192.168.1.2/2500-11-22-33-44-cc

(1) 从 t0 到 t1 期间,H1 除了 HTTP 之外还运行了哪个应用层协议?从应用层到数据链路层,该应用层协议报文是通过哪些协议进行逐层封装的?

(2) 若 S 的交换表结构为 <MAC 地址,端口>,则 t1 时刻 S 交换表的内容是什么?

(3) 从 t0 到 t1 期间,H2 至少会接收到几个与此次 Web 访问相关的帧?接收到的是什么帧?帧的目的 MAC 地址是什么?

先在纸上自己做一遍,再点这里展开满分解答

考点6.6 一次网页访问的全过程4.6 ARP3.9 交换机自学习训练营 ⑦

先把 t0 ~ t1 发生的事按顺序排出来
  1. H1 要解析 www.abc.com。本地域名服务器 192.168.1.126/25 与 H1(192.168.1.2/25)在同一网络 → H1 广播 ARP 请求问它的 MAC(S 学到 cc 在端口 4,泛洪)。
  2. 域名服务器单播回 ARP 响应(S 学到 bb 在端口 1,转发到端口 4)。
  3. H1 发 DNS 查询(单播给 bb,S 已知端口 1),收到 DNS 应答(单播给 cc,端口 4)。
  4. Web 服务器在外网,要交给默认网关 192.168.1.1 → H1 广播 ARP 请求问网关 MAC(泛洪)。
  5. R 单播回 ARP 响应(S 学到 aa 在端口 2)。
  6. H1 建 TCP 连接(三次握手,单播给 aa),然后发 HTTP 请求——t1。
(1) 另一个应用层协议及封装
答题卡这样写

H1 还运行了 DNS(把 www.abc.com 解析为 IP 地址)。DNS 报文 → UDP 用户数据报 → IP 数据报 → 以太网帧(CSMA/CD 帧)。

(2) t1 时 S 的交换表
答题卡这样写
MAC 地址端口
00-11-22-33-44-cc4
00-11-22-33-44-bb1
00-11-22-33-44-aa2

H1、本地域名服务器、R 都向 S 发过帧,S 学到了它们的端口;H2 没有发过帧,表中没有 H2。

(3) H2 收到几个相关帧
答题卡这样写

H2 至少收到 2 个帧,都是 H1 广播的 ARP 请求帧(一个查询本地域名服务器的 MAC,一个查询默认网关的 MAC),目的 MAC 地址都是 FF-FF-FF-FF-FF-FF。其余的帧都是单播,S 已学到目的端口,不会转发给 H2。

“至少”是指交换表正常学习的情况:第一个 ARP 响应到达 S 时,S 已从 ARP 请求学到 cc 在端口 4,不会泛洪。

  • 同一网络的 DNS 服务器:ARP 问它自己;外网的 Web 服务器:ARP 问网关。
  • 广播帧交换机一定泛洪;单播帧只有在目的 MAC 未学到时才泛洪。
这类题最常见的丢分点
  • DNS 服务器与主机在同一网络时,误以为 ARP 要问网关。
  • DHCP 可分配范围忘了扣掉静态分配的地址(路由器接口、服务器)。
  • 把 NAT 的“入方向改目的地址”写成改源地址。
  • 交换表里写上了没发过帧的主机。

模拟大题:新主机开机后打开一个网页(按 408 风格自编)

模拟题DHCP → ARP → DNS → NAT → HTTP计网 · 约 9 分

某宿舍楼网络如下图所示。路由器 R 实现 DHCP 服务器和 NAPT 功能:内网接口 E0 为 10.0.8.1/22(MAC 00-22-22-22-22-22),外网接口为 61.155.8.2。本地域名服务器 D 为 10.0.8.53/22(MAC 00-33-33-33-33-33)。新主机 H(MAC 00-11-11-11-11-11)刚接入交换机 S,ARP 表和 S 的交换表均为空。H 开机后通过 DHCP 获得地址 10.0.8.100/22、默认网关 10.0.8.1、DNS 服务器 10.0.8.53,然后用浏览器访问 http://www.xyz.cn/index.html(Web 服务器 119.75.217.26)。D 的缓存中有 www.xyz.cn 的记录。

SRE0 10.0.8.1/2200-22-22-22-22-22外网 61.155.8.2(NAPT、DHCP)Internet → Web 服务器 119.75.217.26本地域名服务器 D10.0.8.53/2200-33-33-33-33-33H00-11-11-11-11-11其他主机

(1) H 发出的 DHCP 发现报文,封装它的 IP 分组的源、目的 IP 地址,以太网帧的目的 MAC 地址各是什么?除 IP 地址外,DHCP 还给 H 配置了哪些与本题有关的参数?

(2) 得到地址后,H 为了解析域名发出的第一个帧是什么帧?目的 MAC 地址是什么?为什么不是去问网关的 MAC?

(3) H 发出的封装 HTTP 请求的帧,目的 MAC、源 IP、目的 IP 各是什么?该分组被 R 转发到外网时,哪些地址字段改变?

(4) 到 H 发出 HTTP 请求为止(忽略 DHCP 阶段的帧),S 的交换表中有哪些表项?

(5) 若 H 与 Web 服务器之间 RTT = 30ms,局域网内时延忽略,从 H 发出 DNS 查询开始到收到 index.html(一个 MSS 就能装下)为止,至少需要多长时间?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

DHCP 发现报文:源 IP 0.0.0.0,目的 IP 255.255.255.255,以太网帧目的 MAC FF-FF-FF-FF-FF-FF。DHCP 还配置了子网掩码 255.255.252.0、默认网关 10.0.8.1、DNS 服务器 10.0.8.53(以及租期)。

(2)
答题卡这样写

第一个帧是查询 DNS 服务器 10.0.8.53 的 MAC 地址的 ARP 请求帧,目的 MAC FF-FF-FF-FF-FF-FF。因为 10.0.8.53 与 H(10.0.8.100/22)同属 10.0.8.0/22 网络,直接交付,不经网关。

(3)
答题卡这样写

Web 服务器在外网,帧的目的 MAC 是网关 R 的 E0:00-22-22-22-22-22;源 IP 10.0.8.100,目的 IP 119.75.217.26。

R 转发时:源 IP 改为 61.155.8.2,源端口改为 NAPT 分配的端口;帧的 MAC 地址换成外网链路上的 MAC;目的 IP 不变(TTL 减 1,IP 和 TCP 检验和重算)。

(4)
答题卡这样写

发过帧的有 H(ARP 请求、DNS 查询……)、D(ARP 响应、DNS 应答)、R(ARP 响应、TCP 段):交换表为 <00-11-11-11-11-11,H 的端口>、<00-33-33-33-33-33,D 的端口>、<00-22-22-22-22-22,R 的端口>。

(5)
答题卡这样写

D 有缓存,DNS 在局域网内完成,时延忽略;TCP 握手 1 RTT,第三次握手捎带 HTTP 请求,再 1 RTT 收到页面,共 2 RTT = 60ms。

模拟大题 2:域名解析加取回一个带图片的网页(按 408 风格自编)

模拟题DNS 迭代查询 + HTTP 四种方式的时间计网 · 约 9 分

校园网主机 H 的本地域名服务器为 L(L 对外采用迭代查询,缓存为空)。H 要访问 http://www.abc.edu.cn/index.html,index.html 很小,引用了同一服务器上的 4 个小图像。H 与 L 之间 RTT = 2ms;L 与根、cn、edu.cn 以及 abc.edu.cn 的权限域名服务器之间 RTT 均为 50ms;H 与 Web 服务器之间 RTT = 40ms。忽略所有发送时延和服务器处理时间。

(1) H 向 L 发出的是递归查询还是迭代查询?L 依次向哪些服务器查询?整个解析共发出多少个 DNS 查询报文?需要多长时间?

(2) 解析完成后,分别用下列方式取回网页和 4 个图像,各需多长时间(从建立第一条 TCP 连接算起):① 非持续连接、串行;② 非持续连接、最多 4 条并行连接;③ 持续连接、非流水线;④ 持续连接、流水线。

(3) 若用方式 ④,从 H 发出 DNS 查询到收齐全部对象,最少多长时间?

(4) 1 分钟后,H 上的另一个程序要访问 www.abc.edu.cn 的另一网页,L 还要去问根服务器吗?为什么?

先在纸上自己做一遍,再点这里展开满分解答
(1) DNS
答题卡这样写

H 向 L 是递归查询(让 L 给出最终答案)。L 依次迭代查询:根 → cn → edu.cn → abc.edu.cn 的权限域名服务器。查询报文共 1(H → L)+ 4 = 5 个。时间 = 2 + 4 × 50 = 202ms(DNS 用 UDP,不用建连接)。

(2) HTTP
答题卡这样写
方式过程时间
① 非持续、串行5 个对象,每个“握手 1 RTT + 请求响应 1 RTT”10 RTT = 400ms
② 非持续、并行先取网页 2 RTT,再 4 条连接同时取图像 2 RTT4 RTT = 160ms
③ 持续、非流水线握手 1 + 网页 1 + 图像逐个 46 RTT = 240ms
④ 持续、流水线握手 1 + 网页 1 + 4 个请求连发 13 RTT = 120ms

图像的请求一定要等网页取回之后才能发——浏览器解析了 index.html 才知道要哪些图像。

(3)
答题卡这样写

202 + 120 = 322ms。

(4)
答题卡这样写

不用。L 刚才已把 www.abc.edu.cn 的映射(以及 cn、edu.cn、abc.edu.cn 服务器的地址)存入缓存,在记录的生存时间(TTL)内直接从缓存回答,一次 H ↔ L 的查询即可(约 2ms);H 自己也可能有缓存。

举一反三:条件一变,答案怎么变

在哪道题上改条件改成答案怎么变
2015-47(1)主机 1 改用 111.123.15.200 静态配置
看答案原来的 .4 空出来了,.200 被占用:可分配范围变为 111.123.15.4 ~ 111.123.15.199 和 111.123.15.201 ~ 111.123.15.254。
2015-47(3)主机 1 的掩码配为 255.255.255.128,网关 111.123.15.1
看答案主机 1 认为自己在 111.123.15.0/25,WWW(.3)也在其中,能访问;网关 .1 也在其中且正确,能访问 Internet。
2020-47(2)H1 访问 Web 服务器
看答案同一局域网,直接交付,源 192.168.1.3、目的 192.168.1.2,不经过任何 NAT。
2021-47(3)本地域名服务器改到 Internet 上
看答案DNS 查询也要交给网关,H1 只需广播一次 ARP(查询网关),H2 至少收到 1 个帧(该 ARP 请求)。
2021-47(2)t0 时 S 的交换表已有 H2 的表项
看答案t1 时表中有 cc、bb、aa、dd 四项;H2 收到的帧仍然只有两个 ARP 广播。

预测小题三连:DHCP 中继与续约、HTTP 条件 GET、DNS 记录

“一次访问全过程”类大题的小问,最可能从这三处出新:都在考纲里,选择题碰过,大题还没细问过。先读 4.6、6.2、6.5。

预测小题DHCP 中继代理 + T1 / T2 续约考纲补充(尚无真题)· 约 4 ~ 6 分

192.168.2.0/24 中没有 DHCP 服务器,DHCP 服务器 S(192.168.1.10)在 192.168.1.0/24 中,两个网络之间是路由器 R(接口 192.168.1.1 和 192.168.2.1)。主机 H 接入 192.168.2.0/24,开机后用 DHCP 获取地址,租期 8 小时。

(1) H 的 DHCP 发现报文为什么到不了 S?R 要怎样配置才能让 H 拿到地址?S 怎么知道该从哪个地址池给 H 分配?

(2) DHCP 报文用什么传输层协议?客户和服务器的端口号各是多少?

(3) H 拿到地址后,何时第一次请求续租?用广播还是单播?若一直得不到应答,何时改用广播?租期到了还没续上怎么办?不再需要地址时发什么报文?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

发现报文是广播(目的 255.255.255.255),路由器不转发广播。把 R 配置成 DHCP 中继代理:R 收到 H 的广播后,以单播转发给 S,并把自己在 H 一侧的接口地址 192.168.2.1 填入报文(giaddr 字段);S 据此从 192.168.2.0/24 的地址池中选地址,回复也经 R 转交给 H。

(2)
答题卡这样写

UDP;客户端口 68,服务器端口 67。

(3)
答题卡这样写

租期过一半(T1 = 4 小时)时,H 向 S 单播 DHCP 请求报文续租;若无应答,到 87.5%(T2 = 7 小时)时改用广播请求(任何 DHCP 服务器都可应答);租期到了仍未续上,必须停止使用该地址,重新从发现报文开始。不再需要时发 DHCP 释放报文。

预测小题If-Modified-Since + 304考纲补充(尚无真题)· 约 4 ~ 6 分

浏览器第一次访问 http://www.abc.com/logo.png(1.25MB),服务器的响应首部中有 Last-Modified: Mon, 05 Oct 2026 08:00:00 GMT,浏览器把它存入缓存。第二天再次访问。客户与服务器间瓶颈带宽 10Mbps,RTT = 50ms,TCP 连接已建好,忽略请求报文和响应首部的发送时间。

(1) 第二次的请求报文用哪个首部行询问“这个对象改过没有”?它的值是什么?

(2) 若对象没改,服务器返回什么状态码?响应里有没有实体主体?取得对象要多久?没有缓存时要多久?

(3) 若对象已经改过,服务器怎样响应?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

If-Modified-Since: Mon, 05 Oct 2026 08:00:00 GMT(照抄上次响应里的 Last-Modified)。这种带条件的 GET 叫“条件 GET”。

(2)
答题卡这样写

状态码 304 Not Modified,没有实体主体,浏览器直接用缓存里的副本:只需 1 个 RTT = 50ms。没有缓存时:1 RTT + 1.25 × 8Mb ÷ 10Mbps = 0.05 + 1 = 1.05s。

(3)
答题卡这样写

返回 200 OK,实体主体是新对象,首部带新的 Last-Modified;用时与第一次相同(约 1.05s)。

代理服务器(Web 缓存)也用同样的办法向源服务器确认副本是否过期。

预测小题A、CNAME、MX、NS 各管什么考纲补充(尚无真题)· 约 4 ~ 6 分

abc.com 的权限域名服务器中有下列资源记录:

abc.com.        NS     dns.abc.com.
dns.abc.com.    A      203.0.113.53
www.abc.com.    CNAME  web1.abc.com.
web1.abc.com.   A      203.0.113.80
abc.com.        MX 10  mail.abc.com.
mail.abc.com.   A      203.0.113.25

(1) 浏览器访问 www.abc.com,用到哪几条记录?最后得到的 IP 地址是什么?

(2) 外校用户给 tom@abc.com 发邮件,对方的邮件服务器要查哪种记录?邮件最终发往哪个 IP,用什么协议和端口?

(3) 顶级域名服务器 com 中至少要有关于 abc.com 的哪些记录,才能把查询“指”到 abc.com 的权限域名服务器?

(4) 要让 IPv6 用户也能访问 www.abc.com,需要增加什么记录?

先在纸上自己做一遍,再点这里展开满分解答
(1)
答题卡这样写

先查到 CNAME 记录:www.abc.com 是 web1.abc.com 的别名;再查 web1.abc.com 的 A 记录,得 203.0.113.80。

(2)
答题卡这样写

查 abc.com 的 MX 记录,得邮件服务器 mail.abc.com,再查它的 A 记录得 203.0.113.25;用 SMTP,TCP 端口 25。

(3)
答题卡这样写

一条 NS 记录(abc.com 的权限服务器是 dns.abc.com),加上 dns.abc.com 的 A 记录 203.0.113.53——否则要先解析 dns.abc.com,而它又要靠 abc.com 的权限服务器才能解析,陷入死循环。

(4)
答题卡这样写

为 web1.abc.com 增加一条 AAAA 记录(IPv6 地址)。

7.9整卷模拟:计网部分三套(8 道选择题 + 1 道综合题)

自编模拟卷

每套按 408 真卷的计网部分组卷:第 33~40 题各 2 分,第 47 题 9 分,共 25 分。建议限时 35 分钟:选择题直接点选项判对错,综合题先在纸上写完,再展开答案按评分细则自己打分。想要带计时和自动判分的整卷,做第 9 篇的 9.4 ~ 9.6。

模拟卷 A

选择题可以直接点选项:点错的变红、点对的变绿,并自动展开逐项分析。

第 33 题计网7.9 模拟卷 A
在 OSI 参考模型中,为两个端系统中的应用进程之间提供可靠的、端到端数据传输的是( )。
  • A. 传输层
  • B. 数据链路层
  • C. 网络层
  • D. 会话层
展开解析

A传输层是 OSI 中第一个端到端的层:它在两台主机的应用进程之间通信,并用确认、重传等机制提供可靠的数据传输。

  • A 对传输层:进程之间、端到端、可靠(TCP)。
  • B 错数据链路层也能做可靠传输(停等、GBN 等),但只在相邻两个结点之间的一段链路上,不是两个端系统之间。
  • C 错网络层负责把分组从源主机送到目的主机(转发、路由选择),不区分进程;TCP/IP 的 IP 还只是尽最大努力交付。
  • D 错会话层也是端到端的,但它管的是会话的建立、同步与管理,不负责可靠地传送数据。

复习:回到正文。

第 34 题计网7.9 模拟卷 A
一条带宽为 4kHz 的无噪声信道,采用 16 种不同的码元状态,最大数据传输速率是( )。
  • A. 16kbps
  • B. 24kbps
  • C. 32kbps
  • D. 64kbps
展开解析

C无噪声信道用奈奎斯特定理:C = 2W log₂V。

  1. 极限码元速率 = 2W = 2 × 4k = 8k 波特。
  2. 每个码元携带 log₂16 = 4 bit。
  3. 最大数据传输速率 = 8k × 4 = 32kbps。
  • A 错16kbps = 4k × 4:码元速率只取了 W,漏了奈奎斯特公式里的 2(极限码元速率是 2W = 8k 波特)。
  • B 错24kbps = 2 × 4k × 3:把每码元的比特数算成 3;16 种状态要 log₂16 = 4 位(3 位只能表示 8 种)。
  • C 对32kbps。
  • D 错64kbps = 4k × 16:直接把状态数 16 当成了每码元的比特数,又漏了 2W 里的 2。

复习:回到正文。

第 35 题计网7.9 模拟卷 A
要发送的数据为 1011001,采用 CRC 校验,生成多项式为 G(x) = x3 + x2 + 1,则帧检验序列 FCS 是( )。
  • A. 010
  • B. 011
  • C. 101
  • D. 110
展开解析

DG(x) = x³ + x² + 1 写成比特串 1101,最高次 r = 3,数据后面补 3 个 0 再做模 2 除法,余数就是 FCS。

  1. G(x) = x³ + x² + 1 → 1101,r = 3。
  2. 数据后补 3 个 0:1011001 000。
  3. 用 1101 做模 2 除法(逐位异或,不借位),余数 110 → FCS = 110,发送 1011001110。
  • A 错代回检验:发送 1011001 010,接收方用 1101 去除,余数是 110 ⊕ 010 = 100 ≠ 000,会被判为出错,010 不是正确的 FCS。
  • B 错011 是只补了 2 个 0 的结果(101100100 ÷ 1101);G(x) 的最高次是 3,要补 3 个 0。
  • C 错101 是没有补 0、直接用 1011001 ÷ 1101 得到的余数;要先在数据后补 r = 3 个 0 再除。
  • D 对110。

复习:回到正文。

第 36 题计网7.9 模拟卷 A
某 CSMA/CD 网络的数据率为 1Gbps,电缆长 1km,无中继器,信号传播速度 2 × 105km/s,则最短帧长是( )。
  • A. 625B
  • B. 1250B
  • C. 2500B
  • D. 5000B
展开解析

B最短帧的发送时间要不小于争用期 2τ:最短帧长 = 2τ × 数据率。

  1. 单程传播时延 τ = 1km ÷ (2 × 10⁵km/s) = 5μs,2τ = 10μs。
  2. 最短帧长 = 10μs × 1Gbps = 10 000bit。
  3. 10 000bit ÷ 8 = 1250B。
  • A 错625B = 5μs × 1Gbps ÷ 8:只用了单程传播时延 τ,最短帧的发送时间要覆盖往返的 2τ。
  • B 对1250B。
  • C 错2500B = 20μs × 1Gbps ÷ 8:把传播速度当成 10⁵km/s,τ 算成了 10μs;题给速度是 2 × 10⁵km/s,τ = 5μs。
  • D 错5000B = 40 000bit,对应 2τ = 40μs,即单程 20μs、电缆 4km;可电缆只有 1km,单程 τ = 1km ÷ (2 × 10⁵km/s) = 5μs。

复习:回到正文。

第 37 题计网7.9 模拟卷 A
主机 172.16.100.50/20 所在子网的广播地址是( )。
  • A. 172.16.100.255
  • B. 172.16.127.255
  • C. 172.16.96.255
  • D. 172.16.111.255
展开解析

D/20 在第 3 字节,块大小 224 − 20 = 16;把 100 向下取到 16 的倍数就是子网的起点。

  1. 第 3 字节 100 向下取到 16 的倍数 → 96,子网 172.16.96.0/20。
  2. 广播地址:主机号 12 位全 1 → 第 3 字节 96 + 15 = 111,第 4 字节 255 → 172.16.111.255。
  • A 错172.16.100.255 只把第 4 字节置成了全 1(按 /24 算);/20 的主机号还包括第 3 字节的低 4 位,也要置 1。
  • B 错172.16.127.255 是按 /19 算的(块大小 32,96 ~ 127);/20 的块大小是 16,100 落在 96 ~ 111。
  • C 错172.16.96.255:第 3 字节停在网络地址的 96,只把第 4 字节置了 1;第 3 字节的低 4 位也属于主机号,应为 96 + 15 = 111。
  • D 对172.16.111.255。

复习:回到正文。

第 38 题计网7.9 模拟卷 A
主机甲与乙建立 TCP 连接,甲发送的 SYN 段序号为 2000,之后甲向乙发送了 1000B 数据并主动释放连接。若无重传,甲发送的 FIN 段的序号是( )。
  • A. 3000
  • B. 3001
  • C. 3002
  • D. 2001
展开解析

BSYN 占一个序号:数据从 2001 开始编号,1000B 占 2001 ~ 3000,FIN 用下一个序号。

  • A 错3000 是数据的最后一个字节(2001 ~ 3000);也可能是忘了 SYN 占序号、按 2000 + 1000 算的。FIN 用的是下一个序号 3001。
  • B 对3001。
  • C 错3002 是乙确认这个 FIN 时的确认号(3001 + 1),不是 FIN 自己的序号。
  • D 错2001 是第一个数据字节的序号(SYN 占 2000),好像中间那 1000B 数据没有发过。

复习:回到正文。

第 39 题计网7.9 模拟卷 A
TCP 连接的拥塞窗口为 20MSS 时发生超时,若此后都不发生拥塞,则经过 6 个 RTT 后拥塞窗口是( )。
  • A. 10MSS
  • B. 11MSS
  • C. 12MSS
  • D. 16MSS
展开解析

C超时:门限 = 20 ÷ 2 = 10,cwnd = 1,重新慢开始;翻倍越过门限时只增到门限,之后每轮加 1。

  1. 6 个 RTT 后依次为:2、4、8、10(到门限)、11、12。
  2. 经过 6 个 RTT 后拥塞窗口 = 12MSS。
  • A 错10 是新门限:慢开始 1 → 2 → 4 → 8 → 10 只用了 4 个 RTT,之后还有 2 个 RTT 的拥塞避免(11、12)。
  • B 错11 只数了 5 个 RTT(2、4、8、10、11),第 6 个 RTT 后还要再加 1。
  • C 对12MSS。
  • D 错16 是慢开始翻倍越过了门限:8 → 16。门限已降为 10,翻倍只能到 10,之后每轮加 1。

复习:回到正文。

第 40 题计网7.9 模拟卷 A
下列应用层协议中,通常使用 UDP 的是( )。
  • A. DNS
  • B. HTTP
  • C. FTP
  • D. SMTP
展开解析

ADNS 查询报文短、一问一答,用 UDP(端口 53)不必先建连接;其余三个都要求可靠,用 TCP。

  • A 对DNS。
  • B 错HTTP 用 TCP(端口 80):网页内容要求一个字节都不能错。
  • C 错FTP 的控制连接(21)和数据连接(20)都建立在 TCP 上。
  • D 错SMTP 用 TCP 的 25 端口发送邮件,要求可靠传送。

复习:回到正文。

47.(9 分)某公司申请到地址 202.1.1.2/30 作为路由器 R 连接 ISP 的外网接口地址(ISP 一侧为 202.1.1.1),内部使用私有地址空间 192.168.5.0/24。R 的 E0 接口连部门 A(需要至少 100 个地址),E1 接口连部门 B(需要至少 50 个地址),R 实现 NAPT。

部门 A≥ 100 个地址E0部门 B≥ 50 个地址E1RNAPT202.1.1.2/30202.1.1.1ISPInternet

(1) 为部门 A、B 分配子网(A 用较低的地址段),并给出 E0、E1 接口地址(取各子网第一个可用地址)。(2 分)

(2) 写出 R 的路由表(目的网络、子网掩码、下一跳、接口)。(3 分)

(3) 部门 A 的主机 192.168.5.20 访问 Web 服务器 58.60.1.10,该分组在 Internet 上传输时的源、目的 IP 地址各是什么?R 为此要在 NAPT 表中记录什么?(2 分)

(4) 该主机与 Web 服务器之间 RTT = 40ms。主机新建 TCP 连接下载一个 8MSS 大小的网页(请求随第三次握手发出),服务器拥塞窗口初值 1MSS、门限 16MSS,接收窗口足够大,忽略发送时延。从主机发出 SYN 到收到全部网页至少需要多长时间?(2 分)

模拟卷 A 答案与评分细则
题号3334353637383940
答案ACDBDBCA

第 33 ~ 40 题的计算过程和逐项分析见每道题的“展开解析”。

47 题:

(1) A:192.168.5.0/25,E0 = 192.168.5.1;B:192.168.5.128/26,E1 = 192.168.5.129。(各 1 分;B 用其他对齐的 /26 且不与 A 重叠也给分)

(2)(每行 1 分)192.168.5.0 / 255.255.255.128 / 直接交付 / E0;192.168.5.128 / 255.255.255.192 / 直接交付 / E1;0.0.0.0 / 0.0.0.0 / 202.1.1.1 / 外网接口。

(3) 源 IP 202.1.1.2,目的 IP 58.60.1.10(1 分);NAPT 表记录(内网 192.168.5.20 : 源端口)↔(202.1.1.2 : 新端口)的对应关系(1 分)。

(4) 握手 1 RTT;服务器按 1、2、4、1 个 MSS 分 4 轮发完 8MSS,第 k 轮在 (1 + k) RTT 时到达,共 5 RTT = 200ms。(写出轮次 1 分,结果 1 分)

模拟卷 B

选择题可以直接点选项:点错的变红、点对的变绿,并自动展开逐项分析。

第 33 题计网7.9 模拟卷 B
主机 H1 经 2 个路由器向 H2 发送 1000 个分组,每个分组 1000B(不计首部),3 段链路速率均为 100Mbps,采用存储转发,忽略传播时延和处理时延。从 H1 开始发送到 H2 收完所需时间是( )。
  • A. 80ms
  • B. 80.16ms
  • C. 80.24ms
  • D. 240ms
展开解析

B存储转发的分组交换像流水线:H1 发完 1000 个分组后,最后一个分组还要被 2 个路由器各转发一次。

  1. 每个分组的发送时间 = 1000 × 8bit ÷ 100Mbps = 80μs。
  2. 总时间 = (N + k − 1) × 80μs = (1000 + 3 − 1) × 80μs = 80.16ms。
  • A 错80ms = 1000 × 80μs:只算了 H1 发完 1000 个分组的时间,漏了最后一个分组在后两段链路上的 2 × 0.08ms。
  • B 对80.16ms。
  • C 错80.24ms = (1000 + 3) × 80μs:把 3 段链路都算成了额外的转发;最后一个分组在第 1 段已经计入 H1 的 80ms,只需再转发 2 次。
  • D 错240ms = 3 × 80ms:当成了报文交换,整批数据在每段链路上各发一遍;分组交换的各段是同时在传的。

复习:回到正文。

第 34 题计网7.9 模拟卷 B
10BaseT 以太网采用曼彻斯特编码,其码元传输速率是( )。
  • A. 5MBaud
  • B. 10MBaud
  • C. 20MBaud
  • D. 40MBaud
展开解析

C曼彻斯特编码把每个比特分成前后两半,各是一个码元,所以码元速率是比特率的 2 倍。

  • A 错5MBaud = 10M ÷ 2:方向反了,曼彻斯特是一个比特对应 2 个码元,码元速率比比特率大,不是一半。
  • B 错10MBaud 把波特率当成了比特率;曼彻斯特每位中间都要跳变一次,一位要用两个码元。
  • C 对20MBaud。
  • D 错40MBaud = 10M × 4:多乘了一个 2;每个比特只分前后两半,码元速率 = 2 × 10M = 20MBaud。

复习:回到正文。

第 35 题计网7.9 模拟卷 B
采用 4 位序号的 GBN 协议,发送方已发出 0 ~ 9 号帧,超时前只收到对 5 号帧的确认(表示 0 ~ 5 号都已收到),超时后需要重发的帧数是( )。
  • A. 4
  • B. 3
  • C. 5
  • D. 10
展开解析

AGBN 累积确认:对 5 号帧的确认表示 0 ~ 5 都已收到;超时后从第一个未确认的帧起,把已发出的全部重发。

  • A 对重发 6、7、8、9,共 4 帧。
  • B 错3 = 9 − 6:用末尾减开头时忘了 + 1;未确认的是 6、7、8、9 四帧。
  • C 错5 帧是把 5 号也重发了;对 5 号的确认说明它已经收到(累积确认),只需从 6 号开始重发。
  • D 错10 帧是把 0 ~ 9 全部重发;0 ~ 5 号已被累积确认,GBN 只重发超时帧及其后已发出的帧。

复习:回到正文。

第 36 题计网7.9 模拟卷 B
802.11 无线局域网中,AP 把从有线网络收到的帧转发给站点 H,该 802.11 帧的地址 1 是( )。
  • A. AP 的 MAC
  • B. 路由器接口的 MAC
  • C. 广播地址
  • D. H 的 MAC
展开解析

D地址 1 永远是这一跳无线传输的接收者:AP 发给 H 的帧,地址 1 = H,地址 2 = AP,地址 3 = 原始发送方(有线网络一侧)。

  • A 错AP 是这一跳的发送者,填在地址 2,不在地址 1。
  • B 错路由器接口是这个帧在有线网络一侧的原始发送方,从 AP 发出时它填在地址 3。
  • C 错这是发给 H 的单播帧,地址 1 填 H 的 MAC;只有广播帧才把地址 1 填成全 1。
  • D 对H 的 MAC 地址。

复习:回到正文。

第 37 题计网7.9 模拟卷 B
某路由器的路由表有 4 项:10.1.0.0/16 → S0;10.1.4.0/22 → S1;10.1.5.128/25 → S2;0.0.0.0/0 → S3。目的地址为 10.1.5.130 的分组从( )转发。
  • A. S0
  • B. S1
  • C. S2
  • D. S3
展开解析

C逐项看是否匹配,再在匹配项中取前缀最长的。10.1.5.130 匹配 /16、/22、/25 三项(默认路由总能匹配)。

  • A 错S0 的 10.1.0.0/16 也匹配,但前缀只有 16 位,还有更长的 /22、/25 能匹配。
  • B 错S1 的 10.1.4.0/22 覆盖 10.1.4.0 ~ 10.1.7.255,也匹配;但 10.1.5.128/25(.128 ~ .255)前缀更长,优先。
  • C 对S2:/25 最长。
  • D 错默认路由 0.0.0.0/0 只在其他项都不匹配时才用,这里有 3 项匹配。

复习:回到正文。

第 38 题计网7.9 模拟卷 B
主机向另一个网络上的主机发送 IP 分组时,ARP 用于解析( )。
  • A. 默认网关的 MAC 地址
  • B. 目的主机的 MAC 地址
  • C. 目的主机的 IP 地址
  • D. 默认网关的 IP 地址
展开解析

A目的主机在另一个网络,分组要先交给默认网关,所以主机用 ARP 解析的是默认网关的 MAC 地址。

  • A 对默认网关的 MAC 地址。
  • B 错目的主机在另一个网络,ARP 广播出不了本网络,问不到它的 MAC;帧只需交给下一跳网关。
  • C 错目的主机的 IP 地址是已知的(就写在分组里);ARP 是由 IP 地址求 MAC 地址,不是求 IP 地址。
  • D 错默认网关的 IP 地址是事先配置好的(手工或 DHCP),不用 ARP 解析;ARP 解析的是它的 MAC 地址。

复习:回到正文。

第 39 题计网7.9 模拟卷 B
TCP 发送方的拥塞窗口为 5000B,最近收到的确认段 ack = 2001、rwnd = 3000B,发送方已发出的数据到序号 3000 为止,此时还能发送的数据量是( )。
  • A. 1000B
  • B. 3000B
  • C. 5000B
  • D. 2000B
展开解析

D发送窗口 = min(cwnd, rwnd),从最新的确认号起算;再减去已发出、还没确认的部分。

  1. 发送窗口 = min(5000, 3000) = 3000B,从确认号 2001 起:2001 ~ 5000。
  2. 已发到 3000,还能发 3001 ~ 5000,共 2000B。
  • A 错1000B 相当于把窗口前沿算到了 4000:在途的 1000B 被减了两次;窗口 2001 ~ 5000 减去在途的 2001 ~ 3000 后,还剩 3001 ~ 5000 共 2000B。
  • B 错3000B 是整个发送窗口 min(5000, 3000),忘了其中 2001 ~ 3000 这 1000B 已经发出、还没确认。
  • C 错5000B 是拥塞窗口,既没和接收窗口 3000B 取小,也没减去在途的数据。
  • D 对2000B。

复习:回到正文。

第 40 题计网7.9 模拟卷 B
用 Outlook 等邮件客户端从邮件服务器读取邮件时使用的协议是( )。
  • A. SMTP
  • B. POP3
  • C. FTP
  • D. MIME
展开解析

B读取邮件是“拉”,用 POP3(或 IMAP);SMTP 只负责“推”。

  • A 错SMTP 只负责发送:用户代理发信、邮件服务器之间转发;从服务器读取邮件要用 POP3 或 IMAP。
  • B 对POP3。
  • C 错FTP 是文件传送协议,用来上传、下载文件,不是读取邮件的协议。
  • D 错MIME 只是邮件内容的编码格式(把非 ASCII 内容编成 ASCII),不是传送邮件的协议。

复习:回到正文。

47.(9 分)某实验室局域网如下图所示。路由器 R 的 E0 为 10.10.1.1/24,同时作为 DHCP 服务器;交换机 S 的端口 1 连 R,端口 2 连 100BaseT 集线器 Hub(Hub 上接 H1、H2),端口 3 连 H3,端口 4 连 AP(笔记本 L1 经 AP 无线接入)。传播速度 2 × 108m/s,最短帧 64B,信号经过 Hub 有 1μs 时延。

RE0 10.10.1.1/24(DHCP)1S2HubH1H23H34AP(无线)L1

(1) H1 与 H2、H1 与 H3 是否在同一冲突域?该局域网(R 的 E0 一侧)有几个广播域?(2 分)

(2) L1 开机后广播 DHCP 发现报文。封装它的 IP 分组的源、目的 IP 是什么?该广播帧会被哪些主机和设备接口收到?(2 分)

(3) H1 与 H2 之间理论上可以相距的最远距离是多少?(2 分)

(4) H3 与 R 相距 100m,H3 用停—等方式向 R 连续发送 1518B 的帧,R 每收到一帧立即回 64B 的确认帧,H3 的有效数据传输速率是多少(每帧数据 1500B,不计前导码;把 H3 到 R 看成一条 100Mbps 的链路,忽略交换机的转发时延)?(3 分)

模拟卷 B 答案与评分细则
题号3334353637383940
答案BCADCADB

第 33 ~ 40 题的计算过程和逐项分析见每道题的“展开解析”。

47 题:

(1) H1、H2 同接在 Hub 上,在同一冲突域;H1 与 H3 之间隔着交换机,不在同一冲突域(各 0.5 分)。R 的 E0 一侧只有 1 个广播域(交换机、集线器、AP 都不隔离广播域)(1 分)。

(2) 源 IP 0.0.0.0,目的 IP 255.255.255.255(1 分);广播帧在整个广播域内泛洪,R 的 E0、H1、H2、H3 都会收到(1 分)。

(3) 64B 发送时间 5.12μs,单程 ≤ 2.56μs;减去 Hub 时延 1μs,传播 ≤ 1.56μs,最远 1.56μs × 200m/μs = 312m(2 分)。

(4) 数据帧 1518 × 8 ÷ 100Mbps = 121.44μs;确认帧 5.12μs;τ = 100m ÷ 2 × 108m/s = 0.5μs。周期 = 121.44 + 5.12 + 2 × 0.5 = 127.56μs,有效速率 = 1500 × 8 ÷ 127.56μs ≈ 94.07Mbps(周期 2 分,结果 1 分)。

模拟卷 C

选择题可以直接点选项:点错的变红、点对的变绿,并自动展开逐项分析。

第 33 题计网7.9 模拟卷 C
甲、乙两主机相距 1000km,链路速率 1Gbps,信号传播速度 2 × 108m/s。甲向乙发送一个 1500B 的帧,从甲开始发送到乙收完需要( )。
  • A. 12μs
  • B. 5ms
  • C. 5.012ms
  • D. 10.012ms
展开解析

C从开始发送到收完 = 发送时延 + 传播时延(单程)。

  1. 发送时延 = 1500 × 8bit ÷ 10⁹bit/s = 12μs = 0.012ms。
  2. 传播时延 = 10⁶m ÷ (2 × 10⁸m/s) = 5ms。
  3. 合计 5.012ms。
  • A 错12μs 只是发送时延 1500 × 8 ÷ 10⁹,漏了 1000km 的传播时延 5ms。
  • B 错5ms 只是传播时延 10⁶m ÷ (2 × 10⁸m/s),漏了发送时延 12μs。
  • C 对5.012ms。
  • D 错10.012ms 把传播时延算成了往返(2 × 5ms);从甲开始发送到乙收完只需单程。

复习:回到正文。

第 34 题计网7.9 模拟卷 C
带宽为 3kHz、信噪比为 30dB 的信道,采用 8 种状态的调制,最大数据传输速率约为( )。
  • A. 18kbps
  • B. 24kbps
  • C. 30kbps
  • D. 36kbps
展开解析

A同时给了带宽、信噪比和状态数:奈奎斯特、香农两个上限都要算,取较小的。

  1. 奈奎斯特:2 × 3k × log₂8 = 18kbps。
  2. 香农:30dB → S/N = 10³ = 1000,3k × log₂1001 ≈ 29.9kbps。
  3. 取较小者:18kbps。
  • A 对18kbps。
  • B 错24kbps = 2 × 3k × 4:把 8 种状态算成每码元 4 位;log₂8 = 3。
  • C 错30kbps 是香农极限 3k × log₂1001 ≈ 30kbps;但 8 种状态的调制按奈奎斯特最多只有 18kbps,取较小者。
  • D 错36kbps = 2 × 18kbps:码元速率按 2 × 2W 算,多乘了一个 2;无噪声的极限码元速率是 2W = 6k 波特。

复习:回到正文。

第 35 题计网7.9 模拟卷 C
以太网交换机采用直通方式转发帧时,收到帧的前( )个字节就可以开始转发(不计前导码)。
  • A. 14
  • B. 64
  • C. 6
  • D. 1518
展开解析

C直通交换只要读到帧首部的目的 MAC 地址(6 字节)就能查表并开始转发。

  • A 错14B 是整个以太网帧首部(目的 MAC 6 + 源 MAC 6 + 类型 2);转发只看目的地址,读到前 6B 就够了。
  • B 错64B 是最短帧长:“无碎片”交换要先收满 64B 才转发,直通交换不用等这么久。
  • C 对6 字节。
  • D 错1518B 是最长帧长,那是存储转发方式要收齐整帧才转发。

复习:回到正文。

第 36 题计网7.9 模拟卷 C
10Mbps 以太网中某站点发生第 4 次冲突后,按二进制指数退避算法最长要等待( )。
  • A. 358.4μs
  • B. 768μs
  • C. 819.2μs
  • D. 1536μs
展开解析

B第 k 次冲突后 r ∈ {0, 1, …, 2k − 1}(k ≤ 10),等待 r 个争用期;10Mbps 以太网争用期 = 512bit ÷ 10Mbps = 51.2μs。

  1. 第 4 次冲突:k = 4,r 最大 2⁴ − 1 = 15。
  2. 最长等待 15 × 51.2μs = 768μs。
  • A 错358.4μs = 7 × 51.2μs:按 k = 3 算了,是第 3 次冲突后的最长等待。
  • B 对768μs。
  • C 错819.2μs = 16 × 51.2μs:用了 2⁴,忘了减 1;r 的最大值是 2⁴ − 1 = 15。
  • D 错1536μs = 15 × 102.4μs:争用期多乘了 2(或把 r 的上限算成 30);10Mbps 以太网争用期是 51.2μs。

复习:回到正文。

第 37 题计网7.9 模拟卷 C
某路由器要把下一跳相同的 172.18.129.0/24、172.18.130.0/24、172.18.132.0/24、172.18.133.0/24 聚合成一条路由,聚合后的目的网络是( )。
  • A. 172.18.128.0/22
  • B. 172.18.130.0/22
  • C. 172.18.132.0/23
  • D. 172.18.128.0/21
展开解析

D四个网络前 16 位相同,看第 3 字节:129 = 1000 0001,130 = 1000 0010,132 = 1000 0100,133 = 1000 0101,共同前缀是前 5 位 10000。

  1. 共同前缀 16 + 5 = 21 位,后面补 0:第 3 字节 1000 0000 = 128。
  2. 聚合结果 172.18.128.0/21(第 3 字节 128 ~ 135,包含全部 4 个网络)。
  • A 错172.18.128.0/22 只覆盖第 3 字节 128 ~ 131,装不下 132、133。
  • B 错130 不是 4 的倍数,不能作 /22 块的起点(130 与掩码 252 相与得 128);何况 /22 也装不下 4 个网络。
  • C 错172.18.132.0/23 只覆盖 132、133,漏了 129、130。
  • D 对172.18.128.0/21。

复习:回到正文。

第 38 题计网7.9 模拟卷 C
下列关于 IPv6 的叙述中,错误的是( )。
  • A. 途中路由器可以对 IPv6 分组分片
  • B. 基本首部长度固定为 40B
  • C. 地址长度为 128 位
  • D. 基本首部取消了首部检验和
展开解析

A本题选错误的叙述。IPv6 只由源主机分片,途中路由器不分片。

  • A 选错误:途中路由器遇到过大的 IPv6 分组不分片,而是丢弃并向源主机发 ICMPv6“分组太大”,由源主机按路径 MTU 重新分片。
  • B 不选正确:IPv6 基本首部固定 40 字节,可选功能放进扩展首部。
  • C 不选正确:IPv6 地址 128 位,是 IPv4(32 位)的 4 倍长。
  • D 不选正确:基本首部取消了首部检验和,差错检测交给链路层和传输层,路由器不必每跳重算。

复习:回到正文。

第 39 题计网7.9 模拟卷 C
甲向乙连续发送 3 个 TCP 段,序号依次为 100、400、600,数据长度依次为 300B、200B、100B。若第 2 个段丢失,第 1、3 个段正确到达,乙收到第 3 个段后发出的确认号是( )。
  • A. 600
  • B. 400
  • C. 700
  • D. 401
展开解析

B累积确认:确认号是按序收到的最后一个字节 + 1,中间有缺口就停在缺口处。

  1. 第 1 段 100 ~ 399 按序收到;第 2 段 400 ~ 599 丢失;第 3 段 600 ~ 699 失序,先缓存。
  2. 确认号 = 400。
  • A 错600 是第 3 段的序号;第 2 段(400 ~ 599)没到,确认号不能越过这个缺口。
  • B 对400。
  • C 错700 是三段都收到后的确认号(600 + 100);第 2 段丢了,后面收到的第 3 段只能先缓存。
  • D 错确认号是“期望收到的下一个字节”,缺口从 400 开始就填 400;401 多加了 1。

复习:回到正文。

第 40 题计网7.9 模拟卷 C
用户用 FTP 从同一服务器上依次下载 5 个文件,整个会话中建立的控制连接和数据连接分别是( )。
  • A. 1 条、1 条
  • B. 5 条、5 条
  • C. 2 条、5 条
  • D. 1 条、5 条
展开解析

DFTP 的控制连接整个会话只有 1 条,一直保持;数据连接每传一个文件建 1 条,传完就关。

  • A 错数据连接是非持续的,每传一个文件建一条,传 5 个文件要 5 条,不是 1 条。
  • B 错控制连接在整个会话期间只有一条、一直保持,不是每个文件一条。
  • C 错控制连接只在登录时建 1 条,一直用到 QUIT,没有第 2 条。
  • D 对1 条控制连接、5 条数据连接。

复习:回到正文。

47.(9 分)主机 H1 与 H2 通过路由器 R1、R2 相连(如图)。R1:E0 = 192.168.1.1/24,S0 = 10.0.0.1/30;R2:S0 = 10.0.0.2/30,E0 = 192.168.2.1/24。R1—R2 链路的 MTU = 820B,两个局域网的 MTU 都是 1500B。

H1192.168.1.10192.168.1.0/24MTU 1500R110.0.0.0/30MTU 820R2192.168.2.0/24MTU 1500H2192.168.2.20

(1) 写出 R1 的路由表(目的网络、子网掩码、下一跳、接口)。(2 分)

(2) H1 向 H2 发送一个总长 1500B 的 IP 分组(首部 20B,DF = 0)。R1 转发时分几片?写出各片的总长度、片偏移和 MF。(2 分)

(3) 这些分片在哪里重组?若 H1 发出时 TTL = 64,H2 收到时 TTL 是多少?(2 分)

(4) H1 与 H2 建立 TCP 连接后,H1 向 H2 发送 24 个 MSS 的数据。H2 的接收窗口始终为 8MSS,H1 的拥塞窗口初值 1MSS、门限 32MSS,RTT = 10ms,忽略发送时延,H2 对每个段立即确认。按轮次写出拥塞窗口和发送窗口;从 H1 发出 SYN 到收到最后一个确认至少要多长时间?(3 分)

模拟卷 C 答案与评分细则
题号3334353637383940
答案CACBDABD

第 33 ~ 40 题的计算过程和逐项分析见每道题的“展开解析”。

47 题:

(1)(三行全对 2 分,错一行扣 1 分)192.168.1.0 / 255.255.255.0 / 直接交付 / E0;10.0.0.0 / 255.255.255.252 / 直接交付 / S0;192.168.2.0 / 255.255.255.0 / 10.0.0.2 / S0。

(2) 每片数据最多 ⌊(820 − 20) ÷ 8⌋ × 8 = 800B,1480 = 800 + 680,分 2 片(1 分):总长 820B、片偏移 0、MF = 1;总长 700B、片偏移 100、MF = 0(1 分)。

(3) 在目的主机 H2 重组,路由器 R2 不重组(1 分);经过 R1、R2,TTL = 64 − 2 = 62(1 分)。

(4)(轮次表 2 分,时间 1 分)

轮次123456
拥塞窗口(MSS)12481624
发送窗口(MSS)124888
本轮发送 / 累计1 / 12 / 34 / 78 / 158 / 231 / 24

第 5 轮起发送窗口受接收窗口限制为 8;慢开始阶段每收到一个确认 cwnd 仍加 1。握手 1 RTT + 数据 6 RTT = 7 RTT = 70ms。

第 8 篇 · 考前冲刺

考场作战手册:模板、公式、协议速查、易错与真题索引

前六篇是“学”,第 7 篇是“练大题”,这一篇是考前“速查”:七类综合题的固定步骤、全部计算公式、协议端口和首部长度、107 条高频易错点、2009—2026 年综合题检索表,最后是按年份刷题的网格——计网部分 163 道真题都能在页内直接做。

用法:点链接跳回讲解;点题号直接在页内做题计网分值:选择题 8 道 16 分 + 综合题 1 道 9 分 ≈ 25 分

8.1答题规范:把会做的分拿满

  • 先读图后读题:每个接口的地址先算出所在网络,标出路由器、交换机、集线器。
  • 地址写全:网络写成“地址/前缀”或“地址 + 掩码”;MAC 写满 6 字节;十六进制加 H。
  • 路由表每行四项填满:直连写“直接交付”,下一跳是相邻路由器在共同网络上的接口。
  • 计算先写公式再代数,单位写清:B/bit、ms/μs;存储容量 K = 1024,速率 k = 1000(题目另有说明除外)。
  • “能/不能、是/否”后面跟一句理由;“要改哪些字段”只写真正改的,别罗列。

详见 7.1 计网大题怎么考、怎么给分。

8.2七类综合题:固定步骤速查

题型固定步骤真题
① IP 规划与路由表标每个接口所在网络 → 主机数定前缀、从大到小对齐分配 → 站在路由器上按出口分组 → 同下一跳聚合 → 填表(直连 / 间接 / 特定主机 /32 / 默认 /0)→ 最长前缀匹配、数 TTL2009、2013、2014-43、2018、2025(3)
② 路由算法与协议表格化 Dijkstra,按确定顺序给路径和费用 → 第一跳即下一跳 → RIP:n 跳远要 n 次交换 → BGP:eBGP/iBGP、UPDATE、先短 AS 路径再近出口2014-42、2024
③ 报文首部分析画竖线切“帧首部 14B | IP 首部 | TCP 首部 | 数据” → 每个分组列表(长度、标识、TTL、源、目的、端口、seq、ack、标志)→ 按问题查表2011、2012
④ 局域网不同网络 → 路由器,同广播域不同冲突域 → 交换机,同冲突域 → 集线器 → 时间距离题:最短帧时间 ÷ 2 − 设备时延 → 广播看广播域 → 802.11 地址 1 收、2 发、3 另一侧2010、2019、2022
⑤ 可靠传输圈出最大确认号 → 画窗口(GBN 2n − 1,SR 2n−1)→ GBN 从超时帧起全重发,SR 只重发超时帧 → U = W·TD ÷ (TD + RTT + TA)2017、2025(1)(2)
⑥ TCP序号账本(SYN、FIN 各占 1)→ 轮次表(cwnd、rwnd、本轮发送、累计)→ 发送窗口 = min(cwnd, rwnd) → 时间 = 握手 1 RTT + 数据轮数(+ 释放)2016-41、2023、2026
⑦ 一次访问的全过程地址抄表 → 按时间线列每个帧(DHCP → ARP → DNS → ARP 网关 → TCP → HTTP)→ 边列边更新交换表 → IP 端到端不变、MAC 逐段改写、NAT 改地址和端口2011、2015、2020、2021

8.3公式速查

内容公式 / 结论讲解
发送时延、传播时延发送 = 数据长度 ÷ 速率;传播 = 距离 ÷ 传播速度;时延带宽积 = 传播时延 × 带宽1.3
三种交换的时间电路 = 建连 + L ÷ R;报文 = k × L ÷ R;分组 = (N + k − 1) × P ÷ R(N 个分组、k 段链路、分组长 P);有传播时延再加 k × 单段传播时延;各段速率不同时“跟着最后一个分组走”(2025-33)1.2
利用率与时延、吞吐量D = D0 ÷ (1 − U)(U = 0.5 → 2 倍,0.9 → 10 倍);单条路径吞吐量 = 最慢一段;并行路径先把各路径瓶颈相加,再与两头取小(2024-33);丢包率 = 丢失分组数 ÷ 发送分组数1.3
封装效率有效数据 ÷ (有效数据 + 各层首部、尾部)(2017-33:400 ÷ 500 = 80%)1.4
奈奎斯特无噪声:C = 2W log2V(bit/s)2.2
香农有噪声:C = W log2(1 + S/N);S/N = 10dB/10;两者同时给出取较小值2.2
波特率与比特率比特率 = 波特率 × log2V;曼彻斯特编码波特率 = 2 × 比特率;4B/5B 编码效率 4 ÷ 5 = 80%2.1
PCM采样频率 ≥ 2 × 信号最高频率;数据率 = 采样频率 × log2(量化级数)(电话:8000 × 8 = 64kb/s)2.3
CRC生成多项式 r 次 → 数据后补 r 个 0 → 模 2 除 → r 位余数为 FCS;接收方整串除余数全 0 为无错3.2
海明距离检 t 位:d ≥ t + 1;纠 t 位:d ≥ 2t + 1;海明码:2r ≥ k + r + 13.2
信道利用率U = min(1, W × TD ÷ (TD + RTT + TA));停等 W = 13.3
序号位数GBN:WT ≤ 2n − 1;SR:WT + WR ≤ 2n,通常 W = 2n−13.3
CDMA规格化内积 S · T = (1/m) Σ SiTi:结果 1 → 发了 1,−1 → 发了 0,0 → 没发(2014-37)3.4
CSMA/CD最短帧长 = 2τ × 速率;最远距离 = (最短帧时间 ÷ 2 − 设备时延) × 传播速度;检测冲突最短 τ、最长 2τ3.5
二进制指数退避k = min(重传次数, 10),r ∈ {0, …, 2k − 1},最长等待 (2k − 1) × 争用期;16 次失败放弃3.5
802.11 NAVCTS 设置:SIFS + DATA + SIFS + ACK;RTS 设置:再加 SIFS + CTS3.6
以太网帧首部 14B + 尾部 4B;数据 46 ~ 1500B;帧 64 ~ 1518B;802.1Q 帧 +4B3.7
子网可分配 = 2主机位 − 2;块大小 = 28k − n(前缀落在第 k 字节);网络地址 = 向下取到块大小的倍数4.3
分片每片数据 = ⌊(MTU − 首部) ÷ 8⌋ × 8;片偏移 = 前面数据字节 ÷ 8;只有最后一片 MF = 0(再分片时,原分片 MF = 1 则切出的各片 MF 都是 1)4.2
IPv6 分片只在源点分片;每片数据 ≤ ⌊(MTU − 40 − 8) ÷ 8⌋ × 8(基本首部 40B + 分片首部 8B)4.7
组播 MAC01-00-5E + 0 + IP 组播地址低 23 位;25 = 32 个组地址共用一个 MAC4.10
DHCP 续约T1 = 租期 × 50%(单播请求原服务器);T2 = 租期 × 87.5%(广播请求)4.6
检验和16 位反码求和,进位回卷,最后取反;接收方加总为全 1 无错5.2
TCP 序号SYN、FIN 各占 1;数据 = FIN 序号 − (SYN 序号 + 1);确认号 = 最后按序收到的字节 + 15.4
TCP 窗口发送窗口 = min(cwnd, rwnd);还能发 = 确认号 + 窗口 − 下一个待发序号;窗口受限时平均速率 ≤ 窗口 ÷ RTT(2016-41)5.5
超时重传时间RTTS = (1 − α)RTTS + α × 新样本(α = 1/8);RTTD = (1 − β)RTTD + β × |RTTS − 新样本|(β = 1/4,用新的 RTTS);RTO = RTTS + 4RTTD5.5
拥塞控制慢开始每轮翻倍(每个新确认 +1)到门限;拥塞避免每轮 +1;超时:门限 = cwnd ÷ 2,cwnd = 1;3 个重复确认:门限 = cwnd = cwnd ÷ 25.6
连接释放时间主动方 1 RTT + 2MSL;被动方 1.5 RTT(对方立即合并 ACK 和 FIN 时)5.4
HTTP 时间非持续串行:(N + 1) × 2 RTT;持续非流水线:2 + N;持续流水线:2 + 1;DNS 迭代 m 次再加 m RTT6.5
Web 缓存平均时延 = 命中率 × 本地时延 + (1 − 命中率) × 远程时延;出口链路负载 = (1 − 命中率) × 原负载;条件 GET 未改 → 304,无实体主体6.5
“要几位”N 台主机:2n − 2 ≥ N;N 个子网:2n ≥ N;N 种码元状态:log2N 位0.3

8.4协议、端口、首部与设备速查

协议层用什么传端口 / 编号一句话
按“应用层协议 → 传输层 → 端口”排,下面再列网络层协议的协议号和以太网类型字段。端口完整讲解见 5.1。
HTTP应用TCP80无连接、无状态,用 Cookie 记用户
FTP应用TCP21 控制 / 20 数据控制连接持久,数据连接非持久(每个文件一条)
SSH / TELNET应用TCP22 / 23远程登录:SSH 加密,TELNET 明文
SMTP应用TCP25推邮件,只传 7 位 ASCII(MIME 扩展)
POP3 / IMAP应用TCP110 / 143拉邮件
DNS应用UDP(主要)53主机→本地递归,本地→其他迭代
DHCP应用UDP67 服务器 / 68 客户DISCOVER、REQUEST 都是 0.0.0.0 → 255.255.255.255;跨网络要中继代理
TFTP应用UDP69简单文件传送,自己做确认重传
SNMP应用UDP161 / 162网管:161 收请求,162 收陷阱报文
HTTPS应用TCP443HTTP + TLS;HTTP/3 改走基于 UDP 的 QUIC(拓展)
RIP应用UDP520跳数 ≤ 15,30s 交换整张表
BGP应用TCP179AS 之间,路径向量
OSPF网络IP协议号 89链路状态、Dijkstra、可分区
ICMP网络IP协议号 1差错报告、ping、traceroute
IGMP网络IP协议号 2主机告诉组播路由器自己加入了哪个组
TCP / UDP传输IP协议号 6 / 17首部 20~60B / 8B
ARP网络(408 口径)以太网帧类型 0x0806同一网络内 IP → MAC,请求广播、响应单播
IPv4 / IPv6网络以太网帧类型 0x0800 / 0x86DD帧的“类型”字段告诉接收方里面装的是谁(链路层的 SAP)
802.1Q链路—标签类型 0x8100VLAN 标签 4B,插在源 MAC 之后
首部长度

以太网帧首部 14B + FCS 4B;IPv4 首部 20~60B(首部长度 × 4);IPv6 基本首部 40B、分片首部 8B;TCP 首部 20~60B(数据偏移 × 4);UDP 8B;伪首部 12B;802.1Q 标签 4B;PPP 首部 5B + 尾部 3B。

设备与域

中继器、集线器:物理层,不隔离冲突域和广播域。网桥、交换机:链路层,隔离冲突域(每端口一个),不隔离广播域(VLAN 可隔离)。路由器:网络层,都隔离,抑制广播风暴。无线接入点 AP:链路层,相当于“有线—无线”之间的网桥。

8.5高频易错清单(107 条)

#易错说法 / 陷阱正确理解
1传播速度越快,数据率越高数据率取决于带宽、信噪比、码元状态数,与传播速度无关(2014-35)
2时延带宽积 = 发送时延 × 带宽= 传播时延 × 带宽
3分组交换总时间 = N × P ÷ R × 链路数流水线:(N + k − 1) × P ÷ R(2010-34)
430dB 就是 S/N = 30S/N = 103 = 1000
5给了信噪比也给了电平数,只用一个公式奈奎斯特、香农都算,取较小值
6曼彻斯特编码的波特率 = 比特率= 2 × 比特率
7408 的曼彻斯特:前低后高为 1本讲义按真题口径:前高后低 = 1(2013-34、2015-34)
8MAC 地址属于物理层属于数据链路层(2018-34)
9零比特填充:5 个 1 后面是 0 就不用插只要连续 5 个 1 就插 0(2013-37)
10接收方 CRC 也要先补 0 再除接收方整串直接除,余数全 0 才无错
11CRC 能保证可靠传输只能检错丢弃,可靠要靠确认重传
12GBN 收到 ACK1 缺 ACK0,要重发 0累积确认:ACKn 说明 n 及以前都收到了(2009-35)
13SR 的确认也是累积的SR 逐个确认,只重发超时帧(2011-35)
14SR 窗口比 GBN 大n 位时 SR 最大 2n−1,GBN 最大 2n − 1(2023-35)
15帧长有范围时用最长帧求窗口用最短帧(2012-36)
16周期里只算一次传播时延RTT = 2 × 单向;确认帧等长时还要加确认帧发送时间(2020-36)
17捎带确认时 TA = 0TA = 对方数据帧的发送时间(2017-47)
18卫星链路单向传播 0.12s上去再下来,约 0.24s(2025-47)
19CDMA 内积不除以 m规格化内积要除以码片长度 m(2014-37)
20CSMA/CD 最短帧长 = τ × 速率= 2τ × 速率
21算最远距离时,从最短帧发送时间里只减一次集线器时延:(5.12 − 1.535) ÷ 2信号往返两次经过集线器,要减两次;等价于先除以 2 得单程时延,再减一次:5.12 ÷ 2 − 1.535(2016-36、2022-47)
22退避第 11 次冲突 r 最大 211 − 1k 最多取 10:r 最大 1023(2025-35)
23CSMA/CD 可用于无线网无线用 CSMA/CA(2015-36)
24CSMA/CA 交换中各帧前都等 DIFS交换开始等 DIFS,中间的 CTS、DATA、ACK 前等 SIFS(2020-37)
25隐蔽站的 NAV 从 RTS 算起它听不到 RTS,只能从 CTS 之后算(2024-36)
26802.11 地址 1 是源地址地址 1 = 这一跳的接收者(2017-35)
27以太网提供可靠服务无连接、不可靠(2012-35)
28直通交换要等整帧只等 6B 目的地址(2013-38)
29交换机按源 MAC 转发源 MAC 用来学习,目的 MAC 用来转发(2009-36)
30交换机泛洪也从进入端口发回除进入端口外的所有端口(2014-34)
31交换机隔离广播域不隔离,只有路由器和 VLAN 隔离(2015-37)
32VLAN 内 ARP 可以解析其他 VLAN 的主机ARP 广播出不了 VLAN(2024-35)
33IP 首部检验和覆盖数据只检验首部,每跳重算
34首部长度、总长度、片偏移单位相同分别是 4B、1B、8B
35分片每片数据 = MTU − 20还要取 8 的倍数:MTU 800 → 776(2021-36、2018-47)
360.0.0.0 可作目的地址只能作源地址(2017-36)
37广播地址的分组没有主机收子网内所有主机都收(2011-38)
38/22 的广播地址只把最后一个字节置 1主机号 10 位全置 1:第 3 字节低 2 位也置 1(2012-39)
39变长划分可以得到任意小的子网各块是 2 的幂且要正好分完(2019-37)
40聚合后网络地址取原来最小的那个共同前缀后补 0;要验证块大小是否正好覆盖(2018-38)
41下一跳写本路由器的接口写相邻路由器在共同网络上的接口(2011-37)
42多条匹配取第一条取最长前缀;默认路由最后(2015-38)
43默认网关可以是任意一台服务器必须是本网络上的路由器接口(2015-47、2016-39)
44NAT 只改 IP 地址NAPT 还改端口,IP 和 TCP/UDP 检验和都要重算(2025-37)
45出 NAT 改目的地址出方向改源,入方向改目的(2020-47)
46/30 链路的另一端地址随便填只有两个可用地址,知道一端就知道另一端(2016-38、2023-38)
47跨网络发送时 ARP 解析目的主机解析默认网关(2018-37)
48DHCP REQUEST 用刚分到的地址作源ACK 之前仍是 0.0.0.0,且广播(2025-36)
49拥塞时路由器发“目的不可达”发“源点抑制”(2010-36)
50IPv6 地址空间是 IPv4 的 96 倍296 倍;基本首部固定 40B(2023-40)
51RIP 距离 16 表示 16 跳表示不可达(2010-35)
52OSPF 用 UDP、BGP 用 IPRIP→UDP,OSPF→IP,BGP→TCP(2017-37)
53RIP 收到坏消息后马上正确收敛坏消息传得慢(2016-37)
54UDP 分用看源端口看目的端口(2018-39)
55反码求和的进位直接丢掉进位回卷到最低位,最后取反(2024-39)
56第三次握手的确认号 = 对方 ISN= 对方 ISN + 1(2019-39)
57客户收到 FIN 回 ACK 后就 CLOSED进入 TIME-WAIT,再等 2MSL(2021-38、2022-39)
58快重传在第一次重复确认时就重传收到 3 个重复确认才重传(2019-38)
59超时后 cwnd 减半超时:cwnd = 1;3 个重复确认才减半(2009-39、2022-38)
60“发送窗口”就是 cwnd= min(cwnd, rwnd)(2014-38、2015-39、2016-41)
61SR 的发送窗口一定 ≤ 2n−1只要求 WT + WR ≤ 2n;收发窗口相等时才是 2n−1(2019-35:WT = 5,WR ≤ 3)
62停等协议确认帧丢失时,接收方丢弃重复帧就行丢弃重复帧,还要再回一次确认,否则发送方会一直重传
63令牌传递也会冲突;负载轻时它比 CSMA/CD 好令牌传递不会冲突;负载重时它好,负载轻时要等令牌,不如随机访问
64网络层的 SAP 是 IP 地址,链路层的 SAP 是 MAC 地址王道口径:链路层 SAP 是帧的“类型”字段,网络层 SAP 是 IP 首部的“协议”字段,传输层 SAP 是端口号
65电路交换一定比分组交换慢不一定:各段速率不同、报文很长时,电路交换只受最慢一段限制,可能最快(2025-33:Tms > Tps > Tcs)
66虚电路要为每条虚电路预先分配带宽虚电路只是逻辑连接,不预分配带宽;独占带宽的是电路交换(2020-34)
67端到端吞吐量是各段速率的平均或总和单条路径看最慢的一段;并行路径先把各路径的瓶颈相加,再与两头取小(2024-33)
68网络利用率越高越好D = D0 ÷ (1 − U):U = 0.9 时时延是空闲时的 10 倍
69网络体系结构包括协议的实现细节体系结构 = 层次 + 各层协议 + 功能,不含实现(2010-33)
70分层越多,效率越高层越多首部越多、处理越多,效率越低(2026-33)
71直接为 ICMP 提供服务的是数据链路层ICMP 报文封装在 IP 数据报里,直接为它服务的是 IP(2012-33)
72差分曼彻斯特:位中间有跳变表示 0位中间总有跳变(作同步);本讲义口径:位开始处有跳变 = 0、无跳变 = 1(2021-34)
73香农公式里 log21001 不能近似考试按 log21001 ≈ 10 算(2016-34、2017-34)
74PCM 采样频率等于信号最高频率即可采样频率 ≥ 2 × 最高频率(采样定理)
75中继器像放大器一样把噪声一起放大中继器对数字信号整形再生,噪声不累积;但它工作在物理层,不隔离冲突域
76慢开始受接收窗口限制时,cwnd 就停止增长cwnd 仍按收到的确认数增长,只是发送窗口 = min(cwnd, rwnd)(5.6)
77收到 3 个重复确认后 cwnd 从 1 重新开始快恢复:门限 = cwnd ÷ 2,cwnd = 新门限,接着拥塞避免;只有超时才回到 1(5.6)
78算 RTTD 时用旧的 RTTS按教材顺序先更新 RTTS,再用新的 RTTS 算 RTTD(RFC 6298 的顺序作拓展)
79数据还没被确认完就可以算 FIN 的发送时刻本讲义按真题口径:数据全部被确认后才发 FIN(2024-38:60.04s)
80UDP 检验和算出来是全 0 就填 0填全 1;检验和字段为 0 表示“没有计算检验和”(5.2)
81非持续连接取 N 个对象只要 N + 1 个 RTT每个对象都要“握手 1 RTT + 请求响应 1 RTT”,串行共 2(N + 1) 个 RTT
82主机向本地域名服务器发的也是迭代查询主机 → 本地:递归;本地 → 根、顶级、权限:通常迭代(2010-40)
83条件 GET 时对象没改,服务器返回 200 和空主体返回 304 Not Modified,不带实体主体(6.5)
84SMTP 可以直接传送二进制附件SMTP 只能传 7 位 ASCII,附件要用 MIME 编码(如 base64)
85POP3、IMAP 用 UDP都用 TCP:110、143
86FTP 的数据连接和控制连接都保持整个会话控制连接保持整个会话;数据连接每传一个文件建一条(2023-47)
87冲突域要把交换机与路由器之间的链路也算上官方答案口径不计入(2020-35)
88IPv6 分组太大时,途中路由器可以分片只由源点分片;路由器丢弃并发 ICMPv6“分组太大”
89网卡按组播 MAC 收下帧,就一定是自己加入的组32 个组地址共用一个 MAC,还要在 IP 层按组地址过滤
90MAC 地址和 IP 地址一路都不变MAC 地址每过一个路由器换一次;IP 地址一路不变(NAT 除外)(0.4)
91RIP 收到距离变大的通告可以不理会下一跳相同时必须按新消息更新,即使变大(7.3 模拟 2)
92再分片后最后一片的 MF 一定是 0原分片 MF = 1 时,切出的各片 MF 都是 1;片偏移从原分片偏移接着算(7.4 模拟 2)
93聚合块里有没用的地址无所谓发往空闲地址的分组可能在 ISP 与边界路由器之间兜圈直到 TTL 为 0,要加丢弃路由(7.2 模拟 2)
94按端口划分 VLAN 时,同一集线器下的主机可以分进不同 VLAN它们占用交换机的同一个端口,只能在同一个 VLAN(7.5 模拟 2)
95OSPF 的链路状态通告洪泛到整个自治系统划分区域后只在本区域内洪泛,区域之间由区域边界路由器交换汇总信息(7.3 预测小题)
96收到 MF = 0 的分片,就说明这个数据报收齐了MF = 0 只说明它是最后一片(或根本没分片);还要检查从偏移 0 起各片首尾相接、没有缺口(4.2 判定表)
97片偏移 = 0 的分组一定没有分过片MF = 1、偏移 0 是第一片;MF = 0 且偏移 0 才是没分过片的完整数据报(4.2)
98RTT 里已经包含了数据帧和确认帧的发送时延本讲义口径:RTT = 往返传播时延;数据帧发送 T_D、确认帧发送 T_A 另外加,停等周期 = T_D + RTT + T_A(1.3)
994 相位调制时,2400 b/s 的波特率也是 2400 Baud每个码元携带 log24 = 2 bit,波特率 = 2400 ÷ 2 = 1200 Baud(2011-34)
100SYN 报文段可以顺便携带数据教材和真题口径:SYN = 1 的报文段不能携带数据,但要消耗 1 个序号;第三次握手的 ACK 可以带数据,不带就不消耗序号(5.4)
101TIME-WAIT 状态总是出现在客户端出现在主动关闭的一方;服务器先发 FIN 时,TIME-WAIT 在服务器(5.4)
102TCP 面向连接,所以同一条连接的报文段走同一条路径、不会乱序网络层仍是数据报服务,各分组独立选路、可能乱序到达;是 TCP 在接收端按序号重排(5.1 两种服务)
103本地域名服务器迭代解析任何域名,最多都是 4 次按域名层数数:www.abc.xyz.com 最多 4 次(2016-40),mail.cs.pku.edu.cn 最多 5 次;缓存命中时 0 次(6.2)
104组播 MAC = 01-00-5E 后面直接抄 IP 地址的后 3 个字节只取低 23 位,第 2 字节的最高位要丢掉:230.139.200.7 → 01-00-5E-0B-C8-07(4.10)
105移动结点到了外地网络,通信对方就改用它的转交地址对方始终只用永久地址(归属地址);转交地址只出现在归属代理到外地代理的隧道外层首部里(4.11)
106主机与 DHCP 服务器不在同一网络时,主机直接单播给服务器主机仍然广播 DISCOVER;由路由器上的 DHCP 中继代理单播转发给服务器,并填入 giaddr,服务器据此选地址池(4.6)
107DHCP 租期快到期了才去续约用到一半(T1 = 0.5 倍租期)就单播向原服务器续约;到 T2 = 0.875 倍仍无应答才改用广播(4.6)

8.62009—2026 年计网综合题检索表

年份题号内容题型
200947子网划分、R1 路由表(特定主机、默认路由)、R2 聚合路由①
201047CSMA/CD 检测冲突时间、停等有效速率④
201147以太网帧抓包:服务器 IP、网关 MAC、ARP、HTTP 的 RTT、NAT 改字段③ ⑦
2012475 个 IP 分组抓包:三次握手、填充、已收字节数、途经路由器数③
201347两个 AS:R2 路由表聚合、最长前缀、BGP①
201442、43OSPF 链路状态表 → 图的存储、Dijkstra;R1 路由表、TTL、LSI 增加默认路由② ①
201547DHCP 可分配范围、Discover 地址、ARP 第一帧、网关配错⑦
201641TCP:第二次握手、第 8 个确认时的窗口、窗口为 0 时序号与速率、释放时间⑥
201747GBN 双向捎带确认:已收帧、可发帧、重发帧、信道利用率⑤
201847广播地址、子网地址、可接主机数;分片①
201947设备选择、接口配 IP、NAT、子网广播④
202047两级 NAT:静态映射表、分组经过各路由器后的地址⑦
202147DNS 封装、交换表内容、H2 收到的帧⑦
202247设备选择、CSMA/CD 最远距离、DHCP 发现报文、802.11 地址④
202347FTP 两条连接、序号、拥塞窗口、传输时间与速率⑥
202447RIP/OSPF 选择、TTL、RIP 收敛时间、eBGP/iBGP、BGP 选路②
202547卫星链路时延与吞吐量、GBN 窗口与序号位数、变长子网⑤ ①
202647TCP:握手确认号、cwnd 与发送窗口、挥手报文、完成时间⑥

8.7接下来怎么复习

  1. 第一遍(学):按第 0~6 篇顺序读,每节的真题卡先自己做再看解析;子网、CRC、编码、窗口、拥塞窗口都有小工具,算完用它验证。
  2. 第二遍(练):做每篇末尾的“本篇真题闯关”;按第 7 篇逐类把 19 道综合题完整写一遍,对照“答题卡这样写”,再做两道模拟大题、预测小题和“条件一变”。
  3. 第三遍(考):用 8.8 的年份网格,限时做 2021—2026 年的计网部分(8 道选择 + 1 道综合,约 35 分钟),再做 7.9 的三套整卷和第 9 篇的三套 25 分限时卷(9.4 ~ 9.6,带计时和自动判分);错题回炉。
  4. 考前一周:只看 8.3 公式、8.4 速查、8.5 易错清单和各篇末尾的自测;再用 9.7 的知识点细目表逐条打勾,没把握的点回到对应小节。

8.8按年份刷真题:2009—2026 年计算机网络全部 163 题

下面每一行是一年,每个按钮是一道题(选择题标题号,红框粗体是综合题)。点开后在弹窗里作答:选择题点选项立即判对错并给出讲解,综合题先自己在纸上写,再展开分步解答并自评。

做题记录只存在你这台电脑的浏览器里(换浏览器或清除网站数据会丢失)。讲解是本讲义自己写的,答案以本机题库为准;2026 年真题的流传版本个别题面有出入(如 2026-37 缺少 R1 的路由表),已在讲解中注明。

最后一句话

计网的题看起来花样多,其实只在反复问三件事:分组要去哪(地址与路由)、每一段怎么交给下一站(封装与 MAC、ARP、NAT)、发多快多久(时延、窗口、拥塞控制)。拿到题先问自己问的是哪一件,再翻对应的那一篇。

第 9 篇 · 满分冲刺

满分冲刺:命题规律、冷点专项、概念辨析、计算专练与全真模拟

前六篇解决“会不会”,第 7、8 篇解决“会不会做大题、考前查什么”,这一篇解决“稳不稳”。计网从 21 分到 25 分,差的不是新知识,而是四件事:单位和口径一个不错、Ⅰ/Ⅱ/Ⅲ 组合题每一条都判对、考纲有而真题少的点也练过、计算题按固定步骤一步不漏。本篇先用 18 年真题的统计说清命题规律,再给出冷点专项、概念辨析、计算题满分专练和三套 25 分全真模拟卷,最后附一张可以逐条打勾的全书知识点细目表。

用法:每道题都可以直接点选项判对错;模拟卷先作答、再交卷计分建议用时:一轮复习后 6 ~ 8 小时

9.0从 21 分到 25 分:满分差在哪里

能考到 21 分的同学,知识点基本都学过。剩下的 4 分,几乎全丢在下面四个地方:

丢分的地方典型表现本书对策
① 单位与口径K 是 103 还是 210;B 和 bit 混用;“RTT”里算不算握手;“至少多少时间”从哪一刻算起;王道和谢希仁的口径不同(如快恢复 cwnd 加不加 3);“可分配地址”要不要减 20.2 单位;本篇 9.3 单位口径总表
② 组合题与反问Ⅰ/Ⅱ/Ⅲ/Ⅳ 判对三个照样 0 分;“错误的是”“不可能的是”看成“正确的是”。2025 年一年就有 2 道组合题本篇 9.2 概念辨析专练
③ 冷点、从未考过的考纲点组播、移动 IP、静态路由、CSMA 三种坚持、令牌传递、RTO 计算、MIME、FTP 主动 / 被动、HTTP 状态码——18 年里一次都没考过,却都写在考纲里本篇 9.1 专项;4.10、4.11
④ 计算题和综合题的细节分分片忘了把数据取 8 的倍数;子网的“块大小”算错一位;cwnd 到门限那一轮多翻了一倍;综合题只写结果不写依据本篇 9.3 计算专练;第 7 篇评分细则;本篇三套模拟卷的评分表

18 年的选择题落在哪里

091011121314151617181920212223242526合计体系结构2009 年 · 体系结构:1 道选择题12010 年 · 体系结构:2 道选择题22011 年 · 体系结构:1 道选择题12012 年 · 体系结构:1 道选择题12013 年 · 体系结构:2 道选择题22014 年 · 体系结构:1 道选择题12015 年 · 体系结构:0 道选择题2016 年 · 体系结构:1 道选择题12017 年 · 体系结构:1 道选择题12018 年 · 体系结构:0 道选择题2019 年 · 体系结构:1 道选择题12020 年 · 体系结构:2 道选择题22021 年 · 体系结构:1 道选择题12022 年 · 体系结构:1 道选择题12023 年 · 体系结构:1 道选择题12024 年 · 体系结构:1 道选择题12025 年 · 体系结构:1 道选择题12026 年 · 体系结构:1 道选择题119物理层2009 年 · 物理层:1 道选择题12010 年 · 物理层:0 道选择题2011 年 · 物理层:1 道选择题12012 年 · 物理层:1 道选择题12013 年 · 物理层:1 道选择题12014 年 · 物理层:1 道选择题12015 年 · 物理层:1 道选择题12016 年 · 物理层:1 道选择题12017 年 · 物理层:1 道选择题12018 年 · 物理层:1 道选择题12019 年 · 物理层:1 道选择题12020 年 · 物理层:0 道选择题2021 年 · 物理层:1 道选择题12022 年 · 物理层:1 道选择题12023 年 · 物理层:1 道选择题12024 年 · 物理层:1 道选择题12025 年 · 物理层:0 道选择题2026 年 · 物理层:1 道选择题115数据链路层2009 年 · 数据链路层:3 道选择题32010 年 · 数据链路层:1 道选择题12011 年 · 数据链路层:2 道选择题22012 年 · 数据链路层:2 道选择题22013 年 · 数据链路层:3 道选择题32014 年 · 数据链路层:3 道选择题32015 年 · 数据链路层:3 道选择题32016 年 · 数据链路层:2 道选择题22017 年 · 数据链路层:1 道选择题12018 年 · 数据链路层:2 道选择题22019 年 · 数据链路层:2 道选择题22020 年 · 数据链路层:3 道选择题32021 年 · 数据链路层:0 道选择题2022 年 · 数据链路层:0 道选择题2023 年 · 数据链路层:3 道选择题32024 年 · 数据链路层:3 道选择题32025 年 · 数据链路层:2 道选择题22026 年 · 数据链路层:2 道选择题237网络层2009 年 · 网络层:0 道选择题2010 年 · 网络层:3 道选择题32011 年 · 网络层:2 道选择题22012 年 · 网络层:3 道选择题32013 年 · 网络层:0 道选择题2014 年 · 网络层:0 道选择题2015 年 · 网络层:1 道选择题12016 年 · 网络层:3 道选择题32017 年 · 网络层:3 道选择题32018 年 · 网络层:2 道选择题22019 年 · 网络层:1 道选择题12020 年 · 网络层:0 道选择题2021 年 · 网络层:3 道选择题32022 年 · 网络层:3 道选择题32023 年 · 网络层:3 道选择题32024 年 · 网络层:0 道选择题2025 年 · 网络层:2 道选择题22026 年 · 网络层:3 道选择题332传输层2009 年 · 传输层:2 道选择题22010 年 · 传输层:1 道选择题12011 年 · 传输层:2 道选择题22012 年 · 传输层:0 道选择题2013 年 · 传输层:1 道选择题12014 年 · 传输层:2 道选择题22015 年 · 传输层:1 道选择题12016 年 · 传输层:0 道选择题2017 年 · 传输层:1 道选择题12018 年 · 传输层:1 道选择题12019 年 · 传输层:2 道选择题22020 年 · 传输层:2 道选择题22021 年 · 传输层:3 道选择题32022 年 · 传输层:2 道选择题22023 年 · 传输层:0 道选择题2024 年 · 传输层:2 道选择题22025 年 · 传输层:1 道选择题12026 年 · 传输层:0 道选择题23应用层2009 年 · 应用层:1 道选择题12010 年 · 应用层:1 道选择题12011 年 · 应用层:0 道选择题2012 年 · 应用层:1 道选择题12013 年 · 应用层:1 道选择题12014 年 · 应用层:1 道选择题12015 年 · 应用层:2 道选择题22016 年 · 应用层:1 道选择题12017 年 · 应用层:1 道选择题12018 年 · 应用层:2 道选择题22019 年 · 应用层:1 道选择题12020 年 · 应用层:1 道选择题12021 年 · 应用层:0 道选择题2022 年 · 应用层:1 道选择题12023 年 · 应用层:0 道选择题2024 年 · 应用层:1 道选择题12025 年 · 应用层:2 道选择题22026 年 · 应用层:1 道选择题118颜色越深 = 当年该层选择题越多(空格 = 0 道)。每年计网选择题 8 道;按每题讲解的主归属小节统计。123道 / 年
图 9-1 2009 ~ 2026 年计网选择题按层分布。数据链路层和网络层合计 69 道,几乎占一半;每年各层的题数在 0 ~ 3 之间波动,但任何一层最多只连续空过两年(链路层 2021—2022、网络层 2013—2014),而链路层空了两年后,2023 年一下子出了 3 道——哪一层都不能放。
层(本书篇)18 年选择题平均每年最近 6 年(2021 ~ 2026)
体系结构191.16
物理层150.85
数据链路层372.110
网络层321.814
传输层231.38
应用层181.05

两个规律值得记住:① 计算题比例高——链路层的窗口与利用率、CSMA/CD 与 802.11 的时间、网络层的子网与分片、传输层的序号与 cwnd,几乎每年都有 3 ~ 4 道要动笔算的选择题,这正是 9.3 专门练计算的原因;② 组合题不多但在回升——18 年共 9 道(约 6%),2025 年就有 2 道。

综合题(47 题)的轮换规律

091011121314151617181920212223242526最近一次IP 地址规划与路由表2009 年 · IP 地址规划与路由表:2009-47(主)主2010 年 · IP 地址规划与路由表:没考2011 年 · IP 地址规划与路由表:没考2012 年 · IP 地址规划与路由表:没考2013 年 · IP 地址规划与路由表:2013-47(主)主2014 年 · IP 地址规划与路由表:2014-43(主)主2015 年 · IP 地址规划与路由表:没考2016 年 · IP 地址规划与路由表:没考2017 年 · IP 地址规划与路由表:没考2018 年 · IP 地址规划与路由表:2018-47(主)主2019 年 · IP 地址规划与路由表:没考2020 年 · IP 地址规划与路由表:没考2021 年 · IP 地址规划与路由表:没考2022 年 · IP 地址规划与路由表:没考2023 年 · IP 地址规划与路由表:没考2024 年 · IP 地址规划与路由表:没考2025 年 · IP 地址规划与路由表:2025-47(兼)兼2026 年 · IP 地址规划与路由表:没考2018路由算法与路由协议2009 年 · 路由算法与路由协议:没考2010 年 · 路由算法与路由协议:没考2011 年 · 路由算法与路由协议:没考2012 年 · 路由算法与路由协议:没考2013 年 · 路由算法与路由协议:2013-47(兼)兼2014 年 · 路由算法与路由协议:2014-42(主)、2014-43(兼)主2015 年 · 路由算法与路由协议:没考2016 年 · 路由算法与路由协议:没考2017 年 · 路由算法与路由协议:没考2018 年 · 路由算法与路由协议:没考2019 年 · 路由算法与路由协议:没考2020 年 · 路由算法与路由协议:没考2021 年 · 路由算法与路由协议:没考2022 年 · 路由算法与路由协议:没考2023 年 · 路由算法与路由协议:没考2024 年 · 路由算法与路由协议:2024-47(主)主2025 年 · 路由算法与路由协议:没考2026 年 · 路由算法与路由协议:没考2024报文首部分析(抓包)2009 年 · 报文首部分析(抓包):没考2010 年 · 报文首部分析(抓包):没考2011 年 · 报文首部分析(抓包):2011-47(主)主2012 年 · 报文首部分析(抓包):2012-47(主)主2013 年 · 报文首部分析(抓包):没考2014 年 · 报文首部分析(抓包):没考2015 年 · 报文首部分析(抓包):没考2016 年 · 报文首部分析(抓包):没考2017 年 · 报文首部分析(抓包):没考2018 年 · 报文首部分析(抓包):没考2019 年 · 报文首部分析(抓包):没考2020 年 · 报文首部分析(抓包):没考2021 年 · 报文首部分析(抓包):没考2022 年 · 报文首部分析(抓包):没考2023 年 · 报文首部分析(抓包):没考2024 年 · 报文首部分析(抓包):没考2025 年 · 报文首部分析(抓包):没考2026 年 · 报文首部分析(抓包):没考2012局域网、设备与介质访问2009 年 · 局域网、设备与介质访问:没考2010 年 · 局域网、设备与介质访问:2010-47(主)主2011 年 · 局域网、设备与介质访问:没考2012 年 · 局域网、设备与介质访问:没考2013 年 · 局域网、设备与介质访问:没考2014 年 · 局域网、设备与介质访问:没考2015 年 · 局域网、设备与介质访问:没考2016 年 · 局域网、设备与介质访问:没考2017 年 · 局域网、设备与介质访问:没考2018 年 · 局域网、设备与介质访问:没考2019 年 · 局域网、设备与介质访问:2019-47(主)主2020 年 · 局域网、设备与介质访问:没考2021 年 · 局域网、设备与介质访问:没考2022 年 · 局域网、设备与介质访问:2022-47(主)主2023 年 · 局域网、设备与介质访问:没考2024 年 · 局域网、设备与介质访问:没考2025 年 · 局域网、设备与介质访问:没考2026 年 · 局域网、设备与介质访问:没考2022链路层可靠传输与利用率2009 年 · 链路层可靠传输与利用率:没考2010 年 · 链路层可靠传输与利用率:没考2011 年 · 链路层可靠传输与利用率:没考2012 年 · 链路层可靠传输与利用率:没考2013 年 · 链路层可靠传输与利用率:没考2014 年 · 链路层可靠传输与利用率:没考2015 年 · 链路层可靠传输与利用率:没考2016 年 · 链路层可靠传输与利用率:没考2017 年 · 链路层可靠传输与利用率:2017-47(主)主2018 年 · 链路层可靠传输与利用率:没考2019 年 · 链路层可靠传输与利用率:没考2020 年 · 链路层可靠传输与利用率:没考2021 年 · 链路层可靠传输与利用率:没考2022 年 · 链路层可靠传输与利用率:没考2023 年 · 链路层可靠传输与利用率:没考2024 年 · 链路层可靠传输与利用率:没考2025 年 · 链路层可靠传输与利用率:2025-47(主)主2026 年 · 链路层可靠传输与利用率:没考2025TCP 连接、流量与拥塞2009 年 · TCP 连接、流量与拥塞:没考2010 年 · TCP 连接、流量与拥塞:没考2011 年 · TCP 连接、流量与拥塞:没考2012 年 · TCP 连接、流量与拥塞:没考2013 年 · TCP 连接、流量与拥塞:没考2014 年 · TCP 连接、流量与拥塞:没考2015 年 · TCP 连接、流量与拥塞:没考2016 年 · TCP 连接、流量与拥塞:2016-41(主)主2017 年 · TCP 连接、流量与拥塞:没考2018 年 · TCP 连接、流量与拥塞:没考2019 年 · TCP 连接、流量与拥塞:没考2020 年 · TCP 连接、流量与拥塞:没考2021 年 · TCP 连接、流量与拥塞:没考2022 年 · TCP 连接、流量与拥塞:没考2023 年 · TCP 连接、流量与拥塞:2023-47(主)主2024 年 · TCP 连接、流量与拥塞:没考2025 年 · TCP 连接、流量与拥塞:没考2026 年 · TCP 连接、流量与拥塞:2026-47(主)主2026一次访问的全过程2009 年 · 一次访问的全过程:没考2010 年 · 一次访问的全过程:没考2011 年 · 一次访问的全过程:2011-47(兼)兼2012 年 · 一次访问的全过程:没考2013 年 · 一次访问的全过程:没考2014 年 · 一次访问的全过程:没考2015 年 · 一次访问的全过程:2015-47(主)主2016 年 · 一次访问的全过程:没考2017 年 · 一次访问的全过程:没考2018 年 · 一次访问的全过程:没考2019 年 · 一次访问的全过程:没考2020 年 · 一次访问的全过程:2020-47(主)主2021 年 · 一次访问的全过程:2021-47(主)主2022 年 · 一次访问的全过程:没考2023 年 · 一次访问的全过程:没考2024 年 · 一次访问的全过程:没考2025 年 · 一次访问的全过程:没考2026 年 · 一次访问的全过程:没考2021蓝格“主” = 当年综合题主要考这一类;灰格“兼” = 综合题的某一问涉及这一类。2014 年有 42、43 两道计网综合题。
图 9-2 计网综合题的题型 × 年份。右列是这一类最近一次作为主考点的年份,红字表示已经 10 年以上没有作为主考点出现。
  • “报文首部分析(抓包)”只在 2011、2012 年出过,之后 14 年没有作为主考点——它把 IP 首部、TCP 首部、分片、TTL、序号确认号一起考,最能区分“真懂”和“背结论”,回归的可能性不小。本篇模拟卷 A 的 47 题就是这一类。
  • “TCP 连接、流量与拥塞”(2016、2023、2026)和“路由算法与路由协议”(2014、2024)近年刚考过;“一次访问的全过程”(2015、2020、2021)已有 5 年没考,本篇模拟卷 B 的 47 题是这一类;“IP 地址规划与路由表”是出现最多的题型,2018 年后没有作为主考点出现,本篇模拟卷 C 的 47 题是这一类。
  • 不管哪一类,47 题几乎都会顺带考一两问“子网 / 路由表”或“TCP 序号 / 时间”——这两样是综合题的“通用零件”。

2027 年值得重点准备的点

考点真题情况为什么值得准备本书位置
IP 组播(组播地址、组播 MAC 映射)从未考过考纲明文两条;地址映射能出成计算题4.10、9.1 ①
移动 IP从未考过考纲明文两条;名词、地址、通信过程都适合出选择题4.11、9.1 ②
静态 / 默认路由、层次路由静态路由从未考;层次路由的思想只在 2026-38(OSPF 区域)出现过考纲“路由算法”的第一条和最后一条4.8、9.1 ③
ALOHA、CSMA 三种坚持、令牌传递、信道划分从未单独考过(信道划分只在 2013-36 作选项)介质访问控制三大类只考了 CSMA/CD、CSMA/CA 和 CDMA3.5、3.4、9.1 ④
PPP 与广域网从未作为主考点(2012-33、2014-40 只作选项)考纲单列“广域网:PPP 协议”3.7、9.1 ⑤
RTO 计算与 Karn 算法从未考过TCP 可靠传输里唯一没考过的计算5.5、9.1 ⑥
TCP 状态机只有 2021-38 一次状态名就是选择题的字眼,常与 TIME-WAIT 时间一起考5.4、9.1 ⑦
IPv6只有 2023-40 一次考纲明文“主要特点、地址”;零压缩、首部、分片都好出题4.7、9.1 ⑧
SDN、网络层拥塞控制、异构网络互连SDN 只有 2022-37 一次;另两条从未2022 年起进入考纲的新条目4.1、9.1 ⑨
MIME、FTP 主动 / 被动、HTTP 状态码与方法MIME、主被动、状态码从未考;HTTP 方法只有 2015-40应用层考纲明文6.3 ~ 6.5、9.1 ⑩
CDMA、ICMP、组帧、传输介质CDMA 2014 后、ICMP 2012 后未考;组帧、介质各只考过一次“冷了很久”的经典点,回来时往往换新问法9.1 ⑪
这一篇怎么用
  • 一轮学完以后做 9.1、9.2:做错的题点“回到正文”,把那一节的“易错”框重读一遍。
  • 二轮用 9.3 计算专练:每类先背“固定步骤”和“单位口径”,再限时做变式,最后对照“常见错法”找自己错在哪一步。
  • 考前四周做三套模拟卷,每套限时 35 分钟:8 道选择题 15 分钟、47 题 20 分钟。选择题可以直接点选项(先只记下选择),点“交卷”后统一判分、列出错题,记录保存在本机浏览器。选择题全对、47 题 8 分以上,才算达到满分水平。
  • 考前一周用 9.7 细目表逐条自查:能说出结论和理由就勾上;勾不上的回原文。
  • 本篇所有题目都是原创数据,答案和每个干扰项的来历都由程序核对过(00_三书精修/verify/09/p9/)。

9.1考纲有、真题少:冷点与新点专项

下面 11 组考点,要么 18 年里一次都没考过,要么只考过一次、或者已经冷了十年以上。每组先说“为什么可能考、会怎么考”,再给 2 ~ 4 道按 408 风格自编的选择题。题目全部是原创数据(没有与正文例题、第 7 篇训练营重复),答案和每个干扰项“错在哪一步”都由程序核对过(verify/09/p9/new_topics.py)。建议限时每题 2 分钟,直接点选项就能判对错并展开解析。

① IP 组播:组播地址、组播 MAC、与单播的份数对比

为什么可能考:考纲明文“组播的概念、IP 组播地址”两条,18 年从未出题。会怎么考:给组播 IP 求以太网组播 MAC(计算题);组播与单播、广播的区别;组播地址的“规矩”(只能作目的、只用 UDP、224.0.0.x 不转发);数一数单播和组播各要传多少份。复习:4.10 IP 组播。

专项 1组播 MAC原创
IP 组播地址 228.203.15.77 映射成的以太网组播 MAC 地址是( )。
  • A. 01-00-5E-CB-0F-4D
  • B. 01-00-5E-4B-15-77
  • C. 01-00-5E-0B-0F-4D
  • D. 01-00-5E-4B-0F-4D
展开解析

D组播 MAC = 01-00-5E + 0 + 组播 IP 地址的低 23 位。

  1. 第 2 字节 203 = 1100 1011,最高位 1 属于被丢掉的 5 位,剩下 100 1011 = 0x4B。
  2. 第 3、4 字节照抄,但要换成十六进制:15 = 0x0F,77 = 0x4D。
  3. 拼起来:01-00-5E-4B-0F-4D。
  • A 错第 2 字节 203 = 0xCB 原样写进去了,没有去掉它的最高位——MAC 里只放得下 IP 的低 23 位,第 2 字节最高位不在其中。
  • B 错第 3、4 字节把十进制 15、77 直接当十六进制写了;MAC 地址是十六进制,15 = 0x0F、77 = 0x4D。
  • C 错0x0B = 203 & 0x3F,相当于把第 2 字节的高 2 位都去掉了;实际只丢 1 位(低 23 位 = 第 2 字节低 7 位 + 后两字节)。
  • D 对第 2 字节去掉最高位得 0x4B,后两字节 0x0F、0x4D。

先把第 2 字节写成 8 位二进制,划掉最高位;后两字节换成十六进制照抄。

复习:回到正文。

专项 2组播的规矩原创
下列关于 IP 组播的叙述中,错误的是( )。
  • A. 组播数据报的源地址可以是 D 类地址
  • B. 目的地址为 224.0.0.1 的分组不会被路由器转发到其他网络
  • C. 组播通信只能使用 UDP,不能使用 TCP
  • D. 一个以太网组播 MAC 地址对应 32 个 IP 组播地址
展开解析

AD 类地址只能作目的地址;源地址必须是发送主机自己的单播地址。

  • A 选组播地址标识的是“一组接收者”,只能出现在目的地址字段;源地址要写发送者自己的单播地址,否则接收者无法回复,ICMP 也无从发回。
  • B 不选正确:224.0.0.0 ~ 224.0.0.255 是本地网络专用的组播地址(224.0.0.1 = 本网所有主机),路由器不转发。
  • C 不选正确:TCP 是一对一的连接,要和每个接收者分别握手、确认、重传,做不到“一份数据交给一组”。
  • D 不选正确:D 类地址可变部分 28 位,MAC 里只放低 23 位,丢掉 5 位,25 = 32 个 IP 组播地址共用一个 MAC。

复习:回到正文。

专项 3单播与组播的份数原创
如下图,源 S 要把同一个分组送给 3 个局域网中的 6 个接收者(一个局域网上发送一次,网上所有站都能收到)。若用单播(对每个接收者各发一份),所有链路(含局域网)上传送的分组总数是多少?若用组播(只在分岔处复制)又是多少?( )
源 SR1R2R3LAN A:2 个接收者LAN B:3 个接收者LAN C:1 个接收者
  • A. 6,6
  • B. 12,6
  • C. 18,1
  • D. 18,6
展开解析

D单播 6 个接收者各走 3 段:18;组播每段链路只走 1 份,共 6 段:6。

  1. 单播:每个接收者的分组都要走 S—R1、R1—Rx、Rx—LAN 三段,6 × 3 = 18(局域网上给两个接收者的单播也是发两次)。
  2. 组播:S—R1 1 份;R1 复制给 R2、R3 各 1 份;R2 向 LAN A、R3 向 LAN B 和 LAN C 各发 1 份,共 1 + 2 + 3 = 6 份。
  • A 错6 只是单播在 S—R1 这一段上的份数,没有把后面两段也算上。
  • B 错12 = 6 × 2,漏掉了最后一段局域网:路由器把分组发到局域网上也是一次传送。
  • C 错组播的 1 份只是源 S 发出的那一份;分组在 R1、R3 处被复制,每一段需要的链路上都要传 1 份。
  • D 对单播 18,组播 6。

复习:回到正文。

② 移动 IP:两个地址、两个代理、一条隧道

为什么可能考:考纲“移动 IP 的概念、移动 IP 通信过程”,从未出题。会怎么考:名词对应;某一段分组的源、目的地址(尤其是隧道的外层首部);谁封装、谁拆封;移动结点回复时走不走归属代理。复习:4.11 跟我填一遍。

专项 4隧道的外层首部原创
移动结点 MN 的永久地址为 172.20.5.9(归属网络 172.20.5.0/24,归属代理 HA 的地址为 172.20.5.1)。MN 移动到外地网络,外地代理 FA 的地址 61.130.7.1 就是它的转交地址。主机 C(202.96.1.8)向 MN 发送的分组被 HA 截获后经隧道转发,隧道中外层 IP 首部的源地址和目的地址分别是( )。
  • A. 202.96.1.8,172.20.5.9
  • B. 172.20.5.1,61.130.7.1
  • C. 172.20.5.1,172.20.5.9
  • D. 202.96.1.8,61.130.7.1
展开解析

B外层首部是 HA 新加的:源 = HA,目的 = 转交地址。

  • A 错这是里层(原来的)首部:C 发给 MN 的永久地址。它被原样装在隧道里面,外层首部要另外写。
  • B 对外层源地址 = 做封装的 HA,外层目的地址 = 转交地址(FA)。
  • C 错外层目的地址若写永久地址 172.20.5.9,分组又会被路由回归属网络,隧道就失去了意义;隧道的终点是转交地址。
  • D 错外层首部是 HA 封装时新加的,源地址是 HA 自己,不是最初的发送者 C。

复习:回到正文。

专项 5通信过程原创
下列关于移动 IP 的叙述中,正确的是( )。
  • A. 外地代理收到经隧道送来的数据报后拆封,再交付给移动结点
  • B. 通信对方必须知道移动结点的转交地址才能与之通信
  • C. 移动结点在外地网络向对方发送分组时,源地址填转交地址
  • D. 移动结点回到归属网络后,发给它的分组仍要由归属代理经隧道转发
展开解析

A封装在 HA,拆封在 FA;对方只用永久地址。

  • A 对归属代理封装、外地代理拆封后交给移动结点。
  • B 错对方始终只用永久地址,根本不知道转交地址;正是这一点让移动对通信对方“透明”。
  • C 错移动结点发出的分组源地址仍是永久地址,这样对方的连接(按 IP + 端口识别)才不会断。
  • D 错回到归属网络后,移动结点向归属代理注销转交地址,此后按普通方式收发,不再需要隧道。

复习:回到正文。

③ 静态路由、默认路由与层次路由

为什么可能考:考纲“路由算法”的第一条(静态与动态)和最后一条(层次路由),静态路由从未考过,层次路由的思想只在 2026-38 以“OSPF 区域”出现。会怎么考:给几条静态路由配置判断转发方向(本质还是最长前缀匹配);小网络该怎样配置路由;分层后路由表少了多少项。复习:4.8 静态路由、层次路由。

专项 6静态路由原创
路由器 R 上手工配置了三条静态路由:
ip route 10.5.0.0 255.255.0.0 172.31.1.2
ip route 10.5.64.0 255.255.192.0 172.31.2.2
ip route 0.0.0.0 0.0.0.0 172.31.3.2
R 收到一个目的地址为 10.5.100.1 的分组,转发的下一跳是( )。
  • A. 172.31.1.2
  • B. 172.31.2.2
  • C. 172.31.3.2
  • D. 丢弃该分组,并发送 ICMP 终点不可达
展开解析

B静态路由也按最长前缀匹配:/18 比 /16 长。

  1. 255.255.192.0 = /18,第 3 字节块大小 64,10.5.64.0/18 覆盖 10.5.64.0 ~ 10.5.127.255,100 在其中。
  2. 10.5.100.1 同时匹配 /16、/18 和默认路由,取最长的 /18 → 下一跳 172.31.2.2。
  • A 错10.5.0.0/16 确实匹配,但还有更长的 /18 也匹配;按最长前缀匹配不能停在第一条。
  • B 对/18 匹配且最长。
  • C 错默认路由的前缀长度为 0,只有在没有任何其他表项匹配时才用。
  • D 错有表项匹配(甚至有默认路由兜底)就不会因“不可达”丢弃;只有既没有匹配项又没有默认路由时才这样做。

复习:回到正文。

专项 7层次路由的表项原创
某自治系统有 5 个区域,每个区域有 30 个网络。不分层时,每台路由器的路由表要为每个网络记一项;分层后,路由器对本区域的网络逐个记录,对其他每个区域只记一项。分层前后每台路由器的路由表项数分别是( )。
  • A. 30,34
  • B. 150,30
  • C. 150,34
  • D. 150,35
展开解析

C本区域 30 项 + 其他 4 个区域各 1 项 = 34 项。

  • A 错30 是“只看本区域”的项数,不是不分层的项数;不分层要记全部 150 个网络。
  • B 错30 只记了本区域的网络,其他 4 个区域没有表项,去往那里的分组就无路可走。
  • C 对不分层 5 × 30 = 150;分层 30 + 4 = 34。
  • D 错35 = 30 + 5,把自己所在的区域也多记了一条汇总;本区域已经逐个记录,不需要再汇总。

复习:回到正文。

专项 8小网络怎样配路由原创
某小型企业只有一台路由器 R,经一条链路接入 ISP;企业内部 3 个子网都直接连在 R 的接口上。下列做法中,最合适的是( )。
  • A. 在 R 上运行 OSPF,与 ISP 交换全部路由
  • B. 为 3 个内部子网各配一条静态路由,再配一条指向 ISP 的默认路由
  • C. 运行 RIP,并把到 ISP 的距离设为 16
  • D. 只配一条指向 ISP 的默认路由
展开解析

D直连网络由接口配置自动生成路由,出口只有一个,一条默认路由就够了。

  • A 错企业只有一个出口,没有选路的余地;与 ISP 交换全部因特网路由既浪费又不安全,属于“杀鸡用牛刀”。
  • B 错3 个子网直接连在 R 的接口上,配置接口地址后 R 自动生成直连路由,不需要再为它们配静态路由。
  • C 错RIP 中距离 16 表示“不可达”,这样设置等于宣布到 ISP 不通。
  • D 对直连网络自动有路由;其他所有目的地都从唯一的出口走,配一条默认路由即可。

复习:回到正文。

④ ALOHA、CSMA 三种坚持、令牌传递与信道划分

为什么可能考:考纲介质访问控制的三大类(信道划分、随机访问、轮询访问)里,真题只考过 CSMA/CD、CSMA/CA 和 CDMA;ALOHA、三种坚持、令牌传递、FDM / TDM 从未单独出题。会怎么考:根据行为描述判断是哪种坚持;ALOHA 的吞吐量;令牌传递的特点;时分复用线路的速率。复习:3.5 三种坚持、ALOHA、令牌、3.4 复用。

专项 9CSMA 的坚持方式原创
某站点采用 CSMA 协议。它监听到信道忙时不再持续监听,而是等待一段随机时间后再监听;监听到信道空闲时立即发送。该站点采用的是( )。
  • A. 非坚持 CSMA
  • B. 1-坚持 CSMA
  • C. p-坚持 CSMA
  • D. CSMA/CA
展开解析

A“忙了就走开、过一会儿再来看”是非坚持。

  • A 对忙则随机退避后再监听,闲则立即发送,正是非坚持 CSMA。
  • B 错1-坚持在信道忙时一直监听,一旦空闲立刻(以概率 1)发送,不会“走开”。
  • C 错p-坚持用于时隙信道:空闲时以概率 p 发送、以 1 − p 推迟到下一时隙,题中“空闲时立即发送”不符合。
  • D 错CSMA/CA 在信道由忙转闲时要先等 DIFS 再随机退避,不会“空闲就立即发送”。

复习:回到正文。

专项 10ALOHA 的吞吐量原创
一条 100 kb/s 的共享信道采用纯 ALOHA 协议,所有帧长 1000 bit。理论上,这条信道每秒最多能成功传送的帧数约为( )。
  • A. 18
  • B. 37
  • C. 50
  • D. 100
展开解析

A纯 ALOHA 最大吞吐率 1/(2e) ≈ 18.4%:100 帧/秒 × 0.184 ≈ 18 帧/秒。

  1. 信道满载时每秒能发 100 kb/s ÷ 1000 bit = 100 帧。
  2. 纯 ALOHA 的易损期为 2 个帧时,最大吞吐率 S = 1/(2e) ≈ 0.184,成功约 18.4 帧/秒。
  • A 对100 × 18.4% ≈ 18。
  • B 错37 ≈ 100 × 36.8%,这是时隙 ALOHA 的最大吞吐率;纯 ALOHA 易损期是时隙 ALOHA 的 2 倍,吞吐率只有一半。
  • C 错50 是把最大吞吐率当成 50%;ALOHA 不监听就发送,冲突很多,理论最大值只有 18.4%。
  • D 错100 是信道满载时的帧数,没有考虑冲突;ALOHA 中大部分时间被冲突浪费掉了。

复习:回到正文。

专项 11令牌传递原创
下列关于令牌传递协议的叙述中,正确的是( )。
  • A. 令牌环网中不会发生冲突
  • B. 轮询访问由主结点逐个询问从结点,不存在单点故障问题
  • C. 网络负载很轻时,令牌传递的效率比 CSMA 高
  • D. 令牌在环上传递时会携带数据,所以令牌本身就是数据帧
展开解析

A只有拿到令牌的站才能发送,任何时刻只有一个站在发,所以没有冲突。

  • A 对令牌只有一个,持有者才发送,从机制上避免了冲突。
  • B 错轮询协议依赖主结点,主结点一旦故障,整个网络就停了——这正是它的单点故障问题。
  • C 错负载很轻时,想发送的站也要等令牌转到自己才能发,平白多出等待时间;轻负载下 CSMA 往往“听到空闲就发”,效率更高。令牌传递的优势在重负载。
  • D 错令牌是一个不携带数据的特殊短帧,只表示“拿到它就可以发送”;站点拿到令牌后另外发送数据帧。

复习:回到正文。

专项 12时分复用线路的速率原创
4 路数字信号用同步时分复用(TDM)合成一路,每路速率 9.6 kb/s。每个 TDM 帧给每路分配一个 8 bit 的时隙,另加 1 bit 帧同步位。复用后的线路速率至少是( )。
  • A. 9.6 kb/s
  • B. 38.4 kb/s
  • C. 39.6 kb/s
  • D. 48 kb/s
展开解析

C每帧 4 × 8 + 1 = 33 bit;每路每秒要送 9600 bit,即每秒 1200 帧;33 × 1200 = 39.6 kb/s。

  1. 每路每帧送 8 bit,要达到 9.6 kb/s,每秒需要 9600 ÷ 8 = 1200 帧。
  2. 每帧长 4 × 8 + 1 = 33 bit。
  3. 线路速率 = 33 × 1200 = 39 600 b/s = 39.6 kb/s。
  • A 错9.6 kb/s 只是一路的速率;4 路合到一条线上,线路必须同时承载 4 路的数据。
  • B 错38.4 kb/s = 4 × 9.6,漏了每帧 1 bit 的同步位(每秒 1200 帧,共 1.2 kb/s)。
  • C 对33 bit/帧 × 1200 帧/秒。
  • D 错48 kb/s = (4 × 1 + 1) × 9600,相当于每帧每路只放 1 bit,于是每秒要 9600 帧、同步位开销被放大了 8 倍;题目说的是每路 8 bit 时隙。

复习:回到正文。

⑤ 广域网与 PPP 协议

为什么可能考:考纲单列“广域网:PPP 协议”,真题只在 2012-33、2014-40 把它当作选项。会怎么考:字节填充(7E、7D、控制字符);PPP 提供什么、不提供什么(不编号、不确认、不纠错);LCP 与 NCP 的分工。复习:3.7 PPP。

专项 13PPP 字节填充原创
PPP 帧的信息字段中依次有 5 个字节 4A 7D 7E 3C 7E(十六进制),在异步线路上采用字节填充后,信息字段实际发送的是( )。
  • A. 4A 7D 7D 7D 7E 3C 7D 7E
  • B. 4A 7D 5D 7D 5E 3C 7D 5E
  • C. 4A 7D 5D 7E 3C 7E
  • D. 4A 7D 7D 5E 3C 7D 5E
展开解析

B7D → 7D 5D,7E → 7D 5E;4A、3C 不小于 0x20,原样发送。

  • A 错只在 7E、7D 前面插了一个 7D、原字节不变,这是一般“字节填充”的写法;PPP 规定转义后的字节还要与 0x20 异或:7E → 5E,7D → 5D。
  • B 对7D 变成 7D 5D,两个 7E 各变成 7D 5E。
  • C 错只转义了 7D,两个 7E 没有处理;信息字段里的 7E 会被接收方当成帧定界符,帧就被截断了。
  • D 错只转义了 7E,忘了数据里的 7D 本身也要转义;接收方会把原来那个 7D 当作转义符,把紧跟的 7D 与 0x20 异或还原成 5D,数据就错了。

复习:回到正文。

专项 14PPP 提供什么原创
下列关于 PPP 协议的叙述中,正确的是( )。
  • A. PPP 帧带有序号和确认,提供可靠传输
  • B. PPP 用 LCP 建立和测试数据链路连接,用 NCP 为网络层协议配置参数
  • C. PPP 只能承载 IP 这一种网络层协议
  • D. PPP 用 CSMA/CD 解决多个站点争用链路的问题
展开解析

BLCP 管链路,NCP 管网络层;PPP 不编号、不确认,只做差错检测。

  • A 错PPP 不使用序号和确认,检出差错只丢弃;可靠传输交给上层(如 TCP)。
  • B 对LCP 负责建立、配置、测试数据链路连接,NCP 为 IP 等网络层协议协商参数(如分配 IP 地址)。
  • C 错PPP 支持多种网络层协议,帧的“协议”字段区分(如 0x0021 是 IP),每种网络层协议有对应的 NCP。
  • D 错PPP 用于点对点链路,两端各一个结点,不存在“多个站争用”,不需要介质访问控制。

复习:回到正文。

⑥ 超时重传时间 RTO 与 Karn 算法

为什么可能考:TCP 可靠传输里唯一没有考过的计算。会怎么考:给样本算新的 RTTS;第一个样本时的 RTO;重传后收到的确认该不该当样本(Karn)。口径:教材先算新的 RTTS,再用新的 RTTS 算 RTTD;RFC 6298 次序相反——下面的题都设计成两种次序结果相同,或者只用到 RTTS。复习:5.5 RTO。

专项 15加权平均往返时间原创
某 TCP 连接当前的平滑往返时间 RTTS = 30 ms,α = 1/8。新测得一个往返时间样本 46 ms,更新后的 RTTS 是( )。
  • A. 32 ms
  • B. 38 ms
  • C. 44 ms
  • D. 46 ms
展开解析

A新 RTTS = (1 − α) × 旧 RTTS + α × 新样本 = 7/8 × 30 + 1/8 × 46 = 32 ms。

  1. 7/8 × 30 = 26.25;1/8 × 46 = 5.75。
  2. 26.25 + 5.75 = 32 ms。新样本只占 1/8 的权重,所以 RTTS 只向 46 挪了一小步。
  • A 对7/8 × 30 + 1/8 × 46 = 32。
  • B 错38 是两者的算术平均,相当于 α = 1/2;教材推荐 α = 1/8。
  • C 错44 = 1/8 × 30 + 7/8 × 46,把两个权重放反了:新样本的权重是 α = 1/8,旧值是 7/8。
  • D 错直接用新样本代替了 RTTS;加权平均的目的就是不让一次偶然的样本把估计值拉走。

复习:回到正文。

专项 16第一个样本时的 RTO原创
TCP 连接建立后测得第一个往返时间样本为 40 ms。按 RTO = RTTS + 4 × RTTD(第一个样本时 RTTS 取样本值、RTTD 取样本值的一半),此时的 RTO 是( )。
  • A. 60 ms
  • B. 80 ms
  • C. 120 ms
  • D. 200 ms
展开解析

CRTTS = 40,RTTD = 20,RTO = 40 + 4 × 20 = 120 ms,即样本的 3 倍。

  • A 错60 = 40 + 20,RTTD 忘了乘 4。
  • B 错80 = 2 × 40,这是把 RTO 粗略当成“两倍 RTT”;教材公式要加上 4 倍的偏差。
  • C 对40 + 4 × 20 = 120。
  • D 错200 = 40 + 4 × 40,把 RTTD 的初值取成了样本本身;规定取样本的一半。

复习:回到正文。

专项 17Karn 算法原创
TCP 发出报文段 X 后超时,重传 X,又过了 30 ms 收到对 X 的确认。按(修正的)Karn 算法,下列做法正确的是( )。
  • A. 把 30 ms 作为新的往返时间样本
  • B. 把从第一次发送 X 到收到确认的时间作为样本
  • C. 不用这次的时间作样本;X 每重传一次,RTO 加倍
  • D. 不用这次的时间作样本,RTO 保持不变
展开解析

C重传过的报文段不采样(分不清确认对应哪一次发送),并且每重传一次 RTO 加倍。

  • A 错这个确认可能是对第一次发送的迟到确认,30 ms 可能偏小;Karn 规定重传过的报文段一律不采样。
  • B 错如果确认其实是对重传的那一份,从第一次发送算起的时间就把超时等待也算进去了,样本偏大;同样不能用。
  • C 对不采样,并在每次重传时把 RTO 加倍,直到拿到不含重传的样本后再按公式更新。
  • D 错只“不采样”而 RTO 不变,网络时延突然变大时 RTO 永远偏小、反复超时,所以修正的 Karn 算法还要把 RTO 加倍。

复习:回到正文。

⑦ TCP 状态机与 TIME-WAIT

为什么可能考:状态名只在 2021-38 考过一次,但 2022-39、2024-38 的“释放连接要多久”都离不开它。会怎么考:某一时刻双方各处于什么状态;TIME-WAIT 期间又收到 FIN 怎么办;哪一方进入 TIME-WAIT。复习:5.4 状态机、TIME-WAIT。

专项 18半关闭时的状态原创
客户 A 主动关闭 TCP 连接:A 发出 FIN 后收到了服务器 B 的确认,但 B 还有数据要发,尚未发出自己的 FIN。此时 A、B 的状态分别是( )。
  • A. FIN-WAIT-2,CLOSE-WAIT
  • B. FIN-WAIT-1,CLOSE-WAIT
  • C. TIME-WAIT,LAST-ACK
  • D. CLOSING,CLOSE-WAIT
展开解析

AA 的 FIN 已被确认 → FIN-WAIT-2;B 收到 FIN、还没发 FIN → CLOSE-WAIT(半关闭)。

  • A 对半关闭:A → B 方向已关闭,B → A 方向还能传数据。
  • B 错FIN-WAIT-1 是 A 发出 FIN、还没收到确认时的状态;收到 B 的 ACK 后 A 就进入 FIN-WAIT-2 了。
  • C 错B 发出自己的 FIN 后才进入 LAST-ACK,A 收到这个 FIN 并确认后才进入 TIME-WAIT;现在 B 还没发 FIN。
  • D 错CLOSING 是双方几乎同时发出 FIN、各自先收到对方 FIN 时的状态;本题 A 先收到的是 ACK。

复习:回到正文。

专项 19TIME-WAIT 中又收到 FIN原创
MSL = 30 s。主动关闭方 A 进入 TIME-WAIT 20 s 后,又收到对方重传的 FIN 报文段。从收到这个 FIN 的时刻起,A 至少还要经过多长时间才能进入 CLOSED?( )
  • A. 30 s
  • B. 40 s
  • C. 60 s
  • D. 80 s
展开解析

CA 重发 ACK 并重新开始 2MSL 计时:从此刻起再等 60 s。

  • A 错30 s 是 1 个 MSL;重新计时也要等满 2MSL。
  • B 错40 s = 60 − 20,是按原来的计时继续等;收到重传的 FIN 说明对方没收到最后的 ACK,A 要重发 ACK 并重新计时。
  • C 对2MSL = 60 s,从收到重传 FIN 的时刻重新算起。
  • D 错80 s = 20 + 60,是从 A 进入 TIME-WAIT 的时刻算起的;题目问的是从收到 FIN 的时刻起还要等多久,只算重新开始的那 60 s。

复习:回到正文。

⑧ IPv6:地址写法、首部与分片

为什么可能考:考纲“IPv6 的主要特点、IPv6 地址”,只在 2023-40 考过一次组合题。会怎么考:零压缩写法是否合法、最简写法;首部 40 B、没有检验和、路由器不分片;Hop Limit 对应 TTL。复习:4.7 地址写法、只在源主机分片。

专项 20零压缩是否合法原创
下列 IPv6 地址的写法中,合法的是( )。
  • A. 2001:DB8::85A3::7334
  • B. 2001:0DB8:0000:0000:8A2E:0370:7334
  • C. 2001:DB8::8A2E:370G:7334
  • D. 2001:DB8:0:0:8A2E::7334
展开解析

D写出来的 6 组 + :: 代表的 2 组 0 = 8 组,合法。

  • A 错出现了两次 ::,接收方无法确定每个 :: 各代表几组 0,所以一个地址里 :: 只能用一次。
  • B 错只有 7 组且没有 ::,少了一组;IPv6 地址必须是 8 组(或用 :: 补足)。
  • C 错“370G”中的 G 不是十六进制数字。
  • D 对2001、DB8、0、0、8A2E、7334 共 6 组,:: 代表 2 组 0,展开为 2001:0DB8:0000:0000:8A2E:0000:0000:7334。

复习:回到正文。

专项 21最简写法原创
IPv6 地址 2408:8000:0000:0000:0000:0A10:0000:00C5 的最简写法是( )。
  • A. 2408:8::A10:0:C5
  • B. 2408:8000::A10::C5
  • C. 2408:8000:0:0:0:A10:0:C5
  • D. 2408:8000::A10:0:C5
展开解析

D先去每组的前导 0,再把最长的一串连续 0 组(第 3 ~ 5 组)换成 ::。

  1. 去前导 0:2408:8000:0:0:0:A10:0:C5。
  2. 连续的 0 组有两段:第 3 ~ 5 组(3 组)和第 7 组(1 组),压缩更长的那段:2408:8000::A10:0:C5。
  • A 错8000 写成了 8:只能省略每组前面的 0,组内后面的 0 是数值的一部分,去掉就变成了另一个地址(0008)。
  • B 错用了两次 :::接收方无法判断两个 :: 各代表几组 0(写出来的只有 4 组,缺的 4 组 0 可以分成 3 + 1、2 + 2 或 1 + 3),所以不合法。
  • C 错合法,但只去了前导 0、没有压缩连续的 0 组,不是最简写法。
  • D 对去前导 0 后把最长的 3 组 0 压缩成 ::。

复习:回到正文。

专项 22IPv6 不在途中分片原创
一个长 1500 B 的 IPv6 分组到达路由器 R,下一段链路的 MTU 为 1280 B。R 的处理方式是( )。
  • A. 把分组分成两片再转发
  • B. 丢弃该分组,并向源主机发送 ICMPv6“分组太大”报文
  • C. 截去超出 MTU 的部分后转发
  • D. 把分组封装进一个 IPv4 隧道再转发
展开解析

BIPv6 只允许源主机分片;途中路由器放不下就丢弃,并告诉源主机路径 MTU。

  • A 错IPv6 的路由器不做分片,分片只在源主机进行(用分片扩展首部),这样可以减轻路由器的负担。
  • B 对丢弃并发 ICMPv6 分组太大报文,源主机据此调小分组(路径 MTU 发现)。
  • C 错网络层从不截断分组,截掉一部分数据,接收方得到的就是错误的数据。
  • D 错隧道是 IPv4 / IPv6 过渡技术,用来穿越不支持 IPv6 的网络,与 MTU 不够无关,也解决不了分组太大的问题。

复习:回到正文。

⑨ SDN、网络层拥塞控制与异构网络互连

为什么可能考:这三条是 2022 年才进入考纲的“网络层的功能”,SDN 只在 2022-37 考过接口方向,另两条从未出题。会怎么考:流表按优先级匹配(不是最长前缀);控制器与南向 / 北向接口;开环与闭环拥塞控制的区分。复习:4.1 SDN、拥塞控制、异构网络互连。

专项 23OpenFlow 流表原创
某 OpenFlow 交换机的流表如下(同时匹配多项时执行优先级最高的一项)。一个源 IP 为 10.3.3.3、目的 IP 为 10.1.2.5、TCP 目的端口为 22 的分组到达,交换机的动作是( )。
优先级匹配字段动作
10目的 IP 属于 10.1.0.0/16从端口 2 转发
30源 IP = 10.3.3.3,TCP 目的端口 = 22丢弃
20目的 IP 属于 10.1.2.0/24从端口 3 转发
0任意分组交给控制器
  • A. 从端口 2 转发
  • B. 从端口 3 转发
  • C. 丢弃
  • D. 交给控制器
展开解析

C四项中有三项匹配,优先级最高的是 30 → 丢弃。

  1. 逐项检查:优先级 10(10.1.0.0/16)匹配;30(源 10.3.3.3、端口 22)匹配;20(10.1.2.0/24)匹配;0 总是匹配。
  2. 取优先级最高的 30 → 丢弃。
  • A 错优先级 10 这一项确实匹配,但它的优先级最低(除兜底项外),还有 20、30 两项也匹配。
  • B 错这是只看目的 IP、按最长前缀匹配得到的结果;OpenFlow 的流表可以同时匹配多层字段,冲突时看优先级而不是前缀长度。
  • C 对优先级 30 的项匹配了源 IP 和端口,动作是丢弃(相当于防火墙规则)。
  • D 错交给控制器是优先级 0 的兜底项,只有其他项都不匹配时才执行。

对比:传统路由器的转发表只看目的 IP、按最长前缀匹配;SDN 的“广义转发”可以看 MAC、IP、端口等多层字段,动作也不只是“转发”,还可以丢弃、修改字段、交给控制器。

复习:回到正文。

专项 24开环与闭环原创
下列网络层拥塞控制措施中,属于闭环控制的是( )。
  • A. 设计网络时为路由器配置足够大的缓存
  • B. 建立虚电路前先检查沿途资源,不够就拒绝建立(准入控制)
  • C. 路由器检测到拥塞后向源点发送抑制分组,让它降低发送速率
  • D. 规定路由器在缓存满时丢弃哪些分组
展开解析

C闭环 = 监测 → 反馈 → 调整;只有 C 依赖运行时的拥塞反馈。

  • A 错在设计时事先考虑、运行时不看网络状态,属于开环控制。
  • B 错准入控制是在通信开始前按预先的规则决定接受与否,没有用到运行中的拥塞反馈,属于开环。
  • C 对检测到拥塞(监测)→ 发抑制分组(反馈)→ 源点降速(调整),是典型的闭环控制。
  • D 错丢弃策略是事先制定的规则,属于开环控制的设计内容。

复习:回到正文。

⑩ FTP 主动 / 被动、HTTP 状态码与方法、MIME

为什么可能考:应用层考纲明文“控制连接与数据连接”“HTTP 协议”“电子邮件格式与 MIME”,其中主被动模式、状态码、MIME 从未考过,HTTP 方法只在 2015-40 出现。会怎么考:被动模式谁连谁;条件 GET 返回什么;base64 编码后变多长;HEAD 和 GET 的区别。复习:6.3 FTP、6.5 HTTP 报文、条件 GET、6.4 MIME。

专项 25FTP 被动模式原创
FTP 客户 C 在防火墙后面,采用被动模式(PASV)从服务器 S 下载文件。数据连接的建立方式是( )。
  • A. S 用 20 号端口主动连接 C 指定的端口
  • B. C 主动连接 S 在 PASV 应答中给出的端口
  • C. C 用 21 号端口主动连接 S 的 20 号端口
  • D. 不建立数据连接,文件在控制连接上传输
展开解析

B被动模式:服务器“被动”打开一个端口等着,客户主动去连。

  • A 错这是主动模式(PORT):服务器用 20 号端口去连客户。客户在防火墙后面时外面连不进来,所以才改用被动模式。
  • B 对S 在 PASV 应答里告诉 C 一个临时端口,C 主动向它发起 TCP 连接。
  • C 错21 是服务器的控制连接端口,不是客户的端口;被动模式下数据连接也不用 S 的 20 号端口,而是 S 临时打开的端口。
  • D 错FTP 的特点就是控制和数据分开(带外传送),文件一定在数据连接上传输。

复习:回到正文。

专项 26条件 GET原创
浏览器缓存里有某网页的副本,它向服务器发出带 If-Modified-Since 首部的 GET 请求。若该网页在此时间之后没有修改过,服务器的响应是( )。
  • A. 状态码 304,不携带网页内容
  • B. 状态码 200,并在实体主体中携带整个网页
  • C. 状态码 404,不携带网页内容
  • D. 状态码 301,并携带新网页的地址
展开解析

A没改过就回 304 Not Modified,浏览器直接用缓存的副本。

  • A 对304 Not Modified,只有状态行和首部,没有实体主体。
  • B 错200 OK 并带上整个网页,是网页被修改过(或普通 GET)时的响应;没改过还重传一遍,条件 GET 就失去了意义。
  • C 错404 Not Found 表示请求的对象不存在;本题的网页存在,只是没有修改。
  • D 错301 Moved Permanently 表示网页永久搬到了 Location 首部给出的新地址,与“是否修改过”无关。

复习:回到正文。

专项 27base64 编码后的长度原创
一个 1500 B 的二进制附件用 MIME 的 base64 编码后放进邮件正文(不计换行符),编码后的长度是( )。
  • A. 1125 B
  • B. 1500 B
  • C. 2000 B
  • D. 3000 B
展开解析

Cbase64 把每 3 个字节变成 4 个字符:1500 ÷ 3 × 4 = 2000。

  1. 3 字节 = 24 位,切成 4 组 6 位,每组映射成一个可打印字符(1 字节)。
  2. 1500 B 正好 500 组,编码后 500 × 4 = 2000 B,长度变为原来的 4/3。
  • A 错1125 = 1500 × 3/4,把比例乘反了:编码后是“3 变 4”,变长而不是变短。
  • B 错MIME 编码后长度不变是对“7 位 ASCII 文本”说的;二进制数据用 base64 编码一定会变长。
  • C 对1500 × 4/3 = 2000。
  • D 错3000 = 1500 × 2,相当于每个字节写成两个十六进制字符;base64 每 6 位一个字符,效率比十六进制高。

复习:回到正文。

专项 28HTTP 方法原创
浏览器只想知道某个网页的大小和最后修改时间,而不需要网页内容本身。最合适的 HTTP 请求方法是( )。
  • A. GET
  • B. POST
  • C. PUT
  • D. HEAD
展开解析

DHEAD 只要响应的首部(Content-Length、Last-Modified 等),不要实体主体。

  • A 错GET 会把整个网页作为实体主体传回来,白白多传数据。
  • B 错POST 用于向服务器提交数据(如表单),不是用来查询网页信息的。
  • C 错PUT 是把数据上传到服务器、存为指定的对象,方向正好相反。
  • D 对HEAD 的响应与 GET 相同,但只有首部、没有实体主体。

复习:回到正文。

⑪ 冷了很久的点:CDMA、ICMP、组帧、传输介质

为什么可能考:CDMA 在 2011、2013、2014 年连考三年后再没出现;ICMP 2012 年后没考;组帧(2013-37)、传输介质(2019-34)各只考过一次。这类点回来时,往往换一种问法。复习:3.4 CDMA、4.6 ICMP、3.1 组帧、2.4 介质。

专项 29CDMA 解码原创
站点 X、Y、Z 用 CDMA 共享信道,码片序列(8 位)分别为 X = (1, −1, 1, −1, −1, 1, −1, 1)、Y = (1, 1, −1, −1, −1, −1, 1, 1)、Z = (1, 1, 1, 1, −1, −1, −1, −1),发送比特 1 用码片序列本身、发送 0 用它的反码,某个比特时间不发送则贡献全 0。接收方在连续 3 个比特时间收到叠加后的序列 (0, -2, 2, 0, 0, 2, -2, 0, 1, 3, -1, 1, -1, -3, 1, -1, 0, 0, -2, -2, 0, 0, 2, 2)。站点 Y 发送的数据是( )。
  • A. 100
  • B. 011
  • C. 10,第 3 个比特时间未发送
  • D. 第 1 个比特时间未发送,后两个比特为 10
展开解析

B把每 8 个码片与 Y 求规格化内积:−1、1、1 → 0、1、1。

  1. 码片序列 8 位,所以每 8 个数一段,分成 3 段:(0, -2, 2, 0, 0, 2, -2, 0);(1, 3, -1, 1, -1, -3, 1, -1);(0, 0, -2, -2, 0, 0, 2, 2)。
  2. 每段与 Y 求内积再除以 8:-1、1、1。
  3. 1 → 发送 1,−1 → 发送 0,0 → 未发送:Y 发送了 011。
  • A 错100 是把内积的符号读反了(−1 当 1、1 当 0),正好是 Y 真实数据 011 的反码。
  • B 对内积依次为 −1、1、1,对应 0、1、1。
  • C 错“10,第 3 个比特未发送”是用 X 的码片解出来的结果(内积 1、−1、0),站点认错了。
  • D 错这是用 Z 的码片序列解出来的结果(内积 0、1、−1),站点认错了;求谁发的数据就用谁的码片。

复习:回到正文。

专项 30不发 ICMP 差错的情况原创
路由器 R 无法转发下列分组时,不向源主机发送 ICMP 差错报告报文的是( )。
  • A. TTL 减为 0 的普通 IP 数据报
  • B. DF = 1 且长度超过下一段链路 MTU 的数据报
  • C. 目的网络不可达的普通 IP 数据报
  • D. 某个数据报的第 3 个分片(片偏移不为 0),且找不到去往目的网络的路由
展开解析

D对分片数据报,只对第一个分片发差错报文;后续分片出错不再发。

  • A 不选TTL 为 0 要丢弃并发“时间超过”报文——traceroute 正是靠这一点工作的。
  • B 不选DF = 1 又放不下,要发“终点不可达(需要分片但 DF 置 1)”报文,这是路径 MTU 发现的基础。
  • C 不选目的网络不可达要发“终点不可达”报文。
  • D 选片偏移不为 0,说明它不是第一个分片;为避免一个数据报引发一串差错报文,只对第一个分片发送。

四种不发:对差错报文本身、对非首片、对组播地址、对特殊地址(127.0.0.0、0.0.0.0)。

复习:回到正文。

专项 31零比特填充原创
采用零比特填充的帧,数据部分为 0111 1111 0111 1101。填充后实际发送的比特串是( )。
  • A. 01111110101111101
  • B. 011111011011111001
  • C. 01111101101111101
  • D. 01111111011111010
展开解析

B每连续 5 个 1 就插入一个 0,插入后重新计数。

  1. 从左数:0 11111 → 插 0 → 1 0 1111 → 再遇到第 5 个 1 插 0 → 1 0 1。
  2. 原串 0111 1111 0111 1101 中有两处出现连续 5 个 1,各插入 1 个 0,得到 011111011011111001(18 位)。
  • A 错01111110101111101 是在连续 6 个 1 之后才插 0,这样数据里就会出现 01111110 = 帧定界符 7E,正是零比特填充要避免的。
  • B 对两处各插一个 0,共 18 位。
  • C 错01111101101111101 只在第一处插了 0;后一个字节 0111 1101 里也有连续 5 个 1,同样要在其后插 0。
  • D 错只在末尾加了一个 0,位置不对:0 要插在每一串连续 5 个 1 的紧后面,接收方才知道删掉哪一位。

复习:回到正文。

专项 32传输介质原创
下列关于传输介质的叙述中,错误的是( )。
  • A. 单模光纤的纤芯比多模光纤细,适合远距离传输
  • B. 屏蔽双绞线比非屏蔽双绞线的抗电磁干扰能力强
  • C. 光纤传输光信号,不受电磁干扰
  • D. 多模光纤中光只沿一条路径传播,所以没有模式色散
展开解析

D“只沿一条路径传播”说的是单模光纤;多模光纤中光以多个角度反射,脉冲会展宽。

  • A 不选正确:单模纤芯只有几微米,光几乎沿轴线直线传播,色散小、距离远。
  • B 不选正确:屏蔽层把外界电磁干扰挡在外面(也减少向外辐射)。
  • C 不选正确:光纤传的是光,铜线上的电磁干扰对它不起作用。
  • D 选多模光纤中有多条不同入射角的光线(多个“模”),走的路程不同,到达时间有先后,脉冲展宽(模式色散),所以只适合近距离。

复习:回到正文。

9.2概念辨析专练:Ⅰ / Ⅱ / Ⅲ / Ⅳ 组合题

组合题是选择题里最“不讲情面”的一类:四个说法判对三个,照样 0 分。下面 16 道按层排列(每层 2 ~ 4 道),说法都取自各节“易错”框里最容易混淆的结论。做法建议:

  1. 先判最有把握的一条,用它一次划掉两个选项;
  2. 再判选项之间有差别的那几条——所有选项都包含(或都不包含)的说法可以不判;
  3. 每条都要说得出理由:对完答案后逐条看解析,说不出理由的那条就是你的薄弱点,点“回到正文”。

每题的四个说法逐条给出 ✓ / ✗ 和理由;每个错误选项写明它多选了哪条错误说法、或少选了哪条正确说法。生成器断言“正确组合 = 真说法的集合”(verify/09/p9/gen_judge.py)。

(1)体系结构

辨析 1协议、服务与分层原创
下列关于协议、服务与分层的叙述中,正确的是( )。
Ⅰ. 面向连接的服务一定是可靠的服务
Ⅱ. 协议是控制对等实体之间通信的规则,是“水平的”;服务是下层通过层间接口向上层提供的,是“垂直的”
Ⅲ. 第 n 层的实体通过第 n − 1 层的服务访问点(SAP)使用第 n − 1 层提供的服务
Ⅳ. 下面的协议对上面的实体是透明的:上层只能看见下层提供的服务,看不见下层的协议
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅱ、Ⅲ、Ⅳ
  • C. 仅 Ⅲ、Ⅳ
  • D. 仅 Ⅰ、Ⅲ、Ⅳ
展开解析

B正确的说法是 Ⅱ、Ⅲ、Ⅳ。

  • Ⅰ ✗连接与可靠是两回事:虚电路面向连接却不一定可靠;802.11 无连接却对每帧确认(1.4 各层协议一览)。
  • Ⅱ ✓这是协议与服务最核心的区别(1.4 节)。
  • Ⅲ ✓SAP 是相邻两层交换信息的“窗口”,上层通过下层的 SAP 使用下层的服务。
  • Ⅳ ✓教材原话:使用本层服务的实体只能看见服务,无法看见下面的协议。

再逐个看选项:

  • A 错多选了 Ⅰ——这条是错的(面向连接不等于可靠)。
  • B 对正确的说法恰好是 Ⅱ、Ⅲ、Ⅳ。
  • C 错没选 Ⅱ,而 Ⅱ 是对的(协议水平、服务垂直)。
  • D 错多选了 Ⅰ——这条是错的(面向连接不等于可靠);没选 Ⅱ,而 Ⅱ 是对的(协议水平、服务垂直)。

复习:回到正文。

辨析 2性能指标原创
下列关于性能指标的叙述中,正确的是( )。
Ⅰ. 提高链路带宽可以减小发送时延,但不能减小传播时延
Ⅱ. 往返时间 RTT 包括发送方发送这个数据帧所用的发送时延
Ⅲ. 网络利用率越高越好,利用率接近 100% 时时延最小
Ⅳ. 时延带宽积表示:发送端发出的第一个比特到达接收端时,链路上已经有多少比特
  • A. 仅 Ⅰ、Ⅱ、Ⅳ
  • B. 仅 Ⅳ
  • C. 仅 Ⅰ、Ⅳ
  • D. 仅 Ⅱ、Ⅳ
展开解析

C正确的说法是 Ⅰ、Ⅳ。

  • Ⅰ ✓发送时延 = 数据长度 ÷ 发送速率;传播时延 = 信道长度 ÷ 电磁波传播速率,与带宽无关。
  • Ⅱ ✗RTT 是从发送完数据到收到确认所经历的往返传播时间(含对方处理),不包括数据本身的发送时延(1.3 节 RTT 的定义)。
  • Ⅲ ✗D = D0 / (1 − U):利用率接近 1 时时延趋于无穷大,网络已经拥塞。
  • Ⅳ ✓时延带宽积 = 传播时延 × 带宽,也叫“以比特为单位的链路长度”。

再逐个看选项:

  • A 错多选了 Ⅱ——这条是错的(RTT 不含数据的发送时延)。
  • B 错没选 Ⅰ,而 Ⅰ 是对的(带宽只影响发送时延)。
  • C 对正确的说法恰好是 Ⅰ、Ⅳ。
  • D 错多选了 Ⅱ——这条是错的(RTT 不含数据的发送时延);没选 Ⅰ,而 Ⅰ 是对的(带宽只影响发送时延)。

复习:回到正文。

(2)物理层

辨析 3奈氏准则与香农公式原创
下列关于奈氏准则与香农公式的叙述中,正确的是( )。
Ⅰ. 奈氏准则:理想低通信道(带宽 W)的最高码元传输速率是 2W 波特
Ⅱ. 在有噪声的信道上,增加每个码元携带的比特数可以提高数据率,但不能超过香农公式给出的极限
Ⅲ. 1 波特表示每秒传送 1 个码元,与每个码元携带几个比特无关
Ⅳ. 香农公式中的 S/N 可以直接代入以分贝为单位的信噪比
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅱ、Ⅲ
  • C. 仅 Ⅱ、Ⅲ、Ⅳ
  • D. 仅 Ⅰ、Ⅱ、Ⅲ
展开解析

D正确的说法是 Ⅰ、Ⅱ、Ⅲ。

  • Ⅰ ✓这是奈氏准则的原话,限制的是码元速率而不是比特率。
  • Ⅱ ✓香农公式给出的是任何编码方法都无法突破的极限传输速率。
  • Ⅲ ✓波特是码元速率的单位;比特率 = 波特率 × log2V。
  • Ⅳ ✗公式里的 S/N 是功率之比,要先由 dB 换算:S/N = 10dB/10,30 dB 对应 1000。

再逐个看选项:

  • A 错多选了 Ⅳ——这条是错的(S/N 要先由 dB 换算)。
  • B 错没选 Ⅰ,而 Ⅰ 是对的(奈氏准则限制码元速率 2W)。
  • C 错多选了 Ⅳ——这条是错的(S/N 要先由 dB 换算);没选 Ⅰ,而 Ⅰ 是对的(奈氏准则限制码元速率 2W)。
  • D 对正确的说法恰好是 Ⅰ、Ⅱ、Ⅲ。

复习:回到正文。

辨析 4编码与物理层设备原创
下列关于编码与物理层设备的叙述中,正确的是( )。
Ⅰ. 集线器可以隔离冲突域
Ⅱ. 曼彻斯特编码在每个比特的中间都有电平跳变,接收方可以从信号中提取时钟
Ⅲ. 采用曼彻斯特编码的 10 Mb/s 以太网,码元传输速率为 20 MBaud
Ⅳ. 中继器可以连接两个速率不同的以太网网段
  • A. 仅 Ⅱ、Ⅲ
  • B. 仅 Ⅰ、Ⅱ、Ⅲ
  • C. 仅 Ⅲ
  • D. 仅 Ⅰ、Ⅲ
展开解析

A正确的说法是 Ⅱ、Ⅲ。

  • Ⅰ ✗集线器是物理层设备,只是把比特转发到所有端口,所连的站都在同一个冲突域里。
  • Ⅱ ✓“中间跳变”既表示数据又作为时钟,所以是自同步的编码。
  • Ⅲ ✓每比特两个码元(前半、后半),码元速率是数据率的 2 倍。
  • Ⅳ ✗中继器只对信号整形放大,不存储转发帧,两端网段必须速率相同、协议相同。

再逐个看选项:

  • A 对正确的说法恰好是 Ⅱ、Ⅲ。
  • B 错多选了 Ⅰ——这条是错的(集线器不隔离冲突域)。
  • C 错没选 Ⅱ,而 Ⅱ 是对的(曼彻斯特中间跳变可提取时钟)。
  • D 错多选了 Ⅰ——这条是错的(集线器不隔离冲突域);没选 Ⅱ,而 Ⅱ 是对的(曼彻斯特中间跳变可提取时钟)。

复习:回到正文。

(3)数据链路层

辨析 5滑动窗口协议原创
下列关于滑动窗口协议的叙述中,正确的是( )。
Ⅰ. 后退 N 帧协议(GBN)的接收窗口大小为 1
Ⅱ. GBN 协议中,接收方收到序号不对的帧时会先缓存起来,等前面的帧到齐后再一起交付
Ⅲ. 采用 n 位序号的选择重传协议,若发送窗口与接收窗口一样大,则窗口最大为 2n − 1
Ⅳ. 停止—等待协议的帧序号只需要 1 位
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅰ、Ⅲ、Ⅳ
  • C. 仅 Ⅲ、Ⅳ
  • D. 仅 Ⅱ、Ⅲ、Ⅳ
展开解析

B正确的说法是 Ⅰ、Ⅲ、Ⅳ。

  • Ⅰ ✓GBN 接收方只按序接收,等的永远是“下一个”序号。
  • Ⅱ ✗这是 SR 的做法;GBN 接收方直接丢弃失序的帧,并重发对最后一个按序收到的帧的确认。
  • Ⅲ ✓由 WT + WR ≤ 2n 且两者相等得到。
  • Ⅳ ✓序号只要区分“新帧”和“重传的旧帧”,0、1 交替即可。

再逐个看选项:

  • A 错多选了 Ⅱ——这条是错的(GBN 丢弃失序帧)。
  • B 对正确的说法恰好是 Ⅰ、Ⅲ、Ⅳ。
  • C 错没选 Ⅰ,而 Ⅰ 是对的(GBN 接收窗口为 1)。
  • D 错多选了 Ⅱ——这条是错的(GBN 丢弃失序帧);没选 Ⅰ,而 Ⅰ 是对的(GBN 接收窗口为 1)。

复习:回到正文。

辨析 6CSMA/CD 与 CSMA/CA原创
下列关于CSMA/CD 与 CSMA/CA的叙述中,正确的是( )。
Ⅰ. 以太网规定最短帧长 64 B,是为了保证帧还没发完就能检测到冲突
Ⅱ. CSMA/CD 只用于半双工的共享式以太网,全双工以太网不需要它
Ⅲ. 802.11 无线局域网的站点边发送边检测冲突,检测到冲突就立即停止发送
Ⅳ. CSMA/CA 中,接收方正确收到数据帧后,要经过 SIFS 发回确认帧
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅱ、Ⅳ
  • C. 仅 Ⅰ、Ⅱ、Ⅳ
  • D. 仅 Ⅱ、Ⅲ、Ⅳ
展开解析

C正确的说法是 Ⅰ、Ⅱ、Ⅳ。

  • Ⅰ ✓帧的发送时间至少要等于争用期 2τ(10 Mb/s 时 51.2 μs 对应 64 B)。
  • Ⅱ ✓全双工时收发各用一对线、没有争用,自然不会冲突。
  • Ⅲ ✗无线信号强弱悬殊,站点发送时几乎听不到别的站,又有隐蔽站,所以 802.11 不做冲突检测,改用冲突避免(CSMA/CA)。
  • Ⅳ ✓无线网无法检测冲突,只能靠确认判断是否发送成功。

再逐个看选项:

  • A 错多选了 Ⅲ——这条是错的(802.11 不检测冲突)。
  • B 错没选 Ⅰ,而 Ⅰ 是对的(最短帧长保证发完前检测到冲突)。
  • C 对正确的说法恰好是 Ⅰ、Ⅱ、Ⅳ。
  • D 错多选了 Ⅲ——这条是错的(802.11 不检测冲突);没选 Ⅰ,而 Ⅰ 是对的(最短帧长保证发完前检测到冲突)。

复习:回到正文。

辨析 7交换机与 VLAN原创
下列关于交换机与 VLAN的叙述中,正确的是( )。
Ⅰ. 交换机收到目的 MAC 地址不在交换表中的单播帧时,丢弃该帧
Ⅱ. 在交换机上划分 VLAN 可以隔离广播域
Ⅲ. 以太网交换机的每个端口是一个独立的冲突域
Ⅳ. 802.1Q 标签中的 VLAN 标识符(VID)占 12 位
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅲ、Ⅳ
  • C. 仅 Ⅰ、Ⅲ、Ⅳ
  • D. 仅 Ⅱ、Ⅲ、Ⅳ
展开解析

D正确的说法是 Ⅱ、Ⅲ、Ⅳ。

  • Ⅰ ✗查不到就向除入口外的所有端口转发(泛洪),等对方回帧时再学习它的位置。
  • Ⅱ ✓广播帧只在本 VLAN 内转发;不同 VLAN 之间要靠路由器或三层交换机。
  • Ⅲ ✓交换机存储转发、各端口独立,端口之间不会冲突。
  • Ⅳ ✓4 B 标签:TPID 16 位 + 优先级 3 位 + CFI 1 位 + VID 12 位。

再逐个看选项:

  • A 错多选了 Ⅰ——这条是错的(查不到就泛洪)。
  • B 错没选 Ⅱ,而 Ⅱ 是对的(VLAN 隔离广播域)。
  • C 错多选了 Ⅰ——这条是错的(查不到就泛洪);没选 Ⅱ,而 Ⅱ 是对的(VLAN 隔离广播域)。
  • D 对正确的说法恰好是 Ⅱ、Ⅲ、Ⅳ。

复习:回到正文。

(4)网络层

辨析 8IPv4 首部与分片原创
下列关于IPv4 首部与分片的叙述中,正确的是( )。
Ⅰ. IP 首部检验和只检验首部,不检验数据部分
Ⅱ. 同一个数据报的各个分片,“标识”字段都与原数据报相同
Ⅲ. IP 数据报的各个分片在途中的路由器上重组
Ⅳ. 片偏移字段以 4 B 为单位
  • A. 仅 Ⅰ、Ⅱ
  • B. 仅 Ⅰ、Ⅱ、Ⅲ
  • C. 仅 Ⅱ
  • D. 仅 Ⅱ、Ⅲ
展开解析

A正确的说法是 Ⅰ、Ⅱ。

  • Ⅰ ✓数据部分由上层(TCP / UDP 检验和)负责,这样每一跳重算检验和更快。
  • Ⅱ ✓目的主机靠标识把属于同一数据报的分片归到一起。
  • Ⅲ ✗只在目的主机重组:各片可能走不同的路,中间路由器不一定收得齐。
  • Ⅳ ✗片偏移以 8 B 为单位(所以每片数据长度要取 8 的倍数);以 4 B 为单位的是首部长度字段。

再逐个看选项:

  • A 对正确的说法恰好是 Ⅰ、Ⅱ。
  • B 错多选了 Ⅲ——这条是错的(只在目的主机重组)。
  • C 错没选 Ⅰ,而 Ⅰ 是对的(首部检验和只管首部)。
  • D 错多选了 Ⅲ——这条是错的(只在目的主机重组);没选 Ⅰ,而 Ⅰ 是对的(首部检验和只管首部)。

复习:回到正文。

辨析 9IP 地址与转发原创
下列关于IP 地址与转发的叙述中,正确的是( )。
Ⅰ. 子网掩码为 255.255.255.248 的子网中,可分配给主机的地址有 6 个
Ⅱ. 主机向另一个网络中的主机发送 IP 分组时,用 ARP 解析目的主机的 MAC 地址
Ⅲ. 不考虑 NAT 时,路由器转发 IP 分组,分组的源 IP 地址和目的 IP 地址都不变
Ⅳ. 路由聚合后的一条路由,可能把实际上并不存在的网络也包含进来
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅰ、Ⅲ、Ⅳ
  • C. 仅 Ⅲ、Ⅳ
  • D. 仅 Ⅱ、Ⅲ、Ⅳ
展开解析

B正确的说法是 Ⅰ、Ⅲ、Ⅳ。

  • Ⅰ ✓/29 主机号 3 位,23 − 2 = 6。
  • Ⅱ ✗跨网络时帧只送到默认网关,ARP 解析的是默认网关(路由器接口)的 MAC 地址。
  • Ⅲ ✓IP 地址标识两端主机;每一跳改变的是帧的 MAC 地址、TTL 和首部检验和。
  • Ⅳ ✓聚合取公共前缀,前缀覆盖的范围可能比实际的网络多(所以要注意“例外路由”与最长前缀匹配)。

再逐个看选项:

  • A 错多选了 Ⅱ——这条是错的(跨网络时 ARP 解析网关)。
  • B 对正确的说法恰好是 Ⅰ、Ⅲ、Ⅳ。
  • C 错没选 Ⅰ,而 Ⅰ 是对的(/29 可分配 6 个)。
  • D 错多选了 Ⅱ——这条是错的(跨网络时 ARP 解析网关);没选 Ⅰ,而 Ⅰ 是对的(/29 可分配 6 个)。

复习:回到正文。

辨析 10RIP、OSPF 与 BGP原创
下列关于RIP、OSPF 与 BGP的叙述中,正确的是( )。
Ⅰ. OSPF 报文直接封装在 IP 数据报中
Ⅱ. RIP 允许一条路径最多 15 跳,距离为 16 表示不可达
Ⅲ. RIP 路由器只与相邻路由器交换信息,交换的是自己当前的整个路由表
Ⅳ. BGP 力求寻找一条到达目的网络的最佳路由
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅱ、Ⅲ
  • C. 仅 Ⅰ、Ⅱ、Ⅲ
  • D. 仅 Ⅱ、Ⅲ、Ⅳ
展开解析

C正确的说法是 Ⅰ、Ⅱ、Ⅲ。

  • Ⅰ ✓OSPF 的协议字段值为 89,不经过 TCP 或 UDP(2017-37)。
  • Ⅱ ✓RIP 只适合小规模网络。
  • Ⅲ ✓这是距离向量算法的特点;OSPF 则向所有路由器洪泛,但只发与本路由器相邻的链路状态。
  • Ⅳ ✗各 AS 的度量标准不同、还要考虑策略,BGP 只求一条能到达且比较好的路由(不兜圈子)。

再逐个看选项:

  • A 错多选了 Ⅳ——这条是错的(BGP 只求较好路由)。
  • B 错没选 Ⅰ,而 Ⅰ 是对的(OSPF 直接用 IP)。
  • C 对正确的说法恰好是 Ⅰ、Ⅱ、Ⅲ。
  • D 错多选了 Ⅳ——这条是错的(BGP 只求较好路由);没选 Ⅰ,而 Ⅰ 是对的(OSPF 直接用 IP)。

复习:回到正文。

辨析 11DHCP、ICMP 与 NAT原创
下列关于DHCP、ICMP 与 NAT的叙述中,正确的是( )。
Ⅰ. NAPT 只转换 IP 地址,不改变端口号
Ⅱ. DHCP 客户发送 DHCP 发现报文时,源 IP 地址为 0.0.0.0
Ⅲ. ICMP 差错报告报文封装在 UDP 用户数据报中传送
Ⅳ. ping 程序使用 ICMP 的回送请求和回送回答报文
  • A. 仅 Ⅰ、Ⅱ、Ⅳ
  • B. 仅 Ⅳ
  • C. 仅 Ⅰ、Ⅳ
  • D. 仅 Ⅱ、Ⅳ
展开解析

D正确的说法是 Ⅱ、Ⅳ。

  • Ⅰ ✗NAPT 靠端口号区分内网的不同主机:出去时改源 IP 和源端口,回来时改目的 IP 和目的端口。
  • Ⅱ ✓客户此时还没有 IP 地址,目的地址用受限广播 255.255.255.255。
  • Ⅲ ✗ICMP 报文直接封装在 IP 数据报中(协议字段 1),属于网络层。
  • Ⅳ ✓ping 直接使用 ICMP,不经过传输层。

再逐个看选项:

  • A 错多选了 Ⅰ——这条是错的(NAPT 要改端口号)。
  • B 错没选 Ⅱ,而 Ⅱ 是对的(DISCOVER 源地址 0.0.0.0)。
  • C 错多选了 Ⅰ——这条是错的(NAPT 要改端口号);没选 Ⅱ,而 Ⅱ 是对的(DISCOVER 源地址 0.0.0.0)。
  • D 对正确的说法恰好是 Ⅱ、Ⅳ。

复习:回到正文。

(5)传输层

辨析 12UDP原创
下列关于UDP的叙述中,正确的是( )。
Ⅰ. UDP 面向报文,对应用层交下来的报文既不合并也不拆分
Ⅱ. UDP 首部 8 B,检验和覆盖伪首部、首部和数据
Ⅲ. 伪首部要随 UDP 用户数据报一起发送给接收方
Ⅳ. UDP 支持一对一、一对多和多对多的交互通信
  • A. 仅 Ⅰ、Ⅱ、Ⅳ
  • B. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • C. 仅 Ⅱ、Ⅳ
  • D. 仅 Ⅱ、Ⅲ、Ⅳ
展开解析

A正确的说法是 Ⅰ、Ⅱ、Ⅳ。

  • Ⅰ ✓应用交多长,UDP 就发多长,保留报文边界。
  • Ⅱ ✓比 IP 首部检验和管得更多:连数据和收发双方的 IP 地址(伪首部)一起检验。
  • Ⅲ ✗伪首部只在计算检验和时临时加上,不发送;接收方用收到的 IP 首部自己构造。
  • Ⅳ ✓无连接,所以能广播、组播;TCP 只能一对一。

再逐个看选项:

  • A 对正确的说法恰好是 Ⅰ、Ⅱ、Ⅳ。
  • B 错多选了 Ⅲ——这条是错的(伪首部不发送)。
  • C 错没选 Ⅰ,而 Ⅰ 是对的(UDP 面向报文)。
  • D 错多选了 Ⅲ——这条是错的(伪首部不发送);没选 Ⅰ,而 Ⅰ 是对的(UDP 面向报文)。

复习:回到正文。

辨析 13TCP 连接管理原创
下列关于TCP 连接管理的叙述中,正确的是( )。
Ⅰ. SYN 报文段不能携带数据,但要消耗一个序号
Ⅱ. 一条 TCP 连接由通信两端的两个套接字唯一确定
Ⅲ. 三次握手的第三个报文段可以携带数据
Ⅳ. TIME-WAIT 状态出现在被动关闭连接的一方
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅰ、Ⅱ、Ⅲ
  • C. 仅 Ⅱ、Ⅲ
  • D. 仅 Ⅱ、Ⅲ、Ⅳ
展开解析

B正确的说法是 Ⅰ、Ⅱ、Ⅲ。

  • Ⅰ ✓教材原话;SYN 要被确认,所以占一个序号(5.4 序号账本)。
  • Ⅱ ✓即“源 IP、源端口、目的 IP、目的端口”四元组。
  • Ⅲ ✓它只是一个 ACK 报文段,可以带数据;不带数据就不消耗序号。
  • Ⅳ ✗TIME-WAIT 在主动关闭方:它发出最后一个 ACK 后要等 2MSL。被动关闭方最后处于 LAST-ACK。

再逐个看选项:

  • A 错多选了 Ⅳ——这条是错的(TIME-WAIT 在主动关闭方)。
  • B 对正确的说法恰好是 Ⅰ、Ⅱ、Ⅲ。
  • C 错没选 Ⅰ,而 Ⅰ 是对的(SYN 不带数据但耗 1 个序号)。
  • D 错多选了 Ⅳ——这条是错的(TIME-WAIT 在主动关闭方);没选 Ⅰ,而 Ⅰ 是对的(SYN 不带数据但耗 1 个序号)。

复习:回到正文。

辨析 14TCP 的窗口原创
下列关于TCP 的窗口的叙述中,正确的是( )。
Ⅰ. 收到 3 个重复确认后执行快重传,并把 cwnd 重置为 1
Ⅱ. TCP 发送方的发送窗口取接收窗口 rwnd 和拥塞窗口 cwnd 中较小的一个
Ⅲ. 发生超时重传时,ssthresh 设为当时 cwnd 的一半,cwnd 重置为 1
Ⅳ. 接收方通告的窗口为 0 时,发送方启动持续计时器,定时发送零窗口探测报文
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅲ、Ⅳ
  • C. 仅 Ⅱ、Ⅲ、Ⅳ
  • D. 仅 Ⅰ、Ⅲ、Ⅳ
展开解析

C正确的说法是 Ⅱ、Ⅲ、Ⅳ。

  • Ⅰ ✗3 个重复确认说明网络还能送达后面的报文段,拥塞不严重,执行快恢复:ssthresh 减半,cwnd = 新的 ssthresh(不回到 1)。
  • Ⅱ ✓既不能淹没接收方,也不能把网络堵住。
  • Ⅲ ✓超时说明网络可能严重拥塞,从慢开始重新来。
  • Ⅳ ✓防止“窗口更新”报文丢失后双方互相等待、形成死锁。

再逐个看选项:

  • A 错多选了 Ⅰ——这条是错的(3 个重复确认后 cwnd = 新 ssthresh)。
  • B 错没选 Ⅱ,而 Ⅱ 是对的(发送窗口 = min(rwnd, cwnd))。
  • C 对正确的说法恰好是 Ⅱ、Ⅲ、Ⅳ。
  • D 错多选了 Ⅰ——这条是错的(3 个重复确认后 cwnd = 新 ssthresh);没选 Ⅱ,而 Ⅱ 是对的(发送窗口 = min(rwnd, cwnd))。

复习:回到正文。

(6)应用层

辨析 15DNS 与 HTTP原创
下列关于DNS 与 HTTP的叙述中,正确的是( )。
Ⅰ. HTTP/1.1 默认使用持续连接
Ⅱ. DNS 查询一般使用 UDP,服务器端口号 53
Ⅲ. 主机向本地域名服务器发出的查询一般采用迭代查询
Ⅳ. HTTP 是无状态的协议,服务器可以用 Cookie 识别用户
  • A. Ⅰ、Ⅱ、Ⅲ、Ⅳ
  • B. 仅 Ⅱ、Ⅳ
  • C. 仅 Ⅱ、Ⅲ、Ⅳ
  • D. 仅 Ⅰ、Ⅱ、Ⅳ
展开解析

D正确的说法是 Ⅰ、Ⅱ、Ⅳ。

  • Ⅰ ✓HTTP/1.0 默认非持续,HTTP/1.1 默认持续(并可流水线)。
  • Ⅱ ✓一问一答,报文短,用 UDP 更快。
  • Ⅲ ✗主机向本地域名服务器一般用递归查询;本地域名服务器向根、顶级等服务器一般用迭代查询。
  • Ⅳ ✓HTTP 本身不记住客户;Cookie 在客户端保存一个识别码,每次请求时带上。

再逐个看选项:

  • A 错多选了 Ⅲ——这条是错的(主机到本地一般递归)。
  • B 错没选 Ⅰ,而 Ⅰ 是对的(HTTP/1.1 默认持续连接)。
  • C 错多选了 Ⅲ——这条是错的(主机到本地一般递归);没选 Ⅰ,而 Ⅰ 是对的(HTTP/1.1 默认持续连接)。
  • D 对正确的说法恰好是 Ⅰ、Ⅱ、Ⅳ。

复习:回到正文。

辨析 16FTP 与电子邮件原创
下列关于FTP 与电子邮件的叙述中,正确的是( )。
Ⅰ. FTP 的控制连接在整个会话期间一直保持打开
Ⅱ. SMTP 用于用户从邮件服务器读取邮件
Ⅲ. POP3 和 IMAP 都可用于用户从邮件服务器读取邮件
Ⅳ. MIME 修改了 SMTP 协议,使 SMTP 能直接传送二进制数据
  • A. 仅 Ⅰ、Ⅲ
  • B. 仅 Ⅰ、Ⅱ、Ⅲ
  • C. 仅 Ⅲ
  • D. 仅 Ⅱ、Ⅲ
展开解析

A正确的说法是 Ⅰ、Ⅲ。

  • Ⅰ ✓数据连接每传一个文件建立一次,控制连接则贯穿整个会话。
  • Ⅱ ✗SMTP 是“推”协议,用于发信(用户代理 → 服务器、服务器 → 服务器);读信用 POP3 或 IMAP。
  • Ⅲ ✓两者都是“拉”协议;IMAP 把邮件留在服务器上管理,POP3 一般下载到本地。
  • Ⅳ ✗MIME 没有改动也没有取代 SMTP:它把非 ASCII 内容编码成 ASCII 再交给 SMTP 传送。

再逐个看选项:

  • A 对正确的说法恰好是 Ⅰ、Ⅲ。
  • B 错多选了 Ⅱ——这条是错的(SMTP 用于发信)。
  • C 错没选 Ⅰ,而 Ⅰ 是对的(FTP 控制连接整个会话保持)。
  • D 错多选了 Ⅱ——这条是错的(SMTP 用于发信);没选 Ⅰ,而 Ⅰ 是对的(FTP 控制连接整个会话保持)。

复习:回到正文。

9.3计算题满分专练:固定步骤、单位口径、变式与常见错法

计网每年 8 道选择题里,通常有 3 ~ 4 道要动笔算,综合题更是“算”的天下。计算题丢分,十有八九不是不会,而是步骤漏了一步或单位换错了。这一节把 18 类计算题各自压成一套“固定步骤”,先把单位口径统一列出,再每类给 2 ~ 3 道变式;每道题的解析都写出“每个错误选项是哪一步算错得来的”——做错了,对照它就知道自己错在哪一步。

先统一单位口径(所有计算题通用)

量口径一句话例子
速率、带宽k、M、G 一律是 103、106、109,单位是 bit/s100 Mb/s = 108 bit/s
数据量(文件、缓存、窗口)存储容量、缓存、窗口通常按 1 KB = 210 B;文件大小与速率一起算时看题目说明。口诀:速率看 10,容量看 2,题目写了听题目(见 0.2 节)MSS = 1 KB、窗口 64 KB:只数“几个 MSS”时口径不影响结果
B 与 bit1 B = 8 bit;帧长、分组长多用 B,速率用 bit/s——算时延前先 × 81500 B ÷ 100 Mb/s = 120 μs
时间1 s = 103 ms = 106 μs = 109 ns51.2 μs = 0.0512 ms
传播速率题目不给时,电磁波在铜线、光纤中约 2 × 108 m/s = 200 m/μs1 km 的单程传播时延 5 μs
分贝dB = 10 lg(S/N);代入香农公式前先换成比值30 dB → S/N = 1000
首部字段的单位IP 首部长度、TCP 数据偏移:4 B;IP 总长度:1 B;IP 片偏移:8 B片偏移 185 → 1480 B
以太网帧长一般不计前导码(8 B);最短 64 B、最长 1518 B(含首部 14 B 和 FCS 4 B)数据 46 ~ 1500 B
RTT往返传播时间,不含数据本身的发送时延;“忽略发送时延”时一轮 = 1 个 RTT三次握手的前两次 = 1 RTT
窗口链路层窗口数“帧”;TCP 窗口数“字节”,题目常用 MSS 作单位rwnd = 8 KB = 8 个 1 KB 的 MSS

① 时延、时延带宽积与交换方式的总时间

固定步骤
  1. 发送时延 = 数据长度(bit)÷ 发送速率;传播时延 = 信道长度 ÷ 传播速率。两者分开算,最后再相加。
  2. 存储转发:每经过一个结点都要把整个分组(或报文)收完才转发,所以每段链路都有一次发送时延。
  3. n 个分组经 k 段链路(无排队、各段速率相同):总时间 = (n + k − 1) × 一个分组的发送时延 + k × 单段传播时延。报文交换相当于 n = 1 的大分组。
  4. 时延带宽积 = 传播时延 × 带宽:发送端发出的第一个比特到达终点时,链路上“装着”的比特数。

单位口径:先把 B 换成 bit;分清“单程”“往返”;题目说“忽略传播时延”就只剩发送时延。

计算 1分组交换的总时间原创
主机 A 经 3 台路由器(共 4 段链路)向主机 B 发送一个 4 × 106 bit 的报文,各段链路速率均为 100 Mb/s。把报文分成 1000 个等长分组(不计首部开销),采用存储转发,忽略传播时延、处理时延和排队时延。从 A 开始发送到 B 收完全部分组需要( )。
  • A. 40 ms
  • B. 40.12 ms
  • C. 40.16 ms
  • D. 160 ms
展开解析

B(1000 + 4 − 1) × 40 μs = 40.12 ms。

  1. 每个分组 4 × 106 ÷ 1000 = 4000 bit,一个分组的发送时延 4000 ÷ 108 = 40 μs。
  2. A 发完 1000 个分组用 1000 × 40 μs = 40 ms;最后一个分组还要再经 3 台路由器各转发一次,多 3 × 40 μs。
  3. 合计 (1000 + 3) × 40 μs = 40.12 ms。
  • A 错40 ms 只是 A 自己发完所有分组的时间,最后一个分组还要被 3 台路由器各存储转发一次,漏了 3 × 40 μs。
  • B 对(n + k − 1) × 分组发送时延。
  • C 错40.16 ms = (1000 + 4) × 40 μs,把公式记成了 n + k;第一个分组到达 B 只需要 k 个发送时延,后面每个分组再多 1 个,共 n + k − 1。
  • D 错160 ms = 4 × 40 ms 是报文交换(不分组)的时间:整个报文在每台路由器都要收完再发。

复习:回到正文。

计算 2时延带宽积原创
一条长 2000 km 的光纤链路,带宽 1 Gb/s,信号传播速率 2 × 108 m/s。这条链路的时延带宽积是( )。
  • A. 104 bit
  • B. 1.25 × 106 bit
  • C. 107 bit
  • D. 2 × 107 bit
展开解析

C传播时延 10 ms × 109 b/s = 107 bit。

  1. 单程传播时延 = 2 × 106 m ÷ 2 × 108 m/s = 10−2 s = 10 ms。
  2. 时延带宽积 = 10−2 s × 109 b/s = 107 bit(= 1.25 × 106 B)。
  • A 错104 bit 是把 10 ms 当成了 10 μs,时间单位差了 1000 倍。
  • B 错1.25 × 106 是换算成字节后的数值(107 ÷ 8),单位却还写 bit。
  • C 对10 ms × 1 Gb/s = 107 bit。
  • D 错2 × 107 bit 用的是往返时间 20 ms;时延带宽积按单程传播时延算。

复习:回到正文。

计算 3发送一帧并收到确认原创
地面站经卫星链路向另一地面站发送一个 1500 B 的帧,链路速率 10 Mb/s,单程传播时延 270 ms。接收方收到后立即发回确认,确认帧的发送时延忽略不计。从开始发送这一帧到收到确认,至少需要( )。
  • A. 270 ms
  • B. 271.2 ms
  • C. 540 ms
  • D. 541.2 ms
展开解析

D1.2 ms(发送)+ 2 × 270 ms(往返传播)= 541.2 ms。

  1. 发送时延 = 1500 × 8 ÷ 107 = 1.2 ms。
  2. 帧过去 270 ms,确认回来 270 ms,合计 1.2 + 540 = 541.2 ms。
  • A 错270 ms 只是单程传播时延,既没算发送时延,也没算确认的回程。
  • B 错271.2 ms 是“发送 + 单程传播”,即对方收完这一帧的时刻;还要等确认传回来 270 ms。
  • C 错540 ms 只算了往返传播时延,漏了这一帧本身的发送时延 1.2 ms。
  • D 对发送 1.2 ms + 往返 540 ms。

复习:回到正文。

常见错法
  • 只算一个分组的发送时延,忘了后面 n − 1 个分组还要依次跟上(少了 n − 1 个发送时延)。
  • 把 (n + k − 1) 写成 n × k 或 n + k,存储转发的流水线没想清楚。
  • 把往返时间当成单程(时延带宽积用的是单程传播时延)。
  • B 与 bit 不换算,时延差 8 倍。

② 奈氏准则与香农公式

固定步骤
  1. 奈氏(无噪声):最大数据率 = 2W × log2V(W 带宽 Hz,V 码元状态数)。
  2. 香农(有噪声):C = W × log2(1 + S/N),S/N 先由 dB 换成比值。
  3. 题目同时给了噪声和状态数:两个都算,取较小的。
  4. 反过来求信噪比:先求 log2(1 + S/N) = C ÷ W,再求 S/N,最后换成 dB。

单位口径:W 用 Hz;dB 换比值:S/N = 10dB/10;log2 不是整数时题目一般给近似值或选“约为”。

计算 4两个极限取小原创
某信道带宽为 5 kHz,信噪比为 20 dB,采用 64 种状态的码元。该信道的最大数据传输速率约为( )。
  • A. 10 kb/s
  • B. 22.0 kb/s
  • C. 33.3 kb/s
  • D. 60 kb/s
展开解析

C奈氏 60 kb/s,香农约 33.3 kb/s,取小:33.3 kb/s。

  1. 奈氏:2 × 5k × log264 = 2 × 5k × 6 = 60 kb/s。
  2. 香农:20 dB → S/N = 100;5k × log2101 ≈ 5k × 6.66 ≈ 33.3 kb/s。
  3. 两个限制同时存在,取较小的 33.3 kb/s。
  • A 错10 kb/s = 2W,只算了码元速率(10 kBaud),没有乘每个码元的比特数,单位也从 Baud 混成了 b/s。
  • B 错22.0 kb/s = 5k × log2(1 + 20),把 20 dB 直接当成 S/N = 20 代入;应先换算成 100。
  • C 对香农极限 33.3 kb/s 小于奈氏极限 60 kb/s。
  • D 错60 kb/s 只是奈氏极限;信道有噪声,还受香农公式限制,取两者中较小的。

复习:回到正文。

计算 5反求信噪比原创
要在带宽为 4 kHz 的信道上以 48 kb/s 的速率传送数据,按香农公式,信噪比至少应为( )。
  • A. 36.1 dB
  • B. 72.2 dB
  • C. 120 dB
  • D. 4095 dB
展开解析

Alog2(1 + S/N) = 12 → S/N = 4095 → 10 lg 4095 ≈ 36.1 dB。

  1. 48k ÷ 4k = 12,即 log2(1 + S/N) = 12。
  2. S/N = 212 − 1 = 4095。
  3. 换成分贝:10 lg 4095 ≈ 36.1 dB。
  • A 对4095 换成分贝约 36.1 dB。
  • B 错72.2 dB = 20 lg 4095,用了“20 lg”;20 lg 是电压(幅度)比的分贝公式,信噪比是功率比,用 10 lg。
  • C 错120 = 10 × 12,把 log2 的结果直接乘 10 当分贝;分贝是 10 lg(S/N),要对比值 4095 取常用对数。
  • D 错4095 是信噪比的比值,不是分贝数,单位写错了。

复习:回到正文。

计算 6码元与比特原创
某调制方式用 4 种相位,每种相位又有 2 种振幅,码元速率为 1200 Baud。数据传输速率是( )。
  • A. 1200 b/s
  • B. 2400 b/s
  • C. 3600 b/s
  • D. 9600 b/s
展开解析

C4 × 2 = 8 种状态,每码元 log28 = 3 bit,1200 × 3 = 3600 b/s。

  • A 错1200 是码元速率(Baud),没有乘每个码元携带的比特数。
  • B 错2400 = 1200 × log24,只算了 4 种相位,忘了振幅也能区分(共 8 种状态)。
  • C 对8 种状态,每码元 3 bit。
  • D 错9600 = 1200 × 8,把状态数 8 直接当成了每码元的比特数;应取 log28 = 3。

复习:回到正文。

常见错法
  • 把 dB 直接代进香农公式(30 dB 当 S/N = 30)。
  • 只算奈氏、不算香农(或反过来),忘了“取小”。
  • 奈氏公式漏了 log2V,或把 V 直接当比特数乘进去。
  • 码元速率(Baud)和比特率(b/s)混为一谈。

③ 停等、GBN、SR:信道利用率、窗口与序号位数

固定步骤
  1. 一帧的发送时延 TD = 帧长 ÷ 速率;一个发送周期 = TD + RTT(+ 确认帧发送时延 TA,若题目给出)。
  2. 利用率 U = 一个周期内真正在发数据的时间 ÷ 周期 = W × TD ÷ 周期(大于 1 时取 1);停等就是 W = 1。
  3. 要让利用率达到 100%:W ≥ 周期 ÷ TD(向上取整)。
  4. 序号位数 n:GBN 要 2n − 1 ≥ WT;SR 要 WT + WR ≤ 2n(两窗口相等时 W ≤ 2n − 1);停等 1 位。

单位口径:帧长 B 换 bit;RTT = 2 × 单程传播时延;“实际数据率” = 利用率 × 链路速率。

计算 7停等协议的利用率原创
一条 4 Mb/s 的链路,单程传播时延 20 ms,采用停止—等待协议发送 1000 B 的数据帧,确认帧的发送时延和处理时延忽略不计。信道利用率约为( )。
  • A. 4.76%
  • B. 5.00%
  • C. 9.09%
  • D. 95.24%
展开解析

ATD = 2 ms,周期 = 2 + 40 = 42 ms,U = 2 ÷ 42 ≈ 4.76%。

  1. TD = 1000 × 8 ÷ 4 × 106 = 2 ms。
  2. 周期 = TD + RTT = 2 + 2 × 20 = 42 ms。
  3. U = 2 ÷ 42 ≈ 4.76%。
  • A 对2 ÷ 42 ≈ 4.76%。
  • B 错5.00% = 2 ÷ 40,周期里漏了帧自己的发送时延 2 ms。
  • C 错9.09% = 2 ÷ 22,把单程传播时延 20 ms 当成了 RTT;发出去的帧要到达对方、确认还要传回来。
  • D 错95.24% = 40 ÷ 42,是一个周期里“空等确认”的时间所占的比例(1 − U),正好算反了。

复习:回到正文。

计算 8GBN 的序号位数原创
接上题,改用后退 N 帧协议(GBN),要使信道利用率达到 100%,帧序号至少需要( )。
  • A. 4 位
  • B. 5 位
  • C. 6 位
  • D. 21 位
展开解析

B窗口 ≥ 42 ÷ 2 = 21;GBN 要 2n − 1 ≥ 21,n = 5。

  1. 一个周期 42 ms 内要一直在发,至少要发 42 ÷ 2 = 21 帧,即 WT ≥ 21。
  2. GBN:2n − 1 ≥ 21 → 2n ≥ 22 → n = 5(25 − 1 = 31)。
  • A 错4 位时 GBN 窗口最大 24 − 1 = 15 < 21,一个周期里发完 15 帧后要停下来等确认,利用率只有 15 × 2 ÷ 42 ≈ 71%。
  • B 对25 − 1 = 31 ≥ 21。
  • C 错6 位是按选择重传(SR,两窗口相等)的条件 2n − 1 ≥ 21 算的;GBN 接收窗口为 1,上限是 2n − 1。
  • D 错21 是需要的窗口大小(帧数),不是序号的位数,把两者混为一谈了。

复习:回到正文。

计算 9SR 的实际数据率原创
一条 8 Mb/s 的链路,数据帧的发送时延为 1 ms,RTT 为 9 ms(确认帧发送时延不计)。采用 3 位序号的选择重传协议(SR),发送窗口与接收窗口一样大且取最大值。理想情况下(无差错),最大实际数据传输速率是( )。
  • A. 0.8 Mb/s
  • B. 3.2 Mb/s
  • C. 5.6 Mb/s
  • D. 8 Mb/s
展开解析

B窗口 23 − 1 = 4;周期 10 ms 内发 4 帧,U = 40%,8 × 40% = 3.2 Mb/s。

  1. SR 两窗口相等:W ≤ 2n − 1 = 4。
  2. 一个周期 = 1 + 9 = 10 ms,其中发送 4 × 1 = 4 ms,U = 40%。
  3. 实际数据率 = 40% × 8 Mb/s = 3.2 Mb/s。
  • A 错0.8 Mb/s 对应窗口为 1(停止—等待)的情况:1 ÷ 10 × 8。
  • B 对W = 4,U = 40%。
  • C 错5.6 Mb/s 用了窗口 7,那是 3 位序号的 GBN 发送窗口上限;SR 两窗口相等时只能取 4。
  • D 错8 Mb/s 是链路速率;窗口只有 4 帧,一个周期里有 6 ms 在等确认,达不到满速率。

复习:回到正文。

常见错法
  • 周期里漏了 TD,只用 RTT 当分母。
  • 用单程传播时延当 RTT。
  • 帧长的 B 当 bit。
  • GBN、SR 的窗口上限公式记混;把窗口大小当成序号位数。

④ CSMA/CD:最短帧长、最远距离、退避时间

固定步骤
  1. 单程传播时延 τ = 距离 ÷ 传播速率(中间有中继器、集线器的时延要加上);争用期 = 2τ。
  2. 最短帧长 = 2τ × 数据率(帧的发送时间不能小于争用期)。
  3. 反求最远距离:最短帧的发送时间 = 2τ → τ → 距离 = τ × 传播速率。
  4. 二进制指数退避:第 i 次冲突后 k = min(i, 10),从 {0, 1, …, 2k − 1} 中随机取 r,等待 r × 争用期;重传 16 次仍失败就丢弃。

单位口径:10 Mb/s 以太网的争用期取 51.2 μs(512 bit 时间),100 Mb/s 取 5.12 μs;题目给了距离和速率时按 2τ 现算。

计算 10最短帧长原创
一个 100 Mb/s 的 CSMA/CD 网络,任意两站之间的最远距离为 500 m,信号传播速率 2 × 108 m/s。为保证能检测到冲突,最短帧长应为( )。
  • A. 62.5 bit
  • B. 250 bit
  • C. 500 bit
  • D. 1000 bit
展开解析

C2τ = 5 μs,5 μs × 100 Mb/s = 500 bit。

  1. τ = 500 ÷ 2 × 108 = 2.5 μs,争用期 2τ = 5 μs。
  2. 最短帧长 = 5 μs × 108 b/s = 500 bit(约 62.5 B)。
  • A 错62.5 是 500 bit 换成字节后的数,单位却还写 bit。
  • B 错250 bit 只用了单程传播时延 τ;冲突信号要传回发送方,必须按往返 2τ 算。
  • C 对2τ × 数据率 = 500 bit。
  • D 错1000 bit 是把 2τ 又乘了 2(按 4τ 算),多算了一倍。

复习:回到正文。

计算 11最远距离原创
某 1 Gb/s 的 CSMA/CD 网络规定最短帧长为 400 B,信号传播速率为 2 × 108 m/s(不考虑中继设备)。两站之间的最远距离是( )。
  • A. 40 m
  • B. 160 m
  • C. 320 m
  • D. 640 m
展开解析

C400 B 的发送时间 3.2 μs = 2τ,τ = 1.6 μs,距离 = 1.6 μs × 200 m/μs = 320 m。

  1. 最短帧的发送时间 = 400 × 8 ÷ 109 = 3.2 μs,它等于争用期 2τ。
  2. τ = 1.6 μs,最远距离 = 1.6 × 10−6 × 2 × 108 = 320 m。
  • A 错40 m 是把 400 B 当成 400 bit 算出的:发送时间 0.4 μs,τ = 0.2 μs。
  • B 错160 m 是把 τ 又除了一次 2;发送时间 3.2 μs 已经是往返 2τ,单程是 1.6 μs。
  • C 对2τ = 3.2 μs → 320 m。
  • D 错640 m 是把发送时间 3.2 μs 当成了单程传播时延;最短帧的发送时间对应的是往返。

复习:回到正文。

计算 12二进制指数退避原创
100 Mb/s 以太网中,某站点发送一帧时第 3 次发生冲突。按二进制指数退避算法,它重传前随机等待的时间可能取多少种不同的值?最长等待多少?( )
  • A. 8 种,35.84 μs
  • B. 7 种,35.84 μs
  • C. 8 种,40.96 μs
  • D. 8 种,358.4 μs
展开解析

Ak = 3,r ∈ {0, 1, …, 7} 共 8 种,最长 7 × 5.12 μs = 35.84 μs。

  1. k = min(3, 10) = 3,r 从 {0, 1, …, 23 − 1} 中取,共 8 种。
  2. 100 Mb/s 以太网的争用期 = 512 bit ÷ 108 b/s = 5.12 μs,最长 7 × 5.12 = 35.84 μs。
  • A 对8 种,最长 35.84 μs。
  • B 错7 种漏了 r = 0(立即重传也是一种可能);0 ~ 7 共 8 个数。
  • C 错40.96 μs = 8 × 5.12,把 r 的最大值当成了 2k;应为 2k − 1 = 7。
  • D 错358.4 μs = 7 × 51.2,用了 10 Mb/s 以太网的争用期;100 Mb/s 的争用期是 5.12 μs。

复习:回到正文。

常见错法
  • 用单程 τ 代替 2τ,最短帧长少一半。
  • 算出的是 bit,选项是 B(或反过来)。
  • 退避的上限写成 2k 而不是 2k − 1,或漏了 r = 0。
  • 退避用错了争用期(100 Mb/s 却用 51.2 μs)。

⑤ 802.11:帧间间隔与 NAV

固定步骤
  1. 不用 RTS/CTS:信道空闲 DIFS 后发数据帧 → 接收方等 SIFS 发 ACK。发送方“从开始到确认”= DIFS + 数据 + SIFS + ACK(信道一直空闲时不需要退避)。
  2. 用 RTS/CTS:DIFS → RTS → SIFS → CTS → SIFS → 数据 → SIFS → ACK。
  3. NAV = 本帧之后还要占用信道的时间:RTS 中的 NAV = 3 × SIFS + CTS + 数据 + ACK;CTS 中的 NAV = 2 × SIFS + 数据 + ACK;数据帧中的 NAV = SIFS + ACK。
  4. 隐蔽站只能听到 CTS(或只能听到 RTS),它的 NAV 按它听到的那一帧设置。

单位口径:各帧的“传输时延”= 帧长 × 8 ÷ 速率;题目给了的直接用;SIFS < DIFS。

计算 13CTS 中的 NAV原创
802.11 网络中 SIFS = 10 μs、DIFS = 50 μs,数据率 11 Mb/s。站点 A 用 RTS/CTS 向 AP 发送一个 1100 B 的数据帧,RTS、CTS、ACK 的传输时延分别为 25 μs、20 μs、20 μs,忽略传播时延。只能听到 AP 的隐蔽站 B 收到 CTS 后,设置的 NAV 是( )。
  • A. 830 μs
  • B. 840 μs
  • C. 870 μs
  • D. 890 μs
展开解析

BCTS 之后还有 SIFS + 数据 800 μs + SIFS + ACK:10 + 800 + 10 + 20 = 840 μs。

  1. 数据帧传输时延 = 1100 × 8 ÷ 11 Mb/s = 800 μs。
  2. CTS 发完后,信道还要被占用:SIFS(10)+ 数据(800)+ SIFS(10)+ ACK(20)= 840 μs。
  • A 错830 μs 少算了一个 SIFS:数据帧之前、ACK 之前各有一个 SIFS。
  • B 对2 × SIFS + 数据 + ACK。
  • C 错870 μs 是 RTS 帧里的 NAV(多了 SIFS + CTS);B 听不到 A 的 RTS,只能按 CTS 设置。
  • D 错890 μs 多加了 DIFS 50 μs;DIFS 是发送 RTS 之前的等待,不在 CTS 之后的占用时间里。

复习:回到正文。

计算 14一次发送用多长时间原创
接上题的参数,但 A 不使用 RTS/CTS,信道一直空闲(不需要退避)。A 从开始等待 DIFS 起,到收到 AP 的 ACK 为止,至少需要( )。
  • A. 830 μs
  • B. 880 μs
  • C. 890 μs
  • D. 945 μs
展开解析

BDIFS + 数据 + SIFS + ACK = 50 + 800 + 10 + 20 = 880 μs。

  • A 错830 μs 漏了发送前的 DIFS:信道空闲也要先等 DIFS 才能发。
  • B 对50 + 800 + 10 + 20 = 880 μs。
  • C 错890 μs 多算了一个 SIFS,以为 ACK 发完之后还要再等 SIFS;发送方收到 ACK 就结束了。
  • D 错945 μs 是按 RTS/CTS 流程算的(多了 RTS、CTS 和两个 SIFS);本题不使用 RTS/CTS。

复习:回到正文。

常见错法
  • NAV 里多算了 DIFS(DIFS 在发送前,不在 NAV 之内)。
  • 少算一个 SIFS(每两帧之间都有一个)。
  • 把 RTS 的 NAV 当成 CTS 的 NAV。
  • 题目没用 RTS/CTS 却按 RTS/CTS 流程算。

⑥ 子网划分、广播地址与路由聚合

固定步骤
  1. 找“关键字节”:前缀 /n 落在哪个字节(/17 ~ /24 在第 3 字节),块大小 = 2(该字节剩下的主机位数) = 256 − 掩码在这一字节的值。
  2. 网络地址:关键字节向下取到块大小的整数倍,后面全 0;广播地址:网络地址 + 块大小 − 1,后面全 255。
  3. 可分配地址 = 2主机位数 − 2;按需(VLSM)分配时从大到小,每块的起点必须是块大小的整数倍。
  4. 路由聚合:把各网络的关键字节写成二进制,取公共前缀,前缀长度 = 前面完整的字节位数 + 公共位数。

单位口径:“可分配给主机”要减 2;“地址总数 / 网络规模”不减;/31、/32 是特殊情况。

计算 15广播地址原创
主机 10.141.89.200/21 所在网络的广播地址是( )。
  • A. 10.141.88.255
  • B. 10.141.89.255
  • C. 10.141.91.255
  • D. 10.141.95.255
展开解析

D/21 关键字节在第 3 字节,块大小 8:89 → 88 ~ 95,广播 10.141.95.255。

  1. /21 = 前 2 字节 16 位 + 第 3 字节 5 位,第 3 字节剩 3 位主机位,块大小 23 = 8。
  2. 89 向下取到 8 的倍数是 88,这个网络的第 3 字节是 88 ~ 95。
  3. 网络地址 10.141.88.0,广播地址 10.141.95.255。
  • A 错10.141.88.255 只把第 3 字节取到了块的起点 88,忘了广播地址在块的末尾:88 + 8 − 1 = 95。
  • B 错10.141.89.255 是按 /24 算的(只把第 4 字节置全 1),前缀长度看错了。
  • C 错10.141.91.255 是按 /22(块大小 4)算的:89 → 88 ~ 91;/21 的块大小是 8。
  • D 对88 ~ 95 的末尾。

复习:回到正文。

计算 16按需划分子网原创
把 192.168.40.0/24 按需划分给 A、B、C、D 四个部门,分别需要 100、50、20、20 个可分配地址。要求每个子网尽量小,从低地址开始依次分给 A、B、C、D。C 部门子网的广播地址是( )。
  • A. 192.168.40.191
  • B. 192.168.40.207
  • C. 192.168.40.223
  • D. 192.168.40.255
展开解析

CA:40.0/25;B:40.128/26;C:40.192/27,广播 40.223;D:40.224/27。

  1. A 要 100 个:27 − 2 = 126 ≥ 100 → /25,占 40.0 ~ 40.127。
  2. B 要 50 个:26 − 2 = 62 → /26,占 40.128 ~ 40.191。
  3. C 要 20 个:25 − 2 = 30 → /27,占 40.192 ~ 40.223,广播 40.223。
  4. D 同样 /27,占 40.224 ~ 40.255。
  • A 错192.168.40.191 是 B 部门子网(40.128/26)的广播地址,部门对应错了。
  • B 错40.207 = 192 + 16 − 1,是按 /28(16 个地址)给 C 分配的;但 /28 只有 24 − 2 = 14 个可分配地址,不够 20 个。
  • C 对C 是 40.192/27,广播 40.223。
  • D 错40.255 是 D 部门(也是整个 /24)的广播地址。

复习:回到正文。

计算 17路由聚合原创
路由器 R 有三条下一跳相同的路由:31.8.64.0/22、31.8.68.0/22、31.8.72.0/21。把它们聚合成一条,聚合后的目的网络是( )。
  • A. 31.8.64.0/20
  • B. 31.8.64.0/19
  • C. 31.8.64.0/21
  • D. 31.8.72.0/20
展开解析

A64 ~ 67、68 ~ 71、72 ~ 79 合起来是 64 ~ 79 共 16 个“第 3 字节”,即 31.8.64.0/20。

  1. 第 3 字节:64 = 0100 0000,68 = 0100 0100,72 = 0100 1000,三个网络覆盖 64 ~ 79。
  2. 64 ~ 79 的公共前缀是 0100,第 3 字节取 4 位:16 + 4 = 20 → 31.8.64.0/20。
  • A 对64 ~ 79,公共前缀 20 位。
  • B 错/19 的公共前缀只取了 3 位,覆盖 64 ~ 95,比实际多出一倍地址;聚合要取最长的公共前缀。
  • C 错/21 只覆盖 64 ~ 71,装不下 72.0/21(72 ~ 79)。
  • D 错72 不是 16 的倍数,31.8.72.0/20 不是合法的网络地址(/20 网络的第 3 字节必须是 16 的倍数)。

复习:回到正文。

常见错法
  • 关键字节找错(把 /21 当成在第 4 字节)。
  • 块大小算成 2 的幂但少一位(/21 的块是 8,不是 4 或 16)。
  • 广播地址只把关键字节取到块的起点,忘了加“块大小 − 1”。
  • 聚合时公共前缀多数或少数一位,或者起点不是块大小的倍数。

⑦ 最长前缀匹配

固定步骤
  1. 把目的地址和每条路由的网络地址在“关键字节”上写成二进制。
  2. 逐条判断:目的地址的前 n 位(n = 前缀长度)是否与该网络的前 n 位相同——相同就“匹配”。
  3. 在所有匹配的路由中选前缀最长的;默认路由 0.0.0.0/0 前缀长度为 0,只在别的都不匹配时才用;一条都不匹配又没有默认路由就丢弃。

单位口径:快速判断:/n 的网络覆盖的范围 = 网络地址 ~ 网络地址 + 块大小 − 1,看目的地址落在不落在里面。

计算 18谁从 ifB 转出原创
路由器 R 的转发表如下。下列目的地址中,从接口 ifB 转出的是( )。
目的网络接口
77.10.96.0/19ifA
77.10.112.0/20ifB
77.10.120.0/21ifC
0.0.0.0/0ifD
  • A. 77.10.100.1
  • B. 77.10.121.9
  • C. 77.10.130.1
  • D. 77.10.113.5
展开解析

D77.10.113.5 匹配 /19 和 /20,最长的是 /20 → ifB。

  1. /19(96 ~ 127)、/20(112 ~ 127)、/21(120 ~ 127)三个范围是层层嵌套的。
  2. 113 在 112 ~ 127 里但不在 120 ~ 127 里,最长匹配是 /20 → ifB。
  • A 错77.10.100.1 的第 3 字节 100 只落在 /19(96 ~ 127)里,不在 /20(112 ~ 127)里,从 ifA 转出。
  • B 错77.10.121.9 同时匹配 /19、/20、/21,最长的是 /21 → ifC,不是 ifB。
  • C 错77.10.130.1 不在 96 ~ 127 里,三条具体路由都不匹配,只能走默认路由 ifD。
  • D 对113 落在 /19 和 /20 中,不在 /21 中,取 /20 → ifB。

复习:回到正文。

计算 19例外路由原创
路由表有三条:160.5.0.0/16 → R1;160.5.8.0/21 → R2;160.5.10.0/23 → R3(没有默认路由)。目的地址为 160.5.12.1 的分组,下一跳是( )。
  • A. R2
  • B. R1
  • C. R3
  • D. 丢弃该分组
展开解析

A12 在 /21 的 8 ~ 15 里,不在 /23 的 10 ~ 11 里,最长匹配 /21 → R2。

  • A 对/21 覆盖 8 ~ 15,12 在其中;/23 只覆盖 10 ~ 11。
  • B 错/16 确实匹配,但 /21 也匹配而且更长。
  • C 错/23 只覆盖第 3 字节 10、11 两个值,12 不在其中——不能只看“前缀最长”而不检查是否匹配。
  • D 错/16 和 /21 都匹配,有路可走,不会因为“没有默认路由”而丢弃。

复习:回到正文。

常见错法
  • 匹配到第一条就停下,没有比较前缀长度。
  • 只看前缀长度最长的那条,没检查它到底匹配不匹配。
  • 块的范围算错(/23 只覆盖 2 个“第 3 字节”)。

⑧ IP 分片

固定步骤
  1. 数据长度 = 总长度 − 首部长度(首部不一定是 20 B,看首部长度字段)。
  2. 每片最多装的数据 = (MTU − 首部长度) 向下取到 8 的整数倍(最后一片除外)。
  3. 依次切片:第 k 片片偏移 = 前面各片数据长度之和 ÷ 8;总长度 = 该片数据 + 首部;最后一片 MF = 0,其余 MF = 1;标识都相同。

单位口径:片偏移以 8 B 为单位,总长度以 1 B 为单位;分片再分片时偏移相对最初的原数据报。

计算 20第 2 片原创
一个总长度为 3020 B(首部 20 B)、DF = 0 的 IP 数据报,要从 MTU = 1046 B 的链路转发出去,每片尽可能大。第 2 个分片的片偏移字段和总长度字段分别是( )。
  • A. 128,1024
  • B. 128,1044
  • C. 256,1044
  • D. 1024,1044
展开解析

B每片数据最多 ⌊1026 ÷ 8⌋ × 8 = 1024 B;第 2 片偏移 1024 ÷ 8 = 128,总长度 1024 + 20 = 1044。

  1. 数据 3000 B;1046 − 20 = 1026,向下取到 8 的倍数:1024 B。
  2. 切成 1024 + 1024 + 952 三片。
  3. 第 2 片:片偏移 1024 ÷ 8 = 128,总长度 1044,MF = 1。
  • A 错总长度写成了 1024,只是数据部分,忘了加 20 B 的首部。
  • B 对偏移 128,总长度 1044。
  • C 错256 = 1024 ÷ 4,把片偏移的单位当成了 4 B(那是首部长度字段的单位);片偏移以 8 B 为单位。
  • D 错1024 是第 2 片前面的数据字节数,片偏移字段要再除以 8。

复习:回到正文。

计算 21首部带选项原创
一个 IP 数据报的首部第一个字节为 0x46,总长度为 1500 B,DF = 0,要经过 MTU = 660 B 的链路,每片尽可能大。最后一个分片的总长度和片偏移分别是( )。
  • A. 236,158
  • B. 212,158
  • C. 220,160
  • D. 236,1264
展开解析

A首部 6 × 4 = 24 B;每片数据 ⌊636 ÷ 8⌋ × 8 = 632 B;1476 = 632 + 632 + 212;最后一片总长 236、偏移 1264 ÷ 8 = 158。

  1. 0x46:版本 4,首部长度 6 × 4 = 24 B;数据 1500 − 24 = 1476 B。
  2. 660 − 24 = 636,向下取 8 的倍数:632 B。
  3. 1476 = 632 + 632 + 212;最后一片总长度 212 + 24 = 236,片偏移 (632 × 2) ÷ 8 = 158。
  • A 对236,158。
  • B 错212 只是最后一片的数据长度,总长度还要加 24 B 首部。
  • C 错220、160 是按首部 20 B 算出的结果(每片 640 B、最后一片 200 B 数据);首字节 0x46 说明首部是 24 B。
  • D 错1264 是前面两片的数据字节数,片偏移字段要除以 8。

复习:回到正文。

常见错法
  • 每片数据没有取 8 的倍数(直接用 MTU − 首部)。
  • 总长度忘了加首部,只写了数据长度。
  • 片偏移写成字节数,没有除以 8。
  • 首部带选项(24 B)时仍按 20 B 算。

⑨ TCP 序号、确认号与发送窗口

固定步骤
  1. 数据从 ISN + 1 开始编号(SYN 占 ISN);一个报文段 seq = 它第一个数据字节的序号,覆盖 seq ~ seq + 长度 − 1。
  2. 确认号 = 期望收到的下一个字节的序号(累积确认:缺了哪一段,就停在那一段的第一个字节)。
  3. FIN 占一个序号:FIN 的 seq = 最后一个数据字节的序号 + 1,对它的确认号再 + 1。
  4. 可用窗口 = 窗口右沿 − 已发送的最大序号:右沿 = 确认号 + min(rwnd, cwnd) − 1。

单位口径:序号、窗口按字节;“MSS”题注意换算;第三次握手不带数据就不占序号。

计算 22累积确认原创
主机甲的 SYN 报文段序号为 3000,第三次握手不携带数据。之后甲连续发送 3 个报文段,数据长度依次为 400 B、600 B、500 B。若第 2 个报文段丢失,第 1、3 个正确到达,乙收到第 3 个报文段后发出的确认号是( )。
  • A. 3400
  • B. 3401
  • C. 4001
  • D. 4501
展开解析

B三段依次是 3001 ~ 3400、3401 ~ 4000、4001 ~ 4500;缺 3401 开始的那段,累积确认停在 3401。

  1. 数据从 3001 开始:第 1 段 3001 ~ 3400,第 2 段 3401 ~ 4000,第 3 段 4001 ~ 4500。
  2. 第 2 段没到,乙期望的下一个字节仍是 3401,收到第 3 段后发出的确认号还是 3401(这是一个重复确认)。
  • A 错3400 是已按序收到的最后一个字节的序号;确认号要写“期望的下一个”,即 3401。
  • B 对累积确认停在缺失的第一个字节。
  • C 错4001 是第 3 段的起始序号,确认号不会“跳过”缺失的第 2 段。
  • D 错4501 相当于把三段都确认了;TCP 只做累积确认,第 2 段没到就不能确认它后面的数据。

复习:回到正文。

计算 23还能发多少原创
TCP 发送方已经发出序号到 7000(含)的数据,最近收到的确认报文段中确认号为 5001、接收窗口为 3000 B;发送方的拥塞窗口为 4000 B。发送方此时还能发送的数据是( )。
  • A. 1000 B
  • B. 2000 B
  • C. 3000 B
  • D. 4000 B
展开解析

A发送窗口 = min(3000, 4000) = 3000,从 5001 到 8000;已发到 7000,还能发 7001 ~ 8000 共 1000 B。

  • A 对窗口右沿 8000 − 已发 7000 = 1000 B。
  • B 错2000 B 是按拥塞窗口 4000 算的(右沿 9000);发送窗口取 rwnd 和 cwnd 中的较小值 3000。
  • C 错3000 B 是发送窗口的大小,但窗口从确认号 5001 开始,其中 5001 ~ 7000 已经发出去了。
  • D 错4000 B 是拥塞窗口,既没有取较小值,也没有减去已发送未确认的数据。

复习:回到正文。

计算 24FIN 的序号原创
服务器 S 的初始序号为 9000,连接建立后 S 共发送了 2000 B 数据,然后主动发送 FIN(不带数据)。这个 FIN 报文段的序号和对方对它的确认号分别是( )。
  • A. 11001,11002
  • B. 11000,11001
  • C. 11001,11001
  • D. 11002,11003
展开解析

A数据占 9001 ~ 11000,FIN 序号 11001,FIN 占一个序号,确认号 11002。

  • A 对FIN = 11001,确认号 11002。
  • B 错11000 是最后一个数据字节的序号;FIN 排在它后面,序号是 11001。
  • C 错确认号 11001 等于没有确认 FIN:FIN 占一个序号,对它的确认号要再加 1。
  • D 错11002 是把 SYN 占的那个序号又多加了一次(数据本来就从 ISN + 1 = 9001 开始,已经算过 SYN)。

复习:回到正文。

常见错法
  • 确认号写成“最后收到的字节序号”,少加 1。
  • 累积确认时跳过了丢失的段。
  • 窗口从“已发送的末尾”而不是“确认号”算起。
  • 忘了 SYN、FIN 各占一个序号。

⑩ 拥塞窗口逐轮计算

固定步骤
  1. 列表:轮次(每轮 1 个 RTT)、本轮开始时的 cwnd、ssthresh。
  2. cwnd < ssthresh:慢开始,每轮翻倍,但不越过 ssthresh(到门限那一轮取 ssthresh);cwnd ≥ ssthresh:拥塞避免,每轮 + 1。
  3. 超时:ssthresh = cwnd ÷ 2,cwnd = 1,重新慢开始。
  4. 3 个重复确认:ssthresh = cwnd ÷ 2,cwnd = 新的 ssthresh(快恢复),接着拥塞避免。
  5. 发送窗口 = min(cwnd, rwnd)。

单位口径:本书与王道一致:快恢复 cwnd = 新 ssthresh(不加 3);“经过 k 个 RTT 后”就是从事件发生时数 k 轮。

计算 25超时之后原创
TCP 的 ssthresh 初值为 10 MSS,cwnd 从 1 MSS 开始;当 cwnd = 18 MSS 时发生超时。此后不再出现拥塞,接收窗口足够大。超时后再经过 5 个 RTT,cwnd 是( )。
  • A. 10 MSS
  • B. 11 MSS
  • C. 14 MSS
  • D. 16 MSS
展开解析

A新门限 9:1 → 2 → 4 → 8 → 9 → 10。

  1. 超时:ssthresh = 18 ÷ 2 = 9,cwnd = 1。
  2. 慢开始:1 → 2 → 4 → 8,再翻倍会到 16,越过门限,只取到 9(第 4 个 RTT);之后拥塞避免 + 1:第 5 个 RTT 后为 10。
  • A 对1, 2, 4, 8, 9, 10。
  • B 错11 是用旧门限 10 算的(1, 2, 4, 8, 10, 11);超时后门限要改成 18 ÷ 2 = 9。
  • C 错14 是把超时当成了 3 个重复确认:cwnd 只减半到 9 再每轮加 1(9 → 14);超时要让 cwnd 回到 1 重新慢开始。
  • D 错16 是一直翻倍、没有在门限处停下:8 翻倍要越过门限 9,只能取 9,之后改为加 1。

复习:回到正文。

计算 263 个重复确认之后原创
某 TCP 连接 cwnd = 26 MSS 时收到 3 个重复确认,此后不再出现拥塞,接收窗口足够大。按快重传、快恢复算法(快恢复时 cwnd = 新的 ssthresh),再经过 4 个 RTT,cwnd 是( )。
  • A. 13 MSS
  • B. 16 MSS
  • C. 17 MSS
  • D. 30 MSS
展开解析

Cssthresh = 13,cwnd = 13,之后每 RTT + 1:14、15、16、17。

  • A 错13 是按超时处理的结果(cwnd 回到 1:1, 2, 4, 8, 13);3 个重复确认只把 cwnd 减半,不回到 1。
  • B 错16 只经过了 3 个 RTT,少数了一轮。
  • C 对13 + 4 = 17。
  • D 错30 = 26 + 4,收到 3 个重复确认后没有把 cwnd 减半。

复习:回到正文。

计算 27至少要几个 RTT原创
TCP 的 MSS = 1 KB,ssthresh = 8 KB,cwnd 从 2 KB 开始增长,接收窗口足够大且不出现拥塞。cwnd 从 2 KB 增长到 32 KB 需要( )。
  • A. 4 个 RTT
  • B. 24 个 RTT
  • C. 26 个 RTT
  • D. 30 个 RTT
展开解析

C慢开始 2 → 4 → 8(2 个 RTT),拥塞避免 8 → 32(24 个 RTT),共 26 个。

  • A 错4 个 RTT 是一路翻倍(2 → 4 → 8 → 16 → 32)的结果,忽略了门限 8 KB:到 8 KB 之后只能每 RTT 加 1 KB。
  • B 错24 个 RTT 只算了拥塞避免阶段(8 → 32),漏了前面慢开始的 2 个 RTT。
  • C 对2 + 24 = 26。
  • D 错30 个 RTT 是从 2 KB 起就每 RTT 加 1 KB 的结果,忘了门限之前是慢开始(翻倍)。

复习:回到正文。

常见错法
  • 到门限那一轮仍然翻倍(越过了门限)。
  • 超时后门限仍用旧值。
  • 把 3 个重复确认当超时(cwnd 回到 1),或者干脆不减半。
  • 轮次多数或少数一轮。

⑪ 超时重传时间 RTO

固定步骤
  1. 第一个样本:RTTS = 样本,RTTD = 样本 ÷ 2。
  2. 之后(教材次序):先算新 RTTS = (1 − α) × 旧 RTTS + α × 样本(α = 1/8);再用新的 RTTS 算 RTTD = (1 − β) × 旧 RTTD + β × |新 RTTS − 样本|(β = 1/4)。
  3. RTO = RTTS + 4 × RTTD。
  4. 超时重传:RTO 加倍;重传过的报文段不采样(Karn)。

单位口径:RFC 6298 的次序相反(先用旧 RTTS 算 RTTD),两种次序结果略有差别;408 按教材次序,题目若注明按 RFC 则照题目。

计算 28RTO 跟我算原创
某 TCP 连接当前 RTTS = 100 ms、RTTD = 20 ms,α = 1/8,β = 1/4。新测得一个往返时间样本 120 ms。按教材的计算次序(先更新 RTTS,再用新的 RTTS 更新 RTTD),新的 RTO 是( )。
  • A. 102.5 ms
  • B. 121.875 ms
  • C. 172.5 ms
  • D. 180 ms
展开解析

DRTTS = 102.5,RTTD = 19.375,RTO = 102.5 + 77.5 = 180 ms。

  1. RTTS = 7/8 × 100 + 1/8 × 120 = 87.5 + 15 = 102.5 ms。
  2. RTTD = 3/4 × 20 + 1/4 × |102.5 − 120| = 15 + 4.375 = 19.375 ms。
  3. RTO = 102.5 + 4 × 19.375 = 180 ms。
  • A 错102.5 ms 只是新的 RTTS,还要加上 4 倍的 RTTD。
  • B 错121.875 = 102.5 + 19.375,RTTD 忘了乘 4。
  • C 错172.5 = 102.5 + 4 × 17.5,把 RTTD 直接取成 |102.5 − 120| = 17.5,没有和旧的 RTTD 做加权平均。
  • D 对102.5 + 4 × 19.375 = 180。

若按 RFC 6298 的次序(先用旧 RTTS 100 算 RTTD = 15 + 5 = 20),RTO = 102.5 + 80 = 182.5 ms——这就是两种口径的差别,所以题目会写明次序。

复习:回到正文。

计算 29连续超时原创
某报文段发出时 RTO = 200 ms。它超时后被重传,重传后又超时,于是再次重传。第二次重传时使用的 RTO 是( )。
  • A. 200 ms
  • B. 400 ms
  • C. 600 ms
  • D. 800 ms
展开解析

D每超时一次 RTO 加倍:200 → 400 → 800 ms。

  • A 错200 ms 是最初的 RTO;超时说明网络时延变大了,RTO 要加倍,不能保持不变。
  • B 错400 ms 只加倍了一次,那是第一次重传时的 RTO。
  • C 错600 ms 是每次加 200 ms 的线性增加;RTO 是按倍数(指数)退避的。
  • D 对两次超时,加倍两次:800 ms。

复习:回到正文。

常见错法
  • 忘了乘 4。
  • RTO 里用了旧的 RTTS 或直接用样本。
  • 超时后 RTO 线性增加,而不是加倍。

⑫ 含握手与释放的总时间

固定步骤
  1. 握手:从发 SYN 到能发数据需要 1 个 RTT(第三次握手可以捎带第一个数据段)。
  2. 数据:按 cwnd 逐轮发送,每轮 1 个 RTT(忽略发送时延时),数一数几轮发完、最后一轮的确认什么时候回来。
  3. 释放:数据全部被确认后发 FIN,对方 ACK + FIN 回来要 1 个 RTT;主动关闭方再等 2MSL 才进入 CLOSED。

单位口径:“至少”就按无差错、对方立即响应算;“收到全部确认”是最后一轮发出后再过 1 个 RTT。

计算 30下载一个文件原创
主机 H 与服务器 S 之间 RTT = 20 ms。H 与 S 建立 TCP 连接后,H 立即向 S 发送 10 KB 数据(第三次握手可捎带数据)。MSS = 1 KB,cwnd 初值 1 MSS,ssthresh = 32 KB,接收窗口足够大,S 对每个报文段立即确认,忽略发送时延。从 H 发出 SYN 到 H 收到全部数据的确认,至少需要( )。
  • A. 80 ms
  • B. 100 ms
  • C. 120 ms
  • D. 220 ms
展开解析

B握手 1 RTT;数据按 1、2、4、3 个段分 4 轮发完,第 4 轮的确认在 5 RTT 时到达:100 ms。

  1. 0 ~ 1 RTT:前两次握手。第 1 RTT 末发第三次握手并捎带第 1 个段(cwnd = 1)。
  2. 第 2、3、4 RTT 末依次收到确认并发出 2、4、3 个段(cwnd 2 → 4 → 8,最后只剩 3 个)。
  3. 第 5 RTT 末收到最后的确认:5 × 20 = 100 ms。
  • A 错80 ms = 4 RTT,只算了发数据的 4 轮,漏了握手的 1 个 RTT。
  • B 对1(握手)+ 4(数据)= 5 RTT。
  • C 错120 ms 多算了 1 个 RTT:以为第三次握手之后还要再等 1 个 RTT 才能发数据;其实第三次握手就能捎带第一个段。
  • D 错220 ms = 11 RTT,把数据当成停止—等待、一个段一个 RTT(10 个)再加握手;TCP 用窗口,一轮可以发多个段。

复习:回到正文。

计算 31加上释放连接原创
接上题。H 收到全部数据的确认后立即发送 FIN 关闭连接,S 收到后立即同时发回 ACK 和 FIN。MSL = 1 s。从 H 发出 SYN 到 H 进入 CLOSED 状态,至少需要( )。
  • A. 0.12 s
  • B. 1.12 s
  • C. 2.10 s
  • D. 2.12 s
展开解析

D100 ms 后发 FIN,1 个 RTT 后收到 S 的 FIN 并回 ACK(120 ms),再等 2MSL = 2 s:2.12 s。

  • A 错0.12 s 是 H 发出最后一个 ACK 的时刻,没有等 TIME-WAIT 的 2MSL;主动关闭方发完最后的 ACK 还要等 2MSL 才进入 CLOSED。
  • B 错1.12 s 在 TIME-WAIT 只等了 1 个 MSL;主动关闭方要等 2MSL。
  • C 错2.10 s 漏了释放连接的 1 个 RTT:H 发出 FIN 后要等 S 的 FIN 回来(20 ms)才进入 TIME-WAIT。
  • D 对0.12 s + 2 s。

复习:回到正文。

常见错法
  • 漏算握手的 1 个 RTT,或多算(以为第三次握手后还要再等)。
  • 数据按“一个段一个 RTT”算,没有用窗口。
  • TIME-WAIT 只等 1 个 MSL。
  • 释放过程多算或少算 RTT。

⑬ HTTP:一个网页需要几个 RTT

固定步骤
  1. 每建立一条 TCP 连接 1 个 RTT;每个“请求—响应”1 个 RTT(忽略传输时间时)。
  2. 非持续连接:每个对象 2 RTT;持续连接非流水线:第一个对象 2 RTT,之后每个 1 RTT;持续连接流水线:HTML 2 RTT,全部引用对象一起再 1 RTT。
  3. 非持续 + 并行 m 条连接:HTML 2 RTT,引用对象分 ⌈N ÷ m⌉ 批,每批 2 RTT。
  4. 若要先做 DNS 查询,把 DNS 的时间加在最前面。

单位口径:“忽略对象的传输时间 / 发送时延”时只数 RTT;题目给了传输时间就逐个加上。

计算 32持续连接非流水线原创
浏览器已知 Web 服务器的 IP 地址,要取回一个引用了 5 张小图片的网页(1 个 HTML 文件 + 5 个图片对象,都在同一服务器上)。RTT = 30 ms,忽略各对象的传输时间。采用持续连接、非流水线方式,从发起 TCP 连接到收完全部对象需要( )。
  • A. 90 ms
  • B. 180 ms
  • C. 210 ms
  • D. 360 ms
展开解析

C建连接 1 RTT + 6 个对象各 1 个请求—响应 = 7 RTT = 210 ms。

  • A 错90 ms = 3 RTT 是流水线方式:5 个图片的请求连续发出,一起 1 个 RTT 收回。
  • B 错180 ms = 6 RTT 漏了建立 TCP 连接的 1 个 RTT,只算了 6 个请求—响应。
  • C 对1 + 6 = 7 RTT。
  • D 错360 ms = 12 RTT 是非持续连接:每个对象都要重新建连接,各 2 RTT。

复习:回到正文。

计算 33非持续 + 并行原创
接上题,改用非持续连接,浏览器最多可同时打开 3 条并行的 TCP 连接。取回整个网页至少需要( )。
  • A. 90 ms
  • B. 120 ms
  • C. 150 ms
  • D. 180 ms
展开解析

DHTML 2 RTT;5 张图分 ⌈5 ÷ 3⌉ = 2 批,每批 2 RTT;共 6 RTT = 180 ms。

  • A 错90 ms = 3 RTT 是持续连接加流水线的结果;本题是非持续连接,每个对象都要重新建立 TCP 连接。
  • B 错120 ms = 4 RTT,以为 5 张图能一批取完;最多 3 条并行连接,要分 2 批。
  • C 错150 ms = 5 RTT,第二批只算了 1 个 RTT,好像连接已经建好;非持续连接每批都要重新握手,各 2 RTT。
  • D 对2 + 2 × 2 = 6 RTT。

复习:回到正文。

常见错法
  • 非持续连接忘了每个对象都要重新握手。
  • 持续连接忘了第一次建立连接的 1 个 RTT。
  • 并行时批数算错(⌈5 ÷ 3⌉ = 2)。

⑭ DNS:查询次数与时间

固定步骤
  1. 主机 → 本地域名服务器:一般递归,1 次查询。
  2. 本地服务器无缓存、迭代查询:从根开始,域名每多一级“单独设区”的层次,就多问一台服务器(根、顶级、二级……直到存有该主机记录的权限服务器)。
  3. 缓存里有某一级服务器的地址,就从那一级开始问;缓存里直接有答案,次数为 0。
  4. 时间 = 主机到本地的 RTT + 本地发出的每次查询的 RTT 之和。

单位口径:题目问“本地域名服务器发出的查询报文数”时不算主机发给本地的那一次;“最多 4 次”只是 2016-40 那道题的层数,不是通用结论。

计算 34迭代查询的次数原创
主机 H 要解析 www.dept.ntu.edu.cn 的 IP 地址,其中 dept.ntu.edu.cn 单独划为一个区、有自己的权限域名服务器(该服务器存有 www 的记录)。本地域名服务器没有任何缓存,向其他服务器采用迭代查询。本地域名服务器为此发出的 DNS 查询报文共有( )。
  • A. 1 个
  • B. 4 个
  • C. 5 个
  • D. 6 个
展开解析

C依次问根、cn、edu.cn、ntu.edu.cn、dept.ntu.edu.cn 的服务器,共 5 个。

  • A 错1 个是本地服务器向上一级做递归查询时的次数;题目说采用迭代查询,本地要一级一级自己去问。
  • B 错4 个是把“最多 4 次”当成了通用结论;这里多了一级单独设区的 dept,要问 5 台服务器。
  • C 对根 → cn → edu.cn → ntu.edu.cn → dept.ntu.edu.cn。
  • D 错6 个把主机 H 发给本地服务器的那一次也算进来了;题目问的是本地服务器发出的查询。

复习:回到正文。

计算 35有缓存时原创
接上题,若本地域名服务器的缓存中已有 ntu.edu.cn 权限服务器的地址(但没有 www.dept.ntu.edu.cn 的记录)。H 与本地服务器之间 RTT = 2 ms,本地服务器与其他服务器之间 RTT 均为 50 ms,忽略处理时间。本地服务器发出的查询报文数和 H 得到结果所需的时间分别是( )。
  • A. 2 个,100 ms
  • B. 2 个,102 ms
  • C. 3 个,152 ms
  • D. 5 个,252 ms
展开解析

B从 ntu.edu.cn 开始问:ntu.edu.cn、dept.ntu.edu.cn 两次;时间 2 + 2 × 50 = 102 ms。

  • A 错100 ms 漏了 H 与本地服务器之间的 2 ms 往返。
  • B 对2 次查询,2 + 100 = 102 ms。
  • C 错3 个多问了 edu.cn 的服务器;缓存里已有 ntu.edu.cn 的服务器地址,可以直接从它问起。
  • D 错5 个、252 ms 是没有利用缓存、从根开始问的结果。

复习:回到正文。

常见错法
  • 把“最多 4 次”当成通用结论。
  • 把主机到本地的那次查询也算进本地发出的查询。
  • 忘了缓存可以跳过前几级。

⑮ CRC 循环冗余校验

固定步骤
  1. 生成多项式 → 比特串:x3 + x + 1 → 1011(最高次 r = 3)。
  2. 数据后面补 r 个 0,用模 2 除法(异或,不借位)除以生成串,余数(r 位)就是 FCS。
  3. 发送 = 数据 + FCS;接收方把收到的整串直接除以生成串,余数全 0 才判为无差错。

单位口径:补 0 的个数 = 生成多项式的最高次数 r = 生成串位数 − 1;FCS 一定是 r 位(不足前面补 0)。

计算 36求 FCS原创
要发送的数据为 10101100,采用 CRC 校验,生成多项式 G(x) = x3 + x + 1。应附加在数据后面的 FCS 是( )。
  • A. 001
  • B. 110
  • C. 010
  • D. 011
展开解析

D数据后补 3 个 0:10101100000 模 2 除以 1011,余数 011。

  1. G(x) = x3 + x + 1:x3、x2、x1、x0 的系数依次是 1、0、1、1 → 1011,r = 3。
  2. 数据后补 3 个 0:10101100 000,做模 2 除法(遇首位 1 就异或 1011,不借位)到底,余数 011。
  3. 发送 10101100 011;代回检验:整串除以 1011 余数为 000。
  • A 错001 是没有补 0、直接用 10101100 除以 1011 得到的余数;要先在数据后补 r = 3 个 0 再除。
  • B 错110 是补了 4 个 0 后得到的余数——把生成串的位数 4 当成了 r;补 0 的个数等于最高次数 3。
  • C 错010 是用 1101 作除数得到的:把 x3 + x + 1 的系数顺序写反了(1101 对应 x3 + x2 + 1)。
  • D 对补 3 个 0 后模 2 除以 1011,余数 011。

复习:回到正文。

计算 37接收方检验原创
生成多项式 G(x) = x3 + x + 1。接收方收到比特串 10100100011(末尾 3 位是 FCS),下列判断正确的是( )。
  • A. 余数为 101,有差错,丢弃
  • B. 余数为 000,无差错,接受
  • C. 先去掉末尾 3 位 FCS 再除,余数为 000,无差错
  • D. 余数不为 0,根据余数找出出错的位,纠正后接受
展开解析

A收到的整串直接模 2 除以 1011,余数 101 不为 0,判为有差错。

  • A 对整串除以 1011,余数非 0 → 出错,丢弃。
  • B 错把整串 10100100011 模 2 除以 1011,余数是 101 而不是 000(正确的帧应是 10101100011,这里第 5 位变了)。
  • C 错接收方检验时不去掉 FCS,而是连 FCS 一起整串除以生成串;去掉 FCS 再除,得到的是“应有的 FCS”,不会是 000。
  • D 错408 的口径中 CRC 在数据链路层只用来检错,检出错误就丢弃,不做纠错(纠错要用海明码)。

复习:回到正文。

常见错法
  • 补的 0 个数等于生成串的位数(多补了 1 个)。
  • 没补 0 就直接除。
  • 模 2 除法做成了普通减法(借位)。
  • 余数不足 r 位时没有在前面补 0。

⑯ 海明码:校验位数与纠错定位

固定步骤
  1. k 位信息要 r 位校验,满足 2r ≥ k + r + 1。
  2. 位置从 1 编号,1、2、4、8……(2 的幂)放校验位,其余放信息位。
  3. 校验位 Pi 管所有“位置号的二进制在第 i 位上为 1”的位;偶校验:管到的位(含它自己)中 1 的个数为偶数。
  4. 接收方重算每个校验组:出错的组对应的权值相加(或把所有为 1 的位的位置号异或),结果就是出错位的位置;0 表示无错。

单位口径:码距 d:检错 d − 1 位、纠错 ⌊(d − 1)/2⌋ 位;海明码 d = 3,能纠 1 位错。

计算 38校验位数原创
对 11 位信息位进行海明编码,使之能纠正 1 位错,至少需要的校验位数是( )。
  • A. 1
  • B. 4
  • C. 5
  • D. 11
展开解析

B2r ≥ 11 + r + 1:r = 4 时 16 ≥ 16,恰好满足。

  • A 错1 位是奇偶校验,只能检出奇数个错,不能确定是哪一位错,也就无法纠错。
  • B 对24 = 16 ≥ 11 + 4 + 1 = 16。
  • C 错5 是把不等式当成了严格大于(16 > 16 不成立而多加了一位);条件是“大于或等于”,等号成立就够了。
  • D 错11 是“每个信息位配一个校验位”的重复码思路,远多于需要;海明码用 r 位校验组合出 2r 种状态来指出错误位置。

复习:回到正文。

计算 39纠错定位原创
采用 (7, 4) 海明码(偶校验,位置 1、2、4 为校验位 P1、P2、P4,位置 3、5、6、7 为信息位),接收方收到码字 1010111(从左到右依次为第 1 ~ 7 位)。若只有 1 位出错,出错的是( )。
  • A. 第 1 位
  • B. 第 2 位
  • C. 第 4 位
  • D. 第 6 位
展开解析

D把值为 1 的位的位置号异或:1、3、5、6、7 → 结果 6,第 6 位出错,纠正后为 1010101,信息位 1101。

  1. P1 组(1、3、5、7):4 个 1;P2 组(2、3、6、7):3 个 1;P4 组(4、5、6、7):3 个 1。
  2. 奇数个 1 的组(出错的组)是 P2、P4,权值 2 + 4 = 6 → 第 6 位出错。
  • A 错第 1 位所在的 P1 组(1、3、5、7)中 1 的个数是偶数,校验通过;若是第 1 位错,P1 组应不通过。
  • B 错只看到 P2 组不通过就认定是第 2 位,漏了 P4 组也不通过;两组都出错时,错位 = 2 + 4。
  • C 错只看到 P4 组不通过就认定是第 4 位,同样漏了 P2 组;第 4 位出错时只有 P4 一组不通过。
  • D 对P2、P4 两组不通过,2 + 4 = 6。

复习:回到正文。

常见错法
  • 把 2r ≥ k + r + 1 写成 2r ≥ k(漏了 r + 1)或用严格大于。
  • 位置从 0 编号。
  • 校验组记错(P2 管 2、3、6、7……)。

⑰ 检验和(IP / UDP / TCP)

固定步骤
  1. 把要检验的内容按 16 位一组相加(UDP / TCP 还要加上 12 B 伪首部;奇数字节末尾补一个全 0 字节)。
  2. 最高位的进位“回卷”加到最低位,直到没有进位(反码求和)。
  3. 对结果取反,就是检验和;接收方把包括检验和在内的各组反码相加,结果全 1(0xFFFF)才判为无差错。

单位口径:十六进制逐位相加;取反 = 用 F 减每一位;IP 首部检验和只覆盖首部。

计算 40求检验和原创
用 Internet 检验和算法(16 位反码求和后取反)计算四个 16 位字 0xB5C3、0x6D4A、0x91E7、0xC8F2 的检验和,结果是( )。
  • A. 0x8217
  • B. 0x8219
  • C. 0x7DE8
  • D. 0x8218
展开解析

A和 0x27DE6,回卷得 0x7DE8,取反得 0x8217。

  1. 0xB5C3 + 0x6D4A + 0x91E7 + 0xC8F2 = 0x27DE6。
  2. 最高位的进位 0x2 回卷加到低 16 位:0x7DE6 + 0x2 = 0x7DE8。
  3. 取反:0x8217。验证:四个字加上检验和,反码求和 = 0xFFFF。
  • A 对回卷后取反。
  • B 错0x8219 是进位直接丢掉(只取低 16 位 0x7DE6)再取反的结果,没有做回卷。
  • C 错0x7DE8 是反码求和的结果本身,还没有取反。
  • D 错0x8218 是取反后又加了 1,把反码运算当成了补码运算。

复习:回到正文。

计算 41首部检验和字段原创
某 IPv4 首部除检验和字段外(检验和字段置 0),其余各 16 位字反码求和(已回卷)的结果为 0x7B3A。该首部的检验和字段应填( )。
  • A. 0x3A7B
  • B. 0x7B3A
  • C. 0x84C5
  • D. 0x84C6
展开解析

C取反:0x7B3A → 0x84C5(每位用 F 去减)。

  • A 错0x3A7B 只是把两个字节对调了,不是取反;检验和与字节顺序无关地按 16 位整体取反。
  • B 错0x7B3A 是求和的结果,忘了最后一步取反。
  • C 对F − 7 = 8,F − B = 4,F − 3 = C,F − A = 5。
  • D 错0x84C6 = 取反后加 1,那是补码;Internet 检验和用反码。

复习:回到正文。

常见错法
  • 进位直接丢掉,没有回卷。
  • 求和后忘了取反。
  • 把反码求和当成补码(取反后又加 1)。

⑱ CDMA:正交性与内积

固定步骤
  1. 规格化内积 S · T = (1/m) × Σ SiTi;两站的码片序列正交 ⟺ 内积为 0。
  2. 自己与自己的内积 = 1,与自己的反码的内积 = −1。
  3. 解码:把收到的叠加序列与某站的码片序列求规格化内积:1 → 该站发 1;−1 → 发 0;0 → 该站没发。

单位口径:码片用 ±1 表示(题目若给 0/1,先把 0 换成 −1);规格化要除以码片数 m。

计算 42哪个与 S 正交原创
站点 S 的码片序列为 (+1 −1 +1 +1 −1 −1 +1 −1)。下列码片序列中,与 S 正交、可以分配给另一个站点使用的是( )。
  • A. (−1 +1 −1 −1 +1 +1 −1 +1)
  • B. (−1 −1 +1 +1 −1 −1 +1 −1)
  • C. (−1 +1 +1 +1 −1 −1 +1 −1)
  • D. (+1 −1 +1 +1 +1 +1 −1 +1)
展开解析

D与 S 逐位相乘再相加,只有最后一个和为 0。

  1. A:与 S 的内积 = −8(是 S 的反码,规格化 −1)。
  2. B:只改了 1 个码片,内积 = 8 − 2 = 6。
  3. C:改了 2 个码片,内积 = 8 − 4 = 4。
  4. D:改了 4 个码片(后 4 个取反),内积 = 8 − 8 = 0,正交。
  • A 错这是 S 的反码,S 发送比特 0 时用的就是它;它与 S 的规格化内积是 −1,不是 0,不正交。
  • B 错只有第 1 个码片与 S 不同,内积 = 7 − 1 = 6,规格化 0.75 ≠ 0。
  • C 错有 2 个码片不同,内积 = 6 − 2 = 4,规格化 0.5 ≠ 0;正交要求恰好一半码片相同、一半不同。
  • D 对后 4 个码片取反,4 个相同、4 个相反,内积为 0。

复习:回到正文。

常见错法
  • 内积没除以 m,把 4 或 −4 当成结论。
  • 把“反码”当成“正交”(反码的内积是 −1,不是 0)。
  • 只比较了前几个码片。

9.4全真模拟卷 A(计网 25 分 · 限时 35 分钟)

本卷按 408 的题位和分值出:第 33 ~ 40 题为选择题(每题 2 分,共 16 分),第 47 题为综合应用题(9 分)。建议用时:选择题 15 分钟,47 题 20 分钟。选择题可以直接点选项(先只记下你的选择),做完点“交卷”统一判分;47 题先在纸上写完再展开答案,按评分细则自己打分。所有数字都由程序核对(verify/09/p9/mock_a.py),本卷的 47 题是“报文首部分析(抓包)”——这一类 2012 年后再没考过。

一、单项选择题(第 33 ~ 40 题,每题 2 分)

卷 A · 33TCP/IP 参考模型原创
下列关于 TCP/IP 参考模型的叙述中,错误的是( )。
  • A. 网际层向上只提供无连接的数据报服务
  • B. 传输层协议只在端系统(主机)中实现
  • C. ICMP 报文封装在 IP 数据报中传送
  • D. 应用层协议都必须建立在 TCP 之上
展开解析

DDNS、DHCP、TFTP、SNMP、RIP 等应用层协议都使用 UDP。

  • A 不选正确:TCP/IP 的网际层(IP)只提供尽最大努力交付的无连接数据报服务,可靠性交给传输层。
  • B 不选正确:路由器只有网络层及以下三层,传输层只在两端的主机里运行(端到端)。
  • C 不选正确:ICMP 报文作为 IP 数据报的数据部分发送(协议字段 1),但 ICMP 属于网络层。
  • D 选应用层协议可以用 TCP,也可以用 UDP:DNS 查询、DHCP、TFTP 都用 UDP,所以“都必须建立在 TCP 之上”是错的。

复习:回到正文。

卷 A · 34奈氏准则原创
一条无噪声信道的带宽为 3 kHz。要使它的数据传输速率达到 24 kb/s,码元至少需要( )种不同的状态。
  • A. 4
  • B. 8
  • C. 16
  • D. 256
展开解析

C2 × 3k × log2V = 24k → log2V = 4 → V = 16。

  1. 奈氏准则:最高码元速率 2W = 6000 Baud。
  2. 每个码元要携带 24000 ÷ 6000 = 4 bit,V = 24 = 16。
  • A 错4 是每个码元要携带的比特数 log2V,还要换成状态数 24 = 16。
  • B 错8 = 24k ÷ 3k,直接用带宽 W 去除,既漏了奈氏准则的“2W”,又把比特数当成了状态数。
  • C 对每码元 4 bit,16 种状态。
  • D 错256 = 28,用 W 而不是 2W 作码元速率(每码元算成 8 bit);奈氏准则的码元速率上限是 2W。

复习:回到正文。

卷 A · 35GBN 的发送窗口原创
采用 3 位序号的后退 N 帧协议(GBN),发送窗口为 7。发送方依次发出 0 ~ 6 号帧后,收到对 2 号帧的确认(表示 0 ~ 2 号帧都已正确收到)。此时发送方还可以继续发送的新帧最多有( )个。
  • A. 2
  • B. 3
  • C. 4
  • D. 7
展开解析

B窗口滑到 3 ~ 1(3、4、5、6、7、0、1),其中 3 ~ 6 已发,还能发 7、0、1 三个新帧。

  1. 确认 2 号帧后,窗口左沿移到 3,窗口内是 3、4、5、6、7、0、1(序号模 8 循环)。
  2. 3 ~ 6 已经发出、尚未确认,新帧只有 7、0、1,共 3 个。
  • A 错2 是把“对 2 号帧的确认”理解成“期望收到 2 号帧”(只确认到 1 号)得出的:窗口变成 2 ~ 0,新帧只剩 7、0。题目已说明确认 2 表示 0 ~ 2 都收到了。
  • B 对窗口 3 ~ 1 中未发送的是 7、0、1。
  • C 错4 是把窗口当成 23 = 8 算的;GBN 的发送窗口不能超过 2n − 1 = 7,题目也给定为 7。
  • D 错7 是以为收到确认后整个窗口都空出来了;窗口里的 3 ~ 6 已发出未确认,仍占着位置。

复习:回到正文。

卷 A · 36交换机与集线器原创
如下图,交换机 S 的交换表初始为空。依次发送三个帧:① A 发给 C;② C 发给 A;③ D 发给 C。能收到帧 ③ 的主机是( )。
交换机 SA端口 1B端口 2集线器端口 3CDE端口 4
  • A. 只有 C
  • B. C 和 E
  • C. A、B、C、E
  • D. 没有主机能收到
展开解析

A帧 ② 让 S 学到 C 在端口 3;帧 ③ 由集线器送到 C,S 查表发现 C 也在端口 3(入口),不转发。

  1. 帧 ①:S 学到 A 在端口 1;C 不在表中 → 从端口 2、3、4 泛洪,B、C、D、E 都收到。
  2. 帧 ②:集线器把它送给 D(D 丢弃);S 学到 C 在端口 3,A 在端口 1 → 只从端口 1 转发。
  3. 帧 ③:集线器把它送给 C(以及交换机端口 3);S 学到 D 在端口 3,查到 C 也在端口 3,与入口相同 → 丢弃,不转发。所以只有 C 收到。
  • A 对集线器把帧送到 C;交换机发现目的端口就是入口,过滤掉。
  • B 错E 收到的前提是交换机泛洪;但帧 ② 已经让 S 学到 C 在端口 3,帧 ③ 不再泛洪。
  • C 错这是交换表为空时的泛洪结果(像帧 ①);帧 ② 之后 S 已经知道 C 的位置。
  • D 错交换机确实不转发帧 ③,但 C 和 D 接在同一个集线器上,集线器是物理层设备,会把帧直接送给 C。

复习:回到正文。

卷 A · 37等分子网原创
某单位分到地址块 202.118.32.0/20,要把它平均划分成 16 个子网,子网号从小到大依次编号为第 1 ~ 16 个。每个子网可分配给主机的地址数和第 10 个子网的网络地址分别是( )。
  • A. 254,202.118.41.0/24
  • B. 254,202.118.42.0/24
  • C. 256,202.118.41.0/24
  • D. 4094,202.118.41.0/24
展开解析

A16 = 24,借 4 位:/24,每个子网 254 个可分配地址;第 10 个子网的第 3 字节 = 32 + 9 = 41。

  • A 对/20 借 4 位得 /24;第 1 个是 32,第 10 个是 32 + 9 = 41。
  • B 错42 = 32 + 10,把“第 10 个”当成了“从第 0 个数起的第 10 个”;第 1 个子网是 202.118.32.0,第 10 个应加 9。
  • C 错256 是每个子网的地址总数,没有减去网络地址和广播地址。
  • D 错4094 = 212 − 2 是整个 /20 地址块的可分配数,没有考虑划分子网。

复习:回到正文。

卷 A · 38RIP 距离向量更新原创
路由器 R1 的 RIP 路由表中有:到 N1 距离 3、下一跳 R2;到 N2 距离 4、下一跳 R3;到 N3 距离 2、下一跳 R4。R1 收到相邻路由器 R3 发来的距离向量 {N1:1,N2:5,N3:1,N4:8}。按 RIP 的更新规则,R1 更新后到 N1、N2、N3、N4 的距离依次是( )。
  • A. 1,5,1,8
  • B. 2,4,2,9
  • C. 3,6,2,9
  • D. 2,6,2,9
展开解析

D先把 R3 的距离都加 1:{2,6,2,9},再逐项比较。

  1. R3 发来的每一项距离先加 1(R1 到 R3 一跳):N1 2、N2 6、N3 2、N4 9。
  2. N1:2 < 3,改为经 R3、距离 2。N2:原下一跳就是 R3,无条件更新为 6(即使变大)。
  3. N3:2 不小于原来的 2,不变(仍经 R4)。N4:原来没有,新增 9。
  • A 错1,5,1,8 是 R3 自己到各网络的距离,R1 经过 R3 还要多 1 跳,忘了加 1。
  • B 错N2 仍写 4,是以为“新距离更大就不更新”;但 R1 到 N2 本来就经 R3,R3 说自己到 N2 变成了 5,R1 必须相信它,改为 6。
  • C 错N1 仍写 3,是以为只有原下一跳是 R3 的项才会改;经 R3 到 N1 只要 2,比原来的 3 小,应该更新。
  • D 对按规则逐项更新后为 2,6,2,9。

复习:回到正文。

卷 A · 39UDP 首部原创
主机上捕获到一个 UDP 用户数据报,它的首部为 04 89 00 35 00 2C 7F 3A(十六进制)。该用户数据报的数据部分长度,以及它的传送方向分别是( )。
  • A. 36 B,DNS 服务器发给客户
  • B. 36 B,客户发给 DNS 服务器
  • C. 44 B,客户发给 DNS 服务器
  • D. 24 B,客户发给 DNS 服务器
展开解析

B源端口 0x0489 = 1161(短暂端口),目的端口 0x0035 = 53(DNS),长度 0x002C = 44,数据 44 − 8 = 36 B。

  1. 前 2 字节源端口 0x0489 = 1161;接着 2 字节目的端口 0x0035 = 53,是 DNS 的熟知端口。
  2. 长度字段 0x002C = 44,包括 8 B 首部,数据部分 36 B。
  3. 目的端口是熟知端口 53、源端口是短暂端口,所以是客户发给 DNS 服务器的查询。
  • A 错方向反了:53 出现在目的端口字段,说明是发给 DNS 服务器的;服务器的回答才会以 53 作源端口。
  • B 对数据 36 B;目的端口 53,是发往 DNS 服务器的。
  • C 错44 是 UDP 长度字段的值,它包括 8 B 首部,数据部分是 44 − 8 = 36 B。
  • D 错24 = 44 − 20,按 TCP / IP 首部 20 B 减了;UDP 首部只有 8 B。

复习:回到正文。

卷 A · 40电子邮件原创
用户甲用浏览器登录网页邮箱给用户乙发了一封邮件;乙用邮件客户端程序从自己的邮件服务器下载并阅读这封邮件(两人的邮箱在不同的邮件服务器上)。在“甲 → 甲的邮件服务器”“甲的服务器 → 乙的服务器”“乙的服务器 → 乙”三段中,依次使用的应用层协议是( )。
  • A. SMTP,SMTP,POP3
  • B. HTTP,HTTP,POP3
  • C. HTTP,SMTP,POP3
  • D. SMTP,HTTP,IMAP
展开解析

C浏览器与网页邮箱服务器之间用 HTTP;邮件服务器之间总是用 SMTP;用客户端下载用 POP3(或 IMAP)。

  • A 错第一段甲用的是浏览器,浏览器与网页邮件服务器之间用 HTTP,不是 SMTP(用户代理是 Outlook 一类客户端时第一段才用 SMTP)。
  • B 错邮件服务器之间转发邮件仍然用 SMTP;网页邮件只改变了用户与服务器之间的那一段。
  • C 对HTTP、SMTP、POP3。
  • D 错服务器之间用的是 SMTP 而不是 HTTP;而且第一段是浏览器访问,用 HTTP 而不是 SMTP,两段都颠倒了。

复习:回到正文。

二、综合应用题(第 47 题,9 分)

卷 A · 47报文首部分析(抓包)9 分

主机 H 通过路由器 R 和因特网访问服务器 S。在 H 的网卡上依次捕获到 3 个 IP 分组①、②、③,下表给出每个分组从 IP 首部开始的前若干字节(以十六进制表示;①、② 各 44 B,③ 只给出前 40 B,其后是 TCP 的数据部分)。IP 首部格式见 4.2 节,TCP 首部格式见 5.3 节。

主机 H在此处抓包R因特网服务器 S
分组偏移字节(十六进制)
①000045 00 00 2c 1a 2b 40 00 40 06 c6 0c de 14 0f 06
001065 2a 08 50 c7 4e 00 50 6e 2f 1c 00 00 00 00 00
002060 02 fa f0 f0 d2 00 00 02 04 05 b4
②000045 00 00 2c 00 00 40 00 31 06 ef 37 65 2a 08 50
0010de 14 0f 06 00 50 c7 4e 0a 3b 7d 44 6e 2f 1c 01
002060 12 72 10 f2 5e 00 00 02 04 05 78
③000045 00 01 c4 1a 2c 40 00 40 06 c4 73 de 14 0f 06
001065 2a 08 50 c7 4e 00 50 6e 2f 1c 01 0a 3b 7d 45
002050 18 fa f0 ec 80 00 00

请回答:

(1) 哪几个分组是 H 发出的?H 的 IP 地址是什么?H 访问的是哪种应用,依据是什么?(2 分)

(2) 分组①、② 的 TCP 首部中,哪些控制位为 1?分组② 的确认号是多少(十六进制)?为什么是这个值?(2 分)

(3) 分组③ 的 TCP 数据部分有多少字节?S 收到分组③ 后,发给 H 的确认报文段的确认号是多少(十六进制)?(2 分)

(4) 分组② 到达 H 时 TTL 是多少?若 S 发出它时 TTL = 64,它途经了几个路由器?这 3 个分组在途中能否被路由器分片?说明理由。(2 分)

(5) H、S 在连接建立时各自通告的 MSS 是多少?此后 H 发给 S 的每个报文段最多携带多少字节数据?(1 分)

先在纸上自己做一遍,再点这里展开满分解答
(1) 谁发的、什么应用(2 分)
答题卡这样写

IP 首部第 13 ~ 16 字节是源 IP 地址。分组①、③ 的源地址为 de 14 0f 06 = 222.20.15.6,分组② 的目的地址也是它,所以①、③ 是 H 发出的,H 的 IP 地址为 222.20.15.6(1 分)。IP 首部长度 = 5 × 4 = 20 B,TCP 首部从第 21 字节开始;分组①、③ 的目的端口为 00 50 = 80,是 HTTP 的熟知端口,H 在访问 Web 服务(1 分)。

(2) 控制位与确认号(2 分)
答题卡这样写

TCP 首部第 14 字节是控制位:分组① 为 0x02,只有 SYN = 1;分组② 为 0x12,SYN = 1、ACK = 1(1 分)。分组② 的确认号为 6e2f1c01,等于分组① 的序号 6e2f1c00 + 1:SYN 报文段不带数据,但要消耗一个序号(1 分)。

(3) 数据长度与确认号(2 分)
答题卡这样写

分组③ 的 IP 总长度 = 0x01c4 = 452 B,IP 首部 20 B;TCP 数据偏移字段为 5,TCP 首部 20 B;数据部分 = 452 − 20 − 20 = 412 B(1 分)。分组③ 的序号为 6e2f1c01,S 的确认号 = 6e2f1c01 + 412 = 6e2f1d9d(1 分)。

(4) TTL 与分片(2 分)
答题卡这样写

分组② 的 TTL 字段(第 9 字节)为 0x31 = 49,64 − 49 = 15,途经 15 个路由器(1 分)。3 个分组 IP 首部第 7、8 字节都是 40 00:DF = 1、MF = 0、片偏移 0,都是未分片的完整数据报,且不允许分片;若途中某段链路的 MTU 小于分组长度,路由器只能丢弃它并向源主机发送 ICMP 终点不可达报文(1 分)。

(5) MSS(1 分)
答题卡这样写

分组①、② 的 TCP 首部长度为 6 × 4 = 24 B,多出的 4 B 是 MSS 选项(02 04 + 2 字节值):H 通告 0x05b4 = 1460,S 通告 0x0578 = 1400。MSS 是“我能接收的最大数据段”,所以 H 发给 S 的每个报文段最多携带 1400 B 数据(1 分)。

① 读字节时先由首部长度找到 TCP 首部的起点,不要默认“第 21 字节”以后就是 TCP 数据;② 确认号 = 对方序号 + 数据长度,SYN、FIN 另加 1;③ TTL 之差是途经的路由器数,与“跳数”是同一个数;④ “40 00”表示 DF = 1,是“不让分”而不是“已经分片”;⑤ MSS 由对方通告的值决定本方的最大段,方向不要弄反。本题 3 个分组的 IP 首部检验和、TCP 检验和都由程序按真实算法算出,可以自己验证。

评分点分
(1) 判断 H 发出的分组并写出 H 的地址 1 分;由目的端口 80 判断为 HTTP 1 分2
(2) 两个分组的控制位各 0.5 分;确认号及“SYN 占一个序号”的理由 1 分2
(3) 数据长度 1 分(只写 432 或 452 不得分);确认号 1 分2
(4) 路由器个数 1 分;能否分片的结论和依据(DF = 1)1 分2
(5) 两个 MSS 与 H 的最大数据长度,全对 1 分1
卷 A 答案速查(做完再看)
题3334353637383940
答案DCBAADBC
考点1.52.23.33.94.34.85.26.4

47:报文首部分析(IP 首部 + TCP 首部 + 序号确认号 + TTL + DF + MSS)。自评:选择题全对、47 题 ≥ 8 分 ⇒ 本卷达到满分水平。

9.5全真模拟卷 B(计网 25 分 · 限时 35 分钟)

题位、分值与卷 A 相同。本卷的 47 题是“一次访问的全过程”,但换了两个新条件:DHCP 服务器和域名服务器都在另一个网络(要靠中继代理、要先解析网关),出口路由器做 NAPT。数字由 verify/09/p9/mock_b.py 核对。

一、单项选择题(第 33 ~ 40 题,每题 2 分)

卷 B · 33协议数据单元原创
在 TCP/IP 体系中,数据链路层、网络层、传输层(TCP)的协议数据单元依次称为( )。
  • A. 比特,帧,分组
  • B. 分组,帧,报文段
  • C. 帧,报文段,分组
  • D. 帧,分组,报文段
展开解析

D链路层:帧;网络层:IP 数据报(分组);TCP:报文段(UDP 叫用户数据报)。

  • A 错整体下移了一层:比特是物理层的数据单位,帧才是链路层的。
  • B 错前两个颠倒了:网络层加 IP 首部得到分组,链路层再加首部和尾部封装成帧。
  • C 错后两个颠倒了:TCP 的数据单位叫报文段,交给网络层加上 IP 首部后才成为分组。
  • D 对帧、分组、报文段。

复习:回到正文。

卷 B · 34编码波形原创
在采用曼彻斯特编码的以太网上测得传送一个字节时的信号波形如下图(虚线是比特周期的分界;按 408 真题的约定,曼彻斯特编码“前高后低”表示 1)。这个字节是( )。
高低第 1 位第 2 位第 3 位第 4 位第 5 位第 6 位第 7 位第 8 位
  • A. 11010010
  • B. 00101101
  • C. 00111011
  • D. 1010011001011001
展开解析

A逐位看每个比特周期中间的跳变:高→低 = 1,低→高 = 0。

  1. 8 个比特周期依次是:高低、高低、低高、高低、低高、低高、高低、低高。
  2. 按“前高后低 = 1”:1 1 0 1 0 0 1 0。
  • A 对前高后低为 1、前低后高为 0:11010010。
  • B 错00101101 是按相反的约定(前低后高 = 1)读的,每一位都反了;408 真题按“前高后低 = 1”。
  • C 错00111011 是把它当成差分曼彻斯特编码读的(位开始处有跳变为 0、无跳变为 1);题目说明是曼彻斯特编码。
  • D 错1010011001011001 是把每个比特周期的前后两半各当成一位、按不归零码读出的 16 位;曼彻斯特编码一个比特占两个半周期。

复习:回到正文。

卷 B · 35802.11 帧的地址原创
笔记本电脑 L 通过接入点 AP 发送一个 IP 分组给有线网中的服务器 S,S 与 L 不在同一个 IP 网络,AP 所在网络的出口路由器为 R(AP 与 R 之间是以太网)。L 发出的 802.11 数据帧(To DS = 1、From DS = 0)中,地址 1、地址 2、地址 3 依次是( )。
  • A. R 的 MAC,L 的 MAC,AP 的 MAC
  • B. AP 的 MAC,L 的 MAC,S 的 MAC
  • C. L 的 MAC,AP 的 MAC,R 的 MAC
  • D. AP 的 MAC,L 的 MAC,R 的 MAC
展开解析

D去往 AP 的帧:地址 1 = 接收者 AP(BSSID),地址 2 = 发送者 L,地址 3 = 最终的目的 MAC——下一跳路由器 R。

  • A 错地址 1 和地址 3 对调了:地址 1 永远是“这一段无线链路上的接收者”,这里是 AP。
  • B 错S 在另一个 IP 网络,帧的目的 MAC 只能是本网络出口路由器 R 的 MAC;MAC 地址只在一段链路内有效,到不了 S。
  • C 错地址 1、地址 2 对调了:L 是发送方,应在地址 2;地址 1 是接收方 AP。
  • D 对接收方 AP、发送方 L、目的 MAC 为下一跳 R。

复习:回到正文。

卷 B · 36冲突域与广播域原创
一台 8 口以太网交换机划分了 3 个 VLAN:端口 1 ~ 3 属于 VLAN 10,端口 4 ~ 6 属于 VLAN 20,端口 7、8 属于 VLAN 30。端口 6 接一台集线器,集线器上连 3 台主机;其余每个端口各接 1 台主机。这个网络中冲突域和广播域的个数分别是( )。
  • A. 3,3
  • B. 8,1
  • C. 8,3
  • D. 10,3
展开解析

C交换机每个端口 1 个冲突域(集线器所在端口也只算 1 个):8 个;每个 VLAN 1 个广播域:3 个。

  • A 错3 个冲突域是把每个 VLAN 当成一个冲突域;VLAN 隔离的是广播域,冲突域由交换机端口划分。
  • B 错1 个广播域忽略了 VLAN:划分 VLAN 后,广播帧只在本 VLAN 内转发,3 个 VLAN 就是 3 个广播域。
  • C 对冲突域 8、广播域 3。
  • D 错10 是把集线器上的 3 台主机各算了一个冲突域(7 + 3);集线器不隔离冲突域,它连的 3 台主机和交换机端口 6 同在一个冲突域。

复习:回到正文。

卷 B · 37IP 首部中的分片字段原创
某 IP 分组首部的前 8 字节为 45 00 05 dc 6e 1d 21 72(十六进制)。已知原数据报被分成若干片时,除最后一片外各片的数据长度都与这一片相同。这个分组是原数据报的( )。
  • A. 第 1 片,后面还有分片
  • B. 第 2 片,后面还有分片
  • C. 第 3 片,后面还有分片
  • D. 第 3 片,是最后一片
展开解析

C总长度 0x05dc = 1500,数据 1480 B;21 72 → MF = 1、片偏移 0x172 = 370,即前面已有 2960 B = 2 片。

  1. 第 3、4 字节:总长度 0x05dc = 1500 B,首部 20 B(首字节 45),每片数据 1480 B。
  2. 第 7、8 字节 21 72 = 0010 0001 0111 0010:DF = 0,MF = 1,片偏移 = 0 0001 0111 0010 = 370。
  3. 370 × 8 = 2960 B = 2 × 1480,前面已有 2 片,这是第 3 片;MF = 1,后面还有。
  • A 错把片偏移 370 当成了字节数(370 < 1480,好像落在第 1 片里);片偏移以 8 B 为单位,370 × 8 = 2960 B。
  • B 错2960 ÷ 1480 = 2 是它前面的片数,它自己是第 3 片,少数了一片。
  • C 对前面 2 片,本片第 3 片,MF = 1。
  • D 错MF = 1 表示后面还有分片;只有 MF = 0(且偏移不为 0)的才是最后一片。

复习:回到正文。

卷 B · 38链路状态路由原创
某自治系统内的路由器运行链路状态路由协议,拓扑与各链路的代价如下图。R1 用 Dijkstra 算法算出的到 R6 的最短路径代价和 R1 转发表中到 R6 的下一跳分别是( )。
R1R2R3R4R5R626351264
  • A. 10,R2
  • B. 10,R3
  • C. 11,R3
  • D. 13,R2
展开解析

A最短路径 R1 → R2 → R3 → R5 → R6,代价 2 + 3 + 1 + 4 = 10,下一跳 R2。

  1. 从 R1 出发:确定 R2(2);经 R2 更新 R3 = min(6, 2 + 3) = 5、R4 = 7。
  2. 确定 R3(5);经 R3 更新 R5 = 6。确定 R5(6);经 R5 更新 R6 = 10(R4 经 R5 为 8,不如 7)。
  3. 确定 R4(7);经 R4 到 R6 为 13,不更新。确定 R6(10),回溯路径 R1 → R2 → R3 → R5 → R6。
  • A 对代价 10,第一跳是 R2。
  • B 错代价对了,下一跳却写成了路径上的 R3;转发表里的“下一跳”是离开 R1 后到达的第一台路由器,即 R2。
  • C 错11 是 R1 → R3 → R5 → R6(6 + 1 + 4):先走了 R1–R3 这条直连边;但经 R2 绕到 R3 只要 2 + 3 = 5,比直连的 6 还短。
  • D 错13 是沿上面一排走的 R1 → R2 → R4 → R6(2 + 5 + 6);经 R3、R5 走下面一排更短。

复习:回到正文。

卷 B · 39快重传的条件原创
TCP 发送方连续发出 4 个报文段,序号依次为 100、300、500、700,每段 200 B。第 2 个报文段丢失,其余都正确到达,接收方对每个到达的报文段立即确认,之后发送方暂时没有新数据可发。发送方接下来会( )。
  • A. 立即快重传序号为 300 的报文段
  • B. 等到超时后,只重传序号为 300 的报文段
  • C. 等到超时后,重传序号为 300、500、700 的报文段
  • D. 收到第一个确认号为 300 的确认后,立即重传序号为 300 的报文段
展开解析

B接收方发出的确认号依次是 300、300、300:只有 2 个重复确认,凑不够 3 个,不能快重传,只能等超时。

  • A 错快重传要收到 3 个重复确认;这里第 1 段的确认是 300,第 3、4 段各引起一个重复的 300,只有 2 个重复确认。
  • B 对超时后 TCP 只重传最早未被确认的那个报文段(序号 300),收到后接收方一次确认到 900。
  • C 错重传后面所有的段是 GBN 的做法;TCP 接收方会缓存失序到达的 500、700 两段,超时只重传最早未确认的那一段。
  • D 错第一个确认号为 300 的确认是对第 1 段的正常确认,说明 100 ~ 299 收到了,不是重复确认,更不触发重传。

复习:回到正文。

卷 B · 40FTP 的两种连接原创
用户在一次 FTP 会话中先列了 2 次目录,下载了 3 个文件,又上传了 1 个文件。整个会话中建立的控制连接和数据连接分别是( )条。
  • A. 1,4
  • B. 1,6
  • C. 2,6
  • D. 6,6
展开解析

B控制连接整个会话 1 条;数据连接每传一个文件或一次目录列表建一条:2 + 3 + 1 = 6。

  • A 错4 = 3 + 1,只算了传文件,漏了“列目录”:目录列表也是通过数据连接传回来的(LIST 命令)。
  • B 对控制 1 条,数据 6 条。
  • C 错上传、下载都在同一个会话里,用同一条控制连接,不会因为方向不同就另建一条。
  • D 错控制连接在整个会话期间一直保持,只有 1 条;每次操作新建的是数据连接。

复习:回到正文。

二、综合应用题(第 47 题,9 分)

卷 B · 47一次访问的全过程:DHCP 中继、ARP、DNS、NAPT、HTTP9 分

某单位网络如下图所示。路由器 R 的 E0 接 LAN1(192.168.26.0/24),E1 接 LAN2(192.168.38.0/24),E2 接因特网,地址为 202.38.64.2;R 实现 NAPT,并在 E0 上开启 DHCP 中继代理。DHCP 服务器 DS(192.168.38.10)和本地域名服务器 D(192.168.38.53)都在 LAN2,DS 为 LAN1 配置的租期为 6 小时、默认网关 192.168.26.254、DNS 服务器 192.168.38.53。Web 服务器 W 的域名为 www.yxlib.cn,IP 地址为 120.55.8.20。

H1新接入H2交换机 S1RE0 192.168.26.254E1 192.168.38.254E2 202.38.64.2交换机 S2DHCP 服务器 DS域名服务器 D因特网Web 服务器 WE0E1E2LAN1:192.168.26.0/24LAN2:192.168.38.0/24(DS 192.168.38.10,D 192.168.38.53)

(1) 主机 H1 新接入 LAN1。它发出的 DHCP 发现报文,封装它的 IP 分组的源、目的 IP 地址各是什么?R 收到后,以单播还是广播把它转给 DS?转发的 IP 分组目的地址是什么?R 在 DHCP 报文的 giaddr 字段填什么?DS 依据什么决定从哪个地址池分配地址?(2 分)

(2) H1 获得地址 192.168.26.31 后,最早在什么时候发起续约?续约的 DHCP 请求报文是单播还是广播,封装它的 IP 分组源、目的地址各是什么?若续约一直不成功,到什么时候改为广播?(2 分)

(3) 随后 H1 在浏览器中访问 http://www.yxlib.cn/。为了发出 DNS 查询,H1 先发出的 ARP 请求要解析哪个 IP 地址对应的 MAC 地址?为什么?封装 DNS 查询的以太网帧的目的 MAC 地址是哪个设备(接口)的?(2 分)

(4) D 的缓存中有 www.yxlib.cn 的记录。H1 用源端口 49200 与 W 建立 TCP 连接,R 的 NAPT 为它分配外部端口 6001。W 发回的第二次握手报文段在 R 转换之前、之后,IP 分组的“源 IP:端口 → 目的 IP:端口”各是什么?(2 分)

(5) 设 H1 与 W 之间的 RTT 为 50 ms,单位内网中的时延忽略不计。网页 index.html 引用了同一服务器上的 3 个小图像,浏览器使用 HTTP/1.1 持续连接并采用流水线方式,各对象的传输时间忽略。从 H1 发出 DNS 查询到收齐全部对象,至少需要多长时间?(1 分)

先在纸上自己做一遍,再点这里展开满分解答
(1) DHCP 发现与中继(2 分)
答题卡这样写

DHCP 发现报文:源 IP 0.0.0.0,目的 IP 255.255.255.255(受限广播,路由器不转发)(1 分)。R 的中继代理把它以单播转发给 DS,目的 IP 为 192.168.38.10;giaddr 填收到该报文的接口地址 192.168.26.254,DS 根据 giaddr 判断客户在 192.168.26.0/24,从这个网络的地址池里分配(1 分)。

(2) 租期与续约(2 分)
答题卡这样写

租期过半,即获得地址后 3 小时(T1)发起续约;续约请求是单播,源 IP 为已租到的 192.168.26.31,目的 IP 为 DS 的 192.168.38.10——H1 已有地址,按普通单播交给默认网关 R 转发即可,不再需要中继代理(1 分)。若一直续约不成功,到租期的 87.5%,即 5.25 小时(T2)改为广播请求(1 分)。

(3) ARP 解析谁(2 分)
答题卡这样写

H1 用自己的掩码判断:DNS 服务器 192.168.38.53 与自己(192.168.26.31/24)不在同一网络,DNS 查询要交给默认网关转发,所以 ARP 请求解析的是默认网关 192.168.26.254(R 的 E0)的 MAC 地址(1 分)。封装 DNS 查询的帧的目的 MAC 是 R 的 E0 接口的 MAC 地址,而 IP 分组的目的地址仍是 192.168.38.53(1 分)。

(4) NAPT 转换(2 分)
答题卡这样写

转换前(R 从 E2 收到):120.55.8.20:80 → 202.38.64.2:6001(1 分);转换后(R 从 E0 发出):120.55.8.20:80 → 192.168.26.31:49200(1 分)。NAPT 只改内网一侧的地址和端口(这里是目的 IP 与目的端口),并重算 IP 首部检验和与 TCP 检验和。

(5) 总时间(1 分)
答题卡这样写

DNS 查询在内网完成且 D 有缓存,时间忽略;建立 TCP 连接 1 个 RTT;请求 index.html 1 个 RTT;流水线方式连续发出 3 个图像的请求,再 1 个 RTT 全部收回:共 3 × 50 = 150 ms(1 分)。

① DS 与 H1 不在同一网络,DISCOVER 靠中继代理以单播转发,giaddr 是“客户所在网络”的接口地址;② 续约时客户已经有地址,直接单播给服务器,不再经过中继;③ ARP 先看目的 IP 是否同网:DNS 服务器在另一网络时解析的是网关,而不是 DNS 服务器本身(与第 7 篇 7.8 的模拟大题正好相反,那里 DNS 服务器与主机同网);④ NAPT 在回来的方向改目的地址和目的端口;⑤ 流水线方式所有引用对象一共只多 1 个 RTT。

评分点分
(1) DISCOVER 的源、目的 IP 1 分;单播、目的 IP、giaddr 与地址池的关系 1 分2
(2) T1 时刻与单播、源 / 目的地址 1 分;T2 时刻改广播 1 分2
(3) 解析网关的 MAC 及理由 1 分;帧的目的 MAC 1 分2
(4) 转换前、后各 1 分(地址、端口任一项错扣该项的分)2
(5) 150 ms1
卷 B 答案速查(做完再看)
题3334353637383940
答案DADCCABB
考点1.42.33.63.94.24.85.56.3

47:DHCP 中继与续约、ARP、DNS 缓存、NAPT、HTTP 流水线。自评:选择题全对、47 题 ≥ 8 分 ⇒ 本卷达到满分水平。

9.6全真模拟卷 C(计网 25 分 · 限时 35 分钟)

题位、分值与卷 A 相同。本卷的 47 题是出现次数最多的“IP 地址规划与路由表”,加上聚合的“例外”、分片和扩容判断。数字由 verify/09/p9/mock_c.py 核对。

一、单项选择题(第 33 ~ 40 题,每题 2 分)

卷 C · 33OSI 各层功能原创
在 OSI 参考模型中,负责数据格式的转换(如字符编码转换、数据压缩与加密)的是( )。
  • A. 表示层
  • B. 应用层
  • C. 会话层
  • D. 传输层
展开解析

A表示层处理“数据怎么表示”:编码转换、压缩、加密。

  • A 对表示层:语法转换、压缩、加密。
  • B 错应用层直接为用户的应用进程提供服务(如文件传送、电子邮件),不负责数据格式的转换。
  • C 错会话层负责建立、管理、终止会话,并在数据流中设置同步点(对话管理),不处理数据格式。
  • D 错传输层提供端到端的可靠或不可靠传输、复用与分用,不关心数据的表示形式。

复习:回到正文。

卷 C · 34PCM 数据率原创
一路模拟信号的最高频率为 5 kHz,用 PCM 数字化:按采样定理的最低频率采样,每个样值量化为 64 级。数字化后的数据率是( )。
  • A. 30 kb/s
  • B. 60 kb/s
  • C. 80 kb/s
  • D. 640 kb/s
展开解析

B采样频率 2 × 5 kHz = 10 kHz;64 级 = 26,每样值 6 bit;10k × 6 = 60 kb/s。

  • A 错30 kb/s 用最高频率 5 kHz 当采样频率;采样定理要求采样频率至少是最高频率的 2 倍。
  • B 对10 kHz × 6 bit = 60 kb/s。
  • C 错80 kb/s 是按每个样值 8 bit(1 字节)算的;64 级只需 log264 = 6 bit。
  • D 错640 kb/s 把量化级数 64 直接当成每个样值的比特数;级数要取 log2。

复习:回到正文。

卷 C · 35码距与检错纠错能力原创
某差错编码的全部码字为 {00000,01011,10101,11110}。该编码最多能检测出几位错、最多能纠正几位错?( )
  • A. 检测 1 位,纠正 1 位
  • B. 检测 2 位,纠正 2 位
  • C. 检测 3 位,纠正 1 位
  • D. 检测 2 位,纠正 1 位
展开解析

D两两比较,最小码距 d = 3:检错 d − 1 = 2,纠错 ⌊(d − 1)/2⌋ = 1。

  1. 六对码字的距离:3、3、4、4、3、3,最小码距 d = 3。
  2. 检错:d − 1 = 2 位;纠错:⌊(3 − 1)/2⌋ = 1 位。
  • A 错检测 1 位是把纠错的公式 ⌊(d − 1)/2⌋ 用到了检错上;检错能力是 d − 1 = 2。
  • B 错纠正 2 位是把检错的公式 d − 1 用到了纠错上;纠正 t 位需要 d ≥ 2t + 1,d = 3 只能纠 1 位。
  • C 错检测 3 位用的是最大码距 4;编码能力由最小码距决定,因为最容易混淆的是距离最近的两个码字。
  • D 对d = 3:检 2 纠 1。

复习:回到正文。

卷 C · 36以太网帧的填充原创
主机用以太网(V2)发送一个 IP 分组,分组中是一个只带 4 B 数据的 UDP 用户数据报(IP 首部 20 B、无选项)。这个以太网帧的长度(不计前导码)和其中的填充字节数分别是( )。
  • A. 50 B,0 B
  • B. 60 B,14 B
  • C. 64 B,14 B
  • D. 64 B,32 B
展开解析

CIP 分组 20 + 8 + 4 = 32 B,不足 46 B,填充 14 B;帧长 14 + 46 + 4 = 64 B。

  1. IP 分组长度 = 20(IP 首部)+ 8(UDP 首部)+ 4(数据)= 32 B。
  2. 以太网帧的数据部分最少 46 B,填充 46 − 32 = 14 B。
  3. 帧长 = 首部 14 B + 数据 46 B + FCS 4 B = 64 B。
  • A 错50 B = 14 + 32 + 4,没有填充;数据部分不足 46 B 时必须填充到 46 B,保证帧长至少 64 B(CSMA/CD 的需要)。
  • B 错60 B 漏了尾部 4 B 的帧检验序列 FCS;64 B 的最短帧长包含 FCS。
  • C 对填充 14 B,帧长 64 B。
  • D 错填充 32 B = 64 − 32,把整帧 64 B 当成了数据部分的下限;首部 14 B 和 FCS 4 B 不属于数据部分,数据部分只要补到 46 B。

复习:回到正文。

卷 C · 37NAPT原创
某单位只有一个公网地址 210.1.1.1,出口路由器做 NAPT。内网主机 192.168.7.21 用源端口 6688 向外网的 NTP 服务器(UDP 123)发出一个时间查询;几毫秒后,另一台内网主机 192.168.7.22 也恰好用源端口 6688 向同一台 NTP 服务器发出查询。这两个分组到达因特网后,它们的“源 IP:源端口”是( )。
  • A. 192.168.7.21:6688 和 192.168.7.22:6688
  • B. 210.1.1.1:6688 和 210.1.1.1:6688
  • C. 210.1.1.1:6688 和 210.1.1.2:6688
  • D. 210.1.1.1 的两个不同端口
展开解析

DNAPT 把源 IP 都换成 210.1.1.1,并给两个会话分配不同的外部端口,NTP 服务器回来的应答才能按端口分清是谁的。

  • A 错192.168.x.x 是私有地址,不能出现在因特网上,出口路由器必须把源地址换成公网地址。
  • B 错两个分组的源 IP、源端口完全一样,NTP 服务器的应答回来后,路由器无法区分该交给哪台内网主机;NAPT 必须换端口。
  • C 错210.1.1.2 不属于该单位(它只有 210.1.1.1 一个公网地址);给每台内网主机一个公网地址是动态 NAT 的做法,这里地址不够用。
  • D 对同一个公网 IP,用不同的外部端口区分两个会话。

复习:回到正文。

卷 C · 38traceroute原创
主机 A 到主机 B 的路径上共有 5 台路由器。A 用 traceroute 探测这条路径,每个 TTL 值只发 1 个探测分组,且各分组都沿同一路径传送、无丢失。A 收到的 ICMP“时间超过”报文共有( )个。
  • A. 4
  • B. 5
  • C. 6
  • D. 10
展开解析

BTTL = 1 ~ 5 的分组分别在第 1 ~ 5 台路由器处 TTL 减到 0,各回 1 个时间超过报文;TTL = 6 的分组到达 B,B 回的不是“时间超过”。

  • A 错4 少数了一台:第 5 台路由器收到 TTL = 5 的分组时也把 TTL 减到 0,同样回时间超过报文。
  • B 对5 台路由器各 1 个。
  • C 错6 把目的主机 B 也算上了;B 收到分组后并不丢弃,回的是终点不可达(端口不可达)或回送回答,而不是时间超过。
  • D 错10 是把一来一回各算一个;每台路由器只回 1 个时间超过报文给 A。

复习:回到正文。

卷 C · 39接收窗口原创
TCP 接收方的接收缓存为 8 KB。它已按序收到 5 KB 数据,其中 2 KB 已被应用进程读走。此时接收方通告的接收窗口是( )。
  • A. 1 KB
  • B. 3 KB
  • C. 5 KB
  • D. 6 KB
展开解析

C缓存中还占着 5 − 2 = 3 KB,空闲 8 − 3 = 5 KB。

  • A 错1 KB = 8 − 5 − 2,把被读走的 2 KB 又从窗口里减了一次;读走的数据腾出了空间,应该加回来。
  • B 错3 KB = 8 − 5,以为收到的 5 KB 都还在缓存里;其中 2 KB 已被应用读走,已经腾出空间。
  • C 对8 − (5 − 2) = 5 KB。
  • D 错6 KB = 8 − 2,只减去了被读走的部分,方向反了:被读走的不占缓存,还没读走的 3 KB 才占。

复习:回到正文。

卷 C · 40Cookie原创
用户第一次访问某购物网站,服务器要为该用户建立一个识别码并让浏览器以后每次访问时都带上它。服务器把识别码放在 HTTP 响应报文的( )首部行中。
  • A. Set-Cookie
  • B. Cookie
  • C. Location
  • D. Last-Modified
展开解析

A响应里用 Set-Cookie 下发;浏览器以后在请求里用 Cookie 首部带回。

  • A 对Set-Cookie 是响应首部,告诉浏览器保存这个识别码。
  • B 错Cookie 首部行出现在浏览器发出的请求报文里,是把识别码带回给服务器,方向反了。
  • C 错Location 用于重定向(如 301 / 302 响应),告诉浏览器去哪个新地址。
  • D 错Last-Modified 给出对象的最后修改时间,用于缓存和条件 GET,与识别用户无关。

复习:回到正文。

二、综合应用题(第 47 题,9 分)

卷 C · 47IP 地址规划:按需划分、聚合与例外、分片9 分

某单位网络如下图所示。ISP 分给该单位的地址块为 58.192.120.0/23,R1 的 S0 接口地址为 202.119.9.2/30(ISP 一侧为 202.119.9.1)。LAN1、LAN2、LAN3 分别需要 200、100、50 个可分配地址,R1 与 R2 之间的点对点链路也要从该地址块中分配地址,这条链路的 MTU 为 900 B,其余链路的 MTU 均为 1500 B。

ISPR1R2LAN1:200 台LAN2:100 台LAN3:50 台点对点链路(MTU 900 B)E0E0E1ISP 一侧 202.119.9.1S0:202.119.9.2/30S1S0

(1) 按需分配子网,要求每个子网尽可能小,按 LAN1、LAN2、LAN3、R1–R2 链路的次序依次从低地址开始分配。写出各子网的网络地址(地址/前缀长度);R1、R2 的链路接口地址取链路子网中的两个可用地址(R1 取小的)。(2 分)

(2) 写出 R1 的路由表(目的网络、下一跳、接口),要求表项尽可能少(直连网络也要写出),并说明为什么到 R1–R2 链路的那一项不会被聚合项“抢走”。(3 分)

(3) ISP 的路由器到该单位只需要一条路由,写出这条路由。(1 分)

(4) LAN1 中的主机向 LAN3 中的主机发送一个总长度为 1500 B(首部 20 B)、DF = 0 的 IP 分组。R1 转发时分几片?写出各片的总长度、片偏移和 MF。若该分组的 DF = 1,R1 怎样处理?(2 分)

(5) 若 LAN3 以后要扩充到 120 台主机,能否在不改动其他子网和链路地址的前提下,把 LAN3 的子网扩大?说明理由。(1 分)

先在纸上自己做一遍,再点这里展开满分解答
(1) 按需分配(2 分)
答题卡这样写
子网需要前缀网络地址地址范围
LAN1200/24(254 个)58.192.120.0/24120.0 ~ 120.255
LAN2100/25(126 个)58.192.121.0/25121.0 ~ 121.127
LAN350/26(62 个)58.192.121.128/26121.128 ~ 121.191
R1–R2 链路2/30(2 个)58.192.121.192/30R1:58.192.121.193,R2:58.192.121.194

四个子网全部落在 58.192.120.0/23 内,共用去 256 + 128 + 64 + 4 = 452 个地址,还剩 60 个(58.192.121.196 ~ 58.192.121.255)。(子网每错一个扣 0.5 分)

(2) R1 的路由表(3 分)
答题卡这样写
目的网络下一跳接口
58.192.120.0/24直接交付E0
58.192.121.192/30直接交付S1
58.192.121.0/2458.192.121.194S1
202.119.9.0/30直接交付S0
0.0.0.0/0202.119.9.1S0

LAN2(121.0/25)和 LAN3(121.128/26)都在 R2 后面,下一跳相同,聚合成一项 58.192.121.0/24。这一项也“包含”了链路子网 58.192.121.192/30,但链路那一项的前缀 /30 更长,按最长前缀匹配,发往链路地址的分组仍匹配 /30、直接交付,不会被聚合项送给 R2。

(3) ISP 的路由(1 分)
答题卡这样写

目的网络 58.192.120.0/23,下一跳 202.119.9.2(R1 的 S0)。

(4) 分片(2 分)
答题卡这样写

每片最多装 (900 − 20) = 880 B 数据(880 恰是 8 的倍数);原数据 1480 B = 880 + 600,分 2 片:第 1 片总长度 900 B、片偏移 0、MF = 1;第 2 片总长度 620 B、片偏移 110(880 ÷ 8)、MF = 0(1 分)。若 DF = 1,R1 不能分片,丢弃该分组,并向源主机发送 ICMP 终点不可达报文(需要分片但 DF 置 1)(1 分)。

(5) 能否扩容(1 分)
答题卡这样写

不能。120 台需要 /25(126 个可分配地址),而 LAN3 现在的 58.192.121.128/26 所在的 /25 只能是 58.192.121.128/25,它已经包含了 R1–R2 链路的 58.192.121.192/30;不改动链路地址就无法扩大(若把链路改到别的地址段,如剩余地址重新规划,才可以)。

① 按需分配要从大到小、每块起点对齐到块大小的倍数;② 聚合项可以“包含”别的直连子网,只要后者前缀更长,最长前缀匹配会让它优先;③ 片偏移 = 880 ÷ 8 = 110,不要写成 880;④ DF = 1 时发的是“终点不可达”而不是“时间超过”;⑤ 扩容时子网必须是对齐的整块,不能把相邻的零散地址拼起来。

评分点分
(1) 四个子网与链路接口地址(每错一个扣 0.5 分)2
(2) 五项各 0.5 分(LAN2、LAN3 分两项写也给分,但扣“表项最少”的 0.5 分);最长前缀匹配的理由 0.5 分3
(3) 一条 /23 路由1
(4) 两片的总长度、片偏移、MF 1 分;DF = 1 的处理 1 分2
(5) 结论与理由1
卷 C 答案速查(做完再看)
题3334353637383940
答案ABDCDBCA
考点1.52.33.23.74.54.65.56.5

47:按需划分、R1 路由表(聚合 + 最长前缀匹配)、ISP 路由、分片与 DF、扩容判断。自评:选择题全对、47 题 ≥ 8 分 ⇒ 本卷达到满分水平。三套卷都做完后,回到 9.0 对照丢分的四个地方,看看自己还在哪一处丢分。

9.7全书知识点细目表(满分清单)

这张表把全书压成 152 条“能直接拿来做题的结论”,按篇排列,覆盖 2009 ~ 2026 年全部 163 道计网真题。考前一周逐条过:能说出结论、能说出理由、能举一个例子,就勾上;勾不上的点“去看”原文。勾选只保存在你这台电脑的浏览器里。右列是直接考过这一条的真题,点题号可以弹出原题和讲解。

总进度:

第 1 篇 体系结构 ()

✓知识点(结论)讲解真题
组成的三种看法:硬件 / 软件 / 协议;边缘部分 / 核心部分;资源子网 / 通信子网去看—
分类:按范围 WAN / MAN / LAN / PAN,按拓扑、按交换方式、按使用者去看—
标准化组织 ISO、ITU-T、IEEE、IETF;RFC 成为标准的三个阶段(拓展)去看—
电路 / 报文 / 分组交换的特点;数据报与虚电路(虚电路按序、建立时选路)去看2020-34
交换方式的时间:n 个分组经 k 段链路 = (n + k − 1) × 发送时延 + 传播时延去看2010-34 2013-35 2025-33
速率、带宽、吞吐量;端到端吞吐量由瓶颈链路决定去看2024-33
四种时延;发送时延 = 长度 ÷ 速率,传播时延 = 距离 ÷ 传播速率,带宽不影响传播时延去看—
时延带宽积 = 传播时延 × 带宽;RTT 不含数据的发送时延;D = D0 / (1 − U)去看2023-33
协议三要素(语法、语义、同步);服务原语四类;SAP;PDU = PCI + SDU去看2020-33
协议水平、服务垂直;体系结构 = 层次 + 各层协议的集合,不含具体实现;分层的好处去看2010-33 2026-33
封装开销:各层首部逐层加上,算传输效率去看2017-33
面向连接 ≠ 可靠:各层协议“连接与可靠性”一览去看—
OSI 七层各自的功能(会话层对话管理、表示层格式转换、传输层端到端……)去看2009-33 2013-33 2014-33 2019-33 2022-33
TCP/IP 四层 / 五层模型;网际层只提供无连接的数据报服务去看2011-33 2021-33
谁在哪一层、谁为谁服务:ICMP 由 IP 直接服务;路由器 / 交换机 / 集线器的最高层次去看2012-33 2016-33

第 2 篇 物理层 ()

✓知识点(结论)讲解真题
码元、波特与比特率:比特率 = 波特率 × log2V去看2011-34
单工 / 半双工 / 全双工;串行 / 并行;同步 / 异步去看—
基带传输与频带(宽带)传输去看—
奈氏准则:无噪声最大数据率 = 2W × log2V去看2009-34 2022-34 2023-34
香农公式 C = W log2(1 + S/N);dB = 10 lg(S/N),代入前先换成比值去看2016-34 2026-34
两个极限同时存在取较小值;影响信道数据率的因素去看2014-35 2017-34
NRZ、NRZI、曼彻斯特(前高后低 = 1)、差分曼彻斯特(位首有跳变 = 0)、RZ;由波形反推比特去看2013-34 2015-34 2021-34
ASK / FSK / PSK / QAM;FSK 用两个频率;QAM 每码元 log2(点数) 位去看2024-34
PCM:采样频率 ≥ 2 × 最高频率,量化级数取 log2 得每样值位数去看—
导向介质:双绞线(屏蔽 / 非屏蔽、为什么绞)、同轴电缆、光纤(单模远、多模近);非导向介质去看2019-34
以太网物理层命名:10BASE-T、100BASE-TX、1000BASE-SX……去看—
物理层接口四特性:机械、电气、功能、过程(规程)去看2012-34 2018-34
中继器、集线器:物理层设备,不隔离冲突域;两端速率必须相同;5-4-3 规则(拓展)去看—

第 3 篇 数据链路层 ()

✓知识点(结论)讲解真题
链路层功能与三种服务;链路 vs 数据链路去看—
组帧四法;零比特填充(5 个 1 后插 0)、字节填充;透明传输去看2013-37
奇偶校验只能检出奇数个错去看—
CRC:补 r 个 0 做模 2 除法,余数为 FCS;接收方整串除余数为 0 才无错;只检错去看2023-37
海明码:2r ≥ k + r + 1;码距 d:检 d − 1、纠 ⌊(d − 1)/2⌋去看2025-34
停止—等待:出错、丢失、迟到三种情况;1 位序号;利用率去看2018-36 2020-36
GBN 与 SR 出错后的行为:GBN 重传其后全部、SR 只重传出错的帧并缓存失序帧去看2009-35 2011-35
窗口上限:GBN WT ≤ 2n − 1;SR WT + WR ≤ 2n去看2019-35 2024-37
信道利用率 = W × TD ÷ (TD + RTT + TA);满利用率所需窗口与序号位数去看2012-36 2014-36 2015-35 2023-35
累积确认、捎带确认;链路层可靠传输综合题去看2017-47 2025-47
FDM、TDM、统计时分 STDM、WDM 的区别;信道划分不冲突去看2013-36
CDMA:码片正交、规格化内积 1 / −1 / 0去看2014-37
纯 ALOHA(易损期 2T,18.4%)与时隙 ALOHA(T,36.8%)去看—
CSMA 三种坚持:1-坚持、非坚持、p-坚持去看—
CSMA/CD:争用期 2τ、最短帧长 = 2τ × 速率、最远距离去看2009-37 2016-36 2019-36 2010-47
二进制指数退避:k = min(次数, 10),r ∈ {0, …, 2k − 1},16 次失败丢弃去看2023-36 2025-35
CSMA/CD 的特点辨析:半双工、不确认、冲突后发干扰信号去看2015-36
轮询访问:轮询协议、令牌传递(无冲突、单点故障、轻负载效率低)去看—
802.11 为什么不能用 CD:隐蔽站、暴露站;CSMA/CA 对正确收到的帧确认去看2011-36
IFS(SIFS < PIFS < DIFS)、CSMA/CA 发送过程、退避计时器冻结去看2020-37 2026-35
RTS / CTS 信道预约与 NAV 的计算去看2018-35 2024-36
802.11 帧的地址:To DS / From DS 决定地址 1、2、3 的含义去看2017-35
局域网体系结构:LLC 与 MAC 子层去看—
MAC 地址 48 位、I/G 位;以太网提供无连接、不可靠的服务去看2012-35
以太网 V2 帧:数据 46 ~ 1500 B,最短 64 B、最长 1518 B,不足填充去看—
高速以太网:100 Mb/s、1 Gb/s、10 Gb/s;全双工不用 CSMA/CD去看—
PPP:面向字节、7E 定界、字节填充、LCP / NCP、不编号不确认去看—
VLAN 隔离广播域;802.1Q 标签 4 B、VID 12 位;access / trunk 端口去看2024-35 2026-36
网桥与交换机:工作在链路层、按 MAC 地址转发、隔离冲突域不隔离广播域去看2009-36 2015-37
交换机自学习:记源地址、查目的地址,查不到泛洪,同端口过滤去看2014-34
直通(只看目的 MAC 6 B)、存储转发、无碎片;交换机容量去看2013-38
冲突域与广播域的数法;混合拓扑中帧能到达哪里去看2010-38 2016-35 2020-35 2019-47 2022-47

第 4 篇 网络层 ()

✓知识点(结论)讲解真题
转发(数据平面)与路由选择(控制平面)去看—
异构网络互连:路由器在网络层把不同的网络连起来去看—
网络层拥塞控制:开环与闭环去看—
SDN:控制与转发分离;南向接口(OpenFlow,下发流表)、北向接口、东西向接口;流表按优先级匹配去看2022-37
IPv4 首部逐字段:首部长度 4 B 单位、总长度 1 B 单位、片偏移 8 B 单位、TTL、协议、首部检验和去看—
分片:每片数据取 8 的倍数,MF / DF / 片偏移;只在目的主机重组去看2021-36
分类地址与特殊地址(网络地址、广播地址、127、0.0.0.0、受限广播);私有地址去看2017-36 2011-38
子网掩码与按位与求网络地址去看2012-39 2022-35 2016-39
CIDR 与块大小法:网络地址、广播地址、可分配地址(−2)去看2023-39 2026-39
定长划分与变长划分(VLSM):从大到小、对齐分配去看2010-37 2017-38 2019-37 2021-35 2018-47
分组转发流程:直接交付 / 间接交付;默认路由、特定主机路由;主机的默认网关去看2011-37 2022-36 2009-47
最长前缀匹配去看2015-38 2014-43
路由聚合(构成超网)与例外路由去看2018-38 2013-47
NAT 与 NAPT:出去改源地址和源端口,回来改目的地址和目的端口去看2016-38 2023-38 2025-37 2020-47
ARP:同网络解析目的主机、跨网络解析默认网关;请求广播、响应单播去看2012-38 2018-37
免费 ARP:检查地址冲突、更新别人的缓存去看—
DHCP:四个报文、UDP 67 / 68、DISCOVER 和 REQUEST 都是 0.0.0.0 → 广播去看2025-36 2015-47
DHCP 中继代理(giaddr)与租期续约(T1 单播、T2 广播)去看—
ICMP 差错报文五类(含源点抑制)与不发送的四种情况去看2010-36
ping(回送请求 / 回答)与 traceroute(TTL + 时间超过)去看—
IPv6 地址:128 位、冒号十六进制、零压缩只能用一次去看—
IPv6 与 IPv4:基本首部固定 40 B、无检验和、Hop Limit 对应 TTL去看2023-40
IPv6 只在源主机分片,路由器不分片去看—
IPv4 向 IPv6 过渡:双协议栈与隧道去看—
静态路由与动态路由;默认路由去看—
层次路由:自治系统、IGP(RIP、OSPF)与 EGP(BGP);OSPF 划分区域去看2026-38
RIP:距离向量更新规则、16 不可达、30 s、坏消息传得慢去看2010-35 2016-37 2021-37
链路状态路由与 Dijkstra去看2026-37 2014-42
OSPF:IP 直接封装(89)、区域、洪泛、五种分组去看2024-47
BGP:TCP 179、路径向量、只求较好路由;RIP / OSPF / BGP 的封装去看2017-37
路由器组成:路由选择部分 + 分组转发部分;路由表与转发表;路由器的功能去看2012-37
交换结构三种;输入排队的线路前部阻塞去看—
分组穿过路由器:IP 地址不变,TTL − 1、首部检验和重算、MAC 换成本段去看—
组播的概念:源发一份、分岔处复制;与单播、广播的区别去看—
IP 组播地址:D 类、224.0.0.x 不转发、只作目的、只用 UDP;组播 MAC 01-00-5E + 低 23 位,32 对 1去看—
IGMP(主机与本地组播路由器之间)与组播路由(拓展)去看—
移动 IP:永久地址、转交地址、归属代理、外地代理;通信过程与三角路由去看—
移动 IP 各段分组的地址:隧道外层目的 = 转交地址去看—

第 5 篇 传输层 ()

✓知识点(结论)讲解真题
传输层提供进程到进程(端到端)的逻辑通信,只在主机中实现去看—
无连接服务(UDP)与面向连接服务(TCP);TCP 的连接只在两端主机去看—
端口 16 位:熟知 0 ~ 1023、登记、短暂;常用熟知端口与 TCP / UDP去看—
复用与分用:先看 IP 协议字段,再看目的端口去看2018-39
套接字 = IP + 端口;TCP 连接由四元组确定去看—
UDP 的特点:无连接、尽最大努力、面向报文、首部 8 B、支持一对多去看2014-39
UDP 伪首部 12 B,只用于计算检验和、不发送去看—
检验和:16 位反码求和、回卷、取反;算出 0 存全 1去看2024-39
TCP 首部 20 ~ 60 B,各字段含义;传输效率去看2021-39
读 TCP 首部(抓包题):端口、序号、确认号、数据偏移、标志去看2012-47
六个控制位与紧急指针;RST去看—
MSS 等选项去看—
三次握手;SYN 不带数据但耗 1 个序号,第三次握手可带数据去看2011-39 2019-39
为什么三次握手:防止失效的连接请求去看—
SYN 洪泛攻击去看—
四次挥手、半关闭;FIN 占 1 个序号去看2020-39
TIME-WAIT 等 2MSL 的两个理由;释放连接所需时间去看2022-39 2024-38 2026-47
TCP 有限状态机:11 个状态与转移去看2021-38
保活计时器与 RST;TCP 的四个计时器去看—
序号按字节编号、确认号 = 期望的下一个字节、累积确认去看2009-38 2011-40 2013-39
以字节为单位的滑动窗口:三个指针、可用窗口去看2010-39 2021-40 2025-38
RTO = RTTS + 4RTTD;加权平均;Karn 算法;超时 RTO 加倍去看—
3 个冗余 ACK 触发快重传去看2019-38
TCP 的可靠传输像 GBN 还是 SR去看—
流量控制:rwnd 由接收方的空闲缓存决定去看—
零窗口与持续计时器;糊涂窗口(拓展)去看—
拥塞控制四算法;超时 vs 3 个重复确认的处理去看2009-39 2014-38
cwnd 逐轮计算;发送窗口 = min(rwnd, cwnd)去看2015-39 2017-39 2020-38 2022-38 2016-41 2023-47
AIMD;快恢复的两种写法(本书与王道一致:cwnd = 新 ssthresh)去看—
TCP 与 UDP 全面对比;应用为什么这样选去看—

第 6 篇 应用层 ()

✓知识点(结论)讲解真题
C/S 与 P2P 模型的区别去看2019-40
一问一答:UDP 1 个 RTT,TCP 先握手共 2 个 RTT去看2025-39
层次域名空间去看—
四类域名服务器(根、顶级、权限、本地)与“区”去看—
递归查询与迭代查询:主机到本地一般递归,本地向外一般迭代去看2010-40 2020-40
DNS 查询次数与时间(不是固定 4 次,缓存可以减少)去看2016-40
DNS 一般用 UDP 53(区域传送、长应答用 TCP)去看2018-33
资源记录 A、AAAA、NS、CNAME、MX、PTR去看—
FTP:控制连接 21 整个会话保持、数据连接每次传送(含目录列表)建立;主动 / 被动模式;带外传送去看2009-40 2017-40
电子邮件系统组成:用户代理、邮件服务器、发送协议与读取协议去看2012-40
SMTP:推协议、TCP 25、三个阶段、只能传 7 位 ASCII去看2013-40 2018-40
POP3(110)与 IMAP(143);网页邮件用 HTTP去看2015-33 2025-40
电子邮件格式与 MIME:编码成 ASCII 再交给 SMTP,不改 SMTP去看—
URL、HTML、HTTP 的分工;访问网页可能用到的各层协议去看2014-40
非持续 / 持续 / 流水线连接的 RTT 数去看2022-40 2024-40
HTTP 报文结构、方法(GET / POST / HEAD)、状态码分类去看2015-40
Cookie:Set-Cookie 响应首部、Cookie 请求首部、用途去看2026-40
Web 缓存(代理服务器)与条件 GET(304)去看—
一次网页访问的全过程:DHCP → ARP → DNS → TCP → HTTP去看2011-47 2021-47

综合题与考场 ()

✓知识点(结论)讲解真题
综合题 7 类:地址规划、路由协议、首部分析、局域网、链路层可靠传输、TCP、全过程——每类的固定步骤去看—
综合题的答题规范:写依据、写单位、地址写全去看—
全书公式与单位口径速查去看—
考纲有、真题少的冷点(组播、移动 IP、静态路由、ALOHA、令牌、RTO、MIME……)去看—
组合题的判法:先判最有把握的一条,再判选项之间有差别的去看—