计算机网络之流量控制与可靠传输机制
计算机网络之流量控制与可靠传输机制
数据链路层的流量控制
较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。
数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。
数据链路层流量控制手段:接收方收不下就不回复确认。
打个比方就像我喂犯人吃饭,如果我把饭送进去,犯人送出来一个空碗,就说明犯人还有胃口,还可以再吃,就暗示我们继续送。这个空碗就像是一个确认帧,来告诉发送方还可以继续发送。
传输层流量控制手段:接收端给发送端一个窗口公告。
流量控制的方法
停止-等待协议
每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jzWnJ5w7-1667573138937)(D:\学习!!\Typora各种图片\停止等待协议.png)]
效率是比较低的。
为什么要有停止等待协议?
除了比特出差错,底层信道还会出现丢包问题。
丢包:物理线路故障、设备故障、病毒攻击、路由信息错误等原因,会导致数据包的丢失。(在链路层就叫帧,在网络层叫做ip数据报或者分组,在传输层就叫数据段 )
研究停止等待协议的前提?
虽然现在常用全双工通信方式,但为了讨论问题方便,仅考虑一方发送数据(发送方),一方接收数据(接收方)。
因为是在讨论可靠传输的原理,所以并不考虑数据是在哪一个层次上传送的。
停等协议有几种应用情况?
无差错情况&有差错情况
无差错情况
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Xr1m5IcE-1667573138939)(D:\学习!!\Typora各种图片\无差错情况.png)]
有差错情况
数据帧都是或检测到帧出错
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yqlgU8L6-1667573138940)(D:\学习!!\Typora各种图片\有差错情况.png)]
打个比方就像女生给男朋友发消息,但男生没有及时回复,女生就会自动发送下一条,或者打电话。
需要注意!
1.发完一个帧后,必须保留它的副本。
⒉数据帧和确认帧必须编号。(保证每个帧不会重复传递)
ACK(确认帧)丢失
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wCmPlmBm-1667573138942)(D:\学习!!\Typora各种图片\ACK丢失.png)]
ACK(确认帧)迟到
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6Mt6M08g-1667573138944)(D:\学习!!\Typora各种图片\ACK迟到.png)]
性能分析
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hmeL6NNP-1667573138945)(D:\学习!!\Typora各种图片\停止等待协议性能分析.png)]
优点就是简单,缺点就是信道利用率低:
信道利用率U=T0T0+RTT+TA信道利用率U=\frac{T_0}{T_0+RTT+T_A} 信道利用率U=T0+RTT+TAT0
信道利用率
发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
信道利用率=(L/C)/T信道利用率=(L/C)/T信道利用率=(L/C)/T
T表示发送周期从,开始发送数据,到收到第一个确认帧为止
L表示T内发送L比特数据
C表示发送方数据传输率
信道吞吐率=信道利用率*发送方的发送速率
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ck4VWAE8-1667573138946)(D:\学习!!\Typora各种图片\信道利用率例题.png)]
滑动窗口协议——后退N帧协议(GBN)和选择重传协议(SR)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u2Kdu7MM-1667573138947)(D:\学习!!\Typora各种图片\滑动窗口协议.png)]
停止-等待协议可以看作是一种特殊的滑动窗口协议
协议 | 窗口大小 |
---|---|
停止-等待协议 | 发送窗口大小=1,接收窗口大小=1; |
后退N帧协议(GBN) | 发送窗口大小>1,接收窗口大小=1; |
选择重传协议(SR) | 发送窗口大小>1,接收窗口大小>1; |
后退N帧协议(GBN)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KC7wVdRU-1667573138948)(D:\学习!!\Typora各种图片\后退N帧协议中的滑动窗口.png)]
1.上层的调用
上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧)。
⒉收到了一个ACK(数据帧)
GBN协议中,对n号帧的确认采用累积确认(非常重要)的方式,标明接收方已经收到n号帧和它之前的全部帧。
3.超时事件
协议的名字为后退N帧/回退N帧,来源于出现丢失和时延过长帧时发送方的行为。就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有己发送但未被确认的帧。
GBN接收方要做的事
如果正确收到n号帧,并且按序,那么接收方为n帧发送个ACK,并将该帧中的数据部分交付给上层。
其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息: expectedseqnum(下一个按序接收的帧序号)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rErfEebe-1667573138949)(D:\学习!!\Typora各种图片\运行中的GBN.png)]
滑动窗口长度
若采用n个比特对帧编号,那么发送窗口的尺寸WTW_TWT应满足1≤WT≤2n−11\leq W_T\leq2^n-11≤WT≤2n−1。因为发送窗口尺寸过大,就会使得接收方**无法区别新帧和旧帧。**接受窗口大小为1。
例如在一个2比特对帧编号的数据报,123123…选用尺寸4对其进行传送,如果第一个帧0就丢失了,那么会进行重传操作,此时又发送了一遍0123,那么接收方就无法识别这是新的0123还是旧的0123,导致传输出错
例题
主机甲与主机乙之间使用后退N帧协议(GBN)传输数据,甲的发送窗口尺寸为1000,数据帧长为1000字节,信道带宽为100Mb/s,乙每收到一个数据帧立即利用一个短帧(忽略其传输延迟)进行确认,若甲、乙之间的单向传播时延是50ms,则甲可以达到的最大平均数据传输率约为()。
A. 10Mb/s
B. 20Mb/s
C. 80Mb/s
D. 100Mb/s
考虑制约甲的数据传输速率的因素;首先,信道带宽能直接制约数据的传输速率,传输速率一定是小于等于信道带宽的。其次,因为甲乙主机之间采用后退N帧协议传输数据,要考虑发送一个数据到接收到他的确认之前,最多能发送多少数据,甲第最大传输速率受这两个条件约束,所以甲的最大传输速率就这两个值之间的最小值。
首先计算甲将发送窗口中所有的数据发送出去需要的时间:
1000×1000×8bit(1字节)100×106b/s=80ms\frac{1000\times1000\times 8bit(1字节)}{100\times10^6b/s}=80ms 100×106b/s1000×1000×8bit(1字节)=80ms
再计算传输延迟+甲发送第一个帧的发送时长:
2×50ms+1000×8bit100×106b/s=100.08ms2\times50ms+\frac{1000\times8bit}{100\times10^6b/s}=100.08ms 2×50ms+100×106b/s1000×8bit=100.08ms
计算最大平均数据传输率:
1000×1000100.08≈80Mb/s\frac{1000\times 1000}{100.08}\approx80Mb/s 100.081000×1000≈80Mb/s
比较min{80Mb/s,100Mb/s}min\{80Mb/s,100Mb/s\}min{80Mb/s,100Mb/s}
选C。
选择重传协议(SR)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-anGI6x7P-1667573138950)(D:\学习!!\Typora各种图片\选择重传协议中的滑动窗口.png)]
SR发送方必须响应的三件事
1.上层的调用
从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
⒉收到了一个ACK
如果收到ACK,加入该帧序号在窗口内,则sR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
3.超时事件
每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
SR接收方要做的事
来者不拒(窗口内的帧)
SR接收方将确认一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到所有帧(即序号更小的帧)皆被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-as2M9Jan-1667573138950)(D:\学习!!\Typora各种图片\来者不拒.png)]
运行中的SR
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BqDC6tzA-1667573138951)(D:\学习!!\Typora各种图片\运行中的SR.png)]
SR滑动窗口的长度
发送窗口最好等于接受窗口。(大了会溢出,小了没意义)
WTmax=WRmax=2n−1W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n−1
WTmaxW_{Tmax}WTmax表示发送窗口,WRmaxW_{Rmax}WRmax表示接收窗口。
M9Jan-1667573138950)]
运行中的SR
[外链图片转存中…(img-BqDC6tzA-1667573138951)]
SR滑动窗口的长度
发送窗口最好等于接受窗口。(大了会溢出,小了没意义)
WTmax=WRmax=2n−1W_{Tmax}=W_{Rmax}=2^{n-1} WTmax=WRmax=2n−1
WTmaxW_{Tmax}WTmax表示发送窗口,WRmaxW_{Rmax}WRmax表示接收窗口。
计算机网络之流量控制与可靠传输机制相关推荐
- 【计算机网络】——流量控制与可靠传输机制
目录 一.数据链路层的流量控制 二.流量控制的方法 停止-等待协议 滑动窗口协议 协议比较 可靠传输.滑动窗口.流量控制三者关系 三.总结 一.数据链路层的流量控制 较高的发送速度和较低的接收能力的不 ...
- 【计算机网络复习 数据链路层】3.4.1 流量控制与可靠传输机制
流量控制与可靠传输机制 一.数据链路层的流量控制 二.流量控制的方法 三.可靠传输.滑动窗口.流量控制 一.数据链路层的流量控制 较高的发送速度和较低的接收能力不匹配,会造成传输出错,因此流量控制也是 ...
- 计算机网络之数据链路层:4、流量控制和可靠传输机制(停止等待协议、后退N帧协议、选择重传协议)
数据链路层:4.流量控制和可靠传输机制 思维导图: 流量控制: 实现流量控制的方法: 停止等待协议:(发送和接收窗口为1的滑动窗口协议) 滑动窗口协议: 实现可靠传输的方法: 总结: 思维导图: 流量 ...
- 3.4.1 流量控制与可靠传输机制
3.4.1 流量控制与可靠传输机制
- 三、数据链路层(四)流量控制和可靠传输机制
目录 4.1流量控制和可靠传输机制 4.2三种传统ARQ方式 4.2.1单帧滑动窗口与停止-等待协议 4.2.2多帧滑动窗口与后退N帧协议(GBN) 4.2.3多帧滑动窗口与选择重传协议(SR) 4. ...
- 计算机网络——链路层之流量控制和可靠传输机制
文章目录 1.链路层为什么要进行流量控制? 2.链路层的流量控制方法 3.流量控制协议的窗口大小 4.可靠传输.滑动窗口.流量控制 5.总结 1.链路层为什么要进行流量控制? \qquad因为较高的发 ...
- 流量控制与可靠传输机制
流量控制出现的原因,就是因为收发双方速度不一致导致的! 数据链路层:点到点:传输层:端到端: 传输层控制流量手段:接收端给发送端一个窗口公告. 流量控制的方法: 停止等待协议:每发送一个就停止发送,等 ...
- 计算机网络—数据链路层的流量控制与可靠传输机制(思维导图)
建议将思维导图保存下来观看,或者点击这里在线观看
- 【计算机网络】数据链路层 : 流量控制 ( “流量控制“ 机制 | 停止-等待协议 | 滑动窗口协议 | 后退 N 帧协议 GBN | 选择重传协议 SR | 滑动窗口 与 流量控制、可靠传输 )
文章目录 一. 数据链路层 流量控制 二. 数据链路层 与 传输层 流量控制 机制 三. 数据链路层 流量控制 四. 数据链路层 流量控制 方法分类 五.停止等待协议 六.滑动窗口协议 七.滑动窗口协 ...
最新文章
- xml常用操作(js、sql、vb)
- 使用OKR管理好团队这四个高深的技巧要明白
- Pytorch和Numpy的默认类型
- 企业级nginx服务优化(一)
- inotify加rsync备份mysql_centos7 实现inotify-tools + rsync,自动备份mysql数据库
- Unable to Open User Login File
- java内存图解_图解JAVA内存模型(JMM:JAVA Memory Model)
- IBM沃森为存储系统开发人员带来的启发
- 【Julia】Julia使用Pkg下载镜像配置问题解决方案
- CentOS升级Python到2.7版本
- 腾讯T4梳理的必备笔记:自动化测试必掌握的30个核心知识点
- Python爬虫:最牛逼的 selenium爬取方式!
- CentOS上使用docker安装redis
- 【2】基因功能注释之SwissProt和Interproscan
- linux下挂载硬盘!
- Android 进阶之路:ASM 修改字节码,这样学就对了!
- 作业盒子生端AndrOid,作业盒子小学下载安装学生版
- python正则 两边固定 中间任意字符
- CISSP AIO7 学习笔记 - 第三章 安全工程 3.4-3.10小节
- 台式计算机usb口不识别鼠标,如何解决计算机无法识别鼠标的问题
热门文章
- 《滋润的爱》读后感5000字
- 从String中移除空白字符的多种方式
- 【华为笔试】安排面试官。有M个面试官,每个面试官熟悉的编程语言是一个列表,有N个面试者,按照面试者的机试选择的语言分配面试官进行面试(Python)
- VMWare 外网通过路由器端口映射访问本地Linux系统
- 谷粒商城P85页面不显示
- android无线图传demo,WHDI方案无线图传产品使用经验谈
- [软件工程基础]Alpha 阶段事后分析
- Electron-Vite2-MacUI桌面管理框架|electron13+vue3.x仿mac桌面UI
- PCL:点云渲染赋色(可指定字段渲染)
- 爬虫东方财富网(tbody)