TCP—Nagle算法

来源:互联网 发布:除湿机哪个牌子好 知乎 编辑:程序博客网 时间:2024/06/05 14:11

面试被问到这个,这里总结下:

在tcp建立连接发送数据时有可能产生小分组(称为微小分组),不如每次发送一个字节,会产生41字节的分组,20字节的IP首部,20字节的tcp首部和一个字节的数据.在局域网上出现这些小分组一般不会出现问题,因为局域网一般不会出现网络拥塞.但是在广域网上,这些小分组很可能会增加拥塞出现的可能.这时就需要Nagle算法,

该算法要求一个tcp连接上最多只能有一个未被确认的未完成的小分组,在该分组的确认到达之前不能发送其他的小分组.相反,tcp收集这些少量的分组,并在确认到来时以一个分组的方式发出去.


该算法的优越之处在于它是自适应的:确认到达得越快,数据也就发送得越快.伪代码如下所示:

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
但是有的时候我们需要关闭Nagle算法,一个典型的例子就是X窗口系统服务器:小消息必须无时延地发送,以便为进行某种操作的交互用户提供实时反馈.

0 0
原创粉丝点击