码迷,mamicode.com
首页 > 其他好文 > 详细

TCP中在发送的数据的ACK未回来前,能继续发送其他数据包吗?

时间:2014-09-13 13:23:47      阅读:442      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!