TCP拥塞控制

1、网络拥塞

路由器的内存是有限的,若同一时间到达某个路由器的数据太多,这个路由器将无法接收所有的数据,只能将一部分丢弃;或者同一台路由器数据太多,后面到达的数据将要等待较长的时间才会被转发。

网络中的数据太多,导致某个路由器处理不过来或处理地太慢,这就是网络拥塞;

对于TCP,当发生数据丢失时,重传数据将延长数据到达的时间;同时,高频率的重传,也将导致网络的拥塞得不到缓解。

拥塞控制:

1) 在网络中发生拥塞时,减少向网络中发送数据的速度,防止造成恶性循环;

2) 在网络空闲时,提高发送数据的速度,最大限度地利用网络资源.

2、拥塞控制方法:

由发送数据的端系统自己来判断是否拥塞,然后调整传输速率。

例如:发送的数据已经超时却还没有接收到确认报文,数据往返时延过高,接收到对同一个数据段的重复确认

都可以认为是网络拥塞的现象;若发送端检测到这种现象,就应该降低发送数据的速率,若没有,则可以慢慢提高速率;

拥塞控制算法Reno: 慢启动、拥塞避免、快重传、快启动

  • 慢启动阶段思路是不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小,在没有出现丢包时每收到一个 ACK 就将拥塞窗口大小加一(单位是 MSS,最大单个报文段长度),每轮次发送窗口增加一倍,呈指数增长,若出现丢包,则将拥塞窗口减半,进入拥塞避免阶段;
  • 当窗口达到慢启动阈值或出现丢包时,进入拥塞避免阶段,窗口每轮次加一,呈线性增长;当收到对一个报文的三个重复的 ACK 时,认为这个报文的下一个报文丢失了,进入快重传阶段,要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方,可提高网络吞吐量约20%)而不要等到自己发送数据时捎带确认;
  • 快重传完成后进入快恢复阶段,将慢启动阈值修改为当前拥塞窗口值的一半,同时拥塞窗口值等于慢启动阈值,然后进入拥塞避免阶段,重复上述过程。

3、滑动窗口原理

TCP不是发送一个数据段,接收到确认后再发送另一个数据段;TCP是流水线的方式发送数据:

TCP的每一个数据段都有一个序号,TCP维护一个发送窗口来发送数据,这个窗口就是一个区间

所有序号位于同一个窗口内的数据段会被一次性发送,不需要等待之前发送的数据段被确认。

最早发送出去的数据段被确认后,窗口就会向前移动,直到移动到第一个没有被确认的序号,这时候又会有新的数据段序号被包含在窗口中,然后被发送出去。

所以限制数据发送速率最好的方式就是限制窗口的大小

在发送方的TCP程序会跟踪和维护一个叫做拥塞窗口的变量,用来进行拥塞控制。拥塞窗口被称为cwnd

TCP发送端,所有被发送但是还没收到确认的数据段必须落在这个窗口中,所有,当网络拥塞时,TCP程序将减小cwnd,而网络通畅时,增大cwnd,以此来控制数据发送的速率。 如图TCP报文格式

流量控制和拥塞控制的区别与联系

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值