nagle算法和延迟ACK

         nagle算法主要是避免发送小的数据包,要求TCP连接最多只能有一个未被确认的小分组,在该分组的确认到达之前不能发送其他的小分组,由于发送小分组时,包头会占很大的比重,所以会使TCP得传输效率降低。

         延迟ACK:对于对等方数据的ACK确认,将由本端下次传输数据时随着数据一起携带过去,也是称捎带。但有一个超时时间,当超时时间过了以后,还有本端还是没有数据传输过去,则将ACK单独发送过去。其主要目的也是为了提高TCP传输效率。

        但是nagle算法遇上延迟ACK时,这就变的有趣了。发送端利用nagle算法发送一个数据包,在某些情况下接受端要回复消息给发送端,这时由于接收端没有回复ACK消息,所以发送端也不会继续发送消息。当接收的延迟ACK超时之后才会回复发送端ACK,这时候发送端才会开始继续发送数据,这会传输速率降低,因为每次都延迟ACK的超时时间。故这时发送端应该禁掉nagle算法。

        发送端的应用程序每次调用send函数拷贝一个小包到发送缓冲区,这需要用到系统调用,会进行上下文切换,这本身也会耗费资源,发送端应用程序如果可行,应该先将数据在应用程序进行累积,然后更少调用send函数,减少资源的耗费。




参考资料:高级TCP/IP编程

         

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

盼盼编程

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值