第十九章 TCP的交互数据流

来源:互联网 发布:mac程序图标怎么删除 编辑:程序博客网 时间:2024/05/21 13:55

目前在TCP协议上的网络协议特别多,这些协议可以按照数据吞吐量来大致分为两类:

·包含成块数据的

·包含交互数据的

TCP需要同时处理这两类数据,但是用的处理算法是不同的。下面将介绍,经受时延的确认和Nagle算法怎样减少了同过广域网络传输的小分组

1. 经受时延的确认

通常TCP在接收到数据后并不立即发送ACK;相反,它推迟发送,以便将ACK与需要沿该方向发送的数据一起发送(这种现象有时称作数据捎带ACK).绝大数采用时延为200ms,也就是说,TCP将以最大200ms的时延等待是否有数据要一起发送。

2.Nagle算法

该算法用于TCP中对缓冲区中内的一定数量的数据进行自动连接,该处理过程,通过减少小数据的频繁发送,提高了网络效率

所谓小数据,就是小于一个报文段的数据(MSS)

·Nagle算法的规则

(1)如果包长度达到MSS(最大报文段大小),允许发送

(2)该包含有FIN,允许发送

(3)设置了TCP_NODELAY

(4)TCP连接上所有的小分组都被确认

·Nagle算法的门槛

Nagle算法的主要职责就是数据积累

主要由三个门槛

(1)缓冲区中的字节数达到一定的数量

(2)等待了一定的时间(一般规定为200ms)

(3)紧急数据发送

3.Nagle算法的选项配置

选项TCP_NODELAY和TCP_CORK都可以禁用Nagle算法

TCP_CORK尽可能的进行数据的组包,以最大mtu传输,如果发送的数据包大小过小则如果在0.6~0.8S范围内都没能组装成一个MTU时,直接发送。如果发送的数据包大小足够间隔在0.45内时,每次组装一个MTU进行发送。如果间隔大于0.4~0.8S则,每过来一个数据包就直接发送。

0 0
原创粉丝点击