计算机网络(九)——可靠传输协议

1. 可靠数据传输协议

(1)服务抽象
数据可以通过一条可靠信道进行传输。借助于可靠信道,传输数据比特不会发生损坏或丢失,而且所有数据按照发送顺序进行交付

由于可靠传输协议的下层协议可能是不可靠的,随着底层通道模型越来越复杂,我们需要不断开发一个可靠传输协议。(可靠数据传输–>比特损坏–>丢包)

(2)核心要点

  • ARQ协议(检验和技术、重传、ACK和NAK分组):差错检验
  • 停等协议
  • 序号:冗余分组
  • 倒计时定时器:分组

1.1 经完全可靠信道的可靠数据传输:rdt1.0

定义

  • 底层信道完全可靠。
  • 发送端只需接收来自较高层的数据,产生一个包含该数据的分组,并将该分组发送到信道中。
  • 接收端只需要接收来自底层的分组,从分组中取出数据,并将数据发送给较高层。

特点

  • 所有分组是从发送方传输到接收方。
  • 接收方无需提供反馈给发送方。

1.2 经具有比特差错信道的可靠数据传输

核心

  • 自动重传请求协议ARQ:比特差错
  • 停等协议:使用ACK或NAK
  • 序号:冗余分组

ARQ协议是解决比特差错的最基本的协议。
定义

  • 底层信道中分组的比特可能受损。
    比特差错通常出现在网络的物理部件中。
  • 发送方有两个状态:
    ①等待来自上层的数据。
    ②等待来自接收方的ACK或NAK分组。
  • 接收方仅有一个状态:要么回答ACK,要么回答NAK。这取决于分组是否受损。
    ①当分组被正确接收或收到失序分组时,返回ACK。
    ②当收到受损分组时,返回NAK。

(1)ARQ自动重传请求协议
发送方仅能通过接收方的反馈确定分组是否被正确接收。
目的: 处理信道具有比特差错的问题。
ARQ协议需要另外三个协议功能来处理存在比特差错的情况:

  1. 差错检验:分组检验和
  2. 接收方反馈
    ①当分组被正确接收,接收方向发送方返回ACK。
    ②当接收的分组受损,接收方反馈NAK。
  3. 重传:当接收方收到受损分组时,发送方重传该分组。

停等协议
对于rdt2.0,发送方有两个状态:等待来自上层的数据、等待来自接收方的反馈。

  • 当发送方将分组发送到信道后,状态变为等待接收方的反馈。
  • 在收到接收方ACK或NAK反馈之前,发送方保持等待接收方的反馈状态。 此时,它不能接收来自上层的数据,和向接收方发送分组。
  • 当发送方收到NAK时,发送方重传最后一个发送的分组,并等待接收方的反馈。

问题:
rdt2.0具有一个致命的缺陷,就是没有考虑到ACK或NAK分组受损的可能性。

(2)检验和纠正ACK/NAK分组
检验: 在ACK/NAK分组中添加检验和字段。
纠正

  • 增加足够的检验和比特
    对于只产生差错但不丢失分组的信道有效。
  • 重传当前分组
    ①当发送方收到受损的ACK/NAK分组时,重传当前分组。
    ②这种方法会引入冗余分组

序号
在数据分组中添加一新字段,发送方对其编号接收方根据序号确定是否为重传的上一次的分组。

  • 对于停等协议,1个比特序号足够了。
  • 接收方根据序号确定发送方是否正在重传上一个分组。
    ①新分组的序号与前一个分组的序号不同。

(3)rdt2.x
rdt2.0

  • 使用接收方到发送方的肯定确认和否定确认。
  • ARQ协议。
  • 停等协议。

rdt2.1

  • 使用接收方到发送方的肯定确认和否定确认。
  • ARQ协议。
  • 停等协议。
  • 序号。

rdt2.2
相比于2.1,是在比特差错信道上实现了一个无NAK的可靠数据传输协议。

  • 接收方发送否定确认:
    ①发送NAK。
    ②对上次正确接收的分组发送ACK。

1.3 经具有比特差错的丢包信道的可靠数据传输:rdt3.0

核心
在rdt2.2的基础上,增加倒计时定时器形成的新协议。

  • 自动重传请求协议ARQ
  • 停等协议
  • 接收方和发送方使用ACK和NAK
  • 序号
  • 倒计时定时器:丢包

定义

  • 除了比特受损,底层信道还会丢包。
    因此rdt3.0在rdt2.2的基础上增加了检测和处理丢包的定时重传机制。
  • 为了能够检测和处理丢包,发送方需要能做到:
    ①每次发送一个分组,便启动定时器。
    ②响应定时器中断。
    ③终止定时器。
  • 丢包
    ①数据分组丢失。
    ②ACK分组丢失。

问题:怎样检测和处理丢包?

  • 发送方等待足够长的时间以确认是否丢包。
    ①发送方至少需要等待的时间:发送方和接收方之间的往返延时 + 接收方处理一个分组的处理延时。
    ②问题:最坏情况的最大时延难以估算、理想协议应该尽可能快的从丢包中恢复出来。
  • 倒计时定时器:倒计时结束后,中断发送方。

(1)倒计时定时器
功能:
在倒计时结束后,中断发送方。(发送方响应中断,并重传分组)

可能导致重传的三种情况

  • 数据分组丢失
  • ACK丢失
  • 数据分组或ACK过度延时
    在这里插入图片描述

2. 流水线可靠数据传输协议

rdt3.0是一个功能正确的协议,它的核心问题在于它是一个停等协议。

  • 发送方的利用率较低。
  • 限制了底层网络硬件提供的能力。

在这里插入图片描述
为了解决上述问题可以:不以停等方式运行,允许发送方发送多个分组而无需等待确认。
功能要求

  • 增加序号范围
  • 发送方和接收方需要缓存多个分组
    发送方最低限度应当缓存已发送但没有确认的分组。
    接收方需要缓存已正确接收的分组。
  • 序号范围和缓存要求取决于协议如何解决丢失、损坏及延时过大的分组。

2.1 回退N步(GBN)

(1)核心
为了实现流水线可靠数据传输,发送方可以连续发送多个分组,而不需等待确认,GBN协议采用了下述两种关键机制:

  1. 滑动窗口࿱
  • 5
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冠long馨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值