计算机网络之流量控制与可靠传输机制

数据链路层的流量控制

较高的发送速度和较低的接收能力的不匹配,会造成传输出错,因此流量控制也是数据链路层的一项重要工作。

数据链路层的流量控制是点对点的,而传输层的流量控制是端到端的。

数据链路层流量控制手段:接收方收不下就不回复确认。

打个比方就像我喂犯人吃饭,如果我把饭送进去,犯人送出来一个空碗,就说明犯人还有胃口,还可以再吃,就暗示我们继续送。这个空碗就像是一个确认帧,来告诉发送方还可以继续发送。

传输层流量控制手段:接收端给发送端一个窗口公告。

流量控制的方法

停止-等待协议

每发送完一个帧就停止发送,等待对方的确认,在收到确认后再发送下一个帧。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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+TA​T0​​

信道利用率

发送方在一个发送周期内,有效地发送数据所需要的时间占整个发送周期的比率。
信道利用率=(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​表示接收窗口。

计算机网络之流量控制与可靠传输机制相关推荐

  1. 【计算机网络】——流量控制与可靠传输机制

    目录 一.数据链路层的流量控制 二.流量控制的方法 停止-等待协议 滑动窗口协议 协议比较 可靠传输.滑动窗口.流量控制三者关系 三.总结 一.数据链路层的流量控制 较高的发送速度和较低的接收能力的不 ...

  2. 【计算机网络复习 数据链路层】3.4.1 流量控制与可靠传输机制

    流量控制与可靠传输机制 一.数据链路层的流量控制 二.流量控制的方法 三.可靠传输.滑动窗口.流量控制 一.数据链路层的流量控制 较高的发送速度和较低的接收能力不匹配,会造成传输出错,因此流量控制也是 ...

  3. 计算机网络之数据链路层:4、流量控制和可靠传输机制(停止等待协议、后退N帧协议、选择重传协议)

    数据链路层:4.流量控制和可靠传输机制 思维导图: 流量控制: 实现流量控制的方法: 停止等待协议:(发送和接收窗口为1的滑动窗口协议) 滑动窗口协议: 实现可靠传输的方法: 总结: 思维导图: 流量 ...

  4. 3.4.1 流量控制与可靠传输机制

    3.4.1 流量控制与可靠传输机制

  5. 三、数据链路层(四)流量控制和可靠传输机制

    目录 4.1流量控制和可靠传输机制 4.2三种传统ARQ方式 4.2.1单帧滑动窗口与停止-等待协议 4.2.2多帧滑动窗口与后退N帧协议(GBN) 4.2.3多帧滑动窗口与选择重传协议(SR) 4. ...

  6. 计算机网络——链路层之流量控制和可靠传输机制

    文章目录 1.链路层为什么要进行流量控制? 2.链路层的流量控制方法 3.流量控制协议的窗口大小 4.可靠传输.滑动窗口.流量控制 5.总结 1.链路层为什么要进行流量控制? \qquad因为较高的发 ...

  7. 流量控制与可靠传输机制

    流量控制出现的原因,就是因为收发双方速度不一致导致的! 数据链路层:点到点:传输层:端到端: 传输层控制流量手段:接收端给发送端一个窗口公告. 流量控制的方法: 停止等待协议:每发送一个就停止发送,等 ...

  8. 计算机网络—数据链路层的流量控制与可靠传输机制(思维导图)

    建议将思维导图保存下来观看,或者点击这里在线观看

  9. 【计算机网络】数据链路层 : 流量控制 ( “流量控制“ 机制 | 停止-等待协议 | 滑动窗口协议 | 后退 N 帧协议 GBN | 选择重传协议 SR | 滑动窗口 与 流量控制、可靠传输 )

    文章目录 一. 数据链路层 流量控制 二. 数据链路层 与 传输层 流量控制 机制 三. 数据链路层 流量控制 四. 数据链路层 流量控制 方法分类 五.停止等待协议 六.滑动窗口协议 七.滑动窗口协 ...

最新文章

  1. xml常用操作(js、sql、vb)
  2. 使用OKR管理好团队这四个高深的技巧要明白
  3. Pytorch和Numpy的默认类型
  4. 企业级nginx服务优化(一)
  5. inotify加rsync备份mysql_centos7 实现inotify-tools + rsync,自动备份mysql数据库
  6. Unable to Open User Login File
  7. java内存图解_图解JAVA内存模型(JMM:JAVA Memory Model)
  8. IBM沃森为存储系统开发人员带来的启发
  9. 【Julia】Julia使用Pkg下载镜像配置问题解决方案
  10. CentOS升级Python到2.7版本
  11. 腾讯T4梳理的必备笔记:自动化测试必掌握的30个核心知识点
  12. Python爬虫:最牛逼的 selenium爬取方式!
  13. CentOS上使用docker安装redis
  14. 【2】基因功能注释之SwissProt和Interproscan
  15. linux下挂载硬盘!
  16. Android 进阶之路:ASM 修改字节码,这样学就对了!
  17. 作业盒子生端AndrOid,作业盒子小学下载安装学生版
  18. python正则 两边固定 中间任意字符
  19. CISSP AIO7 学习笔记 - 第三章 安全工程 3.4-3.10小节
  20. 台式计算机usb口不识别鼠标,如何解决计算机无法识别鼠标的问题

热门文章

  1. 《滋润的爱》读后感5000字
  2. 从String中移除空白字符的多种方式
  3. 【华为笔试】安排面试官。有M个面试官,每个面试官熟悉的编程语言是一个列表,有N个面试者,按照面试者的机试选择的语言分配面试官进行面试(Python)
  4. VMWare 外网通过路由器端口映射访问本地Linux系统
  5. 谷粒商城P85页面不显示
  6. android无线图传demo,WHDI方案无线图传产品使用经验谈
  7. [软件工程基础]Alpha 阶段事后分析
  8. Electron-Vite2-MacUI桌面管理框架|electron13+vue3.x仿mac桌面UI
  9. PCL:点云渲染赋色(可指定字段渲染)
  10. 爬虫东方财富网(tbody)