3.4 滑动窗口协议

1.Rdt 3.0的性能

2.滑动窗口协议

3.GBN和SR协议


1.Rdt 3.0的性能

Rdt 3.0可以工作, 但链路容量比较长(路程比较长)的情况下, 性能很差; 链路容量大, 一次发一个数据不能充分利用链路的

传输能力

在这里插入图片描述

瓶颈在于: 网络协议限制了物理资源的利用; 引入流水线协议, 流水线协议允许发送方在未得到对方确认的情况下一次发送多

个分组

a.必须增加序号的范围: 用多个bit表示分组的序号

b.在发送方/接收方要有缓冲区

  - 发送方的缓冲区: 检错重发和超时重发

  - 接收方的缓冲区: 上层用户取用数据的速率不等于接收到的数据速率

c.流水线的好处: 极大地减少了整个通信过程的等待时间, 充填了信道的空闲期, 从而显著提高了信道的利用率 

2.滑动窗口协议

流水线协议是一种设计思想, 滑动窗口协议是一种具体实现该思想的技术手段; 滑动窗口协议相关的概念:

1).发送缓冲区

a.形式: 内存中的一个区域, 落入缓冲区的分组可以发送

b.功能: 用于存放已发送, 但是没有得到确认的分组

c.必要性: 需要重发时可用

d.发送缓冲区的大小: 一次最多可以发送多少个未经确认的分组

  - 停止等待协议 = 1

  - 流水线协议 > 1, 合理的值, 不能很大, 链路的利用率不能超过100%

e.发送缓冲区的分组

  - 未发送的: 落入发送缓冲区的分组, 可以连续发送出去

  - 已经发送出去的, 等待对方确认的分组: 发送缓冲区的分组只有得到确认才能删除

f.发送窗口的大小表示可以发送的权力, 发送窗口是发送缓冲区的一个子集

在这里插入图片描述

g.理论上采用相对表示法: 分组不动, 发送窗口移动

在这里插入图片描述


2).发送窗口

a.发送窗口是发送缓冲区内容的一个范围, 是那些已发送但是未经确认分组的序号构成的空间

b.发送窗口的最大值 <= 发送缓冲区的值

c.一开始: 没有发送任何一个分组, 前沿等于后沿; 发送窗口的尺寸等于0

在这里插入图片描述

d.每发送一个分组, 前沿前移动一个单位

在这里插入图片描述

e.发送窗口前沿不能超过发送缓冲区

在这里插入图片描述

f.发送窗口的移动 -> 后沿移动

  - 条件: 收到老分组的确认

  - 移动的极限: 不能够超过前沿

在这里插入图片描述

  - 结果: 发送缓冲区罩住新的分组, 来了分组可以发送

在这里插入图片描述


3).接收窗口

接收窗口(receiving window) = 接收缓冲区

a.接收窗口用于控制哪些分组可以接收

  - 只有收到的分组序号落入接收窗口内才允许被接收
  
  - 若序号在接收窗口之外, 则丢弃

b.接收窗口尺寸Wr = 1, 则只能顺序接收

c.接收窗口尺寸Wr > 1, 则可以乱序接收, 但是提交给上层的分组, 要按序

d.例如:

  Wr = 1,0的位置, 只有0号分组可以接收; 向前滑动一个, 罩在1的位置, 如果来了第2号分组, 则丢弃 

在这里插入图片描述

e.接收窗口的滑动

  - 低序号的分组到来, 接收窗口移动

  - 高序号分组乱序到, 缓存但不交付(因为要实现rdt, 不允许失序), 不滑动

在这里插入图片描述

f.发送确认

  - 接收窗口尺寸 = 1, 发送连续收到的最大的分组确认(累计确认)

  - 接收窗口尺寸 > 1, 收到分组, 发送那个分组的确认(非累计确认)

在这里插入图片描述


3.GBN和SR协议

1).GBN(Go - Back - N)协议

a.发送方: 维护一个发送窗口, 窗口内的分组可以连续发送; 当收到对最早某个分组的确认时, 窗口滑动; 如果超时, 则重

传所有已发送但未确认的分组(即窗口内从最早未确认的分组开始的所有分组)

b.接收方: 只按序接收分组, 如果收到乱序的分组, 则丢弃并重复发送最近按序接收的分组的确认

c.特点: 发送方只维护一个定时器, 用于最早发送的未确认的分组; 当超时发生, 重传整个窗口的分组

2).SR(Selective Repeat)协议

a.发送方: 为每个分组维护一个定时器, 只重传那些超时未确认的分组; 发送窗口内分组可以连续发送; 当收到对某个分组

的确认时, 标记该分组为已确认; 如果窗口基序号(即最早未确认的分组)被确认, 则窗口可以滑动到下一个未确认的分组

b.接收方: 可以非按序接收分组, 但会确认所有正确接收的分组(包括乱序的分组); 接收方有缓存, 将乱序的分组缓存起来,

直到可以按序交付给上层

c.特点: 发送方为每个分组维护一个定时器, 只重传丢失的分组, 因此效率更高, 但实现更复杂

3).正常情况下的2个窗口互动

a.发送窗口中有新的分组落入发送缓冲区范围, 发送窗口的前沿滑动

b.接收窗口收到分组, 落入到接收窗口范围内则接收; 如果是低序号, 发送确认给对方

c.发送窗口中, 来了老的低序号分组的确认, 后沿向前滑动, 新的分组可以落入发送缓冲区的范围

4).异常情况下GBN的窗口互动

-> 对于异常情况的说明: 发送方发给接收方的分组丢失, 出错; 接收方确认报文丢失, 出错

a.发送窗口中新的分组落入发送窗口, 前沿移动

b.出现异常情况, 接收窗口收到乱序分组, 没有落入到接收窗口范围内, 抛弃; 发送对于老分组的确认(累计确认)

c.发送窗口中: 来了老分组的重复确认, 后沿不能向前滑动, 新的分组无法落入发送窗口中(此时如果发送缓冲区有新的分组

可以发送); 超时重发机制让发送端将发送窗口中的所有分组发送出去

5).异常情况下的SR的窗口互动

a.发送窗口中新的分组落入发送窗口中, 前沿移动

b.出现异常情况, 接收窗口收到乱序分组, 落入到接收窗口范围内, 接收; 发送该分组的确认, 单独确认

c.发送窗口中: 来了乱序分组的确认, 后沿不向前滑动, 新的分组无法落入发送窗口中(此时如果发送缓冲区有新的分组可以

发送); 超时重发机制让发送端将发送窗口中的所有分组发送出去

6).GBN协议和SR协议的异同

a.相同之处

  - 发送窗口 > 1

  - 一次能够可发送多个未经确认的分组

b.不同之处

  - GBN: 接收窗口尺寸等于1, 接收端只能顺序接收, 发送端从表现来看, 一旦一个分组没有发成功,: 0, 1, 2, 3; 假

如1未成功, 2, 3, 4都发送出去了, 则将1和后面的所有分组都会发送一次

  - SR: 接收窗口尺寸大于1, 接收端可以乱序接收; 发送端发送0, 1, 2, 3, 一旦1未成功, 2,3成功; 则选择性发送1

7).流水线协议的总结:

a.Go - bakc - N

- 发送端最多在流水线中有N个未确认的分组

- 接收端只是发送累计型确认, 接收端如果发现gap, 不确认新到来的分组

- 发送端拥有对最老的未确认分组的定时器, 只需设置一个定时器, 当定时器到时时, 重传所有未确认分组

b.Selective Repeat

- 发送端最多在流水线中有N个未确认的分组

- 接收方对每个到来的分组单独确认(非累计确认)

- 发送方为每个未确认的分组保持一个定时器

- 当超时定时器到时, 只是重发到时的未确认分组
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值