Skip to content

Commit 4487550

Browse files
committed
快恢复
1 parent 6563f2a commit 4487550

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

Network/Network-zh.md

+11-2
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ PS:一般定时器设定的时间都会大于一个 RTT 的平均时间。
206206

207207
### 快速重传
208208

209-
一旦接收端收到的报文出现失序的情况,接收端只会回复最后一个顺序正确的报文序号(没有 sack 的情况下)。如果收到三个重复的 ACK,无需等待定时器超时再重发而是启动快速重传。具体算法分为两种
209+
快速重传一般和快恢复一起出现。一旦接收端收到的报文出现失序的情况,接收端只会回复最后一个顺序正确的报文序号(没有 Sack 的情况下)。如果收到三个重复的 ACK,无需等待定时器超时再重发而是启动快速重传。具体算法分为两种
210210

211211
**TCP Taho 实现如下**
212212

@@ -218,4 +218,13 @@ PS:一般定时器设定的时间都会大于一个 RTT 的平均时间。
218218

219219
- 拥塞窗口减半
220220
- 将阈值设为当前拥塞窗口
221-
- 进入快速恢复阶段
221+
- 进入快恢复阶段(重发对端需要的包,一旦收到一个新的 ACK 答复就退出该阶段)
222+
- 使用拥塞避免算法
223+
224+
### TCP New Ren 改进后的快恢复
225+
226+
**TCP New Reno** 算法改进了之前 **TCP Reno** 算法的缺陷。在之前,快恢复中只要收到一个新的 ACK 包,就会退出快恢复。
227+
228+
**TCP New Reno** 中,TCP 发送方先记下三个重复 ACK 的分段的最大序号。
229+
230+
假如我有一个分段数据是 1 ~ 10 这十个序号的报文,其中丢失了序号为 3 和 7 的报文,那么该分段的最大序号就是 10。发送端只会收到 ACK 序号为 3 的应答。这时候重发序号为 3 的报文,接收方顺利接收个会发送 ACK 序号为 7 的应答。这时候 TCP 知道对端是有多个包未收到,会继续发送序号为 7 的报文,接收方顺利接收并会发送 ACK 序号为 11 的应答,这时发送端认为这个分段接收端已经顺利接收,接下来会退出快恢复阶段。

0 commit comments

Comments
 (0)