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

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

一、 滑动窗口协议引入


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



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



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


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


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



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


后退 N NN 帧协议 ( GBN )

选择重传协议 ( SR )





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


后退 N 帧协议 滑动窗口 :


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


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






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


后退 N 帧协议 运行过程 :


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


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


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


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


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


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


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


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


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






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


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


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


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


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


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






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


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


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


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




A C K ACKACK 确认帧 事件 :


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


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




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


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


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






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


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


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


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



示例 :


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


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





目录
相关文章
|
7天前
|
存储 安全 网络安全
云端防御战线:融合云计算与先进网络安全策略
【5月更文挑战第17天】 随着企业纷纷迁移至云平台,数据和服务的集中化带来了前所未有的便利性。然而,这种集中化也使得网络攻击的潜在影响范围和危害程度急剧扩大。本文探讨了在快速发展的云计算环境中,如何通过综合运用最新的网络安全技术和策略来保障信息资产的安全。重点讨论了多租户环境下的数据隔离问题、加密技术的应用、入侵检测系统的集成以及安全事件管理和响应机制。同时,分析了未来云计算安全领域可能面临的新挑战,并提出了相应的应对措施。
|
8天前
|
缓存 安全 前端开发
探索HTTP协议:网络通信的基石
探索HTTP协议:网络通信的基石
|
2天前
|
人工智能 安全 网络安全
云端防御:融合云计算与网络安全的未来策略
在数字化的浪潮中,云计算已成为企业存储、处理和分析数据的首选平台。随着云服务的普及,网络安全威胁亦随之增加,迫使信息安全专家不断革新防御手段。本文探讨了云计算环境下的安全挑战,分析了当前网络安全技术在云服务中的应用,并提出了结合人工智能和机器学习等先进技术来强化云端防御的策略。文章旨在为读者提供一个关于如何在享受云计算便利的同时确保网络和信息安全的全面视角。
|
2天前
|
监控 安全 网络安全
云端守护者:融合云计算与先进网络安全策略
【5月更文挑战第22天】 在数字化进程加速的今天,云计算以其灵活性、可扩展性和成本效益成为企业IT架构的核心。随之而来的是对网络安全的严峻挑战,特别是在多租户环境中数据隔离、访问控制和威胁防护等方面。本文将探讨当前云服务平台中存在的安全挑战,分析网络攻击者的常见手段,并重点介绍如何通过融合传统与现代的安全技术,包括身份验证、加密技术和智能监控等,来构建一个既灵活又安全的云计算环境。
|
2天前
|
JSON 安全 网络协议
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
【Linux 网络】网络基础(二)(应用层协议:HTTP、HTTPS)-- 详解
|
4天前
|
网络协议 Python
在python中利用TCP协议编写简单网络通信程序,要求服务器端和客户端进行信息互传。 - 蓝易云
在这个示例中,服务器端创建一个socket并监听本地的12345端口。当客户端连接后,服务器发送一条欢迎消息,然后关闭连接。客户端创建一个socket,连接到服务器,接收消息,然后关闭连接。
56 0
|
8天前
|
机器学习/深度学习 JSON PyTorch
图神经网络入门示例:使用PyTorch Geometric 进行节点分类
本文介绍了如何使用PyTorch处理同构图数据进行节点分类。首先,数据集来自Facebook Large Page-Page Network,包含22,470个页面,分为四类,具有不同大小的特征向量。为训练神经网络,需创建PyTorch Data对象,涉及读取CSV和JSON文件,处理不一致的特征向量大小并进行归一化。接着,加载边数据以构建图。通过`Data`对象创建同构图,之后数据被分为70%训练集和30%测试集。训练了两种模型:MLP和GCN。GCN在测试集上实现了80%的准确率,优于MLP的46%,展示了利用图信息的优势。
14 1
|
4天前
|
消息中间件 Java Linux
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
2024年最全BATJ真题突击:Java基础+JVM+分布式高并发+网络编程+Linux(1),2024年最新意外的惊喜
|
2天前
|
存储 网络协议 Unix
【Linux 网络】网络编程套接字 -- 详解
【Linux 网络】网络编程套接字 -- 详解
|
2天前
|
存储 网络协议 Linux
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)
【Linux 网络】网络基础(一)(局域网、广域网、网络协议、TCP/IP结构模型、网络传输、封装和分用)-- 详解(下)