前言
所谓拥塞控制,是指防止过多的数据注入网络,以使网络中的路由器或链路不致过载。出现拥塞时,端点并不了解到拥塞发生的细节面对通信连接的端点来说,拥塞往往表现为通信时延的增加,当然,拥塞控制和流量控制也有相似的地方,即他们都通过控制发送方发送数据的速率来达到控制效果。
拥塞控制与流量控制的区别:拥塞控制时让网络能承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能相关的所有因素。相反,流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,一遍使接收端来得及接收。
比如:某个链路的传输速率为10Gb/s,某巨型机向一台PC以1Gb/s的速率传送文件,显然网络的带宽使足够大的,不存在拥塞问题,但如此高的发送速率将导致PC可能来不及接收,因此必须进行流量控制。但若有100万台PC在此链路上以1Mb/s的速率传送文件,则现在的问题就变成了网络的负载是否超过了现有网络所能承受的范围。
为了更好地对传输层进行拥塞控制,因特网建议标准定义了以下4中算法:满开始、拥塞避免、快重传、快恢复。
发送方在确定发送报文段的速率时,既要根据接收方的接收能力,又要从全局考虑不要使网络发生拥塞。因此,TCP协议要求发送方维护以下两个窗口:
- (1)接收窗口rwnd(receive windows):接收方根据目前接收缓存大小所许诺的最新窗