纳格算法

✍ dations ◷ 2025-11-16 15:25:10 #纳格算法

纳格算法是以减少数据包发送量来增进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包并冲刷写缓存通常能起作用。


相关

  • 世界武搏运动会世界武搏运动会是一个以搏击运动和武术项目为主的国际综合性运动会。目前有15个奥运与非奥运项目:合气道、拳击、击剑、柔道、柔术、空手道、剑道、踢拳、泰拳、桑搏、法国踢
  • 各国立法机关列表各国立法机关列表列出目前世界各个国家与地区的立法机构。“立法机关”是议会的统称,指的是拥有立法权、并透过代议制度取得资格的合议性团体。本列表包含世界政区索引中所列
  • JUKE BOX (关西杰尼斯8专辑)《JUKE BOX》(JUKE BOX)为日本男偶像团体关西杰尼斯8的第6张专辑。2013年10月16日由IMPERIAL RECORDS发行。距上一张专辑隔了1年又11个月。有众多有名音乐家的作曲,也有成员锦
  • 台州有轨电车台州有轨电车又称台州现代有轨电车,是指位于中华人民共和国浙江省台州市计划建设的具有独立路权的中运量交通运输系统。台州有轨电车项目由台州市公交集团牵头实施,并负责项目
  • 大努瓦尔峰坐标:45°19′49″N 06°53′30″E / 45.33028°N 6.89167°E / 45.33028; 6.89167大努瓦尔峰(法语:Grand roc Noir),是法国的山峰,位于该国东北部奥文尼-隆-阿尔卑斯大区,由萨瓦省
  • 姚世钰姚世钰(1695年-1749年),字玉载,号薏田,清浙江归安人。曾祖姚延著,顺治十八年(1661年)以通海案办事不力,被鳌拜等处死。姚世钰于康熙四十二年出生,少好学,为诸生,与弟姚汝金被称为“双陆双
  • 二阶堂和美二阶堂和美(日语:二階堂和美,1974年2月14日-)是日本广岛县大竹市出生的女性歌手。二阶堂和美出身于父亲为僧侣、母亲为教师的净土真宗本愿寺派家庭,个人在成年后也在该宗教下修行
  • SystemCSystemC是一种基于C++语言的用于系统设计的计算机语言,是用C++编写的一组库和宏。它是为了提高电子系统设计效率而逐渐发展起来的产物。IEEE于2005年12月批准了IEEE1666-2005
  • 拉敦特峰坐标:46°43′21″N 9°57′29″E / 46.72250°N 9.95806°E / 46.72250; 9.95806拉敦特峰(Piz Radönt),是瑞士的山峰,位于该国东南部,由格劳宾登州负责管辖,属于阿尔布拉山脉的一
  • 波月洞波月洞是一个喀斯特溶洞,坐落在中华人民共和国湖南省娄底市冷水江市大乘山。它是《西游记》水帘洞和白骨洞的洞中景取景地。波月洞是AAA级景区。1982年4月和1983年5月,《西游