TCP/IP 协议流量控制和拥塞控制

一、流量控制

  • 流量控制是端到端的控制,例如A通过网络给B发数据,A发送的太快导致B没法接收(B缓冲窗口过小或者处理过慢),这时候的控制就是流量控制,原理是通过滑动窗口的大小改变来实现。

二、拥塞控制

image.png
  • 拥塞控制是A与B之间的网络发生堵塞导致传输过慢或者丢包,来不及传输。防止过多的数据注入到网络中,这样可以使网络中的路由器或链路不至于过载。拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及与降低网络性能有关的所有因素。
2.1 网络拥塞原因
  • 对资源的需求大于可用的资源。若网络中许多资源同时供应不足,网络的性能就要明显变坏,整个网络的吞吐量随之负荷的增大而下降。因而产生拥塞
2.2 网络拥塞的标志

1.重传计时器超时(进入慢开始算法)
2.接收到三个重复确认(进入快速恢复算法)

2.3 拥塞控制的方式
2.3.1 慢开始
  • 发送方的拥塞窗口(cwnd)初始值设置为1个最大报文段(MSS)大小。之后每经过一个RTT,拥塞窗口 (cwnd) 大小就乘以2。直到拥塞窗口(cwnd)> 慢开始门限(ssthresh),开始进入拥塞避免。慢开始门限(ssthresh)是为了防止cwnd增长过大引起网络拥塞而设置的一个值。
2.3.2 拥塞避免
  • 拥塞窗口(cwnd)每经过一个RTT,增加1。如果发送方设置的超时计时器时限已到但还没有收到确认,则触发超时重传,此时ssthresh = cwnd / 2 ,cwnd = 1 ,重新进入慢开始算法
2.3.3 快速重传
  • 连续收到3次重复确认的报文,则立刻重传,不等设置的重传计时器超时。此时进入快速恢复算法,而不是进入慢启动算法。
2.3.4 快速恢复
  • 与快速重传配合使用,当快速重传触发后,将ssthresh = cwnd / 2 ,cwnd = ssthresh + 3(收到3次重复确认,说明发送端已经发送了3个报文,3个报文不再占用网络资源,因此拥塞窗口可以多设置3个),然后进入拥塞避免算法。
发送窗口的大小确认定
  • 接收方根据自己的接收能力设定了接收窗口rwnd,并把这个窗口值写入TCP首部中的窗口字段,传送给发送方。因此,接收窗口又称为通知窗口。从接收方对发送方的流量控制的角度考虑,发送方的发送窗口一定不能超过对方给出的接收窗口rwnd 。
  • 发送方窗口的上限值 = Min [ rwnd, cwnd ]
  • 当rwnd < cwnd 时,是接收方的接收能力限制发送方窗口的最大值。
  • 当cwnd < rwnd 时,则是网络的拥塞限制发送方窗口的最大值。

你可能感兴趣的:(TCP/IP 协议流量控制和拥塞控制)