数据通信——传输层TCP(可靠传输机制的滑动窗口)

引言

之前提到过拥塞问题,如果大量数据疯狂涌入,接收端无法及时处理就会导致数据丢包,从而使得通信受到干扰。之前的连续ARQ如果不加以节制,疯狂发送报文,接收端无法及时返回ACK就会导致网络瘫痪。

滑动窗口机制协议

    这个机制是用来改善吞吐量的一种技术,即容许发送方在接收任何应答之前传送附加的包。接收方告诉发送方在某一时刻能送多少包(称窗口尺寸)。

    好了,现在就可以定义滑动窗口机制了。(假定在全双工模式下)

    发送端:用来对发送端对发送的流量进行控制。我们来进行一个定义:设在我没有收到接收端发来ACK之前,我仅能在该窗口连续发送数据量的个数为WT。

    接收端:用来对接收端可接受的流量进行控制。我们在进行一个定义:设我可以从接收端最多接收数据的个数为WR。

传输延迟 (Tt)–—— 我们设数据包从发送端全部离开的时间为Tt。设定B 是链路的带宽,D 是要传输的数据大小,那么有公式:

Tt=D/B

传播延迟 (Tp) –——我们设主机将第一个字节传输到接收端的花费时间为Tp。它取决于距离(d)和波的传播速度(s)。则由公式:

Tp=d/s

有效带宽 (EB) 或吞吐量–——每秒发送的位数。

EB = 数据大小(D) / 总循环时间(Tt + 2*Tp)乘以和除以带宽 (B),EB= (1/(1+2a)) * B [ 使用 a = Tp/Tt= 效率 * 带宽

链路容量–——如果一个通道是全双工的,那么比特可以在两个方向上传输而不会发生任何冲突。通道/链路最多可容纳的位数是其容量。

容量 = 带宽 (B) * 传播 (Tp),对于全双工通道, 容量 = 2*带宽(B) * 传播(Tp)

效率–——定义为总有用时间与数据包总循环时间的比率。则有以下公式

总循环时间 = Tt(数据) + Tp(数据) + Tt(确认)+ Tp(确认) = Tt(数据) + Tp(数据) + Tp(确认) = Tt + 2*TP

    以上我们忽略了ACK的发送延迟,毕竟ACK很小!那么,我们就能计算出在理想全双工情况下的利用率为

E=WT×Tf/Tf+2Tp=WT/1+2a

其中a为a=Tp/Tf

窗口中的序号也起到了一定作用。序号需要在分组中传递,因此不允许无限增大。当序号位数=nbit时,接收窗口和发送窗口的最大值也随之改变。

一般的,WT+WR=2n,当然,WR和WT都要≥1.当n=1时,序号可在[0,1]中使用;当n>1时,序号可用在[0,2n-1]之间。通过范围中的筛选,我们可以计算出WT+WR的总和。 

后续 

    啊!这个东西可能单看有点迷惑,我犯懒了,停止等待协议、连续ARQ和滑动窗口,包括后面的超时与拥塞机制等应该放在一起讲。他们是共同为TCP服务的,而且密不可分。

    总的来说,使用滑动窗口机制就为了提供流量控制,防止运行较快的主机致使较慢主机的缓冲区溢出。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【开发语言】C语言与Python的互操作详解

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

鼠标悬停阴影的效果被旁边div挡住的解决办法

出现的问题 需求要求鼠标悬停某个图片上有阴影效果,但阴影被旁边相邻的div挡住了,如图所示 解决方案 给悬停的这块div增加2个css属性 $(this).css(position, relative); $(this).css(z-index, 200);新的效果如图所示 一直写后端,前端的…

【100天精通Python】Day50:Python Web编程_Django框架从安装到使用

目录 1 安装Django Web框架 2 创建一个Django 项目 3 数据模型 3.1 在应用程序的 models.py 文件中定义数据模 3.2 创建模型的迁移文件并应用 3.2.1 查询模型对象: 3.2.2 创建新模型对象: 3.2.3 更新模型对象: 3.2.4 删除模型对象&a…

【C++ 学习 ⑲】- 多态(下)

目录 一、虚函数表和多态的原理 1.1 - 虚函数表 1.2 - 多态的原理 二、单继承和多继承关系中的虚函数表 2.1 - 单继承关系中的虚函数表 2.2 - 多继承关系中的虚函数表 三、纯虚函数和抽象类 一、虚函数表和多态的原理 1.1 - 虚函数表 问:sizeof(b) 是多少&a…

【9月比赛合集】9场可报名的「创新应用」、「数据分析」和「程序设计」大奖赛,任君挑选!

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 创新应用赛(2场比赛)程序设计赛&#…

会话跟踪技术学习笔记(Cookie+Session)+ HTTP学习笔记

一、核心知识点(重点): 1.1 Cookie 1. Cookie:是一种客户端会话技术,数据会被保存在客户端,Cookie会携带数据访问服务器,用以完成一次会话内多次请求间的数据共享 2. 过程:浏览器…

Android 1.2 开发环境搭建

目录 1.2 开发环境搭建 1.JDK安装与配置 2.开发工具二选一 3.相关术语的解析 4.ADB命令行的一些指令 5.APP程序打包与安装的流程: 6.APP的安装过程: 7.本节小结 1.2 开发环境搭建 现在主流的Android开发环境有: ①Eclipse ADT SDK ②Android Stu…

数据库概念

定义: 数据库(Database 简称DB)是持久存储有组织/可共享数据/的容器 数据库管理系统(MySQL、Oracle、DB2)是操作/和管理数据库/的软件 分类: 关系(型)数据库 (MySQL、Oracle、SQL Server、SQLite、DB2) 非关系(型)数据库 (Redis…

长胜证券:华为“黑科技”点燃A股炒作激情

8月29日,在未举行相关发布会的情况下,华为新款手机Mate60Pro悄然上线开售,并在一小时内售罄。 金融出资报记者注意到,跟着商场对新机重视的继续发酵,其中的各种技能打破也愈加受到重视,其影响很快扩散到资…

C++ 学习之 构造函数 和 析构函数

前言 总的来说,构造函数负责对象的初始化,而析构函数负责对象的清理和资源释放。它们是C面向对象编程中非常重要的概念,用于管理对象的生命周期,确保对象在创建和销毁时都能够正确地进行初始化和清理。 正文 看代码 class perso…

python实现pdf双页文档转png图片,png图片裁剪为左右两等分,再合并为新的pdf单页文档

一、问题引入 现有pdf双页文档如下: 现按照以下页码次序对pdf双页文档进行裁剪和拼接,其中有两点需要特别注意,一是封面页只裁剪中间部分,二是文档是从右往左的顺序排版的 二、python程序 import os import office from PIL …

STM32G030F6 (SOP-20)Cortex ® -M0+, 32KB Flash, 8KB RAM, 17 GPIOs

淘宝淘了一批 STM32G030F6P6 SOP20.先备注一下, 还没想到能干嘛用. 手上的 STM32F103C6T6还剩一些. 一堆 “淘宝原厂STM32F103C8T6”, 还烫着手. 理解信息: ( 逐步补充 ) System Clock GPIOs GPIOs 17 PA[7:0] : 8bits USART Timer ADC I2…

Configuring HSRP(Hot Standby Routing Protocol)

文章目录 热备份路由协议(HSRP)HSRP(Hot Standby Routing Protocol)工作原理在思科路由器上配置HSRP1. 路由器配置2. 分配IP地址3. 配置HSRP4. 关键指令注释5. 验证配置是否生效6.HSRP抢占配置7.HSRP Group安全配置8.HSRP切换时间更改9.HSRP版本配置10.H…

App自动化测试持续集成效率提高50%

持续集成是一种开发实践,它倡导团队成员需要频繁的集成他们的工作,每次集成都通过自动化构建(包括编译、构建、自动化测试)来验证,从而尽快地发现集成中的错误。让正在开发的软件始终处于可工作状态,让产品…

SpringBoot 博客网站

SpringBoot 博客网站 系统功能 登录注册 博客列表展示 搜索 分类 个人中心 文章分类管理 我的文章管理 发布文章 开发环境和技术 开发语言:Java 使用框架: SpringBoot jpa H2 Spring Boot是一个用于构建Java应用程序的开源框架,它是Spring框架的一…

【sgTransfer】自定义组件:带有翻页、页码、分页器的穿梭框组件,支持大批量数据的穿梭显示。

特性&#xff1a; 表格宽度可以自定义翻页器显示控件可以自定义列配置项可以设置显示字段列名称、宽度、字段名可以配置搜索框提示文本&#xff0c;支持搜索过滤穿梭框顶部标题可以自定义左右箭头按钮文本可以设置 sgTransfer源码 <template><div :class"$opti…

【树形权限】树形列表权限互斥选择、el-tree设置禁用等等

文章目录 一、实现如上树形列表1.1 首先要就是渲染树形列表1.2 然后通过插槽处理头部标题1.3 再通过插槽处理表格body体内容1.4 让body体中的选框和表头中的选框产生关联 二、将 el-tree 整棵树设为禁用状态三、动态表格合并 需求&#xff1a;按照权限管理配置的数据权限树展开…

Vert.x 源码解析(4.x)(一)——Future源码解析

目录 1. 简介 在现代的软件开发中&#xff0c;异步编程已经变得非常重要。它可以提高应用程序的并发性能&#xff0c;使应用程序能够更有效地处理大量的并行操作。Vert.x 是一个面向事件驱动、非阻塞的异步编程框架&#xff0c;它提供了丰富的工具来简化异步编程的复杂性。 如…

解决windows下git操作提示用户名密码错误的问题

当代码从一个平台切换到另一个平台的时候&#xff0c;需要做两步操作&#xff0c;第一步就是更新git的仓库地址&#xff0c;在项目的.git/config文件里面修改&#xff0c;这一步做完之后&#xff0c;就可以推送代码到新的仓库了&#xff0c;这里就是重点来了。 一般第一次推动代…

JVM虚拟机对象探秘

对象的创建 Java是一门面向对象的编程语言&#xff0c;创建对象通常只是通过new关键字。 对象创建过程 当Java虚拟机遇到一条字节码new指令时&#xff0c;首先将去检查这个指令的参数是否能在常量池中定位到 一个类的符号引用&#xff0c;并且检查这个符号引用&#xff08;类…