纳格算法

✍ dations ◷ 2025-08-18 11:03:18 #纳格算法

纳格算法是以减少数据包发送量来增进TCP/IP网络的性能。它由约翰·纳格任职于Ford Aerospace(英语:Ford Aerospace)时命名。

纳格的文件描述了他所谓的“小数据包问题”-某个应用程序不断地提交小单位的资料,且某些常只占1字节大小。因为TCP数据包具有40字节的标头信息(TCP与IPv4各占20字节),这导致了41字节大小的数据包只有1字节的可用信息,造成庞大的浪费。这种状况常常发生于Telnet工作阶段-大部分的键盘操作会产生1字节的资料并马上提交。更糟的是,在慢速的网络连线下,这类的数据包会大量地在同一时点传输,造成壅塞碰撞(英语:Congestion Collapse)。

纳格算法的工作方式是合并(coalescing)一定数量的输出资料后一次提交。特别的是,只要有已提交的数据包尚未确认,发送者会持续缓冲数据包,直到累积一定数量的资料才提交。

 if有新資料要傳送   if訊窗大小>= MSS and可傳送的資料>= MSS     立刻傳送完整MSS大小的segment   else    if管線中有尚未確認的資料      在下一個確認(ACK)封包收到前,將資料排進緩衝區佇列    else      立即傳送資料  

该算法与 TCP延迟确认 会有不好的相互作用,例如当程序发送端进行两次连续的小段写再跟着读时,接收端接收到第一次写后因TCP延迟确认而等待第二次写后一并发送ACK,发送端则因第二次写数据长度小于MSS而等待第一次写的ACK(如上算法所示),最终将导致两对端都进入等待直到ACK延迟超时。因为这个原因,TCP实现通常为应用程序提供一个禁用Nagle算法的接口(通常称为TCP_NODELAY选项)。用户级解决方案是避免套接字上的 写-写-读 序列。 写-读-读 和 写-写-写 都是没问题的。但 写-写-读 则是性能杀手。所以,如果可以的话,缓冲你对TCP的小段写,然后一次发送它们。在每次读之前使用标准的UNIX I/O包并冲刷写缓存通常能起作用。


相关

  • 希腊菜希腊饮食(希腊语:Ελληνική Κουζίνα)为典型的地中海风格,受意大利、巴尔干诸国、土耳其等国影响。广泛使用橄榄油、蔬菜、香草、谷物,以及面包、酒、鱼,各种肉类,包
  • 格拉斯曼定律格拉斯曼定律是一个关于光学理论的经验法测,他说明了人类对色彩的感知(大约)是线性的。这个定律是由格拉斯曼所发现的。若两单色光组合成一测试色光,则观测者感知到的三原色数值
  • 危害分析关键控制点危害分析关键控制点(Hazard Analysis and Critical Control Points,简称:HACCP)是一种以科学为依据,保证加工系统流程的食品安全。该系统的重点是以预防的角度来生产最低危害风险
  • 善化区寺庙列表台南市善化区寺庙,大部分属于道教庙宇,部分为佛道庙宇,少数为佛教及一贯道寺院。
  • 古斯塔夫·冯·卡尔古斯塔夫·冯·卡尔(德语:Gustav Ritter von Kahr,1862年11月29日-1934年6月30日),骑士,德国右翼政治人物,活跃于巴伐利亚,他将巴伐利亚打造成一战后德国激进民族主义运动的中心,却在1
  • 周永年 (清朝)周永年(1730年-1791年),字书昌,山东历城(今属济南市)人。生而好学,“竭数十年博采旁搜之力,弃产营书”,筑贷书园,积书十万卷,供人阅读抄写,并倡“儒藏说”,成立“儒藏”,“俾古人著述之可传
  • 纳达塔拉纳达塔拉(Nadathara),是印度喀拉拉邦Thrissur县的一个城镇。总人口12593(2001年)。该地2001年总人口12593人,其中男性6198人,女性6395人;0—6岁人口1371人,其中男699人,女672人;识字率8
  • 田令孜田令孜(9世纪?-893年),唐末宦官,蜀人。本名陈仲则,因拜田姓为父,故改称田令孜,史家或称陈令孜。兄陈敬瑄、兄弟陈敬珣。唐懿宗时,随田姓义父入内侍省,历任小马坊使,僖宗当普王时,奉侍甚勤
  • 蒙通联足球俱乐部蒙通联足球俱乐部(泰语:สโมสรฟุตบอลเอสซีจี เมืองทอง ยูไนเต็ด,英语:SCG Muangthong United Football Club),简称“蒙通联”。是位于泰国暖
  • 图里半岛图里半岛是俄罗斯西北部的半岛,位于摩尔曼斯克州内科拉半岛南部,半岛毗邻白海、地势多山,长15公里、阔10公里,最高点海拔172米,近岸最大水深238米。坐标:66°35′11″N 34°32′07