第5章 速记手册
考前 30 分钟过一遍 · 全章压缩重组,细节以各节正文与教材为准
知识框架
服务与端口→
UDP→
TCP 报文段→
连接管理→
可靠传输→
流量控制→
拥塞控制→
小结
核心考点速记
| 主题 | 必背要点 |
|---|---|
| 传输层定位 | 为主机上的进程之间提供端到端逻辑通信;面向通信的最高层、用户功能的最低层 |
| 复用与分用 | 复用:多个进程共用一个传输层协议发送;分用:接收方按端口号交付(网络层分用依据是协议字段) |
| 差错检测 | 传输层检验整个报文(首部+数据);IP 只检验首部。TCP 出错要求重传,UDP 出错直接丢弃 |
| 端口与套接字 | 端口 16 位、仅本地意义;熟知 0~1023、登记 1024~49151、短暂 49152~65535;套接字 =(IP:端口) |
| TCP vs UDP | TCP:面向连接、可靠、有序、全双工字节流、一对一、有拥塞控制、首部 20~60B;UDP:无连接、不可靠、面向报文保留边界、支持一对多、无拥塞控制、首部 8B |
| UDP 检验 | 加 12B 伪首部(源/目的 IP 各 4B + 全 0 + 协议 17 + UDP 长度),16 位字反码求和取反;接收方校验和应为全 1;伪首部不传输 |
| TCP 首部关键字段 | 序号按字节编号;确认号=期望收到的下一字节序号;数据偏移单位 4B;控制位 URG/ACK/PSH/RST/SYN/FIN;窗口字段通告接收能力 |
| 三次握手 | SYN=1(前两次)、SYN 段不携带数据但消耗 1 序号;第三次握手可携带数据,不带则不耗序号 |
| 四次挥手 | FIN 段消耗 1 序号;第二、三次挥手间为半关闭;主动方 TIME-WAIT 等待 2MSL(确保最后 ACK 到达 + 旧报文消亡) |
| 连接时间账 | 建立:客户 1RTT 后可发数据,服务器 1.5RTT;释放:客户最短 1RTT+2MSL,服务器 1.5RTT |
| 可靠传输 | 检验 + 序号 + 累积确认 + 重传;RTO 略大于加权平均 RTTS(α=1/8);失序段缓存不丢弃(GBN 与 SR 的混合体) |
| 快重传 | 收到失序段立即发冗余 ACK;对同一段累计 3 个冗余 ACK(共 4 个确认)即立即重传,不等超时 |
| 流量控制 | 滑动窗口:接收方以窗口字段通告 rwnd,动态调整;rwnd=0 后靠持续计时器 + 零窗口探测报文段破死锁 |
| 慢开始 | cwnd 从 1MSS 起,每收一个确认加 1,每轮指数增长,达到 ssthresh 转拥塞避免;不越过 ssthresh |
| 拥塞避免 | 每轮 cwnd 加 1,线性(加法增大);cwnd<ssthresh 用慢开始,> 用拥塞避免,= 皆可 |
| 拥塞处置 | 超时:ssthresh=cwnd/2(下限 2),cwnd=1,重新慢开始(乘法减小);3 冗余 ACK:ssthresh=cwnd/2,cwnd=ssthresh,直接拥塞避免(快恢复) |
| 发送窗口 | 上限 = min[rwnd, cwnd];流量控制端到端(管接收方),拥塞控制全局(管网络) |
易错清单
⚠️ 高频坑点(每条 ≤45 字)
- 传输层分用依据是端口号,网络层分用依据是协议字段,别混。
- SYN、FIN 报文段即使不携带数据也各消耗一个序号。
- 第三次握手可携带数据;不带数据则不消耗序号,下一数据段序号仍为 x+1。
- TIME-WAIT 等 2MSL 的是主动关闭方;被动方收到最后 ACK 即 CLOSED。
- UDP 长度字段含首部和数据,最小值为 8;伪首部 12B 只用于计算检验和,不传输。
- 目的 IP 地址不在 TCP/UDP 首部中,而在 IP 首部中。
- 数据偏移(首部长度)单位是 4B,最大值 15 对应首部 60B。
- 触发快重传需 3 个冗余 ACK,加上原始确认共 4 个确认。
- 慢开始不是增长慢:起点低、每轮翻倍,是指数增长;且不能越过 ssthresh。
- 超时则 cwnd=1 重新慢开始;3 冗余 ACK 则 cwnd 减半进拥塞避免(不归 1)。
必背数字 · 公式 · 端口
📌 端口表
| 应用 | FTP | TELNET | SMTP | DNS | HTTP | POP3 | HTTPS |
|---|---|---|---|---|---|---|---|
| 端口 | 21(控制)/20(数据) | 23 | 25 | 53 | 80 | 110 | 443 |
📌 必背数字与公式
- UDP 首部 8B(4 字段 × 2B);伪首部 12B(TCP 同用,协议字段 17→6);UDP 长度字段最小值 8。
- TCP 首部 20~60B;数据偏移单位 4B(最小值 5,最大值 15);选项最长 40B。
- 套接字 =(IP 地址 : 端口号);端口号 16 位;一条 TCP 连接由两个套接字唯一确定。
- 加权平均往返时间:$$RTTS' = (1-\alpha)\times RTTS + \alpha \times RTT$$,α=1/8;RTO 略大于 RTTS。
- MSS 默认 536B(556B 报文段),目的是避免 IP 分片;MSS 与接收窗口无关。
- 发送窗口上限 = min[rwnd, cwnd]。
- 拥塞控制:cwnd 初始 1MSS;ssthresh 减半下限 2;慢开始指数、拥塞避免线性加 1。
- 握手/挥手时间账:客户建连后 1RTT 可发数据,服务器 1.5RTT;释放客户最短 1RTT+2MSL,服务器 1.5RTT。
- 保活计时器:每 75s 发一个探测报文段,连续 10 次无响应则关闭连接。
- TIME-WAIT 等待 2MSL;零窗口后靠持续计时器发零窗口探测报文段。
一分钟自测五问
Q1:为什么建立连接必须三次握手,两次不行?
答案
防止已失效的连接请求突然到达服务器而错误建连。两次握手时,服务器收到滞留的旧 SYN 就直接建连并等待数据,客户却无此意图,服务器资源被长期浪费;三次握手下客户发现确认序号无效,直接丢弃不回 ACK,连接无法错误建立。
Q2:为什么主动关闭方要在 TIME-WAIT 状态等待 2MSL?
答案
① 保证最后一个 ACK 能到达对方——若丢失,对方会重传 FIN,本方还能重发确认;② 让本连接中所有滞留的旧报文段在网络中自然消失,不干扰新连接。
Q3:超时时 cwnd 置 1,收到 3 个冗余 ACK 时 cwnd 却只减半,为什么?
答案
拥塞严重程度不同。收到 3 个冗余 ACK 说明后续报文段仍能到达,网络尚可通信,拥塞较轻,减半适度退让即可;超时说明连 ACK 都回不来,网络可能严重拥塞,须 cwnd=1 重新慢开始、谨慎探测。
Q4:发送方同时收到 rwnd=400、cwnd=200 的通告,实际发送窗口上限是多少?由什么共同决定?
答案
200。发送窗口上限 = min[rwnd, cwnd],由流量控制(接收方能力,端到端)与拥塞控制(网络状况,全局性)共同决定。
Q5:TCP 既有累积确认(像 GBN)又有失序段缓存与 SACK,它的重传机制到底像谁?
答案
是 GBN 与 SR 的混合体:基础行为用累积确认 + 冗余 ACK,仅重传真正丢失的那个报文段(失序段被接收方缓存,不像 GBN 全部丢弃);SACK 选项可进一步指明已收到的非连续数据块,重传行为更接近 SR。