控制传输协议差错恢复方法 滑动窗口协议 GBN(Go-Back-N)回退N步 和 SR(Selective Repeat)选择重传 对比

2023-11-14

对比

对比方面 GBN SR TCP
定时器 一个滑动窗口一个定时器 每个分组都有定时器 一个滑动窗口一个定时器
确认 累积确认 选择确认 累积确认
重传 重传滑动窗口所有未被确认的分组 重传超时的分组 重传base处分组
对待乱序分组 丢弃 缓存在缓冲区 缓存在缓冲区,并发送冗余ACK,触发快速重传

传输控制协议中流水线(pipelining)差错恢复方法

回退N步GBN(Go-Back-N)

发送方

  1. 维护两个变量base和nextseqnum,base代表滑动窗口中第一个发送但并未被确认的分组序号,nextseqnum代表滑动窗口中第一个未被发送的分组序号
  2. nextseqnum - base就是窗口长度,如果窗口长度到达给定最大值,不会再接收上层的数据
  3. 采用累积确认,即发送方接收到接收方发送的大于base的确认号n,会把n到base之间的所有分组全部确认收到,只有被确认后base才能增大,nextseqnum才能增大,才能发送更多分组
  4. 当出现超时事件,会重传窗口中所有已经发送但未被确认的分组,即base到nextseqnum序号之间的分组,这个超时事件指的是发送base分组时开启的定时器超时,一个滑动窗口多个分组只用一个定时器

接收方

  1. 只需要维护一个变量expectedseqnum,expectedseqnum代表下一个期望收到的分组序号
  2. 当收到大于expectedseqnum序号的分组,即乱序分组,会直接丢弃乱序分组

选择重传SR(Selective Repeat)

发送方

  1. 维护一个滑动窗口(相对于字节数组)和两个变量base和nextseqnum,base和nextseqnum和上面一样
  2. 不采用累积确认,滑动窗口中每个分组都对应一个ack确认,所以base后面的分组可能在base之前被确认,但是如果base没有被确认滑动窗口无法向右移动,也无法发送更多数据
  3. 滑动窗口中每个分组都有一个定时器,当出现超时,只重传对应超时的分组

接收方

  1. 维护一个乱序分组缓冲区和rev_base、rev_base+N-1两个变量,如果在[rev_base, rev_base+N-1]范围内的分组被正确接收,则缓存该分组,并发送该分组的ack,如果序号恰好等于rev_base则将以前缓存的和rev_base连续序号的分组一起提交到上一层,然后窗口可以右移接收更多的数据
  2. 序号在[rev_base -N, rev_base-1]内的分组被收到,也必须发送一个ACK,不然发送方的滑动窗口无法向右移动

TCP 选择确认(Selective acknowledgment)

发送方

  1. 仅需维护已经发送过但未被确认的字节的最小序号SendBase和下一个要发送的字节序号NextSeqNum,这和GBN一样
  2. 采用累积确认
  3. 只有一个定时器,但超时只重传序号为SendBase的分组,在收到ack定时器重新刷新用来记录后一个分组的超时
  4. 采用快速重传,即判断分组比特错误被丢弃或者丢包(路由器排队缓存已满丢弃数据包)的依据不再只有超时,还有冗余ACK,在接收方接到乱序报文时会发送最近一个正序收到的报文的ACK,即冗余ACK,当收到3个冗余ACK时(说明有3个冗余报文被接收方接收),会直接重传SendBase序号分组

接收方

  1. 维护一个乱序分组缓冲区和rev_base,不丢弃失序报文,这和SR一样
  2. 收到乱序报文,会发送最近一个正序收到的报文的ACK

参考
《计算机网络 自顶向下方法》

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

控制传输协议差错恢复方法 滑动窗口协议 GBN(Go-Back-N)回退N步 和 SR(Selective Repeat)选择重传 对比 的相关文章

  • ios 微信小程序 chooseImage 相机拍照跳转页面崩溃

    问题描述 功能需求 拍照或选择图片 然后跳转页面裁剪上传头像 一开始使用 chooseImage 本人的小小安卓机和测试的ios手机都是没有问题的 后来同事的 iphone 13 mini 一试拍照跳转页面就崩溃了 一开始一筹莫展还在各处搜
  • angular入门

    架构模式 MVC gt MVP gt MVVM angular cli angular cli angular脚手架 一键构建angular项目 常用指令 ng help 查看所有指令 ng new projectName 创建angula
  • kafka实践(一):Kafka入门经典教程(转贴)

    原blog 地址 http blog csdn net hmsiwtv article details 46960053 问题导读 1 Kafka独特设计在什么地方 2 Kafka如何搭建及创建topic 发送消息 消费消息 3 如何书写K

随机推荐

  • java图书管理系统(IO流)

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 基本结构 一 图书信息管理 1 book类 2 booklist类 1 add 2 query 3 sort 4 change 5 delete 6 write 和
  • 手把手带你做项目2:搜索引擎(附源码)

    Java API 文档搜索引擎 1 项目介绍 1 认识搜索引擎 2 搜索的核心思想 3 项目的目标 2 项目准备 1 需要的资源 2 创建web项目 3 开发步骤 1 创建三个 JavaBean 公共模块 2 预处理 解析本地 html 文
  • Unity中的动画系统

    学习动画系统过程中的一些笔记 概述 Unity 的动画系统基于动画剪辑 Animation Clips 的概念 每个动画剪辑可以被认为是一个单一的线性记录 由动画状态机 Animator Controller 将一个个线性记录组成类似结构化
  • c语言——结构体数组——学生成绩表

    例题详解 1 在主函数中定义结构体数组 struct student stutable 10 struct student int stunum 学号 char name 20 姓名 float examscore 考试成绩 float l
  • 解决Element-UI清空表单及验证不生效的问题

    问题描述 由于我将编辑与新增时 表单使用的是同一个data中的数据 这就导致出现了我点击了编辑后 再次点击新增时 出现了数据依旧是刚才编辑表单中的数据 解决办法 尝试一 不推荐 通过手动给表单中的字段赋值 期初时 能达到清除表单的效果 但是
  • Stable-diffusion支持Intel和AMD显卡加速出图的操作方法

    英伟达的显卡有CUDA加持Stable diffusion出图很快 但我无奈家徒四壁 只有AMD老显卡苦苦支撑着本不富裕的家庭 但是生活还是继续不是 来吧 兄弟 看看老显卡能不能加速出图就完事了 说明 我在MacOs上操作成功 同时我也加了
  • Java学生管理系统之查询与修改—Day06

    Java学生管理系统之查询与修改 Day06 1 说明 1 用户根据提示输入相应的数字选择功能 1 查看学生信息 2 输入学生Id删除对应学生 3 选择修改要修改的项目 01 Id 02 姓名 03 性别 04 年龄 2 实现思路 首先创建
  • 机器学习---普通线性回归模型(3)

    线性回归一般分为单变量线性回归和多变量线性回归 线性回归的预测效果很高 一 单变量线性回归 对于单变量线性回归 我们要做的就是怎么样通过学习得到一个假设函数 h 从而能给出房子的估值 假设函数的一般形式 参数 代价函数 拟合参数的标准 这边
  • 从WEB到内网&&信息收集&&SMB枚举&&SUID提权-------打靶经验分享

    OSCP靶机 Photographer 今天来打一个OSCP的靶机 难度中等 包含了端口探测 服务探测 ssh爆破 SMB枚举 文件上传绕过 suid提权等等 靶场难度中等偏高 需要收集两个flag 一个flag低权限shell就可以获取
  • 平时积累

    平时积累 1 相关命令 1 ll ltr 排序查看文件 2 grep r vim 3 pstack pid vim 显示每个进程的栈跟踪 4 ps auxf 5 gdb binary c core文件 查看core文件 gdb binary
  • HCIA综合实验

    1 网段分配 2 制作 R1 R2 LSW1 LSW2 ISP TELNET TEST1 TEST2
  • SSM项目操作的时候出现了confing/springmvc.xml报红解决办法

    今天想重温一下ssm 结果竟然出现了一点点麻烦 出现路径找不到问题 其实问题很简单 把配置文件放在主目录下就行了 我是把配置文件放在src config 就解决问题了哈哈哈
  • 京东

    01 京东AI项目实战课程安排 覆盖了从经典的机器学习 文本处理技术 序列模型 深度学习 预训练模型 知识图谱 图神经网络所有必要的技术 项目一 京东健康智能分诊项目 第一周 文本处理与特征工程 Bag of Words模型 从tf idf
  • 逆向地理编码(坐标-地址)

  • 华为OD机试 C++ 【符合要求的元组的个数】

    题目 代码 include
  • chrome谷歌浏览器取消网页所有剪切板的授权方法步骤

    描述 谷歌浏览器取消网页所有剪切板的授权方法步骤 步骤 地址栏输入 chrome settings content clipboard 选择 不允许网站查看您剪贴板中的文字或图片
  • 概率论07 联合分布

    我之前一直专注于单一的随机变量及其概率分布 我们自然的会想将以前的结论推广到多个随机变量 联合分布 joint distribution 描述了多个随机变量的概率分布 是对单一随机变量的自然拓展 联合分布的多个随机变量都定义在同一个样本空间
  • c语言多个字符颠倒输出,字符串中的每个单词倒序输出问题

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 include void sub reverse char int main char str 256 The only way to learn a new programming langu
  • K8s基础知识

    目录 K8s中文文档地址 K8s基础概念 什么是K8s K8s核心概念 K8s整体架构与核心组件 K8s常用命令 K8s 网络 同一个Pod中的容器通信 集群内Pod之间的通信 外部服务访问集群中的Pods 什么是Ingress Clust
  • 控制传输协议差错恢复方法 滑动窗口协议 GBN(Go-Back-N)回退N步 和 SR(Selective Repeat)选择重传 对比

    文章目录 对比 传输控制协议中流水线 pipelining 差错恢复方法 回退N步GBN Go Back N 发送方 接收方 选择重传SR Selective Repeat 发送方 接收方 TCP 选择确认 Selective acknow