您的位置:首页 > 理论基础 > 计算机网络

TcpSocket发送延时,Nagle算法

2016-12-27 12:30 417 查看
1. Nagle算法:
是为了减少广域网的小分组数目,从而减小网络拥塞的出现;

该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要收集这些少量的分组,并在ack到来时以一个分组的方式发送出去;其中小分组的定义是小于MSS的任何分组;

该算法的优越之处在于它是自适应的,确认到达的越快,数据也就发哦送的越快;而在希望减少微小分组数目的低速广域网上,则会发送更少的分组.

2. 禁止Nagle和开启Nagle算法发送数据与确认示意图:



开启Nagle算法会导致TCP发送数据必须满足2个条件中的任意一个才会将数据发送出去:

1、达到TCP最大包长度(1500字节)

2、达到时间(测试下来是200ms)

这样在实时控制系统中,实时性不能得到满足,因此必须关闭Nagle算法。

关闭Nagle算法

Qt

TcpSocket tcpSocket;

tcpSocket.setSocketOption(QAbstractSocket::LowDelayOption, 1);

Linux

#include <netinet/tcp.h>

int on = 1; 

setsockopt(sock, IPPROTO_TCP, TCP_NODELAY, (void *)&on, sizeof(int));  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  TcpSocket Nagle Tcp Socket