Skip to content

Commit 6563f2a

Browse files
committed
快速重传
1 parent 6119278 commit 6563f2a

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

Network/Network-zh.md

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -190,16 +190,32 @@ PS:一般定时器设定的时间都会大于一个 RTT 的平均时间。
190190

191191
慢开始算法步骤具体如下
192192

193-
1. 连接初始设置拥塞窗口(Congestion Window) 为一
193+
1. 连接初始设置拥塞窗口(Congestion Window) 为 1 MSS(一个分段的最大数据量)
194194
2. 每过一个 RTT 就将窗口大小乘二
195195
3. 指数级增长肯定不能没有限制的,所以有一个阈值限制,当窗口大小大于阈值时就会启动拥塞避免算法。
196196

197197
### 拥塞避免算法
198198

199199
拥塞避免算法相比简单点,每过一个 RTT 窗口大小只加一,这样能够避免指数级增长导致网络拥塞,慢慢将大小调整到最佳值。
200200

201-
在传输过程中可能会遇到丢包的情况,这时候 TCP 会认为网络拥塞了,会马上进行以下步骤:
201+
在传输过程中可能定时器超时的情况,这时候 TCP 会认为网络拥塞了,会马上进行以下步骤:
202202

203-
- 将阈值设为拥塞窗口的一半
204-
- 将拥塞窗口设为一
205-
- 启动拥塞避免算法
203+
- 将阈值设为当前拥塞窗口的一半
204+
- 将拥塞窗口设为 1 MSS
205+
- 启动拥塞避免算法
206+
207+
### 快速重传
208+
209+
一旦接收端收到的报文出现失序的情况,接收端只会回复最后一个顺序正确的报文序号(没有 sack 的情况下)。如果收到三个重复的 ACK,无需等待定时器超时再重发而是启动快速重传。具体算法分为两种
210+
211+
**TCP Taho 实现如下**
212+
213+
- 将阈值设为当前拥塞窗口的一半
214+
- 将拥塞窗口设为 1 MSS
215+
- 重新开始慢开始算法
216+
217+
**TCP Reno 实现如下**
218+
219+
- 拥塞窗口减半
220+
- 将阈值设为当前拥塞窗口
221+
- 进入快速恢复阶段

0 commit comments

Comments
 (0)