TCP中在发送的数据的ACK未回来前,能继续发送其他数据包吗?
来源:互联网 发布:广电授权的网络机顶盒 编辑:程序博客网 时间:2024/04/25 16:22
##基础##
- 对应层数据的名称
- Application <-> Package
- Translation <-> Segment
- Networking <-> Packet
- DataLink <-> Frame
- TCP是一种基于字节流的协议,TCP 中的ACK是接收端期待发送端下一个发来的数据包的序列号
- MSS 是在建立连接时通过SYN数据包中的MSS选项里进行协商的(以太网的MTU能到1500,所以MSS可以为1460),如果没有协商,默认为536,MSS是数据净负荷,协议保证最小支持536(加上TCP和IP的头部后packet为576)
- TCP是一种有流量控制的协议,有CWND和AWND的概念
##正题##
能不能发,取决于下面的条件是否满足:
1. 如果包长度达到MSS,则再根据CWND、AWND来做决定;
2. 如果该包含有FIN,则允许发送;
3. 如果没达到MSS且不包含FIN:
3.1. 设置了TCP_NODELAY选项,则允许发送;
3.2. 没设置TCP_NODELAY, 未设置TCP_CORK选项时,若所有发出去的小数据包(包长度小于MSS)均被确认,则允许发送(nagel算法起作用);设置了TCP_CORK选项时,需要包长度到MSS。
4. 上述条件都未满足,但发生了超时(一般为200ms),则立即发送。
TCP协议是一个巨复杂的协议,上面表述仅为个人资料收集的总结结果,所以不能保证完全正确,如果你发现了漏洞,请务必告知。谢谢。
1 0
- TCP中在发送的数据的ACK未回来前,能继续发送其他数据包吗?
- TCP的接收缓冲区满了,收到数据后会向发送方发送ACK吗?该怎么解决
- TCP的数据发送
- IP数据包和TCP数据包是什么关系?当发送数据时,是发送的IP包吗?那TCP包什么时候形成?
- TCP/IP详解--发送ACK和RST的场景
- TCP的ACK确认系列 — 发送状态转换机
- TCP的ACK确认系列 — 发送状态转换机
- TCP的ACK确认系列 — 发送状态转换机
- TCP/IP详解--发送ACK和RST的场景
- TCP/IP详解--发送ACK和RST的场景
- 唯快不破:TCP/IP详解--发送ACK和RST的场景
- linux关于tcp协议ack的实现--发送端对ack的处理
- linux关于tcp协议ack的实现--发送端对ack的处理
- 发送TCP数据包
- TCP 和 UDP 协议发送数据包的大小(浅析)
- tcp和udp能否发送0字节的数据包
- TCP和UDP 协议发送数据包的大小
- TCP和UDP 协议发送数据包的大小
- 终于有自己的博客啦
- 考研学生应该知道:研究方向和开发技术
- angular模板加载
- 内页怎样优化才能有好排名
- Check Soduku Solution
- TCP中在发送的数据的ACK未回来前,能继续发送其他数据包吗?
- oracle的存储过程
- 在论坛中出现的比较难的sql问题:27(字符串拆分、字符串合并、非连续数字的间隔范围、随机返回字符串)
- spring3源码编译学习
- POJ 1410 Intersection
- Sort Colors
- JavaScript函数式编程
- 为什么 我 的myeclipse调试的时候,有时鼠标放在变量上就显示变量值,有时就没有,提示不可以显示
- sicily1198