# 📖 计算机网络（Computer Networking）—— 408考研完全笔记

## 相关笔记

- [[DS]]：路由算法、最短路径、队列缓存、窗口机制都能回到图和线性结构。
- [[OS]]：套接字、缓冲区、进程通信、I/O 多路复用与操作系统机制直接相关。
- [[CO]]：网络数据在主机内的 DMA、中断、总线与缓存行为依赖组成原理基础。

> **编写说明**：本笔记严格依据全国硕士研究生招生考试计算机学科专业基础（科目代码：408/11408）考试大纲编写，融合王道考研体系、谢希仁《计算机网络（第8版）》与历年真题高频考点，强调“概念严谨 + 计算可落地 + 题感导向”。
>
> **考试概况**：408统考满分150分，考试时间180分钟。计算机网络通常约占 **25分（约17%）**，题型覆盖选择题与综合应用题，命题重心集中在：**体系结构、信道容量、滑动窗口、IP编址与路由、TCP机制、HTTP时延计算**。

## 0. Top-Down 导学总览（融合 Kurose 教学法）

### 0.1 先应用、后机制、再公式

本讲义采用“**现象→需求→服务→协议→实现→算题**”链路学习法：

1. 先问“用户在做什么”（如：打开网页、发邮件、下载文件）
2. 再问“应用需要什么服务”（可靠性、时延、吞吐、安全）
3. 再定位到“哪一层负责提供该服务”
4. 再学该层协议机制（字段、状态机、时序）
5. 最后落到 408 计算题与易错陷阱

> 目标：不靠死记硬背协议名，而是能从场景反推出机制与公式。

### 0.2 一条贯穿全书的问题链（建议背熟）

以“浏览器访问一个网页”为主线：

| 问题 | 所在层 | 典型协议 | 408高频考点 |
|---|---|---|---|
| 网址如何变成IP？ | 应用层 | DNS | 递归/迭代、查询次数 |
| 请求如何表达？ | 应用层 | HTTP | 非持久/持久RTT计算 |
| 端到端如何可靠？ | 传输层 | TCP | 三次握手、拥塞控制 |
| 分组如何跨网转发？ | 网络层 | IP/RIP/OSPF | 编址、分片、路由更新 |
| 单跳如何传输？ | 数据链路层 | 以太网/PPP | 帧格式、差错与MAC |
| 比特如何上链路？ | 物理层 | 编码/调制 | 奈奎斯特、香农、QAM |

### 0.3 术语严谨性统一（判分口径）

| 术语对 | 严谨定义 | 常见误写（避免） |
|---|---|---|
| 服务 vs 协议 | 服务是“对上层提供什么”；协议是“同层之间怎么做” | 把“TCP是服务”写成结论 |
| 时延 vs 时延带宽积 | 时延是时间量；时延带宽积是“链路容纳比特数” | 混写为同一概念 |
| 可靠传输 vs 可靠交付 | 可靠传输是机制集合；可靠交付是目标效果 | 只写“TCP可靠”无依据 |
| 分片 vs 分段 | 分片在IP层；分段在TCP层 | “IP分段”“TCP分片” |
| 复用 vs 多路复用 | 复用是端口汇聚；多路复用常指统计共享链路资源 | 概念不分场景 |

### 0.4 每章通用学习模板（建议照此做题）

1. 场景：该层在真实网络里解决什么问题
2. 服务：向上提供了什么能力（是否可靠、是否面向连接）
3. 机制：关键字段/状态机/时序图
4. 性能：核心公式与边界条件
5. 陷阱：最易混淆口径与近年真题坑点
6. 题型：选择题识别点 + 综合题步骤模板

---
---

# 第一章 计算机网络体系结构

## 1.1 计算机网络概述

### 一、核心定义

**计算机网络**：将分散的、自治的计算机系统通过通信设备与线路连接，由通信协议和网络软件协调工作，实现资源共享与信息传输的系统。

> 🗣️ **大白话**：网络的本质就是“让两台本来互不相干的机器，按共同规则说话并交换数据”。

### 二、网络组成

| 角度 | 构成 | 说明 |
|---|---|---|
| 组成部分 | 硬件 + 软件 + 协议 | 协议是网络的“交通法规” |
| 工作方式 | 边缘部分 + 核心部分 | 边缘是主机，核心是路由器与链路 |
| 功能组成 | 通信子网 + 资源子网 | 传输通道 vs 资源共享 |

### 三、网络分类

| 分类角度 | 类别 | 说明 |
|---|---|---|
| 覆盖范围 | PAN / LAN / MAN / WAN | 个域网→广域网，覆盖从米到千公里 |
| 拓扑结构 | 星型 / 总线型 / 环型 / 网状型 | 星型最主流（交换机中心）；网状容错强 |
| 交换方式 | 电路交换 / 报文交换 / 分组交换 | 见下文"四、交换方式" |
| 使用者 | 公用网 / 专用网 | 公用网=电信运营商；专用网=军事/企业 |

### 四、网络功能（高频）

1. 数据通信（最基本）
2. 资源共享（硬件/软件/数据）
3. 分布式处理
4. 提高可靠性
5. 负载均衡

### 五、三种交换方式（高频计算）

| 维度 | 电路交换 | 报文交换 | 分组交换 |
|---|---|---|---|
| 建立连接 | 需要 | 不需要 | 不需要 |
| 传输单位 | 比特流 | 报文 | 分组 |
| 转发机制 | 直通 | 存储转发 | 存储转发 |
| 适配突发流量 | 差 | 一般 | 好 |
| 典型考法 | 建立时延叠加 | 每跳整报文缓存 | 流水线加速 |

![交换方式时延对比](图表/CN/CN-02_SwitchingDelay.png)

> ⚠️ **高频陷阱**：报文交换与分组交换都属于“存储转发”，但分组交换可流水化，整体吞吐通常更高。

## 1.2 性能指标

| 指标 | 定义 | 常见公式 |
|---|---|---|
| 速率 | 单位时间传输比特数 | b/s |
| 带宽 | 信道可支持的最高数据率 | b/s（数字链路语境） |
| 吞吐量 | 单位时间实际成功传输量 | 受瓶颈链路限制 |
| 发送时延 | 数据“推上链路”的时间 | $t_s=\frac{L}{R}$ |
| 传播时延 | 信号在介质中传播时间 | $t_p=\frac{d}{v}$ |
| 时延带宽积 | 链路“在途比特量” | $BDP=带宽\times传播时延$ |
| RTT | 往返时延 | 请求到响应往返 |

> 📝 **真题锚点**：时延拆分与瓶颈吞吐是 2023、2024、2025 的连续高频主题。

## 1.3 分层体系结构与模型

### 一、为什么要分层

- 降低系统复杂度
- 便于标准化和互操作
- 便于单层升级与故障定位

### 二、协议、接口、服务

- **协议**：同层实体通信规则（语法、语义、同步）
- **服务**：下层向上层提供能力
- **接口**：相邻层调用约定

### 三、OSI 与 TCP/IP

![OSI与TCP/IP映射](图表/CN/CN-01_OSI_TCPIP.png)

| 对比项 | OSI | TCP/IP |
|---|---|---|
| 层数 | 7层 | 4层（教学常扩展为5层） |
| 网络层服务 | 支持面向连接与无连接 | IP为无连接 |
| 传输层服务 | 规范中偏面向连接语义 | TCP/UDP并存 |
| 工程落地 | 理论参考 | 互联网事实标准 |

### 📌 第一章总结

- 网络本质：自治系统互联 + 协议约束
- 高频计算：交换时延、发送/传播时延、吞吐量
- 模型认知：OSI用于理解，TCP/IP用于实战
- 关联陷阱编号：#3 #10

### 🎯 第一章 Top-Down 案例模板（访问网页前的“认知建模”）

| 步骤 | 提问模板 | 本章落点 |
|---|---|---|
| 场景 | 我要完成什么网络任务？ | 端系统通信与资源共享 |
| 服务 | 我需要可靠/实时/高吞吐中的哪一种？ | 服务与协议区分 |
| 架构 | 哪些层会参与？ | OSI/TCP-IP映射 |
| 性能 | 哪个指标先成为瓶颈？ | 发送/传播/RTT/吞吐 |

### ⚡ 秒杀版口令卡

- “速率看发送，距离看传播，瓶颈定吞吐”
- “协议三要素：语法、语义、同步”
- “OSI学思想，TCP/IP上战场”

---

# 第二章 物理层

## 2.1 通信基础与信道极限（⭐⭐⭐）

### 一、基本概念

| 术语 | 定义 |
|---|---|
| 信道 | 信号传输的通路（单工/半双工/全双工） |
| 信源/信宿 | 产生信号的一端 / 接收信号的一端 |
| 码元 | 一个固定时长的信号波形，是数字通信的最小单位 |
| 波特率（码元速率） | 单位时间传输码元个数（Baud） |
| 比特率（数据速率） | 单位时间传输比特数（b/s） |
| 基带传输 | 直接传数字信号（近距离，如以太网） |
| 宽带传输 | 调制后传模拟信号（远距离，如ADSL） |

### 二、物理层接口四特性（考纲要求）

| 特性 | 含义 |
|---|---|
| 机械特性 | 接口形状、引脚数目、引线排列 |
| 电气特性 | 电压范围、传输速率、距离限制 |
| 功能特性 | 各引脚/信号线的功能定义 |
| 过程特性 | 各信号线在通信过程中的时序关系 |

### 二、奈奎斯特定理与香农定理（必考）

![奈奎斯特与香农](图表/CN/CN-03_NyquistShannon.png)

**奈奎斯特（无噪声）**：
$$R_{max}=2W\log_2V$$

**香农（有噪声）**：
$$C=W\log_2(1+\frac{S}{N})$$

分贝换算：
$$SNR_{dB}=10\log_{10}(\frac{S}{N})$$

> ⚠️ **陷阱1**：30 dB 对应的是 $\frac{S}{N}=1000$，不是 30。
>
> ⚠️ **陷阱2（必考）**：实际信道容量 = $\min(\text{奈奎斯特极限}, \text{香农极限})$。**两个公式算出的值取较小者**，这才是真正的"天花板"。

> 📝 **真题典型**：给定带宽 $W$、电平数 $V$、信噪比 $SNR_{dB}$，分别用两个公式算出结果，取 MIN。

### 三、QAM（正交幅度调制）

组合调幅与调相，若相位数为 $p$、每种相位下振幅数为 $a$，总信号点数：
$$M=a\times p \quad(\text{或常用 }M\text{-QAM 表示})$$

每码元携带 $\log_2 M$ 比特。常见：16-QAM（4比特/码元）、64-QAM（6比特/码元）。

### 四、码元与比特换算

若每码元携带 $n$ 比特，码元速率为 $M$ Baud，则：
$$R_b = M\times n$$

若有 $K$ 个离散电平，则每码元携带：
$$n=\log_2K$$

## 2.2 编码与调制

### 一、常见编码

| 编码 | 特征 | 场景 |
|---|---|---|
| NRZ | 不归零，高效但同步性弱 | 基础编码 |
| NRZI | 跳变/不跳变表示比特 | USB等 |
| 曼彻斯特 | 中间跳变承载时钟与数据 | 经典以太网 |
| 差分曼彻斯特 | 中间跳变仅时钟，起始跳变区分比特 | 抗干扰更好 |

### 二、调制方式

| 调制 | 缩写 | 改变量 |
|---|---|---|
| 调幅 | ASK | 幅度 |
| 调频 | FSK | 频率 |
| 调相 | PSK/DPSK | 相位 |
| 正交幅度调制 | QAM | 幅度+相位 |

## 2.3 传输介质与物理层设备

| 介质 | 类别 | 特点 |
|---|---|---|
| 双绞线（UTP/STP） | 导向型 | 最常用，Cat5e支持千兆，价格低 |
| 同轴电缆 | 导向型 | 抗干扰强，有线电视常用 |
| 光纤（单模/多模） | 导向型 | 带宽高、衰减小、抗电磁干扰 |
| 无线电波/微波/红外 | 非导向型 | 无线LAN/卫星通信 |

| 设备 | 功能 | 层次 |
|---|---|---|
| 中继器 | 信号放大/整形，延伸传输距离 | 物理层 |
| 集线器（Hub） | 多端口中继器，广播式转发 | 物理层 |

## 2.4 数据报与虚电路（⭐ 考纲明确要求）

| 对比维度 | 数据报 | 虚电路 |
|---|---|---|
| 建立连接 | 不需要 | 需要（虚呼叫） |
| 地址开销 | 每个分组携带完整目的地址 | 仅建立阶段需全地址，后续用虚电路号 |
| 路由选择 | 每个分组独立选路 | 建立时确定路径，后续不再选路 |
| 分组顺序 | 可能乱序到达 | 保证有序 |
| 可靠性 | 网络不保证，端系统负责 | 网络可保证 |
| 拥塞控制 | 困难（无固定路径） | 可实现 |
| 故障影响 | 某节点故障仅影响经过该节点的分组 | 经过故障节点的所有虚电路中断 |
| 典型代表 | **IP（互联网）** | ATM、X.25、MPLS |

![数据报与虚电路对比](图表/CN/CN-17_DatagramVC.png)

### 📌 第二章总结

- 公式二元组：奈奎斯特（无噪）+ 香农（有噪），**取 MIN**
- 波特率与比特率的换算必须熟练
- 曼彻斯特、FSK、QAM是高频客观题点
- 数据报 vs 虚电路的 8 维对比必须熟记
- 物理层接口四特性：机械/电气/功能/过程
- 关联陷阱编号：#1 #11

### 🎯 第二章 Top-Down 案例模板（链路能跑多快）

| 步骤 | 提问模板 | 本章落点 |
|---|---|---|
| 场景 | 信道是有噪还是无噪？ | 香农/奈奎斯特选择 |
| 参数 | 已知哪些量：$W$、$S/N$、$V$、Baud | 统一变量定义 |
| 计算 | 两个上限谁更小？ | 取 MIN 原则 |
| 判分 | 单位是否一致（bit/s, Baud） | 防止量纲错误 |

### 🎯 本章真题锚点

- 2023：QAM阶数反推
- 2024：FSK机制判断
- 2025：编码/差错能力混合题

---

# 第三章 数据链路层（⭐⭐⭐⭐）

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

- 成帧、透明传输、差错控制、流量控制、介质访问控制
- 典型帧界定：字符计数、字符填充、零比特填充、违规编码

## 3.2 差错控制

### 一、检错编码

- 奇偶校验：简单，能力弱
- CRC：工程主流

CRC核心思路：把数据看作多项式，发送端附加余数，接收端整除校验。

#### CRC 模2除法计算示例（⭐ 高频）

> **例**：数据 $D = 101001$，生成多项式 $G(x) = x^3+x+1$（即 $1011$，$r=3$ 位）。
>
> **步骤**：
> 1. 数据后补 $r=3$ 个 0 → $101001\underline{000}$
> 2. 用 $1011$ 对 $101001000$ 做**模2除法**（XOR代替减法）：
>
> ```
>     101001000 ÷ 1011
>     1011
>     ────
>      0011
>      0000
>     ────
>       0110
>       0000
>      ────
>        1101
>        1011
>       ────
>         1100
>         1011
>        ────
>          1110
>          1011
>         ────
>           101  ← 余数 R
> ```
>
> 3. 发送帧 = 数据 + 余数 = $101001\underline{101}$
> 4. **接收端**：用收到的帧除以 $1011$，余数为 0 → 无差错；余数非 0 → 有差错
>
> ⚠️ **模2运算**：加法和减法都是**XOR**，不进位不借位！

### 二、纠错编码

- 海明码：可实现**1位纠错、2位检错**（需额外增加1位全校验位）
- 监督位数满足：
$$2^r \ge m+r+1$$

#### 海明码编码示例（⭐ 高频选择/填空）

> **例**：对数据 $D = 1011$ 进行海明编码。
>
> **步骤**：
> 1. **确定校验位数 $r$**：$m=4$，需 $2^r \ge 4+r+1$，$r=3$（$2^3=8\ge8$ ✓）
> 2. **编码字总位数**：$n = m + r = 7$（$H_7H_6H_5H_4H_3H_2H_1$）
> 3. **校验位占据 $2^i$ 号位**：$P_1$=$H_1$，$P_2$=$H_2$，$P_3$=$H_4$
> 4. **数据位填入剩余位**：$H_3=D_1=1$，$H_5=D_2=0$，$H_6=D_3=1$，$H_7=D_4=1$
> 5. **求各校验位**（偶校验）：
>    - $P_1$（校验所有编号含 $2^0=1$ 的位）：$H_1, H_3, H_5, H_7$ → $P_1 \oplus 1 \oplus 0 \oplus 1 = 0$ → $P_1 = 0$
>    - $P_2$（校验所有编号含 $2^1=2$ 的位）：$H_2, H_3, H_6, H_7$ → $P_2 \oplus 1 \oplus 1 \oplus 1 = 0$ → $P_2 = 1$
>    - $P_3$（校验所有编号含 $2^2=4$ 的位）：$H_4, H_5, H_6, H_7$ → $P_3 \oplus 0 \oplus 1 \oplus 1 = 0$ → $P_3 = 0$
> 6. **海明码**：$H_7H_6H_5H_4H_3H_2H_1 = \mathbf{1010110}$
>
> **检错纠错**：接收方对各组做偶校验，得到 $S_3S_2S_1$，若 $= 000$ 则无错；否则 $S_3S_2S_1$ 的十进制值指示出错位号，取反即可纠正。
>
> 📝 **加一位全校验位**可实现"SEC-DED"（单纠双检）。

## 3.3 流量控制与可靠传输（滑动窗口）

![滑动窗口协议对比](图表/CN/CN-04_SlidingWindow.png)

**信道利用率近似**：
$$U\approx\frac{W\cdot t_f}{RTT+t_f+t_{ack}}$$

| 协议 | 发送窗口 | 接收窗口 | ACK语义 |
|---|---|---|---|
| 停止等待 | 1 | 1 | 逐帧确认 |
| GBN | $\le 2^n-1$ | 1 | 累积确认 |
| SR | $\le 2^{n-1}$ | $\le 2^{n-1}$ | 逐帧确认 |

> ⚠️ **陷阱1**：GBN 的 ACK 具有累积性，SR 不具有。
>
> ⚠️ **陷阱2**：SR 不是“全重传”，只重传丢失或出错帧。>
> ⚠️ **陷阱3（SR联合约束）**：SR 要求 $W_s + W_r \le 2^n$，否则接收方无法区分新旧帧。当 $W_s = W_r$ 时，各 $\le 2^{n-1}$。
## 3.4 介质访问控制

### 一、信道划分

- FDM / TDM / WDM / CDM

#### CDMA（码分多址）内积计算

每个站分配唯一**码片序列**（长度为 $m$ 的向量），各码片序列两两正交：

$$\vec{S_i}\cdot\vec{S_j}=\begin{cases} m & i=j \\ 0 & i\ne j \end{cases}$$

接收端用某站码片与叠加信号做**规格化内积**：
$$d_i = \frac{1}{m}\vec{S_i}\cdot\vec{D}$$

- $d_i=+1$：该站发送了比特 1
- $d_i=-1$：该站发送了比特 0
- $d_i=0$：该站未发送

> 📝 **计算要点**：发送 1 用原码片，发送 0 用码片取反（$-\vec{S}$），叠加后逐位相加。

### 二、随机访问

#### ALOHA 协议（考纲要求）

| 维度 | 纯 ALOHA | 时隙 ALOHA |
|---|---|---|
| 发送时机 | 任意时刻 | 只能在时隙开始时 |
| 冲突窗口 | $2T_0$（T₀为帧传输时间） | $T_0$ |
| 最大吞吐率 | $S_{max}=\frac{1}{2e}\approx 18.4\%$ | $S_{max}=\frac{1}{e}\approx 36.8\%$ |
| 吞吐率公式 | $S=Ge^{-2G}$ | $S=Ge^{-G}$ |

> ⚠️ 时隙 ALOHA 吞吐率是纯 ALOHA 的 **2倍**。

#### CSMA 三类协议对比（考纲要求）

| 类型 | 信道忙时 | 信道空闲时 | 特点 |
|---|---|---|---|
| **1-坚持** | 持续监听，一空就发 | 立即发送 | 冲突概率高，延迟低 |
| **非坚持** | 放弃监听，随机等待后重试 | 立即发送 | 冲突少，但延迟大 |
| **p-坚持** | 持续监听 | 以概率 $p$ 发送，$1-p$ 等下一个时隙 | 折中方案 |

![CSMA三种类型对比](图表/CN/CN-11_CSMACompare.png)

#### CSMA/CD（以太网）

- 口诀：先听后发，边听边发，冲突停发，随机重发
- 争用期（冲突窗口）：$2\tau$
- 最短帧长：
$$L_{min}=2\tau\cdot R$$
- 10Mbps经典最短帧长：64B
- 截断二进制指数退避：
  - 第 $k$ 次重传，从 $\{0,1,...,2^{k'}-1\}$ 中随机选一个等待时间（$k'=\min(k,10)$）
  - 等待时间单位 = $2\tau$（争用期）
  - **最多重传16次**，超过则丢弃帧

#### CSMA/CA（802.11）

- 无线环境难以冲突检测，故采用冲突避免
- 帧间间隔优先级：SIFS < PIFS < DIFS
- RTS/CTS + NAV 用于缓解隐藏站问题

**CSMA/CA 工作流程**：
1. 发送方等待 **DIFS** 时间
2. 信道空闲则进入退避倒计时（随机退避时隙）
3. 倒计时归零后发送数据帧
4. 接收方等待 **SIFS** 后回复 ACK

**NAV（网络分配向量）计算**：

$$NAV = SIFS + ACK传输时间 + 数据帧传输时间$$

使用 RTS/CTS 时，其他站通过 CTS 帧中的 Duration 字段设置 NAV 计时器，在 NAV 期间不发送。

| 对比 | CSMA/CD | CSMA/CA |
|---|---|---|
| 冲突处理 | 检测到冲突后停发 | 尽量避免冲突 |
| 确认机制 | 无ACK（半双工） | 有ACK |
| 信道检测 | 物理+电缆信号 | 物理+虚拟载波监听(NAV) |
| 帧间间隔 | 最小帧间隔 | SIFS/DIFS/PIFS |
| 应用场景 | 有线以太网 | 802.11无线局域网 |

> 📝 **2024真题**：CSMA/CA 中 NAV 的计算与 RTS/CTS 时序分析。

### 三、轮询访问

- 令牌传递：有序、公平、冲突小，适合重负载
- 令牌环网工作流程：空闲令牌在环中循环→站点捕获令牌→发送数据帧→目的站复制数据→帧回到发送站后释放令牌
- 适用场景：负载重时效率高，轻载时令牌循环浪费带宽

## 3.5 局域网、广域网与设备

### 一、以太网帧（V2）

![以太网V2 MAC帧格式](图表/CN/CN-20_MACFrame.png)

- 目的MAC(6B) + 源MAC(6B) + 类型(2B) + 数据(46-1500B) + FCS(4B)
- 最短帧64B，最大帧1518B
- FCS基于CRC，仅校验从目的地址到数据字段

### 二、VLAN（802.1Q）

- 标签4B，VID 12位
- 802.1Q帧最大 1522B

### 三、PPP 协议

- 点到点链路主流协议，面向字节
- 帧格式：`7E` FF 03 协议(2B) 数据 FCS(2B) `7E`
- 组件：**LCP**（建立/配置/测试数据链路）、**NCP**（配置网络层协议，如IPCP）
- 特点：无纠错、无序号、无流量控制，仅检错

### 四、HDLC 协议（考纲要求）

- 面向比特的数据链路层协议
- 帧格式：标志 `01111110` + 地址(8b) + 控制(8/16b) + 数据 + FCS(16b) + 标志
- 三种帧：信息帧(I帧)、监督帧(S帧)、无编号帧(U帧)
- 支持全双工，有序号和流量控制

| 对比 | PPP | HDLC |
|---|---|---|
| 面向 | 字节 | 比特 |
| 序号/流控 | 无 | 有 |
| 透明传输 | 字节填充/零比特填充 | 零比特填充 |
| 差错控制 | 仅检错 | 可纠错 |
| 应用 | 拨号上网/PPPoE | 同步传输链路 |

### 五、网络设备与隔离域

| 设备 | 冲突域 | 广播域 |
|---|---|---|
| 集线器 | 不隔离 | 不隔离 |
| 交换机/网桥 | 隔离冲突域 | 不隔离广播域 |
| 路由器 | 隔离冲突域 | 隔离广播域 |

#### 网桥/交换机自学习算法

1. 收到帧后，记录**源MAC→端口号**的映射到转发表
2. 查转发表：
   - 找到目的MAC → 从对应端口转发（若目的端口=源端口则丢弃）
   - 找不到 → 向所有端口**泛洪**（除来源端口）
3. 转发表条目有老化时间，到期自动删除

> ⚠️ 交换机是**即插即用**设备，无需手动配置。

### 📌 第三章总结

- 三大计算核心：CRC、滑动窗口（含SR联合约束）、退避时间
- 三大机制核心：CSMA/CD、CSMA/CA（NAV计算）、VLAN
- 三大设备辨析：Hub vs Switch vs Router
- ALOHA两种 + CSMA三类 + CD/CA 对比必须熟记
- HDLC vs PPP 对比是高频选择题点
- 关联陷阱编号：#2 #12 #13

### 🎯 第三章 Top-Down 案例模板（一跳内如何可靠发送）

| 步骤 | 提问模板 | 本章落点 |
|---|---|---|
| 场景 | 点到点还是共享信道？ | PPP/HDLC vs MAC协议 |
| 可靠性 | 需检错还是重传？ | CRC + 滑动窗口 |
| 竞争 | 有无冲突检测能力？ | CSMA/CD 与 CSMA/CA 区分 |
| 计算 | 题目问效率还是窗口约束？ | 吞吐公式、窗口边界 |

---

# 第四章 网络层（⭐⭐⭐⭐⭐）

## 4.1 网络层功能与服务模型

- 异构网络互联
- 路由选择与分组转发
- 拥塞控制
- SDU = IP数据报

| 功能 | 说明 |
|---|---|
| 路由选择 | 确定分组从源到目的的路径（静态/动态） |
| 分组转发 | 根据转发表将分组从输入端口送到输出端口 |
| 拥塞控制 | 全局性调节，防止网络过载 |
| 异构网络互联 | 通过路由器将不同物理网络连接 |

> **静态路由** vs **动态路由**：静态由管理员手动配置，适合小型稳定网络；动态通过路由协议自动更新，适合大型复杂网络。

## 4.2 IPv4 地址与分组

### 一、分类编址与特殊地址

| 类别 | 网络号位数 | 范围 | 默认掩码 |
|---|---|---|---|
| A类 | 8（0开头） | 1.0.0.0 ~ 126.255.255.255 | 255.0.0.0 (/8) |
| B类 | 16（10开头） | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 (/16) |
| C类 | 24（110开头） | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 (/24) |
| D类 | 组播 | 224.0.0.0 ~ 239.255.255.255 | — |
| E类 | 保留 | 240.0.0.0 ~ 255.255.255.255 | — |

**特殊地址**：

| 地址 | 用途 |
|---|---|
| 0.0.0.0 | 本网络本主机（DHCP启动时） |
| 127.x.x.x | 环回测试 |
| 255.255.255.255 | 本网广播（受限广播） |
| 网络号+全1主机号 | 定向广播 |
| 网络号+全0主机号 | 该网络本身 |

**私有地址**：10.0.0.0/8、172.16.0.0/12、192.168.0.0/16

### 二、子网划分与CIDR

- 网络地址 = IP AND 子网掩码
- 可用主机数：
$$N_{host}=2^h-2$$
- **最长前缀匹配原则**：转发表中有多个匹配时，选子网掩码最长的那条

#### VLSM（变长子网掩码）

- 对同一网络用不同长度子网掩码划分，提高地址利用率
- 计算思路：按需求主机数从大到小依次分配子网

#### 子网划分完整计算示例（⭐ 高频大题）

> **例**：某单位获得网络地址 `192.168.1.0/24`，需划分4个子网，分别需要 60、30、14、6 台主机，求各子网的地址范围和子网掩码。
>
> **解**（从大到小依次分配）：
>
> | 子网 | 需要主机 | 主机位 $h$ | 子网掩码 | 网络地址 | 广播地址 | 可用范围 |
> |:--:|:--:|:--:|:--:|:--:|:--:|:--:|
> | A | 60 | 6（$2^6-2=62\ge60$） | /26 (255.255.255.192) | 192.168.1.0 | 192.168.1.63 | .1 ~ .62 |
> | B | 30 | 5（$2^5-2=30\ge30$） | /27 (255.255.255.224) | 192.168.1.64 | 192.168.1.95 | .65 ~ .94 |
> | C | 14 | 4（$2^4-2=14\ge14$） | /28 (255.255.255.240) | 192.168.1.96 | 192.168.1.111 | .97 ~ .110 |
> | D | 6 | 3（$2^3-2=6\ge6$） | /29 (255.255.255.248) | 192.168.1.112 | 192.168.1.119 | .113 ~ .118 |
>
> **验算**：62+30+14+6=112 台主机，剩余 .120~.255 可继续分配。
>
> 📝 **CIDR最长前缀匹配**：路由器收到目的 IP 为 `192.168.1.100`，路由表有 /24、/26、/28 三条匹配，选 **/28**（最长前缀）。

### 三、IPv4首部与分片

![IPv4首部结构](图表/CN/CN-05_IPv4Header.png)

关键字段：
- **首部长度**：单位 4B，最小5（20B），最大15（60B）
- **总长度**：单位 1B，最大 65535B
- **标识**：同一数据报的所有分片标识相同
- **DF**=1：禁止分片；**MF**=1：后续还有分片
- **片偏移**：单位 8B
- **TTL**：每经过一个路由器减1，到0则丢弃
- **协议**：6=TCP，17=UDP，1=ICMP，89=OSPF
- 重组仅在**目的主机**执行

#### IP分片完整计算例题（⭐ 高频大题）

> **例**：一个总长 3820B 的数据报（首部20B，数据3800B），链路MTU=1420B，求分片结果。
>
> **解**：每片最大数据 = MTU - 首部 = 1420 - 20 = 1400B，且必须是 8 的倍数 → 1400B ✓
>
> | 片号 | 总长度 | 数据长度 | MF | 片偏移 |
> |:--:|:--:|:--:|:--:|:--:|
> | 1 | 1420 | 1400 | 1 | 0 |
> | 2 | 1420 | 1400 | 1 | 175 (=1400/8) |
> | 3 | 1020 | 1000 | 0 | 350 (=2800/8) |
>
> 验算：1400+1400+1000=3800 ✓；片偏移按 8B 为单位。

![IP分片计算示例](图表/CN/CN-10_IPFragment.png)

## 4.3 ARP 协议

**功能**：同一链路内 IP→MAC 地址解析（请求**广播**、响应**单播**）

**ARP 四种典型场景**：

| 场景 | 过程 |
|---|---|
| 同网段直接通信 | 发送方 ARP 广播查目的MAC → 目的主机单播回应 |
| 跨网段（经路由器） | 发送方 ARP 查**默认网关MAC** → 路由器转发（目的IP不变，MAC逐跳替换） |
| 免费ARP | 主机查询自己的IP → 检测地址冲突 |
| 代理ARP | 路由器代目的网络回复ARP → 使不同子网主机像在同一网段通信 |

> ⚠️ ARP 仅工作在同一链路（广播域），**不跨路由器**。ARP报文直接封装在数据链路层帧中（不是IP分组）。

![ARP解析流程](图表/CN/CN-13_ARPFlow.png)

## 4.4 DHCP 协议

**DORA 四报文精确地址**：

| 步骤 | 报文 | 源IP | 目的IP | 源MAC | 传输方式 |
|---|---|---|---|---|---|
| 1 | **Discover** | 0.0.0.0 | 255.255.255.255 | 客户MAC | 广播 |
| 2 | **Offer** | 服务器IP | 255.255.255.255 | 服务器MAC | 广播 |
| 3 | **Request** | 0.0.0.0 | 255.255.255.255 | 客户MAC | 广播 |
| 4 | **ACK** | 服务器IP | 255.255.255.255 | 服务器MAC | 广播 |

> ⚠️ Request 也用广播，是为了让**其他DHCP服务器**知道客户端选了哪个Offer。
>
> DHCP 中继代理：当DHCP服务器不在同一子网时，路由器可配置为中继代理，转发DHCP报文。

![DHCP DORA流程](图表/CN/CN-09_DHCP.png)

## 4.5 ICMP 协议

### 一、ICMP报文分类

| 类型 | 具体报文 |
|---|---|
| **差错报告** | ①目的不可达 ②源站抑制 ③超时 ④参数问题 ⑤重定向 |
| **询问报文** | ①回送请求/应答（Ping） ②时间戳请求/应答 |

### 二、不发送ICMP差错报文的4条件（⭐ 高频选择）

1. 对ICMP差错报文**不再**发送差错报文（防循环）
2. 对分片后**非第一片**的数据报不发送
3. 对**组播地址**不发送
4. 对**特殊地址**（127.x.x.x、0.0.0.0等）不发送

### 三、Ping 与 Traceroute

- **Ping**：利用 ICMP 回送请求/应答，测试连通性
- **Traceroute**：发送 TTL 递增的 UDP/ICMP 报文，通过收到"超时"差错逐跳定位路径

## 4.6 NAT（网络地址转换）

- 将私有地址映射为公有地址
- **NAPT（端口转换）**：同一公网IP通过不同端口号区分内部主机会话

> **示例**：内部主机 192.168.1.5:3000 → NAT → 公网 202.1.1.1:**5001**；另一主机 192.168.1.6:3000 → NAT → 202.1.1.1:**5002**

> ⚠️ NAT会改变源IP和端口（出方向）/ 目的IP和端口（入方向），**普通路由转发不改源/目的IP**。

## 4.7 IPv6（⭐⭐⭐）

### 一、IPv6首部结构（固定40B）

| 字段 | 位数 | 说明 |
|---|---|---|
| 版本 | 4 | 固定为6 |
| 通信量类 | 8 | 区分服务（类似IPv4 TOS） |
| 流标号 | 20 | 标识同一"流"的分组 |
| 有效载荷长度 | 16 | 扩展首部+数据的总长度 |
| 下一个首部 | 8 | 指示扩展首部类型或上层协议 |
| 跳数限制 | 8 | 等同于IPv4 TTL |
| 源地址 | 128 | — |
| 目的地址 | 128 | — |

### 二、IPv6 vs IPv4 取消的7项（2023真题）

| # | IPv4有，IPv6取消 | 原因 |
|:--:|---|---|
| 1 | 首部校验和 | 上下层已有校验，减少路由器开销 |
| 2 | 分片/重组相关字段 | **中间路由器不分片**，只在端系统上分片重组 |
| 3 | 首部长度字段 | 固定40B，无需指示 |
| 4 | 选项字段 | 改为扩展首部机制 |
| 5 | 填充字段 | 固定首部无需对齐填充 |
| 6 | 协议字段 | 改为"下一个首部"字段 |
| 7 | 总长度 | 改为"有效载荷长度" |

### 三、IPv6地址表示

- **冒号十六进制**：8组×16位，如 `2001:0db8:0000:0000:0000:0000:0000:0001`
- **零压缩**：连续全0组可用`::`替代（一个地址中只能出现一次`::`）
- **三种地址类型**：单播、组播、任播（无广播）

### 四、过渡策略

| 方式 | 原理 |
|---|---|
| 双栈 | 同一设备同时支持IPv4和IPv6协议栈 |
| 隧道 | 将IPv6分组封装在IPv4分组的数据部分传输 |

![IPv6首部格式](图表/CN/CN-16_IPv6Header.png)

## 4.8 路由算法（⭐⭐⭐⭐）

### 一、距离-向量路由算法（Bellman-Ford）

核心公式：
$$d_x(y)=\min_v\{c(x,v)+d_v(y)\}$$

- $d_x(y)$：从 $x$ 到 $y$ 的最短距离
- $c(x,v)$：$x$ 到邻居 $v$ 的直接链路开销
- $d_v(y)$：邻居 $v$ 声称到 $y$ 的距离

每个节点周期性地将自己的距离向量发给邻居，邻居据此更新自己的路由表。

> ⚠️ **问题**：坏消息传播慢（"计数到无穷"问题），可用**毒性反转**（告诉邻居经它到达的路由距离为∞）缓解。

### 二、链路状态路由算法（Dijkstra）

1. 每个路由器通过**洪泛**将自己的链路状态（邻居+开销）通告全网
2. 每个路由器获得全网拓扑后，用 Dijkstra 算法计算到所有节点的最短路径

**Dijkstra步骤**：
1. 初始化：$D(v)=c(s,v)$（直接邻居），非邻居为 $\infty$
2. 选择 $D$ 最小的未确认节点 $w$ 加入已确认集合
3. 对 $w$ 的每个邻居 $v$：$D(v)=\min\{D(v),\ D(w)+c(w,v)\}$
4. 重复步骤2-3，直到所有节点确认

### 三、层次路由

- 互联网规模巨大，不可能让所有路由器运行同一路由协议
- 将互联网划分为若干**自治系统（AS）**
- AS内部用 **IGP**（RIP/OSPF），AS之间用 **EGP**（BGP）

## 4.9 路由协议（⭐⭐⭐⭐⭐）

### 一、RIP（距离向量）

| 特性 | 说明 |
|---|---|
| 度量 | 跳数（最大15，16=不可达） |
| 更新 | 每30秒广播/组播整个路由表 |
| 传输 | UDP 端口 520 |
| 适用 | 小规模网络 |

#### RIP 路由表更新4步规则（⭐ 2024真题）

收到邻居 $N$ 的路由表后，对其中每条路由（目的 $D$，距离 $d$）：

1. 将距离 $+1$（经过邻居，所以跳数加一）→ 得到 $d'=d+1$
2. 若路由表中**无**目的 $D$ 的条目 → **添加**（下一跳=N，距离=d'）
3. 若已有条目且**下一跳==N** → **无条件替换**为 $d'$（不论大小，因为信息来自同一邻居）
4. 若已有条目且**下一跳≠N**且 $d'<$ 已有距离 → **替换**为更短路径

> 📝 **算例**：
>
> 路由器R1原有路由表：
> | 目的 | 距离 | 下一跳 |
> |---|---|---|
> | Net1 | 3 | R2 |
> | Net2 | 5 | R3 |
> | Net3 | 2 | R2 |
>
> 收到来自R2的通告：Net1距离=2, Net2距离=3, Net3距离=5
>
> 更新后（各条+1，R2为下一跳）：
> - Net1：下一跳==R2，无条件替换 → 距离=3（3→3，不变）
> - Net2：下一跳≠R2，4<5 → 替换 → 距离=4，下一跳=R2
> - Net3：下一跳==R2，无条件替换 → 距离=6

![RIP路由表更新示例](图表/CN/CN-14_RIPUpdate.png)

### 二、OSPF（链路状态）

| 特性 | 说明 |
|---|---|
| 度量 | 链路带宽（可配置） |
| 更新 | 链路状态变化时洪泛LSA |
| 传输 | 直接封装在IP（协议号89） |
| 适用 | 大型网络 |

**OSPF 5种报文**：Hello、数据库描述(DBD)、链路状态请求(LSR)、链路状态更新(LSU)、链路状态确认(LSAck)

#### OSPF vs RIP 4大区别（⭐ 高频选择题）

| 对比维度 | RIP | OSPF |
|---|---|---|
| 算法 | 距离向量 | 链路状态 |
| 度量 | 跳数（最大15） | 带宽（无跳数限制） |
| 收敛速度 | 慢（慢收敛/计数到无穷） | 快（洪泛+Dijkstra） |
| 适用规模 | 小型网络 | 大型网络（支持分区域） |
| 更新方式 | 周期性广播全表 | 触发式洪泛变化部分 |
| 负载均衡 | 不支持 | 支持等价多路径 |

![RIP vs OSPF vs BGP对比](图表/CN/CN-18_OSPFvsRIP.png)

### 三、BGP（路径向量）

| 特性 | 说明 |
|---|---|
| 度量 | AS路径+策略 |
| 传输 | TCP 端口 179 |
| 类型 | EGP（AS间） |
| 目标 | 可达性+策略，不追求最短 |

- **eBGP**：不同AS的边界路由器之间
- **iBGP**：同一AS内部传播BGP路由

## 4.10 IP组播（考纲要求）

- **D类地址**：224.0.0.0 ~ 239.255.255.255
- **IGMP**（Internet Group Management Protocol）：主机向路由器报告组播组成员关系
- 组播路由器维护组播转发树
- 常用保留组播地址：224.0.0.1（本子网所有主机）、224.0.0.2（本子网所有路由器）

## 4.11 移动IP（考纲要求）

| 概念 | 说明 |
|---|---|
| 归属代理（HA） | 移动节点在归属网络的代理路由器 |
| 外地代理（FA） | 移动节点在外地网络的代理路由器 |
| 转交地址（CoA） | 移动节点在外地获得的临时地址 |

**通信过程**：
1. 通信对端向移动节点的归属地址发送分组
2. 归属代理截获 → 通过**隧道**转发给外地代理（封装在新IP报文中）
3. 外地代理解封装 → 交付给移动节点
4. 移动节点直接向通信对端发出回程分组（三角路由）

## 4.12 路由器的组成和功能（考纲要求）

| 组成部分 | 功能 |
|---|---|
| **输入端口** | 物理层接收 → 数据链路层解封装 → 查转发表确定输出端口 |
| **交换结构** | 将分组从输入端口传送到输出端口（经内存/总线/交叉开关） |
| **输出端口** | 缓存排队 → 数据链路层封装 → 物理层发送 |
| **路由选择处理器** | 运行路由协议、构建路由表/转发表 |

> **路由表 vs 转发表**：路由表由路由协议生成（目的网络→下一跳），转发表从路由表导出（目的网络→输出端口+下一跳MAC）。

### 📌 第四章总结

- IPv4编址与CIDR计算是客观题+大题双热点
- IP分片计算：注意片偏移以8B为单位、MF标志
- ARP/DHCP/ICMP/NAT 经常混合命题
- RIP更新4步规则 + Bellman-Ford公式是必考计算题
- OSPF vs RIP 对比 + BGP关键特征是高频选择
- IPv6的8字段首部和取消项7条对比是近年新宠
- 路由器架构、IP组播、移动IP 是考纲明确要求
- 关联陷阱编号：#4 #5 #6 #7 #17 #18 #19 #20

### 🎯 第四章 Top-Down 案例模板（分组如何跨网到达）

| 步骤 | 提问模板 | 本章落点 |
|---|---|---|
| 定位 | 同网段还是跨网段？ | ARP查目标MAC或网关MAC |
| 转发 | 下一跳如何确定？ | 静态/动态路由、RIP/OSPF |
| 适配 | MTU不够怎么办？ | IP分片与偏移计算 |
| 运维 | 地址不足或协议演进？ | NAT 与 IPv6 过渡 |

---

# 第五章 传输层（⭐⭐⭐⭐⭐）

## 5.1 传输层服务与端口

- **端到端逻辑通信**：传输层为应用进程提供逻辑通信
- **复用与分用**：多个进程共享同一网络层连接
- 端口分类：
  - **熟知端口**：0~1023（HTTP 80、FTP 21、DNS 53 等）
  - **登记端口**：1024~49151
  - **动态端口**：49152~65535（临时分配）

> 套接字 = IP地址 + 端口号，唯一标识网络中的一个通信端点。

## 5.2 UDP

- 无连接、尽最大努力交付、首部仅8B
- 支持多播/广播，实时性好
- **面向报文**：应用层交下来多大的报文就发多大，不合并不拆分

### UDP首部4字段

![UDP首部格式](图表/CN/CN-21_UDPHeader.png)

| 字段 | 长度 | 说明 |
|---|---|---|
| 源端口 | 16位 | 可选（全0表示不需回复） |
| 目的端口 | 16位 | 必填 |
| 长度 | 16位 | 首部+数据的总长度（最小8B） |
| 校验和 | 16位 | 可选（全0表示不校验） |

### UDP校验（伪首部）

- **12字节伪首部**：源IP(4B) + 目的IP(4B) + 全零(1B) + 协议号17(1B) + UDP长度(2B)
- 伪首部仅参与校验和计算，**不实际发送**
- 校验范围：伪首部 + UDP首部 + 数据（若数据为奇数字节则补0）

## 5.3 TCP（核心 ⭐⭐⭐⭐⭐）

### 一、TCP报文段首部（完整16字段）

![TCP首部格式](图表/CN/CN-19_TCPHeader.png)

| 字段 | 位数 | 说明 |
|---|---|---|
| 源端口 | 16 | — |
| 目的端口 | 16 | — |
| **序号** | 32 | 本报文段数据的第一个字节编号 |
| **确认号** | 32 | 期望收到的下一个字节编号 |
| 数据偏移 | 4 | 首部长度，单位4B（最小5=20B，最大15=60B） |
| 保留 | 6 | 置0 |
| URG | 1 | 紧急指针有效 |
| **ACK** | 1 | 确认号有效（连接建立后通常=1） |
| PSH | 1 | 接收方应尽快交付应用层 |
| RST | 1 | 复位连接 |
| **SYN** | 1 | 同步序号（建立连接） |
| **FIN** | 1 | 释放连接 |
| **窗口** | 16 | 接收方的接收窗口大小（rwnd） |
| 校验和 | 16 | 含伪首部（协议号改为6） |
| 紧急指针 | 16 | URG=1时有效，指出紧急数据末尾偏移 |
| 选项 | 0~320 | MSS、窗口扩大、时间戳等 |

### 二、三次握手与四次挥手

![TCP连接管理](图表/CN/CN-06_TCPHandshake.png)

**三次握手**：
1. 客户端 → 服务器：SYN=1，seq=x
2. 服务器 → 客户端：SYN=1，ACK=1，seq=y，ack=x+1
3. 客户端 → 服务器：ACK=1，seq=x+1，ack=y+1（可携带数据）

#### 为什么是三次而不是两次？（⭐ 高频考点）

> 防止**已失效的连接请求**到达服务器。若只有两次握手，一个迟到的旧SYN到达服务器后，服务器会认为是新连接并分配资源，但客户端不会响应 → 服务器资源浪费（半开连接）。第三次握手让服务器确认客户端确实还在。

**四次挥手**：
1. 客户端 → 服务器：FIN=1，seq=u
2. 服务器 → 客户端：ACK=1，ack=u+1（服务器进入 CLOSE-WAIT）
3. 服务器 → 客户端：FIN=1，ACK=1，seq=w，ack=u+1
4. 客户端 → 服务器：ACK=1，ack=w+1（客户端进入 TIME-WAIT=2MSL）

#### TIME-WAIT = 2MSL 的两个原因

1. **确保最后一个ACK到达**：若这个ACK丢失，服务器会重传FIN，客户端在2MSL内可以重发ACK
2. **让旧分组在网络中消亡**：等待2MSL后，本连接的所有旧报文段都已过期，不会干扰新连接

![TCP四次挥手状态转换](图表/CN/CN-08_TCPTeardown.png)

#### TCP释放连接最短时间（2022真题）

> 从客户端发出FIN到完全关闭的最短时间 = **发送FIN + 等待ACK + 等待对方FIN + 发送ACK + 2MSL** = 约 3RTT + 2MSL（具体取决于题目条件）

> ⚠️ **陷阱**：SYN 与 FIN 都各自消耗一个序号。ACK不消耗序号。

### 三、可靠传输与流量控制

- 可靠性五要素：确认、超时重传、校验、排序、去重
- 快速重传：**3个重复ACK**触发（不等超时）
- 发送窗口：
$$W_{send}=\min(rwnd,\ cwnd)$$

#### 超时重传时间计算（加权RTT）

$$SRTT_{new} = (1-\alpha)\cdot SRTT_{old} + \alpha\cdot RTT_{sample}$$
$$RTO = SRTT + 4\cdot DevRTT$$

其中 $\alpha$ 通常取 1/8，DevRTT 为偏差的加权平均。

#### TCP 持续计时器与零窗口探测（⭐）

- 当接收方通告窗口为0时，发送方启动**持续计时器**
- 计时器到期后发送**零窗口探测报文**（1字节数据）
- 接收方回复当前窗口值 → 若仍为0则重置计时器，否则恢复发送
- **目的**：防止窗口更新报文丢失导致死锁

#### MSS（最大报文段长度）

- MSS = MTU - IP首部(20B) - TCP首部(20B)，以太网 MSS 典型值 = **1460B**
- 在三次握手时通过选项字段协商

### 四、拥塞控制四算法（⭐⭐⭐⭐⭐）

| 算法 | 触发条件 | cwnd变化 |
|---|---|---|
| **慢开始** | 初始/超时后 | 每收到1个ACK，cwnd+1 MSS（指数增长） |
| **拥塞避免** | cwnd ≥ ssthresh | 每个RTT，cwnd+1 MSS（线性增长） |
| **快重传** | 3个重复ACK | 立即重传丢失报文段 |
| **快恢复** | 快重传后 | ssthresh=cwnd/2，cwnd=ssthresh+3MSS |

**关键规则**：
- **超时**：`ssthresh = cwnd/2`，`cwnd = 1 MSS`，重新慢开始 ← **最严厉**
- **3个重复ACK**：`ssthresh = cwnd/2`，`cwnd = ssthresh + 3MSS`（Reno），进入快恢复→拥塞避免
- 慢开始→拥塞避免的切换点：**cwnd = ssthresh**

#### cwnd 演化数值算例（⭐ 必考）

> **例**：初始 cwnd=1，ssthresh=16
>
> | RTT轮次 | 1 | 2 | 3 | 4 | 5 | 6~16 | ... |
> |---|---|---|---|---|---|---|---|
> | cwnd | 1 | 2 | 4 | 8 | 16 | 17,18,...| ... |
> | 阶段 | 慢开始 | 慢开始 | 慢开始 | 慢开始 | →拥塞避免 | 拥塞避免 | ... |
>
> 若在 cwnd=24 时发生**超时**：ssthresh=12，cwnd=1，重新慢开始
> 若在 cwnd=24 时收到**3个重复ACK**：ssthresh=12，cwnd=12+3=15，进入快恢复/拥塞避免

![TCP拥塞控制cwnd演化](图表/CN/CN-07_TCPCongestion.png)

#### 拓展阅读（非408必背，但提升理解上限）

- **TCP CUBIC**：以时间为自变量调整窗口，现代Linux默认拥塞控制，长肥管道下吞吐更稳
- **BBR**：基于带宽与RTT建模，目标是接近瓶颈带宽并控制排队时延
- 对408答题建议：主线仍按 Reno 口径作答，若题干明确“现代TCP/生产网络”，可在结论后补一句 CUBIC/BBR 认知

### 📌 第五章总结

- TCP是408计网最高频主题
- TCP首部16字段、三次握手/四次挥手的序号变化必须熟练
- "为什么是三次握手"和"TIME-WAIT=2MSL原因"是高频论述题
- 拥塞控制：超时 vs 3重复ACK 的处理差异必须区分
- cwnd演化图是每年必考的计算/画图题核心
- 持续计时器、MSS、加权RTT是高频选择题点
- 关联陷阱编号：#8 #9 #14 #15 #16

### 🎯 第五章 Top-Down 案例模板（端到端可靠与高效）

| 步骤 | 提问模板 | 本章落点 |
|---|---|---|
| 连接 | 题目是否涉及建连/拆连？ | 三次握手、四次挥手、TIME-WAIT |
| 可靠 | 丢包靠什么发现？ | ACK/超时/重传 |
| 流控 | 发送方能发多快？ | $W_{send}=\min(rwnd,cwnd)$ |
| 拥塞 | 是超时还是3重复ACK？ | Reno两条分支 |

---

# 第六章 应用层

## 6.1 网络应用模型

| 模型 | 特点 | 典型应用 |
|---|---|---|
| **C/S** | 集中管理、固定服务器IP、易维护 | Web、Email、FTP |
| **P2P** | 无专用服务器、分布协同、扩展性好 | BitTorrent、区块链 |

## 6.2 DNS（域名系统）

### 一、层次域名空间

域名结构：`主机名.三级域名.二级域名.顶级域名`（如 `www.cs.pku.edu.cn`）

### 二、4类域名服务器

| 类型 | 功能 |
|---|---|
| **根域名服务器** | 全球13组（a~m），知道所有顶级域名服务器地址 |
| **顶级域名服务器** | 管理 .com/.org/.cn 等，知道权威服务器地址 |
| **权威域名服务器** | 管理某个区域的域名→IP映射 |
| **本地域名服务器** | 用户首先查询的服务器，有缓存 |

### 三、递归查询 vs 迭代查询

- **递归**：客户端→本地DNS→代为查询到底 → 结果返回客户端
- **迭代**：本地DNS→根→"去找顶级"→本地DNS→顶级→"去找权威"→本地DNS→权威→结果

#### DNS最大查询次数计算

> 迭代查询（无缓存）：本地→根(1)→回(2)→本地→顶级(3)→回(4)→本地→权威(5)→回(6) = **最多6次UDP交互**（3个请求+3个响应）
>
> 若算上客户端→本地DNS的一来一回，则共 **8次**。

![DNS递归与迭代查询](图表/CN/CN-12_DNSQuery.png)

## 6.3 FTP（文件传输协议）

| 连接 | 端口 | 特点 |
|---|---|---|
| 控制连接 | TCP 21 | 持久，传命令和应答 |
| 数据连接 | TCP 20（主动）/ 随机（被动） | 非持久，传文件数据 |

### PORT（主动）vs PASV（被动）模式

| 模式 | 数据连接发起方 | 端口 | 说明 |
|---|---|---|---|
| **PORT（主动）** | 服务器→客户端 | 服务器用20 | 客户端可能被防火墙阻断 |
| **PASV（被动）** | 客户端→服务器 | 服务器随机高端口 | 更适合NAT/防火墙环境 |

> FTP 是典型的**带外控制**（控制信息与数据在不同连接上传输）。

## 6.4 电子邮件

### 一、系统组成

- **用户代理（UA）**：撰写、阅读邮件（如Outlook）
- **邮件服务器**：存储邮箱和消息队列
- **协议**：SMTP推送、POP3/IMAP拉取

### 二、SMTP 三阶段

| 阶段 | 内容 |
|---|---|
| **建立连接** | 客户端 TCP 连接服务器 25 端口，服务器回复 220 就绪 |
| **邮件传送** | HELO→MAIL FROM→RCPT TO→DATA→邮件内容→`.`结束 |
| **连接释放** | QUIT 关闭连接 |

- SMTP 只能传 **7位ASCII**，非ASCII内容需 MIME 编码扩展
- SMTP 是**推**协议

### 三、POP3 vs IMAP

| 对比 | POP3 | IMAP |
|---|---|---|
| 端口 | 110 | 143 |
| 邮件管理 | 下载到本地，服务器可删除 | 在服务器上管理，支持文件夹 |
| 离线使用 | 适合 | 需在线 |

## 6.5 WWW 与 HTTP（⭐⭐⭐⭐）

- URL、HTTP、HTML 三支柱
- HTTP特性：**无状态**（应用层语义，每次请求独立）
- 底层使用 TCP

### 一、HTTP版本差异（⭐ 高频选择）

| 版本 | 连接方式 | 特点 |
|---|---|---|
| HTTP/1.0 | **非持久连接** | 每个对象一个TCP连接，2RTT/对象 |
| HTTP/1.1 | **持久连接**（默认） | 流水线/非流水线，减少连接建立开销 |
| HTTP/2.0 | 持久+**多路复用** | 二进制分帧、头部压缩、服务器推送 |
| HTTP/3 | 基于QUIC（UDP） | 0-RTT建连、改进队头阻塞、连接迁移 |

### 二、Cookie 机制

- 服务器在响应中设置 `Set-Cookie` → 浏览器存储
- 后续请求自动携带 `Cookie` 头
- 存储在**客户端**（浏览器），不在服务器
- 用途：会话跟踪、用户识别、购物车

### 三、HTTP报文格式

- **请求报文**：请求行（方法 URL 版本）+ 首部行 + 空行 + 实体体
- **响应报文**：状态行（版本 状态码 短语）+ 首部行 + 空行 + 实体体
- 常见方法：GET / POST / HEAD / PUT / DELETE
- 常见状态码：200 OK / 301 永久重定向 / 404 未找到 / 500 服务器错误

### 四、HTTP时延计算模板

| 场景 | RTT近似 |
|---|---|
| 非持久、无并行 | 每对象2RTT |
| 非持久、并行连接 | 基页2RTT + 引用对象2RTT（并行下载） |
| 持久、非流水线 | 建连1RTT + 每对象1RTT |
| 持久、流水线 | 建连1RTT + 请求1RTT + 传输时间 |

![HTTP非持久与持久连接时序](图表/CN/CN-15_HTTPTiming.png)

#### HTTP RTT + 慢开始 cwnd 组合计算（⭐ 2022/2024真题）

> **典型题型**：请求一个大小为 $S$ 的对象，TCP MSS=M，初始cwnd=1 MSS。
>
> 1. 第1个RTT：建立TCP连接（SYN/SYN-ACK/ACK）
> 2. 第2个RTT：发送HTTP请求 + 服务器开始响应
> 3. 慢开始传输：第1轮发 1 MSS，第2轮发 2 MSS，第3轮发 4 MSS，...
> 4. 第 $k$ 轮累计发送 $2^k - 1$ 个 MSS
> 5. 需要 $k$ 轮使 $2^k - 1 \ge \lceil S/M \rceil$，再加上建连和请求的2RTT
>
> 总时延 ≈ $2RTT + k \times RTT + \text{最后一段传输时延}$

> 📝 **真题锚点**：HTTP RTT 计算在 2022、2024、2025 连续考查。

### 📌 第六章总结

- DNS 4类服务器 + 迭代/递归查询次数是高频选择/简答
- FTP PORT/PASV、SMTP 三阶段是常考对比题
- HTTP版本差异（1.0 vs 1.1 vs 2.0/3）+ Cookie机制必须熟记
- HTTP RTT + TCP慢开始 cwnd 组合计算是近年大题热点
- **网络安全**：对称(AES) vs 非对称(RSA)、数字签名（私钥签公钥验）、CA证书、TLS握手 = 必考知识点
- 关联陷阱编号：#10 #21 #22 #23

### 🎯 第六章 Top-Down 案例模板（应用需求驱动协议选择）

| 步骤 | 提问模板 | 本章落点 |
|---|---|---|
| 场景 | 是查询、文件、邮件还是网页？ | DNS/FTP/SMTP/HTTP |
| 交互 | 是短事务还是长连接？ | 非持久 vs 持久 |
| 计算 | 题目问总RTT还是传输轮次？ | HTTP RTT + cwnd 组合 |
| 判分 | 默认端口/传输层写全了吗？ | TCP/UDP 与端口匹配 |

## 6.6 网络安全基础（⭐⭐⭐ 408考纲要求）

### 一、网络安全威胁

| 威胁类型 | 说明 | 对应安全目标 |
|---|---|---|
| **截获（被动攻击）** | 窃听通信内容 | 机密性 |
| **篡改（主动攻击）** | 修改报文内容 | 完整性 |
| **伪造（主动攻击）** | 冒充合法通信方 | 认证性 |
| **中断（主动攻击）** | 使系统不可用 | 可用性 |

> ⚠️ **被动攻击难检测**（不改变数据），**主动攻击可检测但难防止**。

### 二、密码体制

#### 1. 对称加密（私钥加密）

- 加密密钥 = 解密密钥
- 优点：速度快，适合大量数据
- 缺点：密钥分发困难（$n$ 方通信需 $C_n^2 = n(n-1)/2$ 个密钥）

| 算法 | 密钥长度 | 类型 | 特点 |
|---|---|---|---|
| **DES** | 56位 | 分组密码 | 已不安全，被AES替代 |
| **3DES** | 112/168位 | 分组密码 | DES三轮加密（加-解-加） |
| **AES** | 128/192/256位 | 分组密码 | **当前标准**，安全高效 |
| **RC4** | 可变长 | 流密码 | 曾用于WEP/早期TLS |

#### 2. 非对称加密（公钥加密）⭐

- 公钥（PK）公开，私钥（SK）保密
- **用公钥加密 → 私钥解密**（保密通信）
- **用私钥加密 → 公钥解密**（数字签名）
- 代表算法：**RSA**（基于大整数分解难题）

> ⚠️ **陷阱**：非对称加密**速度远慢于对称加密**，实际中常用非对称加密传递对称密钥（混合加密）。

#### 3. 对称 vs 非对称 对比（⭐ 高频选择）

| 对比项 | 对称加密 | 非对称加密 |
|---|---|---|
| 密钥数量 | $n(n-1)/2$ | $2n$（每人一对） |
| 加解密速度 | **快** | 慢（约慢100-1000倍） |
| 密钥分发 | 困难 | 公钥可公开分发 |
| 典型用途 | 数据加密 | 密钥交换、数字签名 |
| 代表算法 | AES、DES | RSA |

### 三、数字签名⭐

**功能**：同时实现**认证**（确认发送方身份）和**完整性**（报文未被篡改），且具有**不可否认性**。

**签名过程**：
1. 发送方用**自己的私钥** $SK_A$ 对报文摘要签名
2. 接收方用**发送方的公钥** $PK_A$ 验证签名

> ⚠️ **数字签名用私钥签、公钥验**；保密通信用公钥加、私钥解。两者方向相反！

**报文摘要（哈希函数）**：
- MD5（128位摘要）、SHA-1（160位摘要）、SHA-256（256位摘要）
- 特性：单向性、抗碰撞性、固定长度输出
- 作用：对**摘要**而非整篇报文签名，大幅提高效率

### 四、数字证书与CA⭐

**问题**：公钥如何确认确实属于声称的拥有者？→ **CA（Certificate Authority，证书颁发机构）**

**数字证书内容**：
- 公钥拥有者信息 + 公钥本身 + CA签名 + 有效期 + 序列号

**信任链**：
1. CA 用**自己的私钥**对证书签名
2. 任何人用 **CA 的公钥**验证证书真伪
3. 根 CA → 中间 CA → 终端证书（层级信任）

### 五、SSL/TLS（安全套接字层/传输层安全）⭐

**位置**：介于**应用层与传输层之间**（在TCP之上）

**核心功能**：

| 功能 | 实现方式 |
|---|---|
| **机密性** | 对称加密（AES）加密数据 |
| **完整性** | MAC（消息认证码）校验 |
| **认证** | 数字证书 + 非对称加密（RSA/ECDHE） |

**TLS握手过程（简化）**：
1. **Client Hello**：客户端支持的TLS版本、加密套件、随机数$R_C$
2. **Server Hello**：选择加密套件、随机数$R_S$、发送**服务器证书**
3. **密钥交换**：客户端验证证书 → 生成预主密钥（用服务器公钥加密发送）
4. **会话密钥生成**：双方用 $R_C + R_S +$ 预主密钥 → 派生**对称会话密钥**
5. **Change Cipher Spec**：双方切换到加密通信

> 📝 **考试要点**：TLS 使用**混合加密**——非对称加密交换密钥、对称加密传输数据。HTTPS = HTTP + TLS（端口443）。

### 六、防火墙

| 类型 | 工作层次 | 特点 |
|---|---|---|
| **分组过滤** | 网络层 | 检查IP/端口/协议号，速度快但不能检查应用数据 |
| **应用网关（代理）** | 应用层 | 可检查报文内容，安全性高但开销大 |
| **状态检测** | 网络层+传输层 | 跟踪连接状态，兼顾安全和效率 |

### 📌 网络安全小结

- 对称加密快但分发难，非对称加密解决密钥分发
- 数字签名 = **私钥签 + 公钥验**，≠ 加密方向
- CA 证书解决公钥可信问题
- SSL/TLS = 非对称换密钥 + 对称加数据 + 证书认证
- 防火墙三类：分组过滤（快）、应用网关（安全）、状态检测（折中）
- 关联陷阱编号：（无直接对应，但 #10 HTTP无连接易与HTTPS混淆）

---

## 6.7 跨层闭环复盘（Top-Down 精华落地）

### 一、从用户动作反推各层机制

以“打开网页”为例，建议按下表倒推：

| 用户动作 | 立即问题 | 关键协议 | 典型错误点 |
|---|---|---|---|
| 输入URL回车 | 域名怎么变IP | DNS | 把递归/迭代混为一谈 |
| 浏览器发请求 | 请求报文如何组织 | HTTP | 忘记“无状态≠不用TCP” |
| 首包建立连接 | 如何确认双方收发能力 | TCP三次握手 | 误写“两次也可” |
| 连续数据传输 | 如何防拥塞和保可靠 | TCP窗口+拥塞控制 | cwnd/ssthresh变化写错 |
| 跨网转发 | 下一跳如何确定 | IP + 路由协议 | RIP更新规则漏“同下一跳无条件替换” |
| 单链路发送 | 谁先发、冲突怎么办 | CSMA/CD 或 CSMA/CA | CD 与 CA 适用场景混淆 |
| 信号上传输 | 最大速率是多少 | 奈奎斯特/香农 | 忘记“取MIN” |

### 二、基础薄弱同学三层学习法

1. **先会讲人话**：每个协议先用一句话说清“解决什么痛点”
2. **再会画流程**：握手、分片、路由更新、DNS查询必须能手画时序
3. **最后会算题**：只在“变量定义正确”后代公式，禁止先代数后理解

### 三、答题严谨性检查清单（交卷前30秒）

- 是否写清“层次”与“主体”（主机/路由器/交换机）
- 是否标注关键单位（bit/s、B、RTT、MSL、跳数）
- 是否写出边界条件（如窗口上限、16=不可达、分片偏移单位8B）
- 是否给出结论口径（例如“默认情况”“在Reno下”“在无缓存条件下”）

---

## 七、408计算机网络高频失分陷阱速查表（⭐ 考前必看）

| # | 陷阱描述 | 正确结论 |
|:--:|---|---|
| 1 | 30dB 当成 S/N=30 | 应换算为 $S/N=1000$ |
| 2 | SR 认为ACK累积 | SR是逐帧ACK，不累积 |
| 3 | 交换机隔离广播域 | 交换机隔离冲突域，不隔离广播域 |
| 4 | IP分片在路由器重组 | 重组仅在目的主机 |
| 5 | DHCP全流程都单播 | Discover/Request 用广播，Offer/ACK 取决于客户端 broadcast 标志位（常考默认广播） |
| 6 | NAT不改端口 | NAT常需改端口以区分会话 |
| 7 | IPv6仍有首部校验和 | IPv6取消首部校验和 |
| 8 | TCP第三次握手不能带数据 | 可以携带数据 |
| 9 | 超时与三重ACK处理一样 | 超时更严重，cwnd回到1；三重ACK走快恢复 |
| 10 | HTTP无连接=不用TCP | HTTP基于TCP，所谓无连接是应用语义 |
| 11 | 奈奎斯特和香农只用一个 | 必须**两个都算，取MIN** |
| 12 | SR窗口可以任意大 | SR窗口约束：$W_s+W_r \le 2^n$ |
| 13 | ARP请求是单播 | ARP请求是**广播**，响应才是单播 |
| 14 | 三次握手就是两次也行 | 两次无法防止已失效的旧连接请求 |
| 15 | TIME-WAIT可以省略 | 必须等2MSL：确保最后ACK到达+旧报文消亡 |
| 16 | 快恢复时cwnd=ssthresh/2 | Reno快恢复：cwnd=ssthresh+3MSS |
| 17 | RIP收到更好路径才更新 | 若下一跳相同，**无条件替换**（不论距离大小） |
| 18 | OSPF和RIP都用UDP传输 | OSPF直接封装在IP（协议号89），不用传输层 |
| 19 | IPv6地址中`::`可出现多次 | 零压缩`::`在一个地址中**只能出现一次** |
| 20 | ICMP对任何报文都发差错 | 4种情况不发差错：ICMP差错报文、非首片、组播、特殊地址 |
| 21 | FTP数据连接始终用端口20 | 仅PORT模式用20，PASV模式用随机高端口 |
| 22 | DNS只用UDP | DNS通常用UDP，但区域传送和超过512B时使用TCP |
| 23 | 数字签名用公钥签名 | 数字签名用**私钥签、公钥验**，与加密方向相反 |

### 陷阱↔正文双向索引（定位复盘）

| 章节 | 对应陷阱编号 | 快速复盘建议 |
|---|---|---|
| 第一章 体系结构 | #3 #10 | 优先复盘“层次职责”和“语义口径” |
| 第二章 物理层 | #1 #11 | 先单位换算，再做容量上限 |
| 第三章 数据链路层 | #2 #12 #13 | 先判协议类型，再判确认/窗口 |
| 第四章 网络层 | #4 #5 #6 #7 #17 #18 #19 #20 | 先判是否跨网，再判编址/路由机制 |
| 第五章 传输层 | #8 #9 #14 #15 #16 | 先判事件触发（超时/3ACK），再写cwnd分支 |
| 第六章 应用层 | #10 #21 #22 #23 | 先判应用场景，再写端口与传输层；安全题先判加密方向 |

> 双向使用方式：
> 1) 从章节复习时先看“关联陷阱编号”；
> 2) 从陷阱表刷题时反查“对应章节”做二次巩固。

---

## 八、计网冲刺执行策略（30天）

### 1) 第1阶段（1-10天）：模型建立

- 每天1章主干 + 20道客观题
- 必背：信道公式、窗口约束、编址规则、TCP状态

### 2) 第2阶段（11-20天）：大题模板

- 专练：子网划分/CIDR、滑动窗口、TCP拥塞演化、HTTP RTT
- 每天至少复盘2道“算错题”

### 3) 第3阶段（21-30天）：限时实战

- 按整套408节奏训练
- 形成“错因标签”：概念错 / 计算错 / 审题错 / 粗心错

### 最终目标

把计网从“会看懂”升级为“**限时做对**”。

---

## 九、常用端口速记表

| 协议 | 端口 | 传输层 |
|---|---|---|
| FTP数据 | 20 | TCP |
| FTP控制 | 21 | TCP |
| TELNET | 23 | TCP |
| SMTP | 25 | TCP |
| DNS | 53 | UDP/TCP |
| HTTP | 80 | TCP |
| POP3 | 110 | TCP |
| SNMP | 161 | UDP |
| DHCP服务器/客户端 | 67/68 | UDP |
| BGP | 179 | TCP |

---

## 十、考前30秒速查卡（公式 + 边界条件 + 单位）

### 1) 高频公式

- 发送时延：$t_s=L/R$（单位：s）
- 传播时延：$t_p=d/v$（单位：s）
- 奈奎斯特：$R_{max}=2W\log_2V$（无噪）
- 香农：$C=W\log_2(1+S/N)$（有噪）
- SR窗口约束：$W_s+W_r\le 2^n$
- 发送窗口：$W_{send}=\min(rwnd,cwnd)$

### 2) 必写边界

- RIP：最大15跳，16=不可达
- IP分片：偏移单位=8B，重组仅在目的主机
- TCP：SYN/FIN 各消耗1个序号
- TIME-WAIT：必须2MSL
- OSPF：IP协议号89（非UDP/TCP）

### 3) 易错单位

- dB 与线性信噪比：$S/N=10^{dB/10}$
- b/s 与 B/s：1B = 8b
- RTT 与“单向时延”不可混用
- MSS/MTU/首部长度要统一单位（B）

---

> ✅ **完成度说明**：本稿已覆盖 408 计网考纲六大模块（体系结构、物理层、数据链路层、网络层、传输层、应用层），并补充高频陷阱、公式模板、冲刺策略与核心图表。后续可继续迭代“逐节真题精讲版”和“全章节计算专题版”。