计算机网络综合题
网络综合题通常围绕一张拓扑图或一次通信展开,同一题可以同时问地址、转发、协议字段和耗时。学习时应先建立分层关系:应用提出什么请求,传输层维护什么状态,IP 怎样选路,链路层怎样把这一跳的数据送出去。
这个板块包含哪些知识
网络分层图谱把“各层负责什么”与“一次端到端访问”连在一起。本页常用的知识可以按层归纳:
- 应用层:DNS、DHCP、HTTP、FTP 的作用与交互次序,以及连接是否复用。
- 传输层:端口、TCP 建连与释放、序号确认号、接收窗口、拥塞控制。
- 网络层:IPv4 与 CIDR、子网划分和聚合、路由表、最长前缀匹配、分片、TTL、NAT 和路由协议。
- 链路与物理层:MAC、ARP、交换机学习、广播域与冲突域、滑动窗口、CSMA/CD、发送与传播时延。
这些内容会在一次访问中相遇。例如访问异网服务器,IP 目的地址通常仍是服务器,当前帧的目的 MAC 则是下一跳网关。算时间时,也要把应用交互次数、TCP 数据发送过程与链路上的传输时延联系起来。
先判断每一小问处理的是哪个对象,再把各层结果接回完整通信过程。
常见考点与题型
综合题可能组合下面几类小问。先看要求求什么,再确定需要调用哪些知识。
| 题型 | 题干中的线索 | 解题思路 |
|---|---|---|
| 地址规划与转发 | 主机数、掩码、路由表、最少表项 | 按需求划分且检查边界对齐;聚合查公共前缀;转发用最长匹配 |
| 逐跳封装与设备追踪 | 主机访问服务器、ARP、交换表、NAT | 按时间列帧,记录每跳地址和表项变化,先看缓存及已有配置 |
| 报文字段与分片 | 十六进制首部、MTU、seq / ack | 按实际首部长度定位字段,结合协议含义换算字节数和偏移 |
| TCP 窗口与总时间 | MSS、RTT、缓存、拥塞阈值 | 维护已发送未确认数据、cwnd 与 rwnd,逐轮或按报文事件推进 |
| 链路效率与距离限制 | 帧长、速率、传播距离、窗口 | 分别算发送与传播时间,再套对应协议的等待和窗口约束 |
| 路由协议与网络范围 | AS、收敛、RIP / OSPF / BGP | 先区分 AS 内外和协议机制,再依题设策略分析传播与选路 |
解题前要弄清的关系
一、分层封装与逐跳转发
应用层数据 → TCP 段(加 seq/ack/窗口) → IP 分组(加源/目的 IP、TTL)
→ 帧(加源/目的 MAC) → 比特流
逐跳追踪时先区分普通转发与地址转换:
- 普通 IP 转发保持源、目的 IP;跨路由器时重新封装链路层首部,二层交换转发通常不改源、目的 MAC——跨网时帧的目的 MAC 是默认网关的 MAC,见 MAC 地址、ARP 流程;
- 题设有 NAT 时还需追踪 IP 地址和可能的端口转换,出方向改源、入方向改目的,见 NAT 表。
二、地址规划、聚合与路由查找
- 切:由需求主机数解主机位
2ᴺ − 2 ≥ 需求,剩下的位给子网号,见 子网划分、变长子网划分 - 聚:同方向且边界对齐的前缀按共同前缀合并,检查是否覆盖了额外地址,前缀每短 1 位合并两条,见 子网聚合
- 查:转发一律 最长前缀匹配;路由表格式见 路由表
三、设备按「隔离什么」来选
| 要隔离 | 选谁 | 见 |
|---|---|---|
| 都不隔离 | 集线器 | 冲突域 |
| 只隔离冲突域 | 交换机 | 交换机 |
| 冲突域和广播域都隔离 | 路由器 | 广播域 |
在典型二层拓扑题中,主机和服务器也有 IP;交换机端口和集线器端口不承担三层转发。作为网关的路由器接口要配置该网段的接口 IP,该地址才是主机的默认网关。
四、时间题的三套模型互不通用
- 链路层看一帧:
利用率 = min(1, N × 数据帧发送时延 ÷ (发送时延 + RTT + 确认帧时延))(无差错、确认等待模型),见 信道利用率、窗口大小限制 - 传输层看一轮 RTT:拥塞窗口每轮翻倍或加一,见 拥塞控制、慢开始
- CSMA/CD 看一个 2τ:最小帧长 = 2τ × 数据率,见 限制条件
五、序号按字节推进,SYN 和 FIN 各占一个序号
数据首字节序号 = 初始序号 + 1;FIN 的序号 = 最后一个数据字节 + 1;累计确认号是期望收到的下一个字节序号;乱序到达不会自动跨过缺失字节推进确认号。见 三次握手、四次挥手、滑动窗口机制。
各类题的解法
下面分别展开地址、逐跳追踪、时间和协议题;同一综合题可能需要组合使用。
先认出这一问属于哪一种
| 题干里出现 | 类型 | 第一笔写什么 |
|---|---|---|
| 若干局域网、需求主机数、要求路由项尽可能少 | 地址规划与填表 | 2ᴺ − 2 ≥ 需求 |
| 拓扑图 + 「H1 访问 H2 / 服务器」 | 逐跳封装与设备追踪 | 先判断源和目的在不在同一网络 |
| 一串十六进制、或 IP/TCP 首部字节清单 | 报文字段解读 | 画字节尺:以太网头 14B,IP 头内源 IP 在第 13~16 字节 |
| RTT、MSS、拥塞窗口、接收缓存 | 传输层时间与窗口 | 列轮次表,每轮写 cwnd |
| 距离、传播速率、数据率、利用率 | 链路层效率与限制 | 先算单程传播时延 τ |
| RIP / OSPF / BGP、AS、收敛 | 路由协议与算法 | 先按规模选协议 |
地址题按四类顺序填路由表
1. 直连网络 下一跳留空,只写接口
2. 特定主机路由 掩码 255.255.255.255
3. 远端 / 聚合 下一跳 = 对端路由器接口的 IP
4. 默认路由 0.0.0.0 / 0.0.0.0
要求「路由项尽可能少」就先聚合同方向的连续前缀:/25 + /25 → /24(2009#47)、/24 + /24 → /23(2014#43)、/25 + /24 → /23(2013#47)。聚合之后仍然服从最长前缀匹配,2013#47 的 194.17.20.200 同时匹配 /23 和 /25,走 /25 那一条。
变长划分从最大需求切起:2025#47 先切生活区 10.10.10.128/25,再切作业区 10.10.10.64/26。可用主机数要连路由器接口一起扣:2018#47 是 126 − 80 − 1 = 45。
分片固定三步(见 IP 数据报分片):
最大片数据 = ⌊(MTU − 首部) ÷ 8⌋ × 8
片数 = ⌈(总长度 − 首部) ÷ 最大片数据⌉(各片首部等长、采用最大合法片数据的简化模型)
片偏移 = 它前面的数据字节数 ÷ 8
追踪题按帧序列写,不跳步
在该题 DNS 服务器位于本地、相关缓存为空等条件下,访问顺序是:ARP 查本地 DNS 服务器 → DNS 请求与响应 → 发现目的不在本网 → ARP 查默认网关 → 才发 HTTP(2021#47)。配套的三条口径:
- 交换机的转发表只记「从某端口进来过的帧的源 MAC」,从没主动发过帧的主机不进表;
- 广播帧(DHCP Discover、ARP 请求)的目的 MAC 是全 1,同一广播域内所有接口都收到,Discover 的源 IP 是 0.0.0.0、目的 IP 是 255.255.255.255;
- 802.11 数据帧三个地址按「帧来自 AP」记:地址 1 接收端、地址 2 是 AP、地址 3 发送端,见 802.11 数据帧地址。
问「经过路由器改了哪些字段」只写变的那几个:源/目的 IP(仅 NAT)、TTL 减 1、首部校验和重算,有分片再加总长度、标志、片偏移。2011#47 的评分说明写明:把 IP 首部所有字段罗列一遍不给分。
时间题分层套公式
链路层(见 ARQ 协议):
τ = 距离 ÷ 传播速率
停等有效数据率 = 数据比特 ÷ (数据帧发送时延 + 确认帧发送时延 + 2τ)
GBN 利用率 U = min(1, N × Td ÷ (Td + RTT + Ta))
捎带确认时按题设反向数据帧长度及等待规则计 Ta,不能默认 Ta = Td
GBN 序号位数 k 满足 2ᵏ ≥ N + 1;若题目是 SR,要按题目给出的发送/接收窗口约束另算序号空间
CSMA/CD 最小帧长 = 2τ × 数据率
2017#47 由此得 50%,2025#47 反解出 N ≥ 7.2 取 8、再由 2⁴ ≥ 9 得 4 位;2022#47 用 64B 的最小帧长反推出两站最远 210m。
发送窗口 = min(拥塞窗口, 接收窗口)
慢开始:每收到一个新确认 cwnd += 1 MSS(每轮翻倍),到阈值转拥塞避免每轮 +1
rwnd(只收不取)= 接收缓存 − 已收字节
总时间(题目忽略处理/排队时延,按整轮 RTT 计)= 1 个 RTT 建连 + 数据轮数 × RTT
2016#41 的三个窗口是 9KB / 12KB / min = 9KB;2026#47 的总时间是 4 个 RTT = 20ms;2023#47 用 6 个 RTT 得 18000B ÷ 60ms = 2.4Mb/s。单向释放连接要 3 次单向传送,也就是 1.5 个 RTT(2016#41 的 300ms)。
协议题按规模和边界答
- 跳数可能超过 15 就用 OSPF,小网可用 RIP;若题目采用固定 30 s 更新的简化模型,才用
收敛时间 = 30s × 跳数; - TTL 至少设为「最多经过的路由器数 + 1」,而「到达时的 TTL」= 初始值 − 路径上的路由器台数;
- 跨 AS 用 BGP,它是应用层协议、报文封装在 TCP 里;同 AS 内扩散用 iBGP,跨 AS 用 eBGP,都用 UPDATE 报文;
- 按题设省略其他优先属性时,可比较 AS 路径长度;一般 BGP 选路还受策略和其他属性影响(2024#47)。
首部与分片:用长度字段划分边界
读十六进制清单,先确认帧格式、IPv4 首部长度 IHL 和 TCP 数据偏移,再标出下一层的起点。以太网常见首部为 14 B,但 VLAN 标签、IP 选项或 TCP 选项都会改变后续位置,不能始终按固定偏移读取。
分片时,从 MTU 扣除本片 IP 首部长度;除最后一片外,数据长度必须是 8 B 的整数倍。片偏移只计算原 IP 数据部分中的偏移,不包含各片重新携带的首部。片数、MF 和总长度分别核对。
TCP 序号:把数据和控制位分别计数
若 SYN 的 seq 为 100,首个数据字节的序号是 101。连续收到 500 B 后,累计 ack 为 601;若接着收到的恰是 FIN 且没有缺失数据,则确认推进到 602。普通 ACK 不额外占用序号。
窗口题除了 min(cwnd,rwnd),还要扣除已发送未确认的数据,才能得到当前还能发送多少。时间题先明确终点是“最后一位到达接收方”还是“最后的确认返回发送方”,两者不能无条件都按整轮 RTT 计算。
历年题索引
六种类型和它们的口径是通用的,下面这张表用于按考点选题和对照不同问法。
| 真题 | 主线 | 这一年特别问了什么 |
|---|---|---|
| 2009#47 | 子网划分 + 路由表 + 聚合 | 主机路由掩码全 1、默认路由、对端怎么聚合 |
| 2010#47 | CSMA/CD 冲突时间与效率 | 双方都检测到冲突的最短、最长时间 |
| 2011#47 | 以太网帧的十六进制解读 | 网关 MAC、ARP 请求的目的 MAC、非流水线要几个 RTT |
| 2012#47 | IP / TCP 首部字节分析 | 哪几个分组做了填充、已收几字节、由 TTL 差算跳数 |
| 2013#47 | 聚合路由表 + 最长匹配 | 某个地址走哪个接口、两台路由器之间用什么协议 |
| 2014#42 | 链路状态信息建图 + 最短路径 | 该抽象成哪种数据结构、链式存储怎么定义 |
| 2014#43 | 最少路由项 + TTL | 到达主机时的 TTL;加默认路由后链路状态信息增什么 |
| 2015#47 | DHCP + ARP + 网关配错 | 动态分配的最大地址范围;网关配错的后果 |
| 2016#41 | TCP 三个窗口 + 时间 | 第 8 个确认到达时三个窗口各多大;释放连接最短时间 |
| 2017#47 | GBN 捎带确认 + 利用率 | 还能发几帧、要重发几帧、最大利用率 |
| 2018#47 | 子网地址 + IP 分片 | 还能接多少台主机;最大片长度与片偏移 |
| 2019#47 | 设备选型 + 接口 IP | 哪些接口要配 IP;谁能收到发往 .127 的分组 |
| 2020#47 | NAT 表 + 逐跳地址变化 | 经过每一台路由器后源、目的 IP 各是什么 |
| 2021#47 | 逐层封装 + 交换表追踪 | t1 时刻交换表里有什么;H2 至少收到几个帧 |
| 2022#47 | 冲突域广播域 + CSMA/CD | 两台主机最远能隔多少米;802.11 的三个地址 |
| 2023#47 | FTP + 序号 + 拥塞窗口 | 控制连接和数据连接谁是持久的;至少要多长时间 |
| 2024#47 | 路由协议选择 + BGP 选路 | RIP 收敛时间、eBGP 与 iBGP、AS 路径怎么比 |
| 2025#47 | 卫星时延 + GBN 窗口 + 变长划分 | 窗口至少多大、序号至少几位 |
| 2026#47 | 握手挥手字段 + 窗口 + 总时间 | 最后一个报文段的 seq、ack 和 FIN 各取什么 |
易错清单
- 可用主机数只减 2。还要扣掉已分配的主机和路由器接口(2018#47:126 − 80 − 1 = 45)。
- 聚合完就照聚合项转发。聚合不改变最长前缀匹配的结论(2013#47)。
- TTL 三种问法混用。「到达时是多少」减路由器台数、「至少设为多少」要加 1、「经过了几个路由器」是两端相减(2014#43、2024#47、2012#47)。
- 以太网填充的判据记成 64B。判据是有效载荷是否小于 46B(2012#47)。
- 发送窗口只看拥塞窗口。要取
min(cwnd, rwnd),还要看手里究竟还剩多少数据(2016#41、2026#47)。 - NAT 一次改两端。出方向只改源 IP,到对侧 NAT 才改目的 IP(2020#47)。
- 交换表把没发过帧的主机也记进去。它只学源 MAC;但那台主机照样会收到广播帧(2021#47)。
- 网关配错就答「完全不通」。同网段仍然可达,只有跨网段不通(2015#47)。
上一页:文件系统与磁盘。