当前位置: 首页 > news >正文

三、传输层拥塞控制、差错控制

3.1 概述和传输层服务

传输服务和协议:
为运行在不同主机上的应用进程提供逻辑通信;
传输协议运行在端系统-发送方:将应用层的报文分成报文段,然后传递给网络层;接收方:将报文段重组成报文,然后传递给应用层;
有多个传输层协议可供应用选择;

网络层服务:主机之间的逻辑通信
传输层服务:进程间的逻辑通信——依赖于网络层的服务:延时、带宽。并对网络层的服务进行增强
在这里插入图片描述
可靠的、保序的传输:TCP
-多路复用、解复用
-拥塞控制
-流量控制
-建立连接

不可靠的、不保序的传输:UDP
-多路复用、解复用
-没有为尽力而为的IP服务添加更多的其他额外服务

都不提供的服务:延时保证,带宽保证

3.2 多路复用和解复用

在发送方主机多路复用:从多个套接字接受来自多个进程的报文,根据套接字对应的IP地址和端口号等信息对报文段用头部加以封装(该头部信息用于以后的解复用)
在接收方主机多路解复用:根据报文段的头部信息中的IP地址和端口号将接收到的报文段发给正确的套接字(和对应的应用进程)
在这里插入图片描述
多路解复用工作原理:
解复用作用:TCP或者UDP实体采用哪些信息,将报文段的数据部分交给正确的socket,从而交给正确的进程。
主机收到IP数据报:每个数据报有源IP地址和目标地址;每个数据报承载一个传输层报文段;每个报文段有一个源端口号和目标端口号
主机联合使用IP地址和端口号将报文段发送给合适的套接字

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

3.3 无连接传输UDP

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

3.4 可靠数据传输(RDT)的原理

RDT在应用层传输层和数据链路层都很重要;是网络Top10问题质疑
信道的不可靠特点决定了可靠数据传输协议rdt的复杂性
在这里插入图片描述

在这里插入图片描述
渐增式地开发可靠数据传输协议(RDT)的发送方和接收方
只考虑单向数据传输,但控制信息是双向流动的!
双向的数据传输问题实际上是两个单向数据传输问题的总和
使用有限状态机(FSM)来描述发送方和接受方
状态:在该状态下,下一个状态只由下一个事件唯一确定
在这里插入图片描述
Rdt1.0:在可靠信道上的可靠数据传输
下层的信道是完全可靠的:没有比特出错;没有分组丢失
发送方和接收方的FSM:发送方将数据发送到下层信道;接收方从下层信道接收数据
在这里插入图片描述

Rdt2.0:具有比特差错的信道
下层信道可能会出错:将分组中的比特翻转——用校验和来检测比特差错
问题:怎样从差错中恢复?
-确认(ACK):接收方显式地告诉发送方分组已被正确接受
-否定确认(NAK):接收方显式地告诉发送方分组发生了差错,发送发重传分组
rdt2.0中的新机制:采用差错控制编码进行差错检测

  • 发送方差错控制编码、缓存
  • 接收方使用编码检错
  • 接收方的反馈:控制报文(ACK、NAK):接收方-》发送方
  • 发送方收到反馈相应的动作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
rdt2.2:无NAK的协议
功能同rdt2.1,但只使用ACK(ack要编号)
接收方对最后正确接收的分布发ACK,以替代NAK。接收方必须显式地包含被正确接收分组的序号
当受到重复的ACK时,发送方与收到NAK采取相同的动作,重传当前分组
为后面的一次发送多个数据单位做一个准备:一次能够发送多个,每一个的应答都有:ACK,NACK;使用对前一个数据单位的ACK,代替本数据单位的NAK,确认信息减少一半,协议处理简单
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
rdt3.0:具有比特差错和分组丢失的信道
新的假设:下层信道可能会丢失分组(数据或者ACK)
—会死锁;机制还不够处理这种状况
方法:发送方等待ACK一段合理的时间
发送端超时重传,如果到时没有收到ACK,则重传。
问题:如果分组(或ACK)只是被延迟了:重传会导致数据重复,但利用序列号已经可以处理这个问题。接收方必须指明被正确接收的序列号
需要一个倒计数定时器
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
流水线协议:
流水线:允许发送方在未得到对方确认的情况下一次发送多个分组;
必须增加序号的范围:用多个bit表示分组的序号
在发送方/接收方要有缓冲区:发送方缓冲:未得到确认,可能需要重传。接收方缓存:上层用户取用数据的速率!=接收到的数据速率,接收到的数据可能乱序,排序支付
两种通用的流水线协议:回退N步(GBN)和选择重传(SR)

滑动窗口协议:
发送缓冲区:
-形式:内存中的一个区域,落入缓冲区的分组可以发送
-功能:用于存放已发送,但是没有收到确认的分组
-必要性:需要重发时可用
发送缓冲区的大小:一次最多可以发送多个未经确认的分组
-停止等待协议=1
-流水线协议>1,合理的值,不能很大,链路利用率不能超过100%
发送缓冲区中的分组:
-未发送的:落入发送缓冲区的分组,可以连续发送出去
-已经发送出去的、等待对方确认的分组:发送缓冲区的分组只有得到确认才能删除
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接收窗口=1:GBN协议,只能顺序接受(累计确认)
接收窗口》1:SR协议,可以乱序接受
在这里插入图片描述
在这里插入图片描述
异常情况下的GBN的2窗口互动
发送窗口:
新分组落入发送缓冲区的范围,发送-》前沿移动
超时重发机制让发送端将发送窗口中的所有分组发送出去
来了老分组的重复确认-》后沿不向前滑动-》新的分组无法落入发送缓冲区范围(此时如果发送缓冲区有新的分组可以发送)
接收窗口:
收到乱序分组,没有落入到接收窗口范围,抛弃
(重复)发送老分组的确认,累计确认

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选择重传SR:
接收方对每个正确接收的分组,分别发送ACK(非累计确认),因为接受窗口》1,因此可以缓存乱序的分组,最终将分组按顺序交付给上层
发送方只对那些没有收到ACK的分组进行重传0选择性重发,发送方为每个未确认的分组设定一个定时器。
发送窗口的最大值(发送缓冲区)限制发送未确认分组的个数

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

3.5 面向连接的传输TCP

点对点:一个发送方,一个接收方
可靠的、按顺序的字节流:没有报文边界
管道化(流水线):TCP拥塞控制和流量控制设置窗口大小
发送和接受缓存
全双工数据:在同一连接中数据流双向流动
面向连接:在数据交换前,通过握手初始化发送方、接收方的状态变量
有流量控制:发送方不会淹没接收方
在这里插入图片描述
MSS:最大报文段
在这里插入图片描述
TCP序号:报文段首字节的在字节流的编号
确认号:期望从另一方收到的下一个字节的序号;累计确认
在这里插入图片描述
在这里插入图片描述
TCP往返延时(RTT)和超时:
怎样设置TCP超时?——比RTT长、太早超时、太长报文段丢失
怎样估计RTT?——测量从报文段发出到收到确认的实践,因为存在变化,所以对多个测量值求平均
在这里插入图片描述
在这里插入图片描述
可靠数据传输:TCP在IP不可靠的服务的基础上建立了rdt,
管道化的报文段——GBN/SR
累计确认——GBN
单个重传定时器——GBN
是否可以接受乱序的,没有规范
通过以下事件触发重传:超时——SR;重复的确认
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
TCP连接管理:
在正式交换数据之前,发送方和接收方握手建立通信关系:同意建立连接,同一连接参数
Q:在网络中,两次握手建立连接总是可行的吗?

  • 变化的延迟,没有丢,但可能超时
  • 由于丢失造成的重传
  • 报文乱序
  • 相互看不到对方

虚假的数据,旧数据当作新数据接受了

在这里插入图片描述
在这里插入图片描述
TCP:关闭连接
客户端,服务器分别关闭他自己这一侧的连接
一旦收到FIN,用ACK回应
可以处理同时的FIN交换

3.6 拥塞控制原理

拥塞得表现:
1.分组丢失(路由器缓冲区溢出)
2.分组经历比较长的延迟(在路由器的队列中排队)
在这里插入图片描述
两个主机经过一个路由器分别发送给两个主机,路由器带宽有限。
在这里插入图片描述

  1. 延迟大
  2. 为了保证输出,输入在持续增加
  3. 网络拥塞,重传没有必要的数据,加速拥塞

在这里插入图片描述

拥塞控制方法:
1.端到端拥塞控制:
没有来自网络的明显反馈;端系统根据延迟和丢失时间推断是否有拥塞;TCP采用的方法。
2.网络辅助的拥塞控制:路由器提供给端系统以反馈信息,单个bit置位,显示有拥塞。显式提供发送端可以采用的速率。
在这里插入图片描述
在这里插入图片描述

3.7 TCP拥塞控制

端到端拥塞控制
路由器不向主机提供有关拥塞的反馈信息,是的路由器负担较轻,符合网络核心简单的TCPIP架构原则,
端系统根据自身得到的信息,判断是否发生拥塞,从而采取行动。
拥塞控制的几个问题:
如何检测拥塞:轻微拥塞,拥塞;
控制拥塞:在拥塞发生时如何动作,降低速率;在拥塞缓解时如何动作,增加速率。

拥塞感知:
发送端如何探测到拥塞?
1.某个段超时了:拥塞
超时时间到,某个段的确认没有来,网络拥塞,某个路由缓冲区没空间了。被丢弃,概率大。出错被丢弃了,没有通过某个校验,被丢弃,概率小。一旦超时,就认为拥塞了,有一定误判,但总体控制方向是对的。
2.有关某个段的三次重复ACK:轻微拥塞
段的第一个ack,正常,确认绿段,期待红段。段的第二个重复ack,意味着红段之后的段收到了,乱序到达,一直重复ack,意味后面的段都乱序到达了,说明红段丢失的可能性极大。网络这时还能够进行一定程度的传输,拥塞但情况比第一种好

速率控制方法:
维持一个拥塞窗口的值:CongWin
发送端限制已发送但是未确认的数据量的上限,从而粗略地控制发送方往网络中注入的速率
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

相关文章:

三、传输层拥塞控制、差错控制

3.1 概述和传输层服务 传输服务和协议: 为运行在不同主机上的应用进程提供逻辑通信; 传输协议运行在端系统-发送方:将应用层的报文分成报文段,然后传递给网络层;接收方:将报文段重组成报文,然后传递给应用…...

主流电商平台数据大规模数据采集接口的实现:电商API接口接入方案和电商数据采集现状

现实问题 1、您是否需要经常统计关注的品牌、产品、平台、卖家的电商数据,包括销量、评价量、收藏量、预售量、运费、赠品和促销信息,手头上没有稳定的数据源? 2、您是否经常需要统计授权卖家和非授权卖家的销售、动销占比,分析…...

Python电梯楼层数字识别

程序示例精选 Python电梯楼层数字识别 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《Python电梯楼层数字识别》编写代码,代码整洁,规则,易读。 学习与应…...

Linux学习:基础开发工具的使用(1)

目录 1. Linux软件包管理器:yum工具1.1 yum是什么(软件商城)1.2 yum的使用1.3 yum的背景生态 2. 项目开发与集成开发环境3. vim编辑器3.1 vim编辑器的常见模式与模式切换3.3 vim编辑器的使用3.3.1 命令模式下的常见命令:3.3.2 vim…...

在idea中配置tomcat服务器,然后部署一个项日

1.下载tomcat Tomcat下载 点击右边的tomcat8 找到zip点击下载 下载完,解压到你想放置的路径下 2.配置环境变量 打开设置找到高级系统设置点击环境变量 点击新建,变量名输入:CATALINA_HOME,变量值就是Tomcat的安装路径&#x…...

C语言例:设 int a=11; 则表达式 a+=a-=a*a 的值

注&#xff1a;软件为VC6.0 代码如下&#xff1a; #include<stdio.h> int main(void) {int a11, b;b (aa-a*a); //a*a121 -->a-121结果为a-110 -->a-110结果为a-220printf("表达式aa-a*a 的值为&#xff1a; %d\n",b);return 0; } //优先级&#x…...

C++ 中的虚函数和多态性

C 是一种高级编程语言&#xff0c;它具有面向对象编程的特性。在 C 中&#xff0c;虚函数和多态性是非常重要的概念&#xff0c;它们使得继承关系更加灵活和强大。 虚函数是在基类中声明为虚函数的成员函数&#xff0c;其作用是在运行时动态绑定函数的调用。当在派生类中重写基…...

叶顺舟:手机SoC音频趋势洞察与端侧AI技术探讨 | 演讲嘉宾公布

后续将陆续揭秘更多演讲嘉宾&#xff01; 请持续关注&#xff01; 2024中国国际音频产业大会(GAS)将于2024年3.27 - 28日在上海张江科学会堂举办。大会将以“音无界&#xff0c;未来&#xff08;Audio&#xff0c; Future&#xff09;”为主题。大会由中国电子音响行业协会、上…...

SpringBoot之yml与properties配置文件格式的区别

概念: SpringBoot支持两种格式的配置文件,一种是yml,而另一种就是properties,默认的文件名为application.yml或者.properties 为什么有了properties之后还要有yml呢? 因为properties配置文件存在数据冗余性,在properties配置文件中一切配置都需要从头写到为, 并且Key不能重复,…...

【递归搜索回溯专栏】专题二:二叉树中的深搜----二叉树剪枝

本专栏内容为&#xff1a;递归&#xff0c;搜索与回溯算法专栏。 通过本专栏的深入学习&#xff0c;你可以了解并掌握算法。 &#x1f493;博主csdn个人主页&#xff1a;小小unicorn ⏩专栏分类&#xff1a;递归搜索回溯专栏 &#x1f69a;代码仓库&#xff1a;小小unicorn的代…...

Django实现登录注册

Django实现登录注册 目录 Django实现登录注册配置路由首页注册前端&#xff1a;后端&#xff1a; 登录前端&#xff1a;后端&#xff1a;验证码部分逻辑 配置路由 首先分发路由[User,Blog,Article] from django.contrib import admin from django.urls import path from Blog…...

Python实战:NumPy数组与矩阵操作入门

NumPy是Python数据科学领域中不可或缺的库之一&#xff0c;它提供了一个强大的N维数组对象和一系列用于操作这些数组的函数。本文将详细介绍NumPy数组与矩阵的基础知识&#xff0c;包括数组的创建、操作、切片、索引、以及矩阵的运算等。 1. 引言 在Python数据科学领域&#…...

2024.2.26校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招&实习 |美团2024年春季校园招聘全球启动&#xff08;内推&#xff09; 校招&实习 |美团2024年春季校园招聘全球启动&#xff08;内推&#xff09; 2、校招 | 江淮汽车2024…...

cannot find -xml2: No such file or directory的解决方法

一&#xff0c;问题现象 在编译库的时候出现如下图所示的报错&#xff1a;C:/msys64/mingw32/bin/…/lib/gcc/i686-w64-mingw32/13.2.0/…/…/…/…/i686-w64-mingw32/bin/ld.exe: ca nnot find -lxml2: No such file or directory collect2.exe: error: ld returned 1 exit s…...

linux下的进程间通信

转自http://blog.csdn.net/eroswang/article/details/1772350 详细的讲述进程间通信在这里绝对是不可能的事情&#xff0c;而且笔者很难有信心说自己对这一部分内容的认识达到了什么样的地步&#xff0c;所以在这一节的开头首先向大家推荐著 名作者Richard Stevens的著名作品&a…...

基于单片机的IC 卡门禁系统设计

摘要:针对传统门锁钥匙易丢失、配置不便和忘记携带等问题,提出了一种基于STC89C52 的IC 卡门禁系统设计。该系统以STC89C52 单片机为核心来控制电子锁模块的开关。主要过程是由RFID 模块读取IC卡ID 并通过串口发送至STC89C52 单片机模块,STC89C52 单片机模块可以实现在线对I…...

【爬虫介绍】了解爬虫的魅力

爬虫 爬虫&#xff08;Spider&#xff09;是一种自动化程序&#xff0c;通过模拟人的行为&#xff0c;在互联网上收集、抓取和提取信息。爬虫通常用于网站数据抓取、搜索引擎索引、数据分析和挖掘等领域。 爬虫可以自动访问网页&#xff0c;按照预定的规则抓取网页上的文本、…...

Xcode 15.3 Archive失败

Xcode 15.3 Archive失败 背景 升级 Xcode 到 15.3&#xff0c;真机运行正常。打包的时候发现 Archive 失败。 提示&#xff1a; Call parameter type does not match function signature! 仔细看报错里是和HandyJSON相关的提示。 解决 起初以为和 Pod 库有关系&#xff0c;…...

Hadoop学习3:问题解决

文章目录 问题解决1. ERROR: but there is no HDFS_NAMENODE_USER defined2. JAVA_HOME is not set and could not be found.3. Hadoop-DFS页面访问不了4. namenode格式化失败&#xff0c;或者dfs页面打开失败5. ERROR: but there is no YARN_RESOURCEMANAGER_USER defined. Ab…...

HarmonyOS鸿蒙开发常用4种布局详细说明

介绍一下鸿蒙开发常用4种布局 1、线性布局 2、层叠布局 3、网格布局 4、列表布局 ​1. 线性布局&#xff08;Column/Row&#xff09; 线性布局&#xff08;LinearLayout&#xff09;是开发中最常用的布局&#xff0c;通过线性容器Row&#xff08;行&#xff09;和Column&…...

Chapter03-Authentication vulnerabilities

文章目录 1. 身份验证简介1.1 What is authentication1.2 difference between authentication and authorization1.3 身份验证机制失效的原因1.4 身份验证机制失效的影响 2. 基于登录功能的漏洞2.1 密码爆破2.2 用户名枚举2.3 有缺陷的暴力破解防护2.3.1 如果用户登录尝试失败次…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

【位运算】消失的两个数字(hard)

消失的两个数字&#xff08;hard&#xff09; 题⽬描述&#xff1a;解法&#xff08;位运算&#xff09;&#xff1a;Java 算法代码&#xff1a;更简便代码 题⽬链接&#xff1a;⾯试题 17.19. 消失的两个数字 题⽬描述&#xff1a; 给定⼀个数组&#xff0c;包含从 1 到 N 所有…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

页面渲染流程与性能优化

页面渲染流程与性能优化详解&#xff08;完整版&#xff09; 一、现代浏览器渲染流程&#xff08;详细说明&#xff09; 1. 构建DOM树 浏览器接收到HTML文档后&#xff0c;会逐步解析并构建DOM&#xff08;Document Object Model&#xff09;树。具体过程如下&#xff1a; (…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

【Post-process】【VBA】ETABS VBA FrameObj.GetNameList and write to EXCEL

ETABS API实战:导出框架元素数据到Excel 在结构工程师的日常工作中,经常需要从ETABS模型中提取框架元素信息进行后续分析。手动复制粘贴不仅耗时,还容易出错。今天我们来用简单的VBA代码实现自动化导出。 🎯 我们要实现什么? 一键点击,就能将ETABS中所有框架元素的基…...