1988年Van Jacobson指出了TCP在控制网络拥塞方面的不足,并提出了“慢启动”(Slow Start)、“拥塞避免”(Congestion Avoidance)的算法。1990年出现的TCP Reno版本增加了“快速重传 ”(Fast Retransmit)、“快速恢复”(Fast Recovery)算法,避免了网络拥塞不严重时采用“慢启动”算法而造成过大的减小发送窗口尺寸的现象。这样TCP的拥塞控制就由这4个核心部分组成。最近几年又出现了TCP的改进版本,如New-Reno、SACK等。
主要参数
TCP拥塞控制是通过控制一些重要参数的改变而实现的。TCP用于拥塞控制的参数主要有:
(1) 拥塞窗口(cwnd):拥塞控制的关键参数,它描述源端在拥塞控制情况下一次最多能发送的数据包的数量。
(2) 通告窗口(awin):接收端给源端预设的发送窗口大小,它只在TCP连接建立的初始阶段发挥作用。
(3) 发送窗口(win):源端每次实际发送数据的窗口大小。
(4) 慢启动阈值(ssthresh):拥塞控制中慢启动阶段和拥塞避免阶段的分界点。初始值通常设为65535byte。
(5) 回路响应时间(RTT):一个TCP数据包从源端发送到接收端,源端收到接收端确认的时间间隔。
(6) 超时重传计数器(RTO):描述数据包从发送到失效的时间间隔,是判断数据包丢失与否及网络是否拥塞的重要参数。通常