纳格算法

✍ dations ◷ 2025-06-19 12:15:01 #纳格算法

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


相关

  • 预后人体解剖学 - 人体生理学 组织学 - 胚胎学 人体寄生虫学 - 免疫学 病理学 - 病理生理学 细胞学 - 营养学 流行病学 - 药理学 - 毒理学预后(Prognosis、outcomes)是一个医学名
  • 丙糖丙糖(Triose),又称为三碳糖,是含有三个碳原子的一类单糖,共包含两个化合物:丙糖是细胞呼吸过程中的重要物质。D-甘油醛:二羟基丙酮:果聚糖:菊粉 · 果聚糖β2→6甘露聚糖:低聚木糖:半
  • 未完成时未完成时(imperfect tense)是一些印欧语言的古典语法,指示带有未完成体的过去式。在英语中它被称为过去进行时。这个术语起源于拉丁语,因为“imperfect”提及未完成或放弃的行
  • 心学四配颜回 · 孟子 · 曾参 · 孔伋日本藤原惺窝 · 林罗山 · 室鸠巢新井白石 · 雨森芳洲朝鲜薛聪 · 权近 · 吉再 · 安珦 · 李穑李滉 · 王仁 · 李齐贤 
  • 乌干达经济乌干达经济有很大的潜力,正准备快速增长和发展。该国赋有大量天然资源,包括大片肥沃的土地、稳定的降雨、矿物的蕴藏,如果发展商业养殖可以养活所有非洲人民。然而,该国在独立后
  • 王宗诚王宗诚(1763年-1837年),字中孚,号廉甫,安徽青阳人。清朝嘉庆、道光年间政治人物。王宗诚之父王懿修为乾隆三十一年(1766年)进士,官至礼部尚书、太子少保。他本人于乾隆五十五年(1790年
  • 阮氏玉珴安泰公主阮氏玉珴(越南语:An Thái công chúa Nguyễn Thị Ngọc Nga/.mw-parser-output .han-nom{font-family:"Nom Na Tong","Han-Nom Gothic","Han-Nom Ming","HAN NOM A
  • 叶弥·阿皮西叶弥·阿皮西(Yémi Apithy,1989年4月5日-)是一名拥有法国和贝南双重国籍的击剑运动员,主攻军刀项目。他曾获得非洲击剑锦标赛(英语:African Fencing Championships)两座亚军。
  • 半导体制造技术联盟半导体制造技术联盟(英语:Semiconductor Manufacturing Technology, SEMATECH)是一个美国主导的半导体行业技术联盟。1980年代中期日本半导体技术超过美国,为此1987年美国政府和
  • 昆山县 (南梁)昆山县,中国旧县名,在今江苏省苏州市和上海市境。昆山市的前身。秦汉时,为娄县地。南梁时,置信义县,再分信义县置昆山县。得名于县境的昆山,今名小昆山(在上海市松江区境)。隋灭南陈