Nagle算法在TCP
2019-06-23 本文已影响0人
不爱钱的张师傅
使用 Nagle 可以尽可能发送大块数据的包,从而减少发包个数,以此降低网络负载。
如果调试过 telnet 之类的程序,就会知道,每次在窗口输入一个字符的时候,服务器端就可见反应。
所以,比如你输入 “cd /”三个字符,可能需要发出三个包,而不是一个。这就造成网络负载严重。
所以,对于需要高度互动的程序,比如 QQ ,微信(C/S)等,最好禁用该算法。
所以,写这类交互程序的时候,禁用该算法,理论上可以提高交互体验。
使用的函数是setsockopt()
int opt_val = 1;
setsockopt( sock IPPROTO_TCP, TCP_NODELAY, (void *)&opt_val, sizeof(opt_val));
sock:套接字
IPPROTO_TCP:TCP协议
TCP_NODELAY:禁用 Nagle 算法。
opt_val:禁用成功,这个值为 1,否则为 0 ;