纳格算法

✍ dations ◷ 2024-12-23 22:35:13 #纳格算法

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


相关

  • 圣家教堂 (加里宁格勒)圣家教堂(俄语:Кирха Святого Семейства;德语:Kirche zur Heiligen Familie)是位于俄罗斯城市加里宁格勒的一座教堂,为新哥特式建筑。圣家教堂兴建于1904年
  • 黎焕雄黎焕雄,诗人,剧场导演,淡江大学中国语言文学系毕业,台湾师范大学表演艺术研究所兼任专技副教授;河左岸剧团、创作社剧团创始成员,人力飞行剧团艺术总监。出版剧场文字作品集《遗憾
  • 敞田制在中世纪的大部分时期,敞田制(英语:open-field system)是欧洲普遍的农业制度,该制度在西欧、俄罗斯、伊朗和土耳其的部分地区延续到20世纪。在敞田制下,每个庄园或村庄都有两三块
  • 中村不折中村不折(1866年8月19日-1943年6月6日)是一位日本画家。1866年出生于日本东京都中央区凑,幼年因明治维新动乱随父母逃避至长野县伊那市,学习中文古典典籍和南画,1887年返回东京都
  • 欧思贤欧思贤(?-?),字希甫,福建连江县人,顺天府蓟州民籍,明朝政治人物。顺天府乡试第六十名举人。嘉靖十七年(1538年)中式戊戌科会试第二百六十二名,登第三甲第二百零二名进士。初授合肥知县,考
  • 卡普尔塔拉卡普尔塔拉(Kapurthala),是印度旁遮普邦Kapurthala县的一个城镇。总人口84361(2001年)。该地2001年总人口84361人,其中男性46577人,女性37784人;0—6岁人口8863人,其中男4911人,女3952
  • 世界摔跤娱乐电影制片厂世界摔角娱乐电影制片厂(英语:WWE Studios),是世界摔角娱乐旗下的一个子公司,于2002年创建,是一个电影制作公司。
  • 电子电路设计电子电路设计包括电子电路的分析与合成。若要设计任何电路,无论是模拟或数位,电机工程师都必须能够准计算在电路内的所有位置的电压和电流。线性电路(英语:Linear_circuit),即一些
  • 三者三叶《三者三叶》漫画第1本封面《三者三叶》是日本漫画家荒井切利的四格漫画作品和代表作之一。2003年1月,于芳文社漫画杂志《Manga Time Kirara》(第7期)开始连载,至2019年1月号完
  • 安托万·德·奥尔良 (蒙庞西耶公爵)安托万·德·奥尔良(法语:Antoine d'Orléans,1824年7月31日-1890年2月5日),蒙庞西耶公爵(英语:List of counts and dukes of Montpensier),法国国王路易-菲利普一世的幼子。1846年,安