Skip to content

Commit 0b96d61

Browse files
committed
增加 TCP 流量控制、拥塞控制
1 parent 7f88f8b commit 0b96d61

5 files changed

+35
-0
lines changed

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2194,6 +2194,41 @@ TCP 是一个基于字节流的传输服务(UDP 基于报文的),“流”
21942194
* 在数据包之间设置边界,如添加特殊符号 `\r\n` 标记。FTP 协议正是这么做的。但问题在于如果数据正文中也含有 `\r\n`,则会误判为消息的边界。
21952195
* 使用更加复杂的应用层协议。
21962196

2197+
#### TCP 流量控制
2198+
2199+
##### 概念
2200+
2201+
流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
2202+
2203+
##### 方法
2204+
2205+
<details><summary>利用可变窗口进行流量控制</summary>
2206+
2207+
![](images/利用可变窗口进行流量控制举例.png)
2208+
2209+
</details>
2210+
2211+
#### TCP 拥塞控制
2212+
2213+
##### 概念
2214+
2215+
拥塞控制就是防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不致过载。
2216+
2217+
##### 方法
2218+
2219+
* 慢开始( slow-start )
2220+
* 拥塞避免( congestion avoidance )
2221+
* 快重传( fast retransmit )
2222+
* 快恢复( fast recovery )
2223+
2224+
<details><summary>TCP的拥塞控制图</summary>
2225+
2226+
![](images/TCP拥塞窗口cwnd在拥塞控制时的变化情况.png)
2227+
![](images/快重传示意图.png)
2228+
![](images/TCP的拥塞控制流程图.png)
2229+
2230+
</details>
2231+
21972232
#### TCP 传输连接管理
21982233

21992234
> 因为 TCP 三次握手建立连接、四次挥手释放连接很重要,所以附上《计算机网络(第 7 版)-谢希仁》书中对此章的详细描述:<https://github.com/huihut/interview/blob/master/images/TCP-transport-connection-management.png>
Loading
26.2 KB
Loading
Loading

images/快重传示意图.png

28.7 KB
Loading

0 commit comments

Comments
 (0)