TCP/IP——TCP协议中提高网络利用率的机制

来源:互联网 发布:阿里云域名备案 编辑:程序博客网 时间:2024/05/20 04:28

TCP协议中提高网络利用率的机制主要有:Nagle算法,延迟确认应答,捎带应答

  • Nagle算法

TCP中为了提高网络利用率,经常使用一个叫Nagle的算法。

该算法是指发送端即使还有应该发送的数据,但如果这部分数据很少的话,则进行延迟发送的一种处理机制。
具体来讲就是,只有在满足下面两个条件其中一个的时候,才可以发送数据。否则,暂停等待一段时间之后再发送。
1、已经发送的数据都已经收到确认应答。
2、可以发送最大段长度(MSS)的数据时。

根据这个算法虽然网络利用率可以提高,但是可能会发生某种程度的延迟。为此,在窗口系统(X Window System)和机械控制等领域中使用TCP时,往往会关闭对该算法的启用。

  • 延迟确认应答

接收数据的主机如果每次都立刻回复确认应答的话,可能会返回一个较小的窗口。那是因为刚接收完数据,缓冲区已满。
当某个发送端收到这个小窗口的通知的以后,会以它为上限发送数据,从而降低了网络的利用率。为此,引入了一个方法,那就是收到数据以后并不立即返回确认应答,而是延迟一段时间的机制。

1、在收到2*MSS大小的数据之前不做确认应答。(根据操作系统的不同,有时候不论数据的大小,只要收到两个包就立即返回确认应答)
2、其它情况下,最大延迟0.5秒发送确认应答。(很多操作系统设置为0.2秒左右)

事实上,没有必要为每一个数据段都进行一次确认应答。TCP采用滑动窗口的控制机制,因此通常确认应答少一些也无妨。TCP文件传输中,绝大多数是每两个数据段返回一次确认应答。

  • 捎带应答

根据应用层协议,发送出去的消息到达对端,对端进行处理以后,会返回一个回执。
例如,电子邮件协议的SMTP或POP、文件传输协议FTP中的连接控制部分等。

在此类通信中,TCP的确认数据和回执数据可以通过一个包发送。这种方式叫做捎带应答。通过这种机制,可以使收发的数据量减少。
此外,接收数据之后,如果立刻返回确认应答,就无法实现捎带应答。也就是说,如果没有启用延迟确认应答就无法实现捎带应答。延迟确认应答是能够提高网络利用率从而降低计算机处理负荷的一种较优的处理机制。

正是因为延迟确认和捎带应答机制,让TCP断开连接的时候四次挥手有时候变成三次挥手
因为,如果在TCP断开连接的时候,有时候只能够抓取3个数据包。这三个数据包为客户端的FIN,服务器的FIN和ACK,客户端的ACK。



0 0
原创粉丝点击