1. 流量控制(端到端)
流量控制,是利用滑动窗口协议控制发送端流量,是为了解决发送数据过快导致接收方来不及接收的问题。
具体是消息接收方会发送流量控制报文,通知发送方窗口大小,发送方发送的数据大小不能超过窗口大小。
如果发送者发送数据过快,接收者来不及接收,那么就会有报文丢失。为了避免报文丢失,控制发送者的发送速度,使得接收者来得及接收,这就是流量控制。流量控制根本目的是防止报文丢失,它是构成TCP可靠性的一方面。
如何实现流量控制?
由滑动窗口协议(连续ARQ协议)实现。滑动窗口协议既保证了分组无差错、有序接收,也实现了流量控制。主要的方式就是接收方返回的 ACK 中会包含自己的接收窗口的大小,并且利用大小来控制发送方的数据发送。
2. 拥塞控制(区域网络)
拥塞控制,是为了避免过多的流量注入网络使得网络过载。具体方法包括:慢开始、拥塞避免、快重传和快恢复。
-
慢开始:刚开始建立连接的时候,发送窗口大小为1,然后逐步增加窗口的大小,如每次加倍。
-
拥塞避免:当发送窗口达到一个门限值之后,窗口大小不再每次加倍,而是每次+1,减缓窗口增大速度。
-
快重传: 快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期,这是因为此时网络状况良好,可以立即重传。
-
快恢复:执行“乘法减小”算法将发送窗口门限值减