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

TCP提供一种面向连接的、可靠的字节流服务。
  面向连接:意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先建立一个TCP连接。在一个TCP连接中,仅有两方进行彼此通信。广播和多播不能用于TCP。 应用数据被分割成TCP认为最适合发送的分组,A为发送方,B为接收方。可靠传输原理是以下两个协议:
  1、停止等待协议:每发送完一个分组,就停止发送,等待对方的确认,收到确认后再发送下一个分组。
  (1)出现差错,采用超时重传功能,若B检测到收到的分组有错,就丢弃此分组,什么也不做(TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化),A在发送后就设置一个超时定时器,若超过定时器时间还没有收到确认,就重新发送此分组(注意:A发送完一个分组后必须保留副本,为超时重传使用;分组和确认分组都要进行编号;超时重传时间必须大于一个往返时间);
  (2)确认丢失和确认迟到:B发送的确认丢失或迟到后,A过了超时定时器的时间,就重新发送分组,B丢弃这个分组,同时向A发送确认;
  上述的确认和重传机制,称为自动重传请求ARQ协议;
2、连续ARQ协议:利用发送窗口,位于发送窗口内的所有分组都可以连续发送出去,而不需要等待对方的确认。A每收到一个确认,就把发送窗口向前滑动一个分组的位置。B采用累积确认方式,对按序到达的最后一个分组发送确认,就表示到这个分组之前的所有分组都收到了。

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

你可能感兴趣的:(面试缺陷,计算机网络)