丢包是网络丢包的征兆。为了处理网络拥塞,需要一些机制在面临网络拥塞时遏制对方。

拥塞原因与代价

情况1. 两个发送方和一台具有无穷大缓存的路由器

Untitled

当发送方和接收方都以R/2的速度去发送时,发送速度越接近R/2,时延就越接近于正无穷。

情况2:两个发送方和一台具有有限缓存的路由器

Untitled

由于路由器的缓存是有限的,因此当路由器缓存满了,就会造成丢包重发。

情况34个发送方和具有有限缓存的多台路由器及多跳路径

当包经过很多跳被丢弃之后,回导致这条路上的路由器用户转发该分组的传输容量被浪费掉了。

拥塞控制方法

拥塞控制方法,有两种:

  1. 端到端拥塞控制:运输层通过对网络的行为进行观察(丢失与时延)来推断的。
  2. 网络辅助的拥塞控制:路由器向发送方提供关于网络中拥塞状态的显式反馈信息

TCP拥塞控制

TCP必须使用端到端拥塞控制,而不是使网络辅助的拥塞控制,因为IP层不向端系统提供显式的网络拥塞反馈。

我们在前面提到过发送窗口 swnd 和接收窗口 rwnd 是约等于的关系,那么由于加入了拥塞窗口的概念后,此时发送窗口的值是swnd = min(cwnd, rwnd),也就是拥塞窗口和接收窗口中的最小值。

拥塞窗口 cwnd 变化的规则: