【计算机网络】流量控制协议

2024-01-25 19:59

本文主要是介绍【计算机网络】流量控制协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、Utopian Simplex Protocol(乌托邦)

最简单的协议,假设信道是单工的,无差错的,且接收方有无限的缓冲区。

所以发送方就可以一直发

问题:现实情况比这个恶劣的多。

二、Simplex Stop-and-Wait Protocol for an Error-Free Channel(简单停等)

假设:单工信道,无差错,接收方是有限的缓冲区。

发送方发送数据,然后停下来等待接收方的ack,收到ack之后再发数据。这样接收方就可以不发ack来控制发送的速度。

问题:

1、如果信道不是无差错的,那么接收方算了CRC之后发现不对,就会丢弃包,不发ack,这时发送方的timer超时,就会重传。

2、如果数据帧丢了,那么发送方就会收不到ack,timer超时重传。

3、如果ack丢了,那么同样发送方就会收不到ack,timer超时重传。可是这就会有一个问题

 发送方重传的是一样的东西,这样接收方就会收到同样的帧,可接收方不知道是同样的帧,这时就需要给数据帧加序号。

可是这样还没完,接收方收到重复的帧后,接受方发现是重复的序号,就丢掉了,不发ack,可发送方不知道啊,发送方觉得是这一帧又没发到,timer到了就又重传。所以这时就需要给ack帧加序号,加上这两个序号,就是第三个协议。

三、Stop-and-Wait ARQ(停等ARQ)

 就是用0和1给数据和ack编号,这样就解决了重复数据帧和延迟ack的问题。

四、One-Bit Sliding Window Protocol

窗口大小为1的滑动窗口协议,其实就是停等,只不过这个是双工的,刚才的停等是单工的信道。

工作流程如下:

1、发收双方窗口大小都为1,初始窗口状态都一样,发送方准备发送序号为0的数据,接收方等待接收序号为0的数据,

2、发送方发送数据,把该数据标记为已发送待确认

3、接收方收到数据,crc确认后将数据交给上层,发送ack给发送方,并同时把窗口向右滑动,表示下一个待收的数据序号为1

4、发送方收到ack,将窗口向右滑动,准备发送下一个序号为1的数据,如此反复。

问题:这样对于一些带宽时延积较大的信道,会导致低效,比如卫星信道,数据的发送时延很短,但是传播时延很长,发送方花了很短的时间将数据发送出去,剩下很大一部分时间都在等待数据发给接收方,然后接收方回ack,时间主要都用到这两次传播时延上了,效率很低。

五、Protocol Using Go Back N

还是滑动窗口,这次发送窗口有很多,但是接收窗口还是一个,这个协议采用了累计ack的方法。

1、正常情况

看这个正常情况的例子,发送窗口大小是3,按顺序发0、1、2帧,接收方一开始窗口在0那,收到0号帧之后,由于是累计确认,所以不发ack,把窗口向右滑,等待1号帧,收到1号帧后,滑动窗口,回一个ack1,表示0和1号帧都收到了,发送方收到这个之后,就明白了,就把窗口向右滑动两个。这里有一个问题,那就是累计确认的话,什么时候选择回ack呢,如果收到的帧一直都是对的,迟迟不回,发送方岂不是会超时。

2、丢数据

看这个例子,发送方发送0、1、2,接收方收到0、1后回了ack1,发送方滑动两个窗口,接着发3号帧,可是这时2号帧丢了,接收方收到3号帧后,发现这不是我要的啊,我要的是2号帧,他就丢弃,并且回一个ack1,表示并没有受到2号帧。 这是有一个问题,那就是只有收到帧校验和对的时候,才会回ack,例如这里3号帧如果校验和不对,那就不会回ack1,因为校验和不对时,序号就没有意义了,有可能是错的。然后继续,发送方没有收到ack2和ack3,2、3号帧就会依次超时,并重传。

3、ack丢失

考虑一个极端情况,发送方发送0、1、2号帧,接收方都正确收到并滑动了窗口,并且回了ack,可是ack全丢了,这时接收方窗口在等3号帧,发送方0号帧超时重传,接收方收到后发现不是我要的帧,就会丢掉,回一个我正在等的帧序号的前一个序号,比如这里等的是3号帧,回的ack就是ack2。这时发送方收到ack2后,就知道前三个帧都收到了,就会往右滑三次窗口。

4、窗口大小问题

窗口大小和序号的二进制位数有关,对于n比特位的序号来说,发送窗口和接收窗口的大小的和需要小于等于2的n次方。对于GBN协议来说,接收窗口大小是1,那发送窗口大小就要小于等于2的n次方减一。

如何考虑窗口大小的问题呢,只需要考虑一种极限情况,那就是发送窗口把所有帧全发出去了,接收方的ack全丢了,这时候接收窗口不能和发送窗口有重叠,有重叠就有问题。

看这样一个例子

这里n=2,按照原理,发送窗口最大是3,考虑发送和窗口是4的情况,也就是右边这张图,发送方发了0、1、2、3号帧,接收方全部正确收到并回了ack,可是全丢了,这时接收方在等待新的0号帧,可是这时发送方重传了上一次的0号帧,而接收方收到后,会误以为这时新的0号帧,那么就出错了。

5、问题

问题就在于这个go back n,可能发送方发了8个帧,除了第二帧别的都对了,可这样发送方还是得重传2号帧以及他之后的所有帧,这样效率太低了。

六、Selective Repeat(选择重传) ARQ

选择重传其实就是上一个GBN得改进,把接收方窗口扩大了,遵循的窗口大小原则还是一样

 

Wt是发送窗口大小,Wr是接收窗口大小,第一条的原因和上一个协议一样,第二条的原因是接收窗口的大小大于发送窗口是没有意义的。

这里涉及一个ack timer的问题,接收方收到数据后,会设置一个timer,等待高层的数据,看能不能稍待确认过去,如果timer过了还没有高层的数据,那么就会发送ack。这里这个timer的时间需要考虑,发送方发送数据过来,接收方设置timer,timer超时回ack,这是三段时间,发送方发过来数据的时间加上ack回去的时间是一个RTT,也就是说,RTT加上timer必须要小于发送方超时重传的timer。

这篇关于【计算机网络】流量控制协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/644443

相关文章

poj 2135 有流量限制的最小费用最大流

题意: 农场里有n块地,其中约翰的家在1号地,二n号地有个很大的仓库。 农场有M条道路(双向),道路i连接着ai号地和bi号地,长度为ci。 约翰希望按照从家里出发,经过若干块地后到达仓库,然后再返回家中的顺序带朋友参观。 如果要求往返不能经过同一条路两次,求参观路线总长度的最小值。 解析: 如果只考虑去或者回的情况,问题只不过是无向图中两点之间的最短路问题。 但是现在要去要回

poj 3422 有流量限制的最小费用流 反用求最大 + 拆点

题意: 给一个n*n(50 * 50) 的数字迷宫,从左上点开始走,走到右下点。 每次只能往右移一格,或者往下移一格。 每个格子,第一次到达时可以获得格子对应的数字作为奖励,再次到达则没有奖励。 问走k次这个迷宫,最大能获得多少奖励。 解析: 拆点,拿样例来说明: 3 2 1 2 3 0 2 1 1 4 2 3*3的数字迷宫,走两次最大能获得多少奖励。 将每个点拆成两个

poj 2195 bfs+有流量限制的最小费用流

题意: 给一张n * m(100 * 100)的图,图中” . " 代表空地, “ M ” 代表人, “ H ” 代表家。 现在,要你安排每个人从他所在的地方移动到家里,每移动一格的消耗是1,求最小的消耗。 人可以移动到家的那一格但是不进去。 解析: 先用bfs搞出每个M与每个H的距离。 然后就是网络流的建图过程了,先抽象出源点s和汇点t。 令源点与每个人相连,容量为1,费用为

poj 3068 有流量限制的最小费用网络流

题意: m条有向边连接了n个仓库,每条边都有一定费用。 将两种危险品从0运到n-1,除了起点和终点外,危险品不能放在一起,也不能走相同的路径。 求最小的费用是多少。 解析: 抽象出一个源点s一个汇点t,源点与0相连,费用为0,容量为2。 汇点与n - 1相连,费用为0,容量为2。 每条边之间也相连,费用为每条边的费用,容量为1。 建图完毕之后,求一条流量为2的最小费用流就行了

Sentinel 高可用流量管理框架

Sentinel 是面向分布式服务架构的高可用流量防护组件,主要以流量为切入点,从限流、流量整形、熔断降级、系统负载保护、热点防护等多个维度来帮助开发者保障微服务的稳定性。 Sentinel 具有以下特性: 丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、消息削峰填谷、集群流量控制、实时熔断下游不可用应

计算机网络基础概念 交换机、路由器、网关、TBOX

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、VLAN是什么?二 、交换机三、路由器四、网关五、TBOXTelematics BOX,简称车载T-BOX,车联网系统包含四部分,主机、车载T-BOX、手机APP及后台系统。主机主要用于车内的影音娱乐,以及车辆信息显示;车载T-BOX主要用于和后台系统/手机APP通信,实现手机APP的车辆信息显示与控

CCF推荐C类会议和期刊总结(计算机网络领域)

CCF推荐C类会议和期刊总结(计算机网络领域) 在计算机网络领域,中国计算机学会(CCF)推荐的C类会议和期刊为研究者提供了广泛的学术交流平台。以下是对所有C类会议和期刊的总结,包括全称、出版社、dblp文献网址以及所属领域。 目录 CCF推荐C类会议和期刊总结(计算机网络领域) C类期刊 1. Ad Hoc Networks 2. CC 3. TNSM 4. IET Com

WebShell流量特征检测_哥斯拉篇

90后用菜刀,95后用蚁剑,00后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对后三款经典的webshell管理工具进行流量分析和检测。 什么是一句话木马? 1、定义 顾名思义就是执行恶意指令的木马,通过技术手段上传到指定服务器并可以正常访问,将我们需要服务器执行的命令上传并执行 2、特点 短小精悍,功能强大,隐蔽性非常好 3、举例 php一句话木马用php语言编写的,运行

[计算机网络]-计网学习笔记-计网知识点总结(附完整笔记)

本笔记是跟着 b站 湖科大教书匠 视频做的笔记,其中图片为视频中的 PPT,加上了自己的注释。         这是原视频链接。大家可以参照着笔记看原视频。视频中的 PPT 做的非常好。         【计算机网络微课堂(有字幕无背景音乐版)】https://www.bilibili.com/video/BV1c4411d7jb?vd_source=1146b07cc2d66

改造了一个流量阈值自动关机的脚本

改造后的脚本地址:https://raw.githubusercontent.com/BiuBIu-Ka/traffic_monitor/main/main.sh 优化的问题: 优化脚本运行多次会一直叠加流量的问题优化服务器重启后流量记录值清空的问题增加一个小日志系统 wget https://raw.githubusercontent.com/BiuBIu-Ka/traffic_monit