3.4 可靠传输

3.4 可靠传输

1. 可靠传输的基本概念

  1. 使用差错检测技术(例如循环冗余校验CRC),接收方的数据链路层就可检测出帧在传输过程中是否产生了误码(比特错误)。

1.1 数据链路层向上层提供的服务类型

  1. 不可靠传输服务:
    • 仅仅丢弃有误码的帧,其他什么也不做
  2. 可靠传输服务:
    • 想办法实现发送端发送什么,接收端就收到什么。
  3. 一般情况下,有线链路的误码率比较低,为了减小开销,并不要求数据链路层向上提供可靠传输服务。即使出现了误码,可靠传输的问题由其上层处理。
  4. 无线链路易受干扰,误码率比较高,因此要求数据链路层必须向上层提供可靠传输服务。

1.2 传输差错

  • 比特差错只是传输差错中的一种。
  • 从整个计算机网络体系结构来看,传输差错还包括分组丢失、分组失序以及分组重复。
  • 分组丢失、分组失序以及分组重复这些传输差错,一般不会出现在数据链路层,而会出现在其上层。
  • 可靠传输服务并不仅局限于数据链路层,其他各层均可选择实现可靠传输。

2. 可靠传输的实现机制

2.1 停止-等待协议(SW)

  • 属于自动请求重传协议(ARQ)

  1. 接收端检测到数据分组有误码时,将其丢弃并等待发送方的超时重传。但对于误码率较高的点对点链路,为使发送方尽早重传,也可给发送方发送NAK分组。

  2. 为了让接收方能够判断所收到的数据分组是否是重复的,需要给数据分组编号。由于停止-等待协议的停等特性,只需1个比特编号就够了,即编号0和1

  3. 为了让发送方能够判断所收到的ACK分组是否是重复的,需要给ACK分组编号,所用比特数量与数据分组编号所用比特数量一样。数据链路层一般不会出现ACK分组迟到的情况,因此在数据链路层实现停止-等待协议可以不用给ACK分组编号。

  4. 超时计时器设置的重传时间应仔细选择。一般可将重传时间选为略大于“从发送方到接收方的平均往返时间”

    1. 在数据链路层点对点的往返时间比较确定,重传时间比较好设定。
    2. 然而在运输层,由于端到端往返时间非常不确定,设置合适的重传时间有时并不容易。

  5. 当往返时延RTT远大于数据帧发送时延TD时(例如使用卫星链路),信道利用率非常低。若出现重传,则对于传送有用的数据信息来说,信道利用率还要降低。

  6. 为了克服停止-等待协议信道利用率很低的缺点,就产生了另外两种协议,即后退N帧协议GBN和选择重传协议SR。

2.2 回退N帧协议(GBN)

  • 是一种滑动窗口协议

  1. 可退N帧协议在流水线传输的基础上利用发送窗回来限制发送方连续发送数据分组的数量,是一种连续ARQ协议。
  2. 在协议的工作过程中发送窗口和接收窗口不断向前滑动,因此这类协议又称为滑动窗回协议。
  3. 由于回退N帧协议的特性,当通信线路质量不好时。其信道利用率并不比停止等待协议高,

2.3 选择重传协议SR

  1. 回退N帧协议的接收窗口尺寸W只能等于1,因此接收方只能按序接收正确到达的数据分组。
  2. 一个数据分组的误码就会导致其后续多个数据分组不能被接收方按序接收而丢弃(尽管它们无乱序和误码)。这必然会造成发送方对这些数据分组的超时重传,显然这是对通信资源的极大浪费。
  3. 为了进一步提高性能,可设法只重传出现误码的数据分组。因此,接收窗口的尺寸W不应再等于1(而应大于1),以便接收方先收下失序到达但无误码并且序号落在接收窗口内的那些数据分组,等到所缺分组收齐后再一并送交上层。这就是选择重传协议。
  • 注意:
    • 选择重传协议为了使发送方仅重传出现差错的分组,接收方不能再采用累积确认,而需要对每个正确接收到的数据分组进行逐一确认!


3.4 可靠传输
http://binbo-zappy.github.io/2024/11/17/计算机网络/3-4-可靠传输/
作者
Binbo
发布于
2024年11月17日
许可协议