Nagle算法

      Nagle算法是以他的发明人John Nagle的名字命名的,它用于TCP中对缓冲区内一定数量的消息自动连接。该处理过程,通过减少小数据的频繁发送,提高了网络效率。它的主要职责是数据的积累,它主要有两个门槛:1、缓冲区中的字节数达到了一定的数量;2、等待时间超过了一定的时间(一般的Nagle算法都是200ms)。但是,在很多对实时性能要求比较高的C/S服务器上,并不允许自动连接小缓冲区带来的延迟。在socket网络编程中,我们可以设置Socket中的TCP_NODELAY选项来来关闭Nagle过程,或者可以在socket上封装另一层,使用select方法自己实现Nagle处理过程。

     与Nagle密切相关的两个选项TCP_NODELAY和TCP_CORK。TCP_NODELAY:

      关闭Nagle过程,直接把小包发送出去。

TCP_CORK:

      关闭Nagle过程,也有两个门槛,1、把数据积累到最大的包,以最大MTU传输;2、等待时间超过0.6s~0.8s都没有能组装好一个最大包,则进行发送。

      他们的关系很拗口,依我的理解,就是TCP_NODELAY关闭掉Nagle算法,是还原为TCP协议的纯净版。而TCP_CORK也是关闭Nagle算法,只不过它不是TCP协议的纯净版,而是使用另外一种超不多和Nagle等级的算法来处理网络数据的发送。这就是最大的区别。

 

参考:【1】http://hi.baidu.com/wy_51131/blog/item/6d8744583e89b6202934f039.html

        【2】http://blog.csdn.net/shellching/archive/2010/05/14/5592511.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值