File tree Expand file tree Collapse file tree 1 file changed +21
-5
lines changed Expand file tree Collapse file tree 1 file changed +21
-5
lines changed Original file line number Diff line number Diff line change @@ -190,16 +190,32 @@ PS:一般定时器设定的时间都会大于一个 RTT 的平均时间。
190
190
191
191
慢开始算法步骤具体如下
192
192
193
- 1 . 连接初始设置拥塞窗口(Congestion Window) 为一
193
+ 1 . 连接初始设置拥塞窗口(Congestion Window) 为 1 MSS(一个分段的最大数据量)
194
194
2 . 每过一个 RTT 就将窗口大小乘二
195
195
3 . 指数级增长肯定不能没有限制的,所以有一个阈值限制,当窗口大小大于阈值时就会启动拥塞避免算法。
196
196
197
197
### 拥塞避免算法
198
198
199
199
拥塞避免算法相比简单点,每过一个 RTT 窗口大小只加一,这样能够避免指数级增长导致网络拥塞,慢慢将大小调整到最佳值。
200
200
201
- 在传输过程中可能会遇到丢包的情况 ,这时候 TCP 会认为网络拥塞了,会马上进行以下步骤:
201
+ 在传输过程中可能定时器超时的情况 ,这时候 TCP 会认为网络拥塞了,会马上进行以下步骤:
202
202
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
+ - 进入快速恢复阶段
You can’t perform that action at this time.
0 commit comments