抓包实战系列第 8 篇。上一篇我们从抓包里看了 TCP 连接关闭:FIN、ACK、TIME-WAIT、CLOSE-WAIT、RST。今天继续进入 TCP 可靠传输的核心现场:重传。网络会丢包,TCP 怎么发现?什么时候等超时,什么时候立刻重传?抓包里又怎么判断?开场:TCP 可靠,不是因为网络不丢包很多人听到 TCP 可靠,容易产生一个误会:TCP 传输不会丢包。不对。网络该丢还是会丢。链路拥塞会丢。交换机队列满会丢。无线信号差会丢。中间设备策略也可能丢。TCP 的可靠,不是让世界变得可靠。而是在不可靠的世界里,尽量把数据补回来。就像快递不会保证路上永远不出问题。但它会查物流、补发、签收、追踪。TCP 也是这样。先给结论:TCP 重传机制的核心,是用序列号和 ACK 判断哪些数据没被确认,然后通过超时重传或快速重传把数据补发。再通俗一点:TCP 不是不丢包,而是丢了之后会发现,并尽量重发。今天我们重点看两种重传: