您的位置:首页 > 理论基础 > 计算机网络

TCP—Nagle算法

2016-04-20 16:31 134 查看
面试被问到这个,这里总结下:

在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 if
end if
但是有的时候我们需要关闭Nagle算法,一个典型的例子就是X窗口系统服务器:小消息必须无时延地发送,以便为进行某种操作的交互用户提供实时反馈.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: