TCP流量控制

原创 2016年08月31日 14:16:37

上篇博文我们分析了TCP的拥塞控制。TCP的拥塞控制其实是TCP通过线路上的阻塞情况来控制发送端发送数据的大小。但是还有一种情况就是接收端的处理速度不如发送端,这时候,就要使用TCP另外一个控制手段了,就是TCP的流量控制。
分析TCP的流量控制我们先讨论一下什么叫ARQ协议,ARQ协议分为停止并等待ARQ协议和连续ARQ协议。
下面是wiki对等待ARQ协议和连续ARQ协议的解释。

停止并等待协议的工作原理如下:发送点对接收点发送数据包,然后等待接收点回复ACK并且开始计时。
在等待过程中,发送点停止发送新的数据包。
当数据包没有成功被接收点接收时候,接收点不会发送ACK.这样发送点在等待一定时间后,重新发送数据包。
反复以上步骤直到收到从接收点发送的ACK.
发送点的等待时间应当至少大于传输点数据包发送时间(数据包容量除以发送点传输速度),接收点ACK接收时间(ACK容量除以接收点传输速度),数据在连接上的传送时间,接收点检验接收数据是否正确的时间之和。在实际应用当中,等待时间是这个和的23倍。

这个协议的缺点是较长的等待时间导致低的数据传输速度。在低速传输时,对连接频道的利用率比较好,但是在高速传输时,频道的利用率会显著下降。
    为了克服停止并等待ARQ协议长时间等待ACK的缺点。这个协议会连续发送一组数据包,然后再等待这些数据包的ACK.
回退N重传(Go-Back-N)
接收点丢弃从第一个没有收到的数据包开始的所有数据包。
发送点收到NACK后,从NACK中指明的数据包开始重新发送。
选择重传(Selective Repeat)
发送点连续发送数据包但对每个数据包都设有个一个计时器。
当在一定时间内没有收到某个数据包的ACK时,发送点只重新发送那个没有ACK的数据包。

说了一大堆其实就说停止等待ARQ是一个数据包要等到ACK确认才可以发送第二个,而连续ARQ是可以连续发送多个再确认。
下面我们再看看滑动窗口协议
滑动窗口协议时接收方维护一个滑动窗口来控制发送方的发送窗口大小的一种协议。发送端的发送窗口要注意的是发送出去,但是还没收到确认的数据,还要在发送窗口那里进行保留。而接受窗口也要临时保留好没有按序到达接受窗口的数据。具体如图
这里写图片描述
对着这幅图片,我来把整个流程梳理一下,首先接受方维护着一个接受窗口从34到53,那么发送方只能发送窗口内的数据,根据连续ARQ协议,发送方可以一口气发送34到41所有的数据。再进行确认。发送后P2指针就指向42.此时要注意,如果接收方发送了ack=42的报文,这样,p1指针也会指向42。但是图片上给出另外一种情况,就是接收方只接收到37,38,40,三个报文,此时接收方会临时存储那三个字节的数据,等待后续报文有没有其他数据传入,如果没有他会发送ack=34,让发送方重传这部分数据的人报文,同时发送方也会维护一个重传计时器,如果接收方一直没有ACK报文,他就会重传P1到P2的数据。
接收方维护一个接受方滑动窗口来进行流量控制。其实就是TCP进行流量控制的一种方式。很多人就问,那发送方怎么知道接收方窗口大小呢,其实就是在接收方报文里面有一个rwnd字段告诉发送方,联系上次阻塞窗口。我们就知道为什么接受窗口等于min(rwnd,cwmd)了。
还有一种情况我们要注意就是如果接受方不想让发送方传数据了就会发送一个rwnd=0的报文。此时如果接收方再发送一个rwnd=400在传输过程丢失了。此时不就死火了?此时会维护一个持续计时器,发送方维护一个持续计时器,如果0报文发送后时间到了,还没rwnd报文叫醒他,就发一个试探报文到接收端。。。

TCP的流量控制

1.TCP的滑动窗口        为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认。...
  • sicofield
  • sicofield
  • 2013年08月01日 21:58
  • 18910

TCP的流量控制和拥塞控制

TCP的流量控制和拥塞控制 TCP的流量控制 1. 利用滑动窗口实现流量控制     如果发送方把数据发送得过快,接收方可能会来不及接收,这就会造成数据的丢失。所谓流量控制就是让发送...
  • liaoqianwen123
  • liaoqianwen123
  • 2014年05月09日 22:05
  • 16929

TCP详解(3):重传、流量控制、拥塞控制……

数据传输  在TCP的数据传送状态,很多重要的机制保证了TCP的可靠性和强壮性。它们包括:使用序号,对收到的TCP报文段进行排序以及检测重复的数据;使用校验和来检测报文段的错误;使用确认和计时器来检测...
  • kzq_qmi
  • kzq_qmi
  • 2015年07月18日 10:46
  • 8006

TCP - 流量控制 and 拥塞控制

未完待续。。 流量控制 拥塞控制 1 慢启动 - Slow Start 和 拥塞避免 - Congestion Avoidance 2 快重传 - Fast Retransmission 和 快恢复 ...
  • qing101
  • qing101
  • 2015年09月22日 14:31
  • 3806

TCP的流量控制与拥塞控制小结

为了提高信道的利用率TCP协议不使用停止等待协议,而是使用连续ARQ协议,意思就是可以连续发出若干个分组然后等待确认,而不是发送一个分组就停止并等待该分组的确认。其中TCP的流量控制与拥塞控制是TCP...
  • u014774781
  • u014774781
  • 2015年08月28日 10:02
  • 534

TCP的流量控制 TCP与UDP的区别

http://www.cnblogs.com/Jessy/p/3536163.html http://www.cnblogs.com/Jessy/p/3536163.html http:/...
  • u011904605
  • u011904605
  • 2016年11月02日 21:41
  • 1136

NetWork——TCP的流量控制和拥塞控制

0.  前言从网友分享的面经来看,TCP的拥塞机制在今年腾讯面试中被提及了,可见不论是什么研发岗位,计算机网络的知识总是那么的重要。本科时候学的都忘了=。= 今天打算总结TCP的流量控制和拥塞控制。网...
  • SEU_Calvin
  • SEU_Calvin
  • 2016年11月17日 11:58
  • 1922

TCP/IP详解--拥塞控制和流量控制的区别

拥塞控制与流量控制的区别 拥塞控制的任务是确保子网能够承载所到达的流量。这是一个全局性问题,涉及到各方面的行为,包括所有的主机、所有的路由器、路由器内部的存储转发处理过程,以及所有可能会削...
  • yusiguyuan
  • yusiguyuan
  • 2014年06月30日 14:47
  • 1733

TCP/IP:拥塞算法与流量控制算法 学习小结

1.查看支持的拥塞控制协议? cat /proc/sys/net/ipv4/tcp_allowed_congestion_control 2.修改阻塞算法:  sysctl net.ip...
  • honour2sword
  • honour2sword
  • 2015年04月22日 10:08
  • 1663

TCP的流量控制

1. 理解:窗口和滑动窗口 TCP的流量控制 TCP使用窗口机制进行流量控制 什么是窗口? 连接建立时,各端分配一块缓冲区用来存储接收的数据,并将缓冲区的尺寸发送给另一端 ...
  • Scythe666
  • Scythe666
  • 2016年07月14日 14:05
  • 677
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:TCP流量控制
举报原因:
原因补充:

(最多只允许输入30个字)