TCP/IP基础——纳格算法
上一篇 /
下一篇 2017-03-07 10:01:33
/ 个人分类:TCP/IP
纳
格算法是以减少封包传送量来增进TCP/IP网络的效能。 它是由约翰.纳格任职于Ford Aerospace时命名。
纳格的文件,Congestion Control in IP/TCP Internetworks (RFC896) 描述了他所谓的“小封包问题”-某个应用程式不断地送出小单位的资料,且某些常只占1字节大小。 因为TCP封包具有40字节的标头资讯(TCP与IPv4各占20字节),这导致了41字节大小的封包只有1字节的可用资讯,造成庞大的浪费。 这种状况常常发生于Telnet工作阶段-大部分的键盘操作会产生1字节的资料并马上送出。 更糟的是,在慢速的网络连线下,这类的封包会大量地在同一时点传输,造成壅塞碰撞(Congestion Collapse)。
纳格算法的
工作方式是合并(coalescing)一定数量的输出资料后一次送出。特别的是,只要有已送出的封包尚未确认,传送者会持续缓冲封包,直到累积一定数量的资料才送出。
Nagle算法非常简单,但它能解决问题。这个算法是为发送端的TCP用的:
1. 发送端的TCP将它从发送应用程序收到的第一块数据发送出去,哪怕只有一个字节。
2. 在发送第一个报文段(即报文段1)以后,发送端的TCP就在输出缓存中积累数据,并等待:或者接收端的TCP发送出一个确认,或者数据已积累到可以装成一个最大的报文段。在这个时候,发送端的TCP就可以发送这个报文段。
3. 对剩下的传输,重复步骤2。这就是:如果收到了对报文段x的确认,或者数据已积累到可以装成一个最大的报文段,那么就发送下一个报文段(x + 1)。
Nagle算法的优点就是简单,并且它考虑到应用程序产生数据的速率,以及网络运输数据的速率。若应用程序比网络更快,则报文段就更大(最大报文段)。若应用程序比网络慢,则报文段就较小(小于最大报文段)。
收藏
举报
TAG:
格算法