【计算机网络笔记】传输层——可靠数据传输之流水线机制与滑动窗口协议

news2024/11/26 5:23:29

系列文章目录

什么是计算机网络?
什么是网络协议?
计算机网络的结构
数据交换之电路交换
数据交换之报文交换和分组交换
分组交换 vs 电路交换
计算机网络性能(1)——速率、带宽、延迟
计算机网络性能(2)——时延带宽积、丢包率、吞吐量/率
计算机网络体系结构概念
OSI参考模型基本概念
OSI参考模型中非端-端层(物理层、数据链路层、网络层)功能介绍
OSI参考模型中端-端层(传输层、会话层、表示层、应用层)功能介绍
TCP/IP参考模型基本概念,包括五层参考模型
网络应用的体系结构
网络应用进程通信
网络应用对传输服务的需求
Web应用之HTTP协议(涉及HTTP连接类型和HTTP消息格式)
Cookie技术
Web缓存/代理服务器技术
传输层服务概述、传输层 vs. 网络层
传输层——多路复用和多路分用
传输层——UDP简介
传输层——可靠数据传输原理之Rdt协议


  • 系列文章目录
  • 流水线机制与滑动窗口协议
  • GBN(Go-Back-N)协议
  • SR(Selective Repeat)协议


流水线机制与滑动窗口协议

流水线机制允许发送方在收到ACK之前连续发送多个分组。这样链路上同时就可以有很多分组,那么资源的利用率整体就提高了。实现流水线机制需要:

  • 更大的序列号范围。原来的0和1这两个序列显然不够用了
  • 在发送方和/或接收方需要更大的存储空间以缓存分组

下面是Rdt协议与流水线机制的一个简单对比图:

在这里插入图片描述

在计算机网络中要想实现流水线机制就需要滑动窗口协议

  • 窗口是一个抽象的概念,用它管理那些发出去但还没确认的分组。所以窗口也是允许使用的序列号范围。所以如果窗口窗口尺寸为 N,意味着最多有 N个等待确认的消息。
  • 滑动窗口。是因为随着协议的运行,窗口在序列号空间内向前滑动。
  • 滑动窗口协议:GBN, SR

如下图所示,窗口尺寸是N,窗口左边(绿色的)是那些已经发出且确认的分组,窗口内黄色部分的是发出去但没确认的,如果收到最左边黄色的分组的确认消息,这个窗口就可以向右边滑了,蓝色的代表还可以使用的序列号范围。

在这里插入图片描述


GBN(Go-Back-N)协议

发送方:

  • 分组头部包含k-bit序列号
  • 窗口尺寸为 N,最多允许 N个分组未确认
  • 采用累积确认的机制。也就是说要确认到序列号n(包含n)的分组均已被正确接收
  • 为空中的分组设置计时器(timer)

接收方:

  • ACK机制: 发送拥有最高序列号的、已被正确接收的分组的ACK
  • 对于乱序到达的分组:直接丢弃,并不会缓存这些已经收到的但不是期望的分组。

SR(Selective Repeat)协议

GBN的缺陷:在重传的时候会重传很多分组,比如当N这个序列号的分组丢失的时候,会重传N以及N以后那些没确认的分组。这样会影响性能。改进的方法是不采用累积确认的机制,而是单个确认,同时也不丢弃那些乱序的分组,而是缓存起来。这就是SR协议。

  • 接收方对每个分组单独进行确认。并且设置缓存机制,缓存乱序到达的分组
  • 发送方只重传那些没收到ACK的分组。这时需要为每一个分组设置定时器,当某个分组超时后,就重传这个分组
  • 发送方窗口没什么变化,依旧是N个连续的序列号,限制已发送且未确认的分组

SR比GBN多了一个接收方的窗口。

窗口前面的是已经接收到的并且按序到达的分组,窗口中灰色的是希望收到但没有收到的,红色的是乱序到达的分组,对于乱序到达的分组,接收方将它们缓存起来并且发送了ACK,当这些分组前面的分组都到达的时候就可以一起提交给上层。蓝色的是还可以接收的序列号范围。

在这里插入图片描述

同时要注意发送方的窗口和接收方的窗口是不同步的。彼此并不知道对方的窗口处于什么状态。

下面是一个示例:

在这里插入图片描述

同时还要注意:当序列号有k个时,发送方窗口的尺寸和接收方窗口的尺寸和不能大于2^k。

在这里插入图片描述

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

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

相关文章

基于tpshop开发多商户源码支持手机端+商家+门店 +分销+淘宝数据导入+APP+可视化编辑

tpshop多商户源码,tpshop商城源码,tpshop b2b2c源码-支持手机端商家门店 分销淘宝数据导入APP可视化编辑 tpshop商城源码算是 thinkphp框架里做的比较早 比较好的源码了,写法简明 友好面向程序猿。 这是一款前几年的版本 虽然后台看着好了些,丝毫不影响…

【Linux】关于Nginx的详细使用,部署项目

前言: 今天小编给大家带来的是关于Nginx的详细使用,部署项目,希望可以给正在学习,工作的你带来有效的帮助! 一,Nginx简介 Nginx是一个高性能的开源Web服务器和反向代理服务器。它最初由Igor Sysoev在2004年…

探讨jdk源码中的二分查找算法返回值巧妙之处

文章目录 1.什么是二分查找算法1.1 简介1.2 实现思路 2.二分查找的示例3.jdk 中的 Arrays.binarySearch()4.jdk 中核心二分查找方法解析4.1 为什么 low 是插入点4.2 为什么要进行取反:-(low 1)4.3 为什么不直接返回 插入点 low 的相反数&…

MySQL学习-获取排名,按行更新

获取排名 需求:获取分类平均值的名次? 比如10个班级的平均分,按照班级名称排序,后面跟着名次。 记录表:student ; 字段:banji 班级;AvgS 平均分;pm 排名&#xff1b…

解决问题Conda:CondaValueError: Malformed version string ‘~’ : invalid character(s)

解决问题Conda:CondaValueError: Malformed version string ‘~’ : invalid character(s) 背景 今天使用Conda构建项目运行环境的时候报错::CondaValueError: Malformed version string ‘~’ : invalid character(s) ##报错问题 在安装te…

Express框架开发接口之书城商店原型图

这是利用Axure画的,简单画一下原型图,根据他们的业务逻辑我们完成书城商店API开发 首页 分类 购物车 个人中心

探索C++中的不变之美:const与构造函数的深度剖析

W...Y的主页😊 代码仓库分享💕 🍔前言: 关于C的博客中,我们已经了解了六个默认函数中的四个,分别是构造函数、析构函数、拷贝构造函数以及函数的重载。但是这些函数都是有返回值与参数的。提到参数与返回…

Spring Security 6.1.x 系列(4)—— 基于过滤器链的源码分析

一、自动配置 在 Spring Security 6.1.x 系列(1)—— 初识Spring Security 中我们只引入spring-boot-starter-security 依赖,就可以实现登录认证,这些都得益于Spring Boot 的自动配置。 在spring-boot-autoconfigure模块中集成了…

MyBitis自动拼接了LIMIT

1.前言 最近系统在运营的过程中发现一个很奇怪的问题,莫名其妙的SQL语句会被拼接上一小段SQL,但是发现这被拼接的SQL并不是当前这个API所使用的SQL,因此导致select语句出错。 2.排查思路 2.1.第一步 首先我排查了打印日志里面的错误对应的…

Louis 谈 Restaking:去中心化信任的交流电时刻

人际信任是社会资本的主要形态。信任促成协作(主要是经济交易),是人类文明的基石。 当全球已有数十亿人接入互联网,协作的物理限制已经消除,但传统的人际信任仍然局限于家族、长期积累的声誉和长期相处形成的私人关系…

【JAVA学习笔记】55 - 集合-Map接口、HashMap类、HashTable类、Properties类、TreeMap类(难点)

项目代码 https://github.com/yinhai1114/Java_Learning_Code/tree/main/IDEA_Chapter14/src/com/yinhai/map_ Map接口 一、Map接口的特点(难点) 难点在于对Node和Entry和EntrySet的关系 注意:这里讲的是JDK8的Map接口特点 Map java 1) Map与Collect…

【Mquant】2、量化平台的选择

文章目录 一、选择因素二、常见的量化平台三、为什么选择VeighNa?四、参考 一、选择因素 功能和工具集:量化平台应该提供丰富的功能和工具集,包括数据分析、策略回测、实时交易等。不同的平台可能有不同的特点和优势,可以根据自己…

【数据库】形式化关系查询语言(一):关系代数Relational Algebra:基本运算、附加关系代数、扩展的关系代数

目录 一、关系代数Relational Algebra 1. 基本运算 a. 选择运算(Select Operation) b. 投影运算(Project Operation) 组合 c. 并运算(Union Operation) d. 集合差运算(Set Difference Op…

Vue3.0 reactive与ref :VCA模式

简介 Vue3 最大的一个变动应该就是推出了 CompositionAPI,可以说它受ReactHook 启发而来;它我们编写逻辑更灵活,便于提取公共逻辑,代码的复用率得到了提高,也不用再使用 mixin 担心命名冲突的问题。 ref 与 reactive…

pytorch学习第五篇:NN与CNN代码实例

这篇文章详细介绍了全链接神经网络实现方法,以及卷积的实现方法。最后我们发现,卷积的实现方法与全链接大同小异,因为 torch 为我们做了很多工作,我们来看看这两个有什么区别。 我们使用 torch 框架来实现两种神经网络,来对图形进行分类。 NN 首先我们引入依赖包 impor…

归并排序深度剖析

目录 一、什么是归并排序? 二、归并排序的实现 三、归并排序非递归 一、什么是归并排序? 归并排序是建立在归并操作上的一种有效,稳定 的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型…

stm32 模拟spi

目录 简介 spi物理层 连接方式 框图 协议层: 数据处理 传输模式 模式0 起始和停止信号 发送和接收数据 模式1 模式2 模式3 总结 简介 spi物理层 SPI( Serial Peripheral Interface, 串行外设接口)是一种全双工同步…

Vlice DM蓝牙5.2双模热插拔PCB

键盘使用说明索引(均为出厂默认值) 软件支持(驱动的详细使用帮助)一些常见问题解答(FAQ)首次使用步骤蓝牙配对规则(重要)蓝牙和USB切换键盘默认层默认触发层0的FN键配置的功能默认功…

【51单片机】LED与独立按键(学习笔记)

一、点亮一个LED 1、LED介绍 LED:发光二极管 补:电阻读数 102 > 10 00 1k 473 > 47 000 2、Keil的使用 1、新建工程:Project > New Project Ctrl Shift N :新建文件夹 2、选型号:Atmel-AT89C52 3、xxx…

【Linux】Linux网络总结图详解

网络是进行分层管理的应用层HTTPHTPPS 传输层(UDP、TCP)UDPTCPTCP和UDP对比 网络层IP 数据链路层(MAC)/物理层(以太网)以太网通信(负责网卡之间) 网络是进行分层管理的 应用层 HTTP…