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

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

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

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

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

nagle算法和延迟ACK相关推荐

  1. 计算机网络之Nagle算法与延迟确认

    文章目录 计算机网络之Nagle算法与延迟确认 1.Nagle算法 2.延迟确认 计算机网络之Nagle算法与延迟确认 1.Nagle算法 如果发送方疯狂地向接收方发送很小的数据包,比如一次就发送 1 ...

  2. Nagle算法和延迟确认

    TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据.(一个连接会设置MS ...

  3. Nagle算法延时确认

    数据流分类 成块数据 交互数据 Rlogin需要远程系统(服务器)回显我们(客户)键入的字符 数据字节和数据字节的回显都需要对方确认   rlogin 每次只发送一个字节到服务器,而Telnet 可以 ...

  4. 再次谈谈TCP的Nagle算法与TCP_CORK选项

    事件回放 使用OpenVPN传输虚拟桌面流量,终端上有明显逐帧刷屏现象,网络环境为百兆局域网. 分析 1.首先将OpenVPN改为TCP模式,因为局域网环境下TCP和UDP差别不大,不会引起重传叠加问 ...

  5. TCP Nagle算法简述

    TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认.为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据.(一个连接会设置MS ...

  6. 糊涂窗口综合症和Nagle算法

    本篇文章转载自:http://www.cnblogs.com/zhaoyl/archive/2012/09/20/2695799.html,用于记录自己对于TCP网络中糊涂窗口综合症和Nagle算法的 ...

  7. TCP之Nagle算法延迟ACK

    1. Nagle算法: 是为了减少广域网的小分组数目,从而减小网络拥塞的出现: 该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp需要 ...

  8. TCP-IP详解:Nagle算法

    参考书籍:TCP/IP详解,卷1:协议 Small Packet Problem 在使用一些协议通讯的时候,比如Telnet,会有一个字节字节的发送的情景,每次发送一个字节的有用数据,就会产生41个字 ...

  9. 网络编程中Nagle算法和Delayed ACK的测试(转)

    Nagle算法的立意是良好的,避免网络中充塞小封包,提高网络的利用率.但是当Nagle算法遇到delayed ACK悲剧就发生了.Delayed ACK的本意也是为了提高TCP性能,跟应答数据捎带上A ...

最新文章

  1. 在HTML网页中巧用URL
  2. 学习笔记Hadoop(四)—— Hadoop集群的安装与部署(1)—— 虚拟机安装、java安装
  3. 经典C语言程序100例之二三
  4. react中规范类型接口的使用
  5. Redis和Memcache区别
  6. Spring: 读取 .properties 文件地址,json转java对象,el使用java类方法相关 (十三)
  7. MyBatis(3):SQL映射
  8. outlook常见错误分析指南
  9. CF-1099 D. Sum in the tree
  10. LED —— 发光二极管
  11. 32核心板怎么样使用stlink_终极调试工具 EventRecorder 使用方法,各种 Link 通吃
  12. php对接海康视频教程_手把手教你php对接海康api
  13. seo关键词布局,网页头部优化(TDK),网站优化(古志强网络营销师)
  14. python中element什么意思_什么是Python中等效的’nth_element’函数?
  15. 计算机数据网络延迟,影响网络速度的两个重要因素:网络带宽和网络延迟!
  16. Shiro的简单入门(一)
  17. Android 之网络
  18. 安卓机适合用的手机浏览器,可下载视频可锁屏
  19. wifi 小程序 透传_微信小程序之一键连接wifi
  20. java 地图控件_控件交互-与地图交互-开发指南-Android 地图SDK | 高德地图API

热门文章

  1. 【运筹学】线性规划 单纯形法 案例二 ( 第一次迭代 | 矩阵变换 | 检验数计算 | 最优解判定 | 入基变量 | 出基变量 )
  2. Python列表List
  3. git仓库相关知识01-安装和基本命令
  4. 《软件构架实践》阅读笔记三
  5. md5-linux_shell
  6. 《SpringMVC数据绑定入门》笔记
  7. iOS 视频启动界面
  8. 二叉树的几种递归和非递归式遍历:
  9. 浙江大学PAT上机题解析之1009. 说反话 (20)
  10. EventHandler, EventArgs