TCP 可靠传输

官官方信息技术老师·10 页·深入(追求细节与边界)·0 次浏览·33 天前
信息技术大学

TCP 可靠传输

计算机基础面试八股 · 第 1 章 计算机网络

按 空格/→ 演示下一步

问一句
1 / 10 页

全部页面点击任意一页,跳回舞台从这页播放

信息技术大学

TCP 可靠传输

计算机基础面试八股 · 第 1 章 计算机网络

1第 1 页 · TCP 可靠传输

序列号与确认应答机制

可靠传输的地基:每个字节都有编号,每个收到的数据都要被确认。

字节编号
序列号按字节计数,接收端据此排序与去重
确认应答
ACK 携带下一个期望字节号,含义是「此前全收到」
累积确认
确认号之前的字节视为全部送达,中间丢失必须重传
2第 2 页 · 序列号与确认应答机制

超时重传与快速重传

丢包靠重传补救:超时重传兜底,快速重传靠重复 ACK 提前触发。

超时重传
RTO 内没等到 ACK 就重发,RTO 按 RTT 动态自适应
快速重传
收到 3 个重复 ACK 立即重发,不等超时
SACK 选项
告知已收到的不连续区间,只补真正缺失的段
3第 3 页 · 超时重传与快速重传

重传时机自测

点击作答

发送方连续收到 3 个重复 ACK,最合理的动作是?

4第 4 页 · 重传时机自测

滑动窗口与流量控制

发多少不由发送方说了算:接收方用窗口广告控制发送速率,防止收不动。

滑动窗口
窗口内字节可连续发送,收到 ACK 窗口向前滑
流量控制
接收方用 rwnd 通告剩余缓冲,发送方不得超出
零窗口僵局
窗口归零后靠零窗口探测报文唤醒恢复
水龙头接水对应 →流量控制

放多快看桶还剩多少空间(rwnd),桶满了就关小龙头

5第 5 页 · 滑动窗口与流量控制

拥塞控制四算法(慢启动/

流量控制管接收端,拥塞控制管网络:探测可用带宽,拥塞了就退让。

慢启动
cwnd 从小值指数翻倍,快速试探可用带宽
拥塞避免
越过 ssthresh 后每个 RTT 线性加一,谨慎爬坡
快重传/快恢复
3 个重复 ACK 触发重传,cwnd 减半而非归一
超时退让
真正超时才把 cwnd 打回 1,重新慢启动
6第 6 页 · 拥塞控制四算法(慢启动/

拥塞后的两种退让

同样是给网络让路,快恢复与超时退让的力度完全不同。

快恢复
  • 收到 3 个重复 ACK 触发
  • cwnd 减半后线性增长
  • 链路仍在,不必推倒重来
超时退让
  • RTO 内无任何 ACK 触发
  • cwnd 归 1 重新慢启动
  • 网络疑似瘫痪,保守处理
快恢复是点刹车,超时是急刹——力度不同,本质都是给网络让路。
7第 7 页 · 拥塞后的两种退让

糊涂窗口综合征

每边都「省着用」,结果一次只传几个字节:小窗口让头部开销吞噬有效数据。

现象
窗口被蚕食到几十字节,传输效率暴跌
接收端对策
窗口过小时通告 0,攒到能收一个完整段再开门
发送端对策
Nagle 算法攒小包,凑够 MSS 或收到 ACK 再发
8第 8 页 · 糊涂窗口综合征

本节要点

  • ✓序列号 + 确认应答是可靠的基石
  • ✓快重传靠重复 ACK,超时重传是兜底
  • ✓rwnd 管接收端,cwnd 管网络拥塞
  • ✓慢启动指数、拥塞避免线性、快恢复减半
延伸主题:画一张 cwnd 锯齿图查一查 BBR 的思路
9第 9 页 · 本节要点

课后思考

先自己回答,再展开参考答案——能讲出来才算真懂。

1流量控制与拥塞控制都在限制发送速度,它们防的对象有什么不同?

参考答案流量控制防接收端缓冲溢出,窗口大小看 rwnd;拥塞控制防网络路径过载,窗口看 cwnd。实际发送量取两者中较小值。

2为什么快速重传后只需把 cwnd 减半,而超时却要退回慢启动?

参考答案三个重复 ACK 说明后续段仍在到达,链路没有瘫,减半即可;超时意味着连 ACK 都收不到,网络可能严重拥塞,必须保守地从头探测。

3Nagle 算法为什么会拖慢小包交互场景,怎么关掉?

参考答案Nagle 攒包等凑满 MSS,交互式场景(如输入回显)会引入攒包等待延迟;设置 TCP_NODELAY 关闭,用一点带宽效率换即时性。

10第 10 页 · 课后思考