文章是本人复习时做的一些笔记,所以比较简略,对于想详细了解网络这块的同学,不建议阅读~
TCP三次握手的状态迁移图

- 为什么需要三次握手而不是两次? 这里引用一个比较经典的回答:networkengineering.stackexchange.com/questions/2…
TCP四次挥手时的状态迁移图

TCP TIME_WAIT
何时产生?
主动关闭连接的一方在收到FIN包后发送ACK包,随后进入TIME_WAIT状态,持续时常2*MSL(报文段最长存活时间)
为什么存在?
- 若不存在该状态,主动关闭连接的一方发送ACK包之后直接进去CLOSED状态,若该ACK包丢失,被关闭一方超时重传FIN,一直处在LAST_ACK状态。此时若需要在原TCP四元组上建立一个新的TCP连接,被关闭一方一直处于LAST_ACK状态,在收到SYN包时会报错。
- 确保在之前在网络中“迷路”的数据包消失。该数据包可能会被后续新的TCP连接错误的接收
流量控制
- 使用滑动窗口实现流量控制,如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收。
拥塞控制
- 对拥塞控制过程的详细说明:blog.csdn.net/sicofield/a…
- 拥塞控制中的四大算法:
- 慢启动:发送方每收到一个包确认,则将cwnd变为原来的2倍(指数增长)
- 拥塞避免:每收到一个包确认,cwnd加1(线性增长)
- 快重传:快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。
- 快恢复:在快重传之后进行。发送发连续收到3个重复确认时,将慢启动门限置为当前cwnd的一半,然后将cwnd置为门限大小,执行拥塞避免算法
- 我对拥塞控制过程的理解:
- 最开始拥塞窗口cwnd为1,使用慢启动算法指数增长
- 当cwnd达到阈值(我们称之为慢启动门限)时,采用拥塞避免算法
- 当连续收到3个重复确认包后,依次采用快重传、快恢复,再执行拥塞控制算法
- 示意图:
