Nagle算法

翻译 2007年09月26日 16:46:00

Nagle算法
根据创建者John Nagle命名。该算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用程序系统的效率。Nagle算法,由Ford Aerospace And Communications Corporation Congestion Control in IP/TCP internetworks(IETF RFC 896)(1984)定义,最初是用于缓冲Ford的私有TCP/IP网络拥塞情况,不过被广泛传播开来。

Nagle的文档定义了一种他称之为小封包问题的解决方法。当某个应用程序每次只产生一字节的数据,就会导致网络由于这样的小封包而过载(该情况通常被称为“发送端SB窗口并发症”),从而产生该问题。一个源自键盘的单一字符-1字节的数据-可能导致一个41字节的封包被传送,该封包包含了1字节的有用数据和40字节的头部数据。这种4000%过载的情况,在像APRANET这样只有很轻负载的网络中是可以接受的,但在像Ford这样的负载很重的网络中,可能强制重传,导致封包丢失,并且通过过度拥挤交换节点和网关降低了传播速度。更进一步,当连接被丢弃时,吞吐量可能被降低。Nagle算法-通常的实现方法是在一个TCP程序中插入两行代码-在发送方,对标识为没有回应的数据进行缓冲(存储)(这句怪怪的,其实应该是对未发送数据按顺序进行缓冲,在发送时进行拼接)。顺序发送的数据将被保持到接收到被标识数据的回应或者一整包有价值的数据需要被发送。

虽然Nagle算法用于解决Ford网络内产生的问题,但同样的问题也出现在APRANet。通过网络,Nagling被广泛实现,包括internet,并且产生了巨大的效用-虽然某些时候在高交互性环境如一些C/S情况下不希望进行该处理。在这种情况下,可以通过TCP_NODELAY套接字选项关闭Nagling。

注:Nagle虽然解决了小封包问题,但也导致了较高的不可预测的延迟,同时降低了吞吐量。 

原文参见:http://searchnetworking.techtarget.com/sDefinition/0,,sid7_gci754347,00.html

TCP Nagle算法详解

转: http://bbs.chinaunix.net/thread-3767363-1-1.html 在网络拥塞控制领域,我们知道有一个非常有名的算法叫做Nagle算法(Nagle algori...
  • YUAN1125
  • YUAN1125
  • 2016年05月30日 11:10
  • 5113

TCP-IP详解:Nagle算法

Small Packet Problem 在使用一些协议通讯的时候,比如Telnet,会有一个字节字节的发送的情景,每次发送一个字节的有用数据,就会产生41个字节长的分组,20个字节的IP Hea...
  • wdscq1234
  • wdscq1234
  • 2016年09月04日 19:18
  • 1469

Nagle算法

说明:本文是最近项目上使用tcp时遇到的问题找到的原因,参考了网络上的几篇文章整理出来,如有版权问题,请留言。    Nagle算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nag...
  • Cylan_Jia
  • Cylan_Jia
  • 2012年09月13日 18:00
  • 7669

socket中的nagle算法

Nagel算法       TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大...
  • ithzhang
  • ithzhang
  • 2013年01月19日 14:30
  • 5494

TcpSocket发送延时,Nagle算法

1. Nagle算法: 是为了减少广域网的小分组数目,从而减小网络拥塞的出现; 该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组ack到达之前不能发送其他的小分组,tcp...
  • gch293
  • gch293
  • 2016年12月27日 12:30
  • 680

Nagle 算法

TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大的数据。(一个连接会设置MS...
  • Erica_1230
  • Erica_1230
  • 2014年07月09日 00:16
  • 464

socket中的nagle算法

Nagel算法       TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接收到数据,也需要发送ACK表示确认。为了尽可能的利用网络带宽,TCP总是希望尽可能的发送足够大...
  • ithzhang
  • ithzhang
  • 2013年01月19日 14:30
  • 5494

windows下关闭TCP的Nagle纳格算法

session 1 Nagle算法       Nagle算法,纳格算法:nagle算法是为了解决TCP传出过程中出现的“愚笨窗口综合症”的一种TCP传输算法,该算法是在TCP发送小数据包(teln...
  • alone_map
  • alone_map
  • 2016年07月07日 15:20
  • 2033

再次谈谈TCP的Nagle算法与TCP_CORK选项

事件回放使用OpenVPN传输虚拟桌面流量,终端上有明显逐帧刷屏现象,网络环境为百兆局域网。分析1.首先将OpenVPN改为TCP模式,因为局域网环境下TCP和UDP差别不大,不会引起重传叠加问题。T...
  • dog250
  • dog250
  • 2014年03月16日 00:27
  • 20903

nagle算法的pdf文档

  • 2011年10月13日 23:32
  • 30KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Nagle算法
举报原因:
原因补充:

(最多只允许输入30个字)