TCP可靠传输

Posted wx5add7776993de

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP可靠传输相关的知识,希望对你有一定的参考价值。


一,理想传输条件

TCP下面的网络层提供的是不可靠的传输,因此TCP必须采取适当的措施来使得两个运输层之间的通信变得可靠

理想的传输条件:

  • 传输信道不发生差错
  • 不管发送方以多快的速度发送数据,接收方总能来得及接收数据

二,停止等待协议

概述

发送方每发送完一个数据单元(分组)就停止发送,等待接受方确认,在接收到接收方的确认信息后就继续发送下一个分组

1.无差错情况

无差错情况下是最简单的情况,即正常的情况下数据的发送和接收必然是一个单元的在发送和确认接收后才发送下一个单元

TCP可靠传输_数据

2.出现差错

出现差错即在传输过程中出现差错

可能出现的差错有:

  • 接收方在接收数据单元时检测出现差错丢弃了该数据单元
  • 数据单元在传输过程中丢失,没有到达接收方

处理方案-----超时重传

什么是超时重传?

发送者在发送数据后的一段时间内,没有收到接收者发来的数据确认信息,发送者就认为刚才发送的数据单元产生丢失情况,就重新发送刚刚丢失的数据单元

实现

在每发送完一个数据单元时就设置一个超时计时器,在超时计时器到时间之前收到数据确认信息,则该数据单元正确传输到接收者,否则则启动重传

重传数据单元实现

  1. 发送者每发送一个数据单元就保存该数据单元的副本,重传时传输的就是该副本
  2. 发送的每一个数据单元都需要进行编号,确认信息也是如此,通过比对编号,才能明确哪些信息正确接收和发送
  3. 超时计时器设置的时间应该比数据在传输过程的传输的平均往返时间更长一些

3.确认丢失和确认迟到

概述

发送者成功发送数据单元后,接收者也成功接收到数据单元,但是发送给发送者的消息接收确认却在发送过程丢失或者其传输时间超过超时计时器设定的时间,导致发送者误以为消息接受失败启动消息重传,这时接收者就会又一次接收到发送者发来的重复的消息

如何处理这种情况?

  • 丢弃这个重复的数据单元,不向上层交付
  • 坚持向发送者发送数据单元接收确认

缺点:

  • 信道利用率低

TCP可靠传输_无差错_02

三,连续ARQ协议

概述

自动重传请求(Automatic Repeat-reQuest,ARQ)是OSI模型中数据链路层的错误纠正协议之一。它包括停止等待ARQ协议和连续ARQ协议,错误侦测(Error Detection)、正面确认(Positive Acknowledgment)、逾时重传(Retransmission after Timeout)与负面确认继以重传(Negative Acknowledgment and Retransmission)等机制。

工作原理

发送方采用发送窗口的模式,位于发送窗口的数据可以连续发送而不需要等待确认

接收方采取累积确认的方式,对按序到达的最后一个数据单元进行接收确认表示,这个消息之前的所有消息全部收到。

TCP可靠传输_无差错_03

优缺点

优点:信道利用率高,容易实现,即使确认丢失,也不必重传。

缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。可能出现分组丢失


以上是关于TCP可靠传输的主要内容,如果未能解决你的问题,请参考以下文章

TCP协议中是如何保证报文可靠传输的

TCP的可靠传输(依赖流量控制拥塞控制连续ARQ)

TCP差错控制

TCP可靠传输及流量控制实现原理

TCP 可靠传输的实现(二)TCP的重传机制

TCP最主要的特点如下。