TCP中的Nagle算法

来源:互联网 发布:ibatis 打印sql 编辑:程序博客网 时间:2024/06/05 10:48

 一,Nagel算法

                        TCP/IP协议中,无论发送多少数据,总是要在数据前面加上协议头,同时,对方接受到数据,也需要发送ack表示确认。为了尽可能利用网络带宽,TCP总是希望尽可能发送足够大的数据。(在一个连接中会设置MSS参数,因此,TCP/IP希望每次都能够以MSS尺寸的数据发送数据)。Nagle算法就是为了尽可能发送大块数据,避免网络中充斥这许多小数据块。

                         Nagle算法的基本定义式任意时刻,最多只能有一个未被确认的小段。所谓"小段",指的是小于MSS尺寸的数据块,所谓“未被确认”,是指一个数据块发送出去后,没有收到对方发送的ACK确认该数据已收到。

                         Nagle算法的规则:

                         (1)如果包长度达到MSS,则允许发送;

                         (2)如果该包含有FIN,则允许发送;

                         (3)设置了TCP_NODELAY选项,则允许发送

                         (4)未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送;

                         (5)上述条件都未满足,但发生了超时(一般为200ms),则立刻发送。

                          Nagle算法只允许一个未被ACK的包存在于网络中,它不管包的大小,因此它事实上是一个扩展的停-等协议,只不过它是基于包停-等的,而不是基于字节停-等的。

Nagle算法完全由TCP协议的ACK机制决定,这会带来一些问题,比如如果对端ACK回复很快的话,Nagle事实上不会拼接太多的数据包,网络总体利用率依然很低。

                         TCP确认延迟机制。当Server端收到数据之后,它并不会向client端发送ACK,而是将ACK的发送延迟一段时间,它希望在t时间内server端会向client端发送应答数据,这样ACK就能够和应答数据一起发送过去,就像应答数据捎带着ACK过去。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 钳子报价 钳子品牌 修脚钳子 knipex钳子 钳子大全 偏口钳子 气动钳子 水管钳子 止血钳子 台钳子 手钳子 光纤钳子 螃蟹的钳子 电焊钳子 定制钳子 电线钳子 垃圾钳子 消防钳子 断线钳子 拔牙的钳子 弹簧钳子 带钳子的虾 钳子分类 压线帽钳子 鹰嘴钳子 嬷嬷用钳子验身 拔牙钳子识别图解 钳子改装的撒放器图解图片 剪电缆的钳子 网线钳子怎么用 网线钳子价格 网线钳子多少钱 各种钳子图片 钳子的种类图解 钳子的种类图片 小龙虾钳子能吃吗 螃蟹钳子上的毛怎么去掉 钳子用英语怎么说 钳子上有毛的螃蟹 45度掐角钳子 剪电线的钳子叫什么