TCP协议学习之 nagle算法
来源:互联网 发布:四川网络大学考试平台 编辑:程序博客网 时间:2024/06/08 09:49
1. nagle算法主要目的是减少网络流量,当你发送的数据包太小时,TCP并不立即发送该数据包,而是缓存起来直到数据包
到达一定大小后才发送。
到达一定大小后才发送。
2. 当应用程序每次发送的数据很小,特别是只发送1个字节,加上TCP和IP头的封装,TCP头占20个字节,IP头也占20个字 节,这时候发一个包是41个字节,效率太低。而nagle算法允许计算机缓冲数据,当数据缓存到一定长度后,如果之前发送 的数据得到了ACK确认且接收方有足够空间容纳数据 (当然也要考虑MSS),就发送这些数据,否则继续等待。
3. TCP socket提供了关闭nagle算法的接口,可以通过TCP_NODELAY选项决定是否开启该算法。
wikipedia上面关于这个算法的资料:http://en.wikipedia.org/wiki/Nagle's_algorithm
wikipedia上有一段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 if
end if
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
- TCP协议学习之 nagle算法
- TCP之Nagle算法&&延迟ACK
- TCP之Delay Ack和Nagle算法
- TCP之Nagle算法&&延迟ACK
- TCP—Nagle算法
- TCP中的Nagle算法
- tcp的Nagle算法
- TCP—Nagle算法
- TCP Nagle算法详解
- TCP中的Nagle算法
- TCP Nagle算法详解
- TCP中的Nagle算法
- TCP中的Nagle算法
- 19- TCP 协议(Nagle)
- TCP-IP详解:Nagle算法
- TCP的Nagle算法介绍
- Nagle算法学习
- TCP协议Nagle算法和Delayed ACK相互影响实例分析
- 9.2图的存储结构 9.2.1 邻接矩阵存储方法
- java中“==”和equals方法有什么区别
- Mina自定义文本编解码
- DOCTYPE作用及用法详解
- 剑指offer面试题22栈的压入弹出序列
- TCP协议学习之 nagle算法
- Android框架层学习指导
- 大话设计模式 迭代器模式
- AVL树
- Java是解释型语言还是编译型语言
- JAVA基础学习之多态
- CORS(跨源资源共享)
- linux 中的if else语句
- 互联网/移动互联网经营的本质是经营消费者的时间价值