首页 > 其他 > 详细

计算机网络 - TCP_NODELAY 和 TCP_CORK, TCP_NOPUSH

时间:2019-07-21 21:21:22      阅读:87      评论:0      收藏:0      [点我收藏+]

参考

https://www.cnblogs.com/biyeymyhjob/p/4670502.html
https://stackoverflow.com/questions/3761276/when-should-i-use-tcp-nodelay-and-when-tcp-cork
https://www.zhuxiaodong.net/2018/tcp-nagle-tcp_nodelay-tcp_nopush-instruction/

总结

TCP_NODELAY(直接发送)和TCP_CORK(使用cork算法,是nagle的增强版)都是关闭nagle算法。
nagle算法的思想都是累积大的数据包,避免网络中有过多的小数据包。但是有种情况是,收到了所有ACK,就发送,不管现在的数据包大不大。
cork算法就是改良这个地方,也是它们之间的区别,虽然收到了全部ACK,但不发送,继续累积到大的数据包。

题外话, TCP_CORK和TCP_NOPUSH的关系,区别

参考:
http://dotat.at/writing/nopush.html
https://imququ.com/post/my-nginx-conf-for-wpo.html

一般来说,TCP_NOPUSH(BSD)和TCP_CORK(Linux)是一样的。
来看一下Nginx文档,只有TCP_NOPUSH这个指令

Enables or disables the use of the TCP_NOPUSH socket option on FreeBSD or the TCP_CORK socket option on Linux

计算机网络 - TCP_NODELAY 和 TCP_CORK, TCP_NOPUSH

原文:https://www.cnblogs.com/allen2333/p/11222551.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!