文章目录

  • 一、 滑动窗口协议引入
  • 二、 后退 N 帧协议 ( GBN ) 滑动窗口
  • 三、 后退 N 帧协议 ( GBN ) 运行过程
  • 四、 后退 N 帧协议 ( GBN ) 发送方数据分类
  • 五、 后退 N 帧协议 ( GBN ) 发送方 需要 响应的事件 ( 累计确认 、超时发送机制)
  • 六、 后退 N 帧协议 ( GBN ) 接收方 需要 响应的事件 ( 按序接收 、确认帧发送机制 )
  • 七、 后退 N 帧协议 ( GBN ) 运行细节
  • 八、 后退 N 帧协议 ( GBN ) 发送窗口长度
  • 九、 后退 N 帧协议 ( GBN ) 重点
  • 十、 后退 N 帧协议 ( GBN ) 计算示例
  • 十一、 后退 N 帧协议 ( GBN ) 协议性能

一、 滑动窗口协议引入


"停止-等待" 协议 弊端 : 信道利用率低 , 发送完一帧后等待 , 这个时候信道完全是空闲的 ;

为了提高信道利用率 , 发送端 发送完一帧后 , 不用等待 接收端的 ACK 确认帧 , 立刻发送 第二帧 , 第三帧 , 这样信道的利用率就提高了 ;

相应协议也要做一些更改 :

① 增加 发送方 的 帧 序号范围 ;

② 发送方 缓存 多个 帧分组 ; 连续发送 NNN 帧 , 其中某一帧 可能需要重传 , 但不知道哪一帧需要重传 , 这里 需要将这 NNN 帧全部缓存下来 ;

这里有引出了两个在 “停止-等待” 协议基础上 , 改进的两个协议 :

  • 后退 NNN 帧协议 ( GBN )
  • 选择重传协议 ( SR )

二、 后退 N 帧协议 ( GBN ) 滑动窗口


后退 N 帧协议 滑动窗口 :

① 发送窗口 : 发送方 维持的 一组 连续的 允许发送的 帧序号 ; ( 本质是 序号 ) , 可以有多个 ;

② 接收窗口 : 接收方 维持的 一组连续的 允许接受的 帧序号 ; ( 本质是 序号 ) , 只有 111 个 ;

三、 后退 N 帧协议 ( GBN ) 运行过程


后退 N 帧协议 运行过程 :

① 初始发送方滑动窗口 : {0,1,2,3,4,5}\{ 0 , 1 , 2 , 3 , 4, 5 \}{0,1,2,3,4,5}

② 发送备份 000 帧 : 发送方 发送 000 号帧 , 同时 建立 000 帧副本 , 为后面可能需要重传做准备 ;

③ 发送备份 111 帧 : 发送方 紧接着 发送 111 号帧 , 建立 111 帧 副本 ;

④ 接收方 滑动窗口 : {0}\{ 0 \}{0}

⑤ 接收确认 000 帧 : 接收方 接收到了 000 号帧 , 回复 ACK 000 给发送方 , 表示收到 000 帧 ;

⑥ 接收窗口滑动 : 接收方 将 接收窗口 向前滑动一格 ;

⑦ 接收方 滑动窗口 : {1}\{ 1 \}{1}

⑧ 发送窗口 滑动 : 发送方 收到 ACK 000 , 此时 000 号帧已经发送完毕 , 将滑动窗口向前移动一格 ;

⑨ 发送方滑动窗口 : {1,2,3,4,5,6}\{ 1 , 2 , 3 , 4, 5 , 6 \}{1,2,3,4,5,6}

四、 后退 N 帧协议 ( GBN ) 发送方数据分类


发送方 根据 滑动窗口 状态 , 将数据分为以下 四类 :

① 发送完确认的帧 : 数据发送完毕 , 已经收到了接收端确认信息 ;

② 发送完等待确认的帧 : 数据发送完毕 , 还没有收到确认信息 ;

③ 还能发送的帧 : 滑动窗口中 , 还没有发送的帧 ;

④ 还不能发送的帧 : 滑动窗口 后面的帧 ;

五、 后退 N 帧协议 ( GBN ) 发送方 需要 响应的事件 ( 累计确认 、超时发送机制)


上层调用事件 : 上层发送数据时 , 先检查 发送窗口 ;

① 如果 发送窗口 未满 : 则 生成 数据帧 , 发送数据 ;

② 如果 发送窗口 已满 : 发送方将该信息通知上层 , 让 上层 延迟发送 ;

ACKACKACK 确认帧 事件 :

① 累计确认 : GBN 协议中 , 采用 累计确认 方式 , 如果收到一个确认帧 , 默认已经收到了 该帧 , 及之前的全部帧 ;

② 不逐一确认 : 接收方 不用 对每个 数据帧 逐一返回确认帧 , 可以每隔一段时间返回一个确认帧 ;

超时事件 : “后退 N 帧协议” 顾名思义 , 如果出现 帧丢失 , 帧延迟 等错误 , 就会回退到 上一个 确认的帧 后面的第一帧位置 , 重传 NNN 帧 ;

① 重发 111 帧 : 停止-等待协议 只会 重发 没有确认的 一帧 数据 ;

② 重发 NNN 帧 : 后退 NNN 帧协议 , 会重发 没有收到确认的 NNN 帧数据 ;

六、 后退 N 帧协议 ( GBN ) 接收方 需要 响应的事件 ( 按序接收 、确认帧发送机制 )


后退 N 帧协议 接收方 需要 响应的事件 :

① 收到正确帧 : 收到的帧 正确 , 并且顺序正确 ; 为接收的 NNN 帧发送 ACK 确认信息 , 将该帧的数据交给上层 ;

② 没有收到正确帧 : 收到错误帧 , 或 顺序错误 ; 接收方 为 最近的 正确的帧 发送 ACK , 丢弃错误帧 ;

示例 :

① 出错场景 : 接收端 成功接收了 1,2,31,2,31,2,3 号帧 , 等待接收 444 号帧 , 但是直接接收到了 5,65,65,6 号帧 , 此时 444 号帧丢失 ;

② 处理方案 : 将 5,65,65,6 号帧 丢弃 , 重新发送 最近 正确的帧序号 , 将 ACK3ACK 3ACK3 会送给发送端 , 通知发送端从 444 号帧开始发送 ;

七、 后退 N 帧协议 ( GBN ) 运行细节


后退 N 帧协议 运行细节 :

① 发送端连续发送 :

  • 发送窗口 大小为 444 , 可以一次性发送 444 帧数据 , {0,1,2,3}\{ 0, 1, 2, 3 \}{0,1,2,3} ;

  • 发送端 发送 000 帧 , 接收方 接收到 000 帧 , 返回 ACK 000 ;

  • 发送端 发送 111 帧 , 接收方 接收到 111 帧 , 返回 ACK 111 ;

② 丢失 222 帧 : 发送端 发送 222 帧 , 222 号帧 半路丢失 , 接收方 没有收到 222 帧 ;

③ 期待 222 帧 : 接收方 的 期待帧是 第 222 帧 ;

④ 接收方 获知 丢帧 : 发送方 发送 333 帧 , 接收方 接收到 333 帧 , 此时发现 222 帧丢失 , 直接丢弃 333 帧 , 并向接收方 发送 上一个成功接收的帧的确认信息 ACK 111 , 让发送方从 第 222 帧开始发送 ;

⑤ 发送方 收到 ACK 确认帧 :

  • 发送方 收到 ACK 000 之后 , 发送窗口 向后 滑动一位 , 变成 {1,2,3,4}\{ 1, 2, 3 , 4 \}{1,2,3,4} ;

  • 发送方 收到 ACK 111 之后 , 发送窗口 向后 滑动一位 , 变成 {2,3,4,5}\{ 2, 3 , 4 , 5\}{2,3,4,5} ;

⑥ 发送超时处理 : 如果 发送方 一直 没有收到 ACK 222 , 等待时间超时 , 就会 后退 NNN 帧 , 重发 2,3,4,52 , 3, 4, 52,3,4,5 帧 ;

八、 后退 N 帧协议 ( GBN ) 发送窗口长度


后退 N 帧协议 滑动窗口长度 :

使用 nnn 比特 对 帧进行编号 , 发送窗口的尺寸 WTW_TWT​ 满足如下公式要求 :

1≤WT≤2n−11 \leq W_T \leq 2^{n} - 11≤WT​≤2n−1

如果不满足上述公式 , 就会因为 发送窗口 过大 , 接收方 无法识别 新帧 和 旧帧 ;

滑动窗口示例 :

如使用 222 比特 进行帧编号 , 那么滑动窗口大小是 1≤WT≤31 \leq W_T \leq 31≤WT​≤3 ;

如果滑动窗口有 444 比特 , 那么发送 0,1,2,30 , 1, 2, 30,1,2,3 四帧数据 给 接收端 , 四个帧全部丢失 , 此时就会将 四个帧 再次重传 , 这 444 帧数据 , 是重发的旧的帧 还是下一个滑动窗口 新的帧 , 无法确定 ;

九、 后退 N 帧协议 ( GBN ) 重点


发送方 累计确认 机制 : 收到 ACK NNN , 就表示 NNN 号帧及之前的帧 , 全部正确 ;

接收方 按序接收 : 接收方 只能 按照顺序接收 , 人如果中间有帧丢失 , 那么后续帧全部丢弃 ;

接收方 确认帧 : 接收方 如果 收到错误帧 , 失序帧 , 那么查找最近成功接收的正确的帧的最大的 , 按序到达的帧 序号是多少 , 发送该帧对应的 ACK 确认帧 ;

发送窗口 : nnn 是帧序号编码长度 , 发送窗口大小 最大是 2n−12^n - 12n−1 , 最小 111 ;

十、 后退 N 帧协议 ( GBN ) 计算示例


数据链路层 采用 后退 NNN 帧协议 , 发送方 发送了 0,1,2,3,4,5,6,70,1,2,3,4,5,6,70,1,2,3,4,5,6,7 编号的数据帧 , 当计时器超时时 , 只接收到了 0,2,30 , 2, 30,2,3 帧的确认帧 , 发送方需要重发的帧数时 4,5,6,74,5,6,74,5,6,7 帧 ;

计时器超时 , 发送方 发送 已发送 , 但是没有被 确认 的帧 ;

确认机制 是 累计确认 的 , 发送方 接收到了 333 确认帧 , 说明 333 之前的帧已经成功接收了 , 虽然没有收到 111 确认帧 , 但是该帧已经默认接收成功 ;

重发 没有被确认的帧 , 即 4,5,6,74,5,6,74,5,6,7 帧 ;

十一、 后退 N 帧协议 ( GBN ) 协议性能


后退 N 帧协议 ( GBN ) 协议性能 :

① 优点 : 发送端可以先 连续 发送 滑动窗口中的 NNN 帧 数据帧 , 提高了信道利用率 ;

② 缺点 : 选择重传时 , 将某些正确发送的数据帧进行了重传 , 降低了传输效率 ;

为了解决上述弊端 , 引入了 选择重传协议 ;

【计算机网络】数据链路层 : 后退 N 帧协议 GBN ( 滑动窗口 | 发送窗口长度 | “发送方“ 累计确认、超时机制 | “接收方“ 按序接收、确认帧发送机制 | 计算示例 )★相关推荐

  1. 【计算机网络】数据链路层 : 流量控制 ( “流量控制“ 机制 | 停止-等待协议 | 滑动窗口协议 | 后退 N 帧协议 GBN | 选择重传协议 SR | 滑动窗口 与 流量控制、可靠传输 )

    文章目录 一. 数据链路层 流量控制 二. 数据链路层 与 传输层 流量控制 机制 三. 数据链路层 流量控制 四. 数据链路层 流量控制 方法分类 五.停止等待协议 六.滑动窗口协议 七.滑动窗口协 ...

  2. 计算机网络数据链路层 --- 后退n帧协议(GBN)

    滑动窗口 发送窗口 发送方维持一组连续的允许发送的帧的序号 接收窗口 接收方维持一组连续的允许接收帧的序号 发送过程 如图,假如发送方的发送窗口大小是6,首先发送0号帧,并建立0号帧的副本,防止帧丢失 ...

  3. 计算机网络之数据链路层:6、后退N帧协议(GBN)

    数据链路层:6.后退N帧协议 思维导图: 后退N帧协议: GBN发送方必须相应的三件事: GBN接收方必须相应的三件事: 例: 发送窗口的大小规定: 总结: GBN的效率: 思维导图: 后退N帧协议: ...

  4. 后退N帧协议-GBN

    GBN发送方要做的事: 1.上层的调用: 上层要发送的数据的时候,发送方先检查窗口有没有满,如果没有满,则就产出一个帧并将其发送:如果窗口满了,发送方只需将数据返回给上层,暗示上层窗口已满,上层等一会 ...

  5. 3.4.3 后退N帧协议(GBN)

    3.4.3 后退N帧协议(GBN)

  6. 可靠传输的实现机制——回退N帧协议GBN(Go Back N)

    可靠传输的实现机制--回退N帧协议GBN(Go Back N) 因为使用停等协议的发送方式,在发送过程中,信道利用率很低,如果出现超时重传,则信道利用率更低 如果可以同时发送很多个数据分组,采用一种流 ...

  7. 3.4.1 计算机网络之流量控制(停止-等待协议、滑动窗口、后退N帧协议GBN、选择重传协议SR)、滑动窗口、可靠传输机制

    文章目录 0.思维导图 1.什么是流量控制? 2.什么是可靠传输机制? 3.什么是滑动窗口机制? 4.可靠传输.流量控制.滑动窗口之间的关系 5.停止-等待协议 (1)为什么要有停止-等待协议? (2 ...

  8. 王道考研 计算机网络11 数据链路层 封装成帧 透明传输 流量控制 停止-等待协议 后退N帧协议GBN 选择重传协议SR

    第三章知识 数据链路层的基本概念 数据链路层功能概述 封装成帧 透明传输 什么数据都能传输 数据链路层的流量控制 流量控制方法 滑动窗口协议: 每一个小格标识一个帧 发送窗口:发送端正在处理的发送的数 ...

  9. 【计算机网络-数据链路层】介质访问控制协议(MAC协议)

    文章目录 1 静态划分信道--信道划分 MAC 协议 1.1 频分多路复用(FDM)--"并行" 1.2 时分多路复用(TDM)--"并发" 1.2.1 同步时 ...

最新文章

  1. Firefox beta 开始原生支持 Windows 10 ARM64
  2. ffmpeg编译 c++ 常量中有换行符
  3. 小学计算机管理员培训,中小学计算机管理员培训心得体会-20210401075623.docx-原创力文档...
  4. 用java写一个日历_2017.12.2 用java做一个日历
  5. 手机app常见bug积累
  6. delphi mysql dll直接_十万火急!!!那位高手用过libmysql.dll直接连接MySql数据库?如何将二进制文件保存到blob字段中? (60分)...
  7. 使用数据库保存Asterisk sip账号信息(odbc方式)
  8. wikioi 1294 全排列 dfs
  9. ORACLE查询不可用状态索引
  10. Linux环境下实现一个简单socket通信
  11. python学习笔记之数据类型(二)
  12. C++11的std::declval与decltype
  13. 电厂计算机室建议,火力发电厂计算机室、控制室、电子设备间,应设排烟设施,机械排烟系统的排烟量可按房间换气次数每小时不小于( )次计算。...
  14. 水电缴费系统php源码_水电缴费管理系统(示例代码)
  15. 操作简单、功能务实——四维星软件
  16. 区块链技术驱动商业银行开展供应链金融业务的创新路径
  17. 1Cr11Ni2W2MoV
  18. 如何使用PS修改图片背景
  19. 魔兽世界诞生记(上)
  20. 机器学习平台基础知识

热门文章

  1. QPushButton禁用状态文字变形变粗
  2. vue项目接入阿里云智能验证
  3. Java生成二维码海报
  4. 开源之夏 2022 重磅来袭,欢迎报名 Casbin社区项目
  5. Multisim仿真 错误Error: Shorted voltage sources found: Vfgen_src_negative
  6. click事件不生效
  7. OpenGL ES EGL eglCreatePbufferSurface
  8. java书写开头,JAVA代码书写规范汇总详解
  9. matlab中asc格式,matlab将图片转换成asc码txt文本格式 | 学步园
  10. Windows下DOS窗口修改编码