TCP协议如何保证数据的顺序传输

TCP是一种面向连接的、可靠的基于字节流服务。“面向连接”意味着使用TCP协议的应用在建立联系之前,彼此需要先建立TCP联系;而TCP协议确保传输过程中数据的顺序性则体现其“可靠”的特性,具体如下:

 

TCP协议将数据切分为多个小片段(数据被划分为合理长度),小片段由头部(header)和数据(payload)组成,为了确保抵达数据的顺序,TCP协议给每个片段的头部(header)都分配了 序列号 ,方便后期按照序列号排序。


  • 当某个片段按照顺序发送后,发送方会将已发送的数据片段暂时保存在 缓冲区 内,并为每个已发送的数据设置一个 时间区间

  • 当接收方收到正确的符合顺序的数据片段后,会优先对数据片段做完整检验,如确认无误,再把数据片段交给上层协议,并给发送方一个 TCP片段反馈信息用来告知(ACK acknowledge)发送方:我已经接收到这个片段了。这个TCP片段被称为 ACK回复 。举个例子:发送的第一个片段序列号为 T,其对应的ACK回复则为T+1,也就是接收方要接收的下一个发送片段的序列号。


假设在规定的时间区间之内发送方收到接收方的 TCP片段反馈信息,则发送方可以释放缓冲区的数据,如若超时未收到应答,发送方则重新发送数据,直到收到应答,或者重发数据次数达到上限为止。

 

TCP协议的种种机制保证了数据传输的顺序,然而TCP报文段作为IP数据来传输,在IP数据报的到达可能会失序,因此TCP报文段的到达也存在失序的可能。特殊情况下,TCP将对收到的数据进行重新排列,确保顺序正确后再交给应用层。




来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69925049/viewspace-2652755/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/69925049/viewspace-2652755/

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值