首页 > 其他分享 >数据链路层(三):流量控制和链路管理

数据链路层(三):流量控制和链路管理

时间:2024-03-26 19:00:13浏览次数:24  
标签:窗口 确认 流量 发送 链路管理 滑动 接收 链路层

目录

1 流量控制和链路管理

1.1 流量控制介绍

1、什么是流量控制

在这里插入图片描述

发送发给接受方发送数据,如果发送方每1秒发送200个包,接收方只能1秒处理100个包。
会出现什么现象呢? 接收方会在缓存中大量缓存接受的包,直到缓存区满了。
满了之后会怎么样? 满了之后就会出现最不能容忍的情况,缓冲区溢出,也就是丢包的现象。
所以接收方一定要在缓冲区快满的时候通知发送方让他降低发送速度,这就是链路层的流量控制。

2、流量控制的功能和方法

流量控制的功能:协调发送端和接收端的数据流量,确保发送的数据不会覆盖接受实体已接收的数据。
常用的流量控制的方法有两种:

  • 停止等待(stop-and-wait)
  • 滑动窗口(Sliding Window)

1.2 停止等待

停止等待的流量控制机制如下:

  • 发送方每发送一个数据帧,就会等待接收方返给一个确认帧(ack),只有当发送方接收到ack之后才会继续发送下一帧,否则继续等待。
  • 这种发送和等待交替的过程不断重复,直到发送方发送了一个传输结束(EOF)帧,完成一次数据传输。
    在这里插入图片描述

停止等待的流量控制的

  • 优点:控制简单
  • 缺点:效率较低。如果发送方和接收方设备之间的距离较长,则每传输一帧需等待ACK帧所花费的时间将大大增加总传输时间,因此传输速度会很慢

1.3 滑动窗口

滑动窗口机制,发送方可以发送多个帧等待接收方确认,接收方只对其中一些帧进行确认,使用一个ACK帧来对多个数据帧的接收进行确认。

1、滑动窗口

滑动窗口:是发送方和接收方创建的一个额外缓冲区(包括发送方的发送窗口和接收方的接收窗口),窗口可以存储若干数据帧,窗口在数据传输过程中根据控制向前滑动,从而控制数据传输过程,并且发送方在收到接收方的确认之前能够传输的帧数目也进行了限制。
帧以模n方式标识,即帧编号从0 到n-1,如:n=8
滑动窗口大小为n-1,即该窗口大小为 7。滑动窗口大小不能覆盖整个窗口。
在这里插入图片描述

发送方:最多发送 n-1 个帧。只要接收方不满就可以继续发送数据
接收方:最多存储 n-1 个帧。可以不等窗口填满对任一数据进行确认。
在这里插入图片描述

2、发送方滑动窗口

发送窗口用来对发方进行流量控制,窗口大小指明了在收到对方ACK之前最多可以发送数据帧数,窗口内的帧是可以连续发送的。
发送方滑动窗口机制:发送方传输开始前,发送方窗口有 n-1 个帧。随着数据帧的发送,窗口的左边界向内移动,窗口不断被缩小。例如在接收到最近一次确认帧来已经发送了3 帧,那么窗口中剩余的帧数是n-1-3。一旦收到一个确认帧。窗口右边界根据确认帧确认的数据帧个数对窗口自动进行相同数目的扩展。

在这里插入图片描述
注意:发送方将数据帧发送出去时,滑动窗口左边界向左收缩窗口。而当收到确认帧时,发送方滑动窗口右边界向右扩展

3、接收方滑动窗口

接收窗口:可以控制哪些数据帧可以接收,只有到达的数据帧的序号在接收窗口之内的才可以被接收,接收过的数据帧将被丢弃。正常情况下,接收方收到一个有序且无差错的帧后,接收窗口向前滑动,并准备接收下一帧,这时会向发送方发出一个确认。确认已经接收的帧以及下一次要接收的帧。
发送确认的方式有两种:

  • 累计确认
  • 捎带确认(捎带确认是在双向数据传输情况下,将确认信息放在自己也要发送的数据帧的首字段中捎带过去。)

接收方滑动窗口机制:接收方在传输开始的时候,接收方窗口有n-1个帧空间但不一定包含n-1个帧。接收数据帧后,接收方窗口会不断缩小。它表示发送确认帧前窗口中还可接收的帧的数目(剩余的帧数)。一旦发送完一个确认帧,窗口大小就会按确认的帧数量自动扩展。
在这里插入图片描述

注意:接收方接收数据帧后,接收方滑动窗口左边界向左收缩窗口。而当发送确认帧时,接收方滑动窗口右边界向右扩展

4、滑动窗口的流量控制使用

滑动窗口如何实现流量控制的

发送方收到接收收方的确认后,发送窗口右边界向右移动,同时新的帧会到达发送窗口可以被发送,已被确认正确收到的帧移到了窗口的外面。所以接收方的确认作为一个依据,控制发送方发送窗口向前滑动。接收方可以根据自己的接收能力来控制确认帧的发送,从而实现传输流量的控制。
由于滑动窗口中使用了确认机制,因此它也兼有差错控制的功能。

为什么滑动窗口的大小比模数小1

为了避免确认帧中包含的编号出现二义性。

什么意思呢?假设n=8,窗口大小也为8,如果这时发送了0号帧,又收到编号1的确认帧(ACK 1)。发送方就开始扩展窗口,并继续发送1、2、3、4、5、6、7 和0 号帧。当此时发送方又收到ACK 1,它就不知道是因为网络问题而重发的上一次的ACK 1,还是最近发送的八帧的新的ACK 1。因此将窗口大小设定为7(即 n-1)。

滑动窗口控制流量采取的措施

滑动窗口中,控制传输流量主要采取以下措施:

  • 1.设置合适的发送窗口大小,一般不超过接收方接收缓冲区的大小。这样发送方发送的数据就不容易淹没接收缓冲区。
  • 2.可变滑动窗口。由接收方根据当前接收缓冲区的大小决定发送方发送窗口的大小,并通知发送方改变发送窗口的大小,TCP协议流量控制就使用这种方式。
  • 3.接收方根据目前可用接收缓冲区的情况,决定发送确认的时机,使发送流量与接收缓冲区的可用容量匹配。
流量控制使用注意事项

流量控制使用注意:

  • 流量控制机制不仅适合于局域网,也适合于城域网和广域网。比如:以太网中帧的传输、TCP协议等也使用这些流量控制机制。
  • 流量控制并不只在数据链路层中进行,在传输层也有流量控制,只是控制对象不同。
    • 数据链路层中控制的是LAN中两个节点之间,点到点连接的数据传输流量;
    • 传输层控制的是WAN中从源端到目的端,传输路径中需要经过许多中间节点的端到端的流量。

1.4 链路管理

数据链路层的链路管理主要包括链路的建立,维持和释放。

  • 链路的建立:链路两端的节点通信前,数据发送方首先确认接收方是否已处在准备接受的状态,为此,发送方可能会发送一个询问帧ENQ(enquiry),并与接收方交换一些必要的信息以对帧序号进行初始化,然后才能建立连接。
  • 维持:在传输过程中需要要维持之前建立的连接。如果出现差错,需要重新初始化,重新自动建立连接,传输完毕后则会释放连接
  • 释放:释放连接时,传输的正确性需要被确认,接收方会发一个确认应答ACK,否则发送一个否定应答NAK。
    链路管理功能主要用于面向连接的服务

标签:窗口,确认,流量,发送,链路管理,滑动,接收,链路层
From: https://blog.csdn.net/dl_11/article/details/137018897

相关文章

  • 计算机网络——数据链路层(差错控制)
    计算机网络——数据链路层(差错控制)差错从何而来数据链路层的差错控制检错编码奇偶校验码循环冗余校验(CRC)FCS纠错编码海明码海明距离纠错流程确定校验码的位数r确定校验码和数据位置求出校验码的值检错并纠错我们今年天来继续学习计算机网络数据链路层这一小节的......
  • 海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)
    海量数据处理项目-账号微服务和流量包数据库表+索引规范(下)第2集账号微服务和流量包数据库表+索引规范讲解《下》简介:账号微服务和流量包数据库表+索引规范讲解账号和流量包的关系:一对多traffic流量包表思考点海量数据下每天免费次数怎么更新?海量数据付费流量套餐包每天......
  • Windows 防火墙中设置规则以拒绝所有流量,但允许特定 IP 通过
    在Windows防火墙中设置规则以拒绝所有流量,但允许特定IP通过,可以通过以下步骤进行设置:打开控制面板:点击“开始”按钮,然后输入“控制面板”并按回车键。打开WindowsDefender防火墙:在控制面板中,找到并点击“系统和安全”>“WindowsDefender防火墙”。设置......
  • sql盲注流量
    先使用http协议过滤,发现很多get方法中存在sql注入语句随便点击一个,对其语句进行url解码发现黑客是在猜解flag表的keyid字段,大概率flag就是keyid的值盲注的区别就是返回包的不同状态失败会返回nothing,并且返回包的长度是661,成功会返回文章内容,长度是695之后写脚本: 1impo......
  • 【SEO新手必看】7步轻松提升网站流量
    大家好,我是弗雷,一名独立开发者。你是否在为如何让网站在搜索引擎中脱颖而出而苦恼?别担心,今天我们一起揭秘SEO的神秘面纱,即使是SEO新手,也能快速有效提升网站流量。1.关键词挖掘:寻宝游戏的开始SEO中文描述是搜索引擎优化,而优化的前提就是关键词的选取。就像我们希望......
  • tcp扫描流量
    题目介绍在墨西哥逃亡期间,X先生通过互联网远程渗透到北极核聚变研究机构(ANFRF)的实验室子网。实际上在设施内部(通过一个被入侵的系统)他进行了一些嘈杂的网络侦察,可悲的是X先生还不是很隐蔽,对X先生来说不幸的是实验室的网络被装备来捕获所有流量(包括全部内容),他的活动被你发现......
  • 在Linux中,如何配置负载均衡器以分配网络流量?
    在Linux中配置负载均衡器以分配网络流量是一个复杂但重要的任务,它涉及到多个组件和步骤。下面将详细介绍配置负载均衡器的一般过程:一、选择负载均衡软件首先,你需要选择一个负载均衡软件。在Linux中,常用的负载均衡软件有HAProxy、Nginx和LVS(LinuxVirtualServer)等。这些软件都可......
  • smtp连接流量
    基于smtp和pop3协议的邮件服务可以说的上是互联网第二大服务,web是第一!所以,有必要分析一下邮件的流量信息下面是具体的案例用户名密码都是base64编码 ......
  • kubeshark查看k8s中pod的流量
    kubeshark的介绍在底层实现当中,Kubeshark主要使用到了Linux内核中的各种内置方法和API,隐藏了对流量数据的加解密实现,可以直接收集到K8s集群中的加密和未加密流量。对网络数据的收集主要使用了直接抓包法和基于拓展伯克利包过滤(eBPF)的数据包获取。直接抓包法涉及libpcap、AF_PACKE......
  • 在Linux中,如何配置负载均衡器以分配网络流量?
    1.NGINXNGINX是一款高性能的HTTP和反向代理服务器,也常用作负载均衡器。它支持多种负载均衡算法,如轮询、加权轮询、IP哈希等。配置步骤:安装NGINX:根据您的Linux发行版,使用相应的包管理器安装NGINX。配置负载均衡:编辑NGINX配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/c......