流量控制的主要目的是防止发送者发送数据过快,接收者来不及接收,从而导致分组丢失。这是通过控制发送者的发送速度,使接收者能够来得及接收数据来实现的。流量控制是构成TCP可靠性的一方面。
TCP协议通过滑动窗口协议(连续ARQ协议)实现流量控制。在这个过程中,接收方返回的ACK中会包含自己的接收窗口的大小,并且利用这个大小来控制发送方的数据发送。当发送者收到了一个窗口为0的应答,发送者便停止发送,等待接收者的下一个应答。然而,如果这个窗口不为0的应答在传输过程丢失,发送者会一直等待,而接收者以为发送者已经收到该应答,等待接收新数据,这样双方就相互等待,从而产生死锁。为了避免这种流量控制引发的死锁,TCP使用了持续计时器。每当发送者收到一个零窗口的应答后就启动该计时器。
与流量控制不同,拥塞控制的研究对象是整个网络,包括网络中的各个路由器和线路。这是一个全局性的角度,考虑的是如何避免短时间内由于大量流量的注入引起的网络拥塞。
TCP的拥塞控制主要有四种方式:慢启动、拥塞避免、快重传和快恢复。这四种方式结合使用,试图使得整个网络达到一个平衡均衡的状态。拥塞窗口控制的基本原则是:当网络通畅时,增大拥塞窗口;当网络拥堵时,减少拥塞窗口。此外,发送窗口的大小总是不超过拥塞窗口的大小。
TCP协议的流量控制是什么?
得分点
流量控制就是让发送方的发送速率不要过快、让接收方来得及接收所有的数据。
参考答案
标准回答
如果发送方把数据发送得过快,接收方可能就来不及接受到所有的数据,中间可能会丢失数据报。流量控制就是让发送方的发送速率不要过快,让接收方来得及接收所有的数据。
加分回答
一般都希望数据能传输得越快越好,但是如果发送方把数据发送得过快,接收方可能就来不及接受到所有的数据,中间可能会丢失数据报。而TCP的流量控制就是让发送方的发送速率不要过快,让接收方来得及接收所有的数据,利用滑动窗口这个机制可以很方便的实现在TCP连接上控制对方发送数据报的速率。例如:客户端和服务器端建立TCP连接的时候,客户端告诉服务器“我的接收窗口,cwnd= 400”,这时候服务器端的发送窗口发送的数据报总大小不能超过客户端给出的接收窗口的数值,这里要注意的是,这个数值的单位是字节,而不是报文段。当客户端可以继续接收新的数据报时,发送ACK=1 ack=(上一个报文段序号)+1 cwnd = 100,再接收100个字节的数据报。
延伸阅读
糊涂窗口综合症(silly window syndrome)。这里出现一种情况:TCP接收方的缓存已满,而应用进程一次只从接收缓存中读取1个字节(这样就使接收缓存空间仅腾出1个字节),然后向发送方发送确认,并把窗口设置为1个字节(但发送的数据报是40字节长)。接着,发送方又发来1个字节的数据(这里需要注意,发送方发送的IP数据报是41字节长)。接收方发回确认,仍然将窗口设置为1个字节。这样进行下去,使网络的效率很低。要解决这个问题,可以让接收方等待一段时间,使得或者接收缓存已有足够空间容纳一个最长的报文段,或者等到接收缓存已有一半空闲的空间。只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前的窗口大小。此外,发送方也不要发送太小的报文段,而是把数据积累成足够大的报文段,或达到接收方缓存的空间的一半大小。
TCP协议的拥塞控制是什么?
得分点
防止太多的数据进入到网络中、慢开始、拥塞避免、快重传、快恢复。
参考答案
标准回答
拥塞控制就是防止太多的数据进入到网络中,这样可以使网络中的路由器或者链路不会过载,首先要求当前的网络可以承受住现有的网络负荷,它是一个全局性的过程,拥塞控制的算法有以下四种:慢开始、拥塞避免、快重传、快恢复。
加分回答
在计算机网络中,宽带、每个路由器节点中的缓存和处理机等,都是网络资源。当在某个时间段中,某一个网络资源的需求量超过了这个资源所能提供的量,网络性能就会变差,这种情况就是拥塞。网络拥塞是由许许多多的因素引起的,比如当某个节点的缓存容量太小时、或者处理机处理的速率太慢等,如果只是简单的扩大缓存和提高处理及处理速率,虽然可以暂时的解决部分问题,但是整个网络生态的瓶颈却无法突破。只有整个网络所有的部分都平衡加强,问题才能解决。拥塞控制就是防止太多的数据进入到网络中,这样可以使网络中的路由器或者链路不会过载,首先要求当前的网络可以承受住现有的网络负荷,它是一个全局性的过程,拥塞控制的算法有以下四种:
延伸阅读