标签:style color io 数据 sp on c 算法 r
##基础##
- 对应层数据的名称
- 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协议是一个巨复杂的协议,上面表述仅为个人资料收集的总结结果,所以不能保证完全正确,如果你发现了漏洞,请务必告知。谢谢。
TCP中在发送的数据的ACK未回来前,能继续发送其他数据包吗?
标签:style color io 数据 sp on c 算法 r
原文地址:http://blog.csdn.net/huangkq1989/article/details/39250833