纳格算法
来源:互联网 发布:简述什么是数据库系统 编辑:程序博客网 时间:2024/05/02 00:01
文章出处:http://www.cnblogs.com/ggjucheng/archive/2012/01/15/2323070.html
纳格算法是以减少封包传送量来增进TCP / IP 网络的效能。它是由约翰. 纳格任职于 Ford Aerospace时命名。
纳格的文件,Congestion Control in IP / TCP Internetworks (RFC 896) 描述了他所谓的“小封包问题” --- 某个应用程式不断地送出小单位的资料,且某些常只占1字节大小。因为TCP封包具有40字节的标头资讯(TCP与IPv4各占20字节),这导致了41字节大小的封包只有1字节的可用资讯,造成庞大的浪费。这种情况常常发生于Telnet工作阶段 --- 大部分的键盘操作会产生1字节的资料并马上送出。更糟糕的是,在慢速的网络连线下,这类的封包会大量地在同一个时间点传输,造成壅塞碰撞(Congestion Collapse)。
纳格算法的工作方式是合并(colaescing)一定数量的输出资料后一次送出。特别的是,只要有已送出的封包尚未确认,传送者会持续缓冲封包,直到累积一定数量的资料才送出。
Nagle算法非常简单,但它能解决问题。这个算法是为发送端的TCP用的:
1. 发送端的TCP将它从发送应用程序收到的第一块数据发送出去,哪怕只有一个字节。
2. 在发送第一个报文段(即报文段1)以后,发送端的TCP就在输出缓存中累积数据,并等待:或者接收端的TCP发送出一个确认,或者数据已积累到可以装成一个最大的报文段。在这个时候,发送端的TCP就可以发送这个报文段;
3. 对剩下的传输,重复步骤2。这就是:如果收到了对报文段 x 的确认,或者数据已积累到可以装成一个最大的报文段,那么就发送下一个报文段(x + 1);
Nagle算法的优点就是简单,并且它考虑到应用程序产生数据的速率,以及网络运输数据的速率。若应用程序比网络更快,则报文段就更大(最大报文段)。若应用程序比网络慢,这报文段就较小(小于最大报文段)。
算法
if there is new data to send if the window size >= MSS and available data is >= MSS send complete MSS segment now else if there is unconfirmed data still in the pipe enqueue data in the buffer until an acknowledge is received else send data immediately end if end ifend if
- 纳格算法
- [数据结构和算法]九宫格算法
- 算法:回溯算法之九宫格
- 维纳滤波算法
- iphone九宫格算法
- 简单九宫格算法
- 九宫格算法
- UI----九宫格算法
- 九宫格算法
- 九宫格算法
- UI九宫格算法
- 九宫格的算法
- 九宫格算法
- 九宫格算法
- 九宫格算法
- iOS:九宫格算法
- 九宫格算法理解
- 算法学习-棋盘格
- 六种姿势拿下连续子序列最大和问题,附伪代码(以HDU 1003 1231为例)
- Codeforces Bayan 2012-2013 Elimination Round / 241A Old Peykan (贪心)
- CWebBrowser2去除边框、滚动条、右键菜单
- c#文件分割与合并 part 2
- Hadoop内置作业调度器与调度平台的集成
- 纳格算法
- 通过访问注册表来获取已安装程序的名称
- Java中Collection和Collections的区别
- 购入Sony Fit 15'
- Teamcenter2007 开发环境搭建和技巧
- UVALive 2038 Strategic game (树形DP,4级)
- 闲来无事,塔建了一下android ndk和简单的编译并安装运行apk
- c#文件分割与合并 part 1 (转自互联网)
- EL表达式对字符串的操作