【计算机网络】数据链路层-滑动窗口协议

news2025/6/9 12:21:45

数据链路层滑动窗口协议

1. 三种协议对比表

特性停止-等待协议GBN协议SR协议
窗口大小发送 = 1,接收 = 1发送 = W (1<W≤2ⁿ-1),接收 = 1发送 = C,接收 = R
确认方式单个确认累积确认选择性确认
重传策略超时重传回退N帧重传选择性重传
接收缓冲区不需要不需要需要
信道利用率最低中等最高
典型窗口限制-W ≤ 2ⁿ-1C + R ≤ 2ⁿ 且 R ≤ C 且 R ≤ 2ⁿ⁻¹

在这里插入图片描述

2. 关键机制图解

2.1 GBN协议运行流程

Sender Receiver 帧0-7 收到0,2,3(1的确认丢失) ACK(累积确认0123已收到) 只需重传4-7 Sender Receiver

图片解析:连续ARQ协议中,接收方累积确认是对按序到达的最后一个分组的确认:
发 0到7
只收到 0 2 3确认
说明:0123已被接收
只需要重传4 5 6 7
因为1的确认只是丢了,不代表没收到1

2.2 SR协议运行流程

Sender Receiver 帧0-2 收到1(0,2的确认丢失) ACK(只确认1) 重传0 和 2 Sender Receiver

图片解析:SR采用逐个确认
发 0到2
只收到1的确认
说明:0 2 超时
因此重传0 2
此时1的确认不是累积确认,可以认为0丢了

3. 窗口大小计算

3.1 最大窗口限制

协议发送窗口(W)接收窗口( R)约束条件
GBNW ≤ 2ⁿ-1R=1-
SRW ≤ 2ⁿ⁻¹R ≤ 2ⁿ⁻¹W + R ≤ 2ⁿ

示例(n=3位序号):

  • 此时用GBN,能得到最大窗口:7
  • SR典型配置:W=4, R=4,且这里W拉到最大只能是6,一样小于GBN的7

3.2 信道利用率

在这里插入图片描述
在这里插入图片描述

流量控制-最大信道利用率公式
W发送窗口大小 × t1发数据发送时延 /( t1 + RTT往返传播时延 + t2确认数据发送时延 )

所以W发送窗口要大,利用率才会变高。
t1:发送方的发送时延
t2:确认方的发送时延

4. 典型计算题

4.1 最大利用率比较

给定条件:

  • 帧序号3位
  • 忽略确认帧传输时间
  • 发送窗口=接收窗口

计算结果:

协议最大窗口利用率排序
停止-等待W=1U1最低
GBNW=7U2最高
SRW=4U1<U3<U2

4.2 流水线传输时延

题目

  • 文件大小:1MB
  • 带宽:100Mbps
  • 分组大小:1000B
  • 计算总时延

解答:发送总时延(流水线)= 文件的发送时延 + 一个分组的转发时延 = 1MB/100Mb/s + 1000B/100Mb/s = 80.08ms

\begin{aligned}
t_{total} &= \frac{1MB}{100Mbps} + \frac{1000B}{100Mbps} \\
&= \frac{8 \times 10^6}{100 \times 10^6} + \frac{8000}{100 \times 10^6} \\
&= 0.08s + 0.00008s \\
&= 80.08ms
\end{aligned}

5. 易错点

  1. 确认机制混淆

    • GBN的ACKn表示"期望收到n号帧"(即n-1及之前已收到
    • SR的ACKn表示"n号帧已收到"
  2. 窗口大小限制

    • SR协议要求W + R ≤ 2ⁿ(不是W ≤ 2ⁿ-1)
    • 实际应用中常取W = R = 2ⁿ⁻¹
  3. 性能比较

    • 信道利用率:GBN > SR(当窗口相同时)
    • 实际效率:SR > GBN(因减少不必要的重传)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2405350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在linux系统上,如何安装Elasticsearch?

1.问题描述 当尝试连接时报错&#xff0c;报错内容为&#xff1a; elastic_transport.ConnectionError: Connection error caused by: ConnectionError(Connection error caused by: NewConnectionError(<urllib3.connection.HTTPConnection object at 0x7fd808b179d0>:…

wpf Behaviors库实现支持多选操作进行后台绑定数据的ListView

<ListView ItemsSource"{Binding SchemeItems}" SelectionMode"Extended" VerticalAlignment"Stretch" HorizontalAlignment"Stretch"><ListView.ContextMenu><ContextMenu><MenuItem Header"删除" …

《Vuejs设计与实现》第 8 章(挂载与更新)

目录 8.1 挂载子节点与属性 8.2 HTML Attributes 与 DOM Properties 8.3 设置元素属性的正确方式 8.4 处理 class 属性 8.5 卸载操作 8.6 区分 vnode 类型 8.7 事件处理优化 8.8 事件冒泡与更新时机问题 8.9 子节点的更新 8.10 文本节点和注释节点 8.11 片段&#xf…

Ubuntu20.04中 Redis 的安装和配置

Ubuntu20.04 中 Redis 的安装和配置 Ubuntu 安装 MySQL 及其配置 1. Redis 的安装 更新系统包列表并安装 Redis &#xff1a; # 更新包管理工具 sudo apt update# -y&#xff1a;自动确认所有提示&#xff08;非交互式安装&#xff09; sudo apt install -y redis-server测…

实验四:图像灰度处理

实验四 图像处理实验报告 目录 实验目的实验内容 原理描述Verilog HDL设计源代码Testbench仿真代码及仿真结果XDC文件配置下板测试 实验体会实验照片 实验目的 在实验三的基础上&#xff0c;将图片显示在显示器上&#xff0c;并进行灰度处理。 实验内容 原理描述 1. 图片的…

解析“与此站点的连接不安全”警告:成因与应对策略

一、技术本质&#xff1a;SSL/TLS协议的信任链断裂 现代浏览器通过SSL/TLS协议建立加密通信&#xff0c;其核心在于证书颁发机构&#xff08;CA&#xff09;构建的信任链。当用户访问网站时&#xff0c;浏览器会验证服务器证书的有效性&#xff0c;包括&#xff1a; 证书链完…

⚡️ Linux Docker 基本命令参数详解

&#x1f433; Linux Docker 基本命令参数详解 &#x1f4d8; 1. Docker 简介 Docker 是一个开源的容器化平台&#xff0c;它通过将应用及其依赖打包到一个轻量级、可移植的容器中&#xff0c;从而实现跨平台运行。Docker 采用 C/S 架构&#xff0c;服务端称为 Docker Daemon&a…

做题笔记(ctfshow)

一。ctfshow web13 文件扫描 存在upload.php.bak <?php header("content-type:text/html;charsetutf-8");$filename $_FILES[file][name];$temp_name $_FILES[file][tmp_name];$size $_FILES[file][size];$error $_FILES[file][error];$arr pathinfo($fi…

Agent短期记忆的几种持久化存储方式

今天给大家讲一下关于Agent长期对话的几种持久化存储方式&#xff0c;之前的文章给大家说过短期记忆和长期记忆&#xff0c;短期记忆基于InMemorySaver做checkpointer&#xff08;检查点&#xff09;&#xff0c;短期记忆 &#xff08;线程级持久性&#xff09; 使代理能够跟踪…

Git 常见操作

目录 1.git stash 2.合并多个commit 3. git commit -amend (后悔药) 4.版本回退 5.merge和rebase 6.cherry pick 7.分支 8.alias 1.git stash git-stash操作_git stash 怎么增加更改内容-CSDN博客 2.合并多个commit 通过git bash工具交互式操作。 1.查询commit的c…

从 ClickHouse、Druid、Kylin 到 Doris:网易云音乐 PB 级实时分析平台降本增效

网易云音乐基于 Apache Doris 替换了早期架构中 Kylin、Druid、Clickhouse、Elasticsearch、HBase 等引擎&#xff0c;统一了实时分析架构&#xff0c;并广泛应用于广告实时数仓、日志平台和会员报表分析等典型场景中&#xff0c;带来导入性能提升 3&#xff5e;30 倍&#xff…

Facebook接入说明

Facebook 原生 Messenger 聊天消息接入到一洽对话中 1、创建 Facebook 主页 进入 https://www.facebook.com/pages/create 页面根据提示创建主页&#xff08;如果已经有待用主页&#xff0c;可跳过&#xff09; 2、授权对话权限 1、向您的一洽负责人获取 Facebook 授权链接 2、…

Grafana 地图本土化方案:使用高德地图API平替GeoMap地图指南

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] &#x1f4e2; 大家好&#xff0c;我是 WeiyiGeek&#xff0c;一名深耕安全运维开发&#xff08;SecOpsDev&#xff09;领域的技术从业者&#xff0c;致力于探索DevOps与安全的融合&#xff08;De…

3 个优质的终端 GitHub 开源工具

1、Oh My Zsh Oh My Zsh 是一个帮助你管理和美化 zsh 终端的开源工具。它让你的终端更炫酷、更高效。安装后&#xff0c;你可以快速使用各种插件和主题&#xff0c;比如常见的 git 命令简化、支持多种编程语言工具等&#xff0c;每次打开终端都会有惊喜。无论你是开发者还是普…

亚马逊AWS云服务器高效使用指南:最大限度降低成本的实战策略

对于初次接触云计算的企业或个人开发者而言&#xff0c;亚马逊云服务器&#xff08;Amazon EC2&#xff09;的配置与成本控制往往面临双重挑战&#xff1a;既要理解数百种实例规格的技术参数&#xff0c;又要避免因配置不当导致的资源浪费。本文将深入剖析AWS EC2的核心使用场景…

Android设备推送traceroute命令进行网络诊断

文章目录 工作原理下载traceroute for android推送到安卓设备执行traceroutetraceroute www.baidu.com Traceroute&#xff08;追踪路由&#xff09; 是一个用于网络诊断的工具&#xff0c;主要用于追踪数据包从源主机到目标主机所经过的路由路径&#xff0c;以及每一跳&#x…

github开源协议选择

文章目录 怎么选协议宽松型协议 Permissive Licenses传染型协议 怎么选协议 希望代码被广泛使用&#xff0c;允许闭源 MIT、Apache 2.0、BSD需要专利保护 Apache 2.0强制开源衍生作品 GPL、AGPL开发库&#xff0c;允许闭源调用 LGPL云服务项目&#xff0c;防止白嫖 AGPL企业级…

详解Jenkins Pipeline 中git 命令的使用方法

在 Jenkins Pipeline 中&#xff0c;git 命令是用于从版本控制系统&#xff08;如 Git&#xff09;拉取代码的核心步骤。其用法灵活&#xff0c;支持多种配置参数&#xff0c;但需要遵循 Jenkins 流水线语法规范。 一、基础语法 1. 声明式流水线&#xff08;Declarative Pipe…

【Mini-F5265-OB开发板试用测评】显示RTC日历时钟

一、前言 本章节承接上期的【Mini-F5265-OB开发板试用测评】硬件SPI方式驱动LCD屏帖子上。灵动微官方提供的“LibSamples_MM32F5260_V0.10.2”SDK中包含一个RTC日历的参考例程&#xff0c;因此将该功能移植到上期工程中&#xff0c;即可达成在LCD屏上显示RTC日历时钟。 官方提…

Github 2025-06-05 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2025-06-05统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1Go编程语言:构建简单、可靠和高效的软件 创建周期:3474 天开发语言:Go协议类型:BSD 3-Clause “New” or “Revise…