纳格算法

✍ dations ◷ 2025-02-24 23:21:05 #纳格算法

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


相关

  • 恩夫韦地恩夫韦地(INN:Enfuvirtide),商品名福艾(Fuzeon),是一种融合抑制剂类抗艾滋病靶向药物,由美国的Trimeris公司与瑞士的罗氏公司合作开发。恩夫韦地于2003年得到美国食品药品监督管理局
  • Max Mara麦丝玛拉(Max Mara) 是意大利的一家服装公司,1951年由阿希尔·马拉莫迪(Achille Maramotti)成立于雷焦艾米利亚。阿希尔·马拉莫迪(1927年1月7日 – 2005年1月12日)从1947年开始设
  • 大根兰大根兰(学名:Cymbidium macrorhizon)为兰科兰属下的一个种,腐生。
  • 塞拉 (摩洛哥)塞拉(阿拉伯语:سلا‎)是摩洛哥的城市,人口超过900,000,居民主要是穷困的工厂工人。现在的塞拉是污染问题严重,城市规划欠佳,食水供应和污水处理的服务不稳定,使富裕的居民移居到
  • 厄尔默·C·弗莱兹厄尔默·克里昂·“厄尼”·弗莱兹(英语:Ermal Cleon "Ernie" Fraze,1913年9月16日-1989年10月26日)是一位美国工程师,易拉罐拉环的发明者。弗莱兹出生于印第安纳州曼西市(英语:Munc
  • 天津排放权交易所天津排放权交易所,成立于2008年9月25日,位于天津市滨海新区,是中国第一家综合性排放权交易所。天津排放权交易所是按照国务院批复《关于天津滨海新区综合配套改革试验总体方案
  • 约旦河大裂谷约旦河大裂谷(阿拉伯语:الغور‎ 或,希伯来语:.mw-parser-output .script-hebrew,.mw-parser-output .script-Hebr{font-size:1.15em;font-family:"Ezra SIL","Ezra SIL SR"
  • 陈埭丁氏宗祠坐标:24°49′36″N 118°36′20″E / 24.82667°N 118.60556°E / 24.82667; 118.60556陈埭丁氏宗祠位于中国福建省晋江市陈埭镇岸兜村,2006年被列为第六批全国重点文物保护
  • 坚海县坚海县(越南语:Huyện Kiên Hải/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A","HAN NOM B","Ming-Lt-HKSCS-UNI-H",
  • 菲利克斯·帕斯拉克菲利克斯·帕斯拉克(德语:Felix Passlack,1998年5月29日-)是一位德国足球运动员,现被德甲多特蒙德外借至荷甲俱乐部幸运薛达,他同时为德国21岁以下国家足球队效力,于场上司职中场。帕斯拉克是在福尔图娜博特罗普()的青年队开始自己的足球生涯,并在2010年转会至红白奥伯豪森。2012年,他进入多特蒙德的青训营,并作为俱乐部17岁以下梯队的一员连续夺得2014年及2015年的U-17德甲联赛(德语:U-17-Bundesliga)冠军、以及在2016年随19岁以下梯队夺得U-19德甲联赛冠军