TCP协议如何来保证传输的可靠性和数据的顺序性

TCP提供一种面向连接的、可靠的字节流服务。
  面向连接:意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。 应用数据被分割成TCP认为最适合发送的分组,A为发送方,B为接收方。
  可靠传输原理是通过检验和,序号,定时器,ack机制,停止等待协议保证数据可靠传输。
  1、检验和用于保证传输的数据是否出现差错
  2、序号用于确定数据是否已经被正常接收,或者是新的数据到达,若是已被接收的数据,则回复上一次正常接收的序号的ack,否则回复这次序号的ack
  3、定时器用于判断数据是否丢失,在指定的时间内没有收到ack,则重发该序号的数据。
  4、ack用于确定数据是否正确被收到。
  5、停止等待保证发送一个数据报文后,没有收到ack之前不再发送新数据(会有效率问题,后续有解决方案进行解释)
  可靠传输通过以下两个协议(二选一)保证数据能够快速达到,而不需要停止等待每一次的ack,保证传输效率:
  1、连续ARQ协议:即**回退N步(滑动窗口协议)**协议,利用发送窗口,位于发送窗口内的所有分组都可以连续发送出去,而不需要等待对方的确认。A每收到一个确认,就把发送窗口向前滑动一个分组的位置。B采用累积确认方式,对按序到达的最后一个分组发送确认,就表示到这个分组之前的所有分组都收到了。若是收到乱序的分组,则直接丢弃。虽然有点浪费,但是丢弃后,发送方会重新发送数据,所以每关系。如果要不浪费,使用第二种协议
  2、选择重传:在窗口N范围内,可以先把乱序的数据缓存起来,将前面所有序号的数据收到后,组织成一个数据块,交付给应用程序,窗口再前进N步,中间每收到一个,就发送一个ACK,发送端对于没有收到ACK的序号再超过定时器后,再次重新发送。

保证数据的顺序性
既然TCP报文段作为IP数据报来传输,而IP数据报的到达可能会失序,因此TCP报文段的到达也可能会失序。如果必要,TCP将对收到的数据进行重新排序,将收到的数据以正确的顺序交给应用层。 (对失序数据进行重新排序,然后才交给应用层)

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值