计算机网络:数据链路层

0 本节主要内容

问题描述
解决思路

1 问题描述

数据链路层主要面临四个问题:

  • 封装成帧;
  • 透明传输;
  • 差错检测;
  • 实现相邻节点之间的可靠通信。

1.1 子问题1:封装成帧

怎么知道数据从哪里开始?到哪里结束?
生活中类似的例子:文件有表示文件开头的标识,还有标识文件结尾的标识。

1.2 子问题2:透明传输

这个问题是子问题1带来的,由于要解决子问题1,会引入一些特殊字符,在实际传输的数据中,如果出现了这些特殊字符又怎么办?

1.3 子问题3:差错检测

如何知道数据在传输过程中出现了错误?

1.4 子问题4:实现相邻节点之间的可靠通信

这个问题又存在若干个子问题:

  • 如果采用广播信道,如何避免冲突?(集线器工作方式)
  • 如果采用交换方式,如何进行自学习和转发?(交换器工作方式)

2 解决思路

2.1 封装成帧:解决子问题1

封装成帧 (framing):在一段数据的前后分别添加首部和尾部,构成一个帧。
首部和尾部的一个重要作用就是进行帧定界(即确定帧的界限)。
在这里插入图片描述
控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。
控制字符 EOT (End Of Transmission) 放在一帧的末尾,表示帧的结束。
在这里插入图片描述

2.2 透明传输:解决子问题2

问题:如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。
在这里插入图片描述
用“字节填充”或“字符填充”法解决透明传输的问题:
在这里插入图片描述

2.3 CRC:解决子问题3

问题:在传输过程中可能会产生比特差错, 1 → 0 1 \rightarrow 0 10 0 → 1 0 \rightarrow 1 01
在这里插入图片描述
在发送端,先把数据划分为组。假定每组 k k k 个比特。 CRC 运算在每组 M M M 后面再添加供差错检测用的 n n n 位冗余码,然后构成一个帧发送出去。一共发送 ( k + n ) (k + n) (k+n) 位。
CRC 冗余码的计算:
在这里插入图片描述
CRC 冗余码的计算举例:
在这里插入图片描述

2.4 CSMA/CD:解决子问题4-1

问题:多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败。
在这里插入图片描述
A 需要单程传播时延的 2 倍的时间,才能检测到与 B 的发送产生了冲突。
在这里插入图片描述
CSMA/CD 协议工作流程:
在这里插入图片描述
碰撞后重传的时机:采用截断二进制指数退避 (truncated binary exponential backoff) 确定。
发生碰撞的站停止发送数据后,要退避一个随机时间后再发送数据。

  • 基本退避时间 = 2 τ 2 \tau 2τ
  • 从整数集合 { 0 , 1 , … , ( 2 k − 1 ) } \{0, 1, \dots , (2k - 1)\} {0,1,,(2k1)}中随机地取出一个数,记为 r r r
    重传所需的时延 = r × 基本退避时间 r \times 基本退避时间 r×基本退避时间
  • 参数 k = min ⁡ { 重传次数 , 10 } k = \min\{重传次数, 10\} k=min{重传次数,10}
  • 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。

举例:

  • 第 1 次冲突重传时:
    k = 1 k = 1 k=1 r r r { 0 , 1 } \{0,1\} {01} 集合中的任何一个数。
  • 第 2 次冲突重传时:
    k = 2 k = 2 k=2 r r r { 0 , 1 , 2 , 3 } \{0,1,2,3\} {0123} 集合中的任何一个数。
  • 第 3 次冲突重传时:
    k = 3 k = 3 k=3 r r r { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 } \{0,1,2,3,4,5,6,7\} {01234567} 集合中的任何一个数。

若连续多次发生冲突,表明可能有较多的站参与争用信道。
上述退避算法可使重传需要推迟的平均时间随重传次数而增大(称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。

2.5 交换机工作原理:解决子问题4-2

问题:碰撞域(collision domain)又称为冲突域,指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。碰撞域越大,发生碰撞的概率越高。

2.5.1 用交换机取代集线器

在这里插入图片描述
集线器:

  • N N N 个用户共享集线器提供的带宽 B B B
  • 平均每个用户仅占有 B / N B/N B/N 的带宽。

以太网交换机的每个接口都是一个碰撞域:
在这里插入图片描述
以太网交换机的优点:每个用户独享带宽,增加了总容量。

  • 交换机为每个端口提供带宽 B B B
  • N N N 个用户,每个用户独占带宽 B B B
  • 交换机总容量达 B × N B × N B×N

2.5.2 以太网交换机的工作原理:自学习(源地址)、转发(目的地址)

在这里插入图片描述
A 先向 B 发送一帧。该帧从接口 1 进入到交换机。
在这里插入图片描述

  • 交换机收到帧后,先查找交换表。没有查到应从哪个接口转发这个帧给 B。
  • 交换机把这个帧的源地址 A 和接口 1 写入交换表中。
  • 交换机向除接口 1 以外的所有的接口广播这个帧。

在这里插入图片描述
交换机自学习和转发帧的步骤归纳:
在这里插入图片描述

2.5.3 自学习和转发总结

自学习:通过收到的数据包的源地址进行学习

  • 如果表中无,在表中添加MAC地址、接口号、有效时间;
  • 如果表中有,更新表中的信息。

转发:通过收到的数据包的目的地址进行转发

  • 如果表中无,进行广播(帧进入的接口除外);
  • 如果表中有且和帧进入的接口不同,向指定接口转发;
  • 如果表中有且和帧进入的接口相同,则丢弃
  • 如果收到的是广播帧,进行广播(帧进入的接口除外)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/202294.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

校园圈子论坛,交友,帖子内短视频,二手市场,APP小程序H5三端交付,源码交付,支持二开

校园圈子论坛,交友频道,商城,二手市场,活动专区,短视频,从校园生活的方方面面展现出了充满活力和创造力的镜头。这个频道是一个让学生们相互交流、结识新朋友的平台,不仅有交友功能,…

如何使用无代码系统搭建软件平台?有哪些开源无代码开发平台?

无代码是什么 无代码开发,也称为零代码(Zero Code)开发,是一种技术概念。无代码开发无需代码基础,适合业务人员、IT开发及其他各类人员使用。他们通过无代码开发平台快速构建应用,并适应各种需求变化&#…

抖音汽车租赁小程序技术指南:开发高效便捷的租赁系统

为了更好地满足用户需求,抖音汽车租赁小程序成为一个备受关注的技术解决方案。本文将深入探讨开发高效便捷的汽车租赁系统所需的技术要点,为开发者提供一份实用的技术指南。 小程序架构选择 在搭建抖音汽车租赁小程序时,选择合适的小程序架构…

Arthas 监听 Docker 部署的java项目CPU占比高的信息

1、Linux上安装Arthas wget https://alibaba.github.io/arthas/arthas-boot.jar2、docker ps 查看目标项目的容器ID 3、copy Arthas 到目标容器中 (注意有 😕 ) docker cp arthas-boot.jar d97e8666666:/4、进入到目标容器目录中 docker exec -it d97e8666666 /b…

根据商品链接获取拼多多商品详情数据接口|拼多多商品详情价格数据接口|拼多多API接口

拼多多,作为中国最大的社交电商之一,为卖家提供了丰富的商品详情接口。这些接口可以帮助卖家快速获取商品信息,提高销售效率。本文将详细介绍如何使用拼多多商品详情接口,以及它的优势和注意事项。 一、拼多多商品详情接口概述 …

centos7中通过minikube安装Kubernetes

minikube是一款开源的Kubernetes集群管理器,它可以帮助您在本地计算机上轻松部署和管理Kubernetes集群。以下是minikube的安装和使用步骤: 安装Docker:如果您还没有安装Docker,可以从Docker官方网站上下载并安装适合您操作系统的…

分类预测 | Matlab实现基于DBN-SVM深度置信网络-支持向量机的数据分类预测

分类预测 | Matlab实现基于DBN-SVM深度置信网络-支持向量机的数据分类预测 目录 分类预测 | Matlab实现基于DBN-SVM深度置信网络-支持向量机的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.利用DBN进行特征提取,将提取后的特征放入SVM进行分类…

Java基础(程序控制结构篇)

Java的程序控制结构与C语言一致,分为顺序结构、选择结构(分支结构)和循环结构三种。 一、顺序结构 如果程序不包含选择结构或是循环结构,那么程序中的语句就是顺序的逐条执行,这就是顺序结构。 import java.util.Sc…

QT mysql 数据库线程池 与数据库操作封装

最近事情比较多很久没有写学习笔记了,数据库线程池, 数据库封装,虽说数据库操作有很多不需要写sql 的,ORM 封装的方式去操作数据库。但是从业这些年一直是自己动手写sql ,还是改不了这个习惯。不说了直接上代码。 数据…

【C语言】数据结构——栈和队列实例探究

💗个人主页💗 ⭐个人专栏——数据结构学习⭐ 💫点击关注🤩一起学习C语言💯💫 目录 导读:一、 栈1. 栈的概念及结构2. 栈的实现3. 实现代码3.1 定义结构体3.2 初始化栈3.3 销毁栈3.4 入栈3.5 出栈…

Rust生态系统:探索常用的库和框架

大家好!我是lincyang。 今天我们来探索Rust的生态系统,特别是其中的一些常用库和框架。 Rust生态系统虽然相比于一些更成熟的语言还在成长阶段,但已经有很多强大的工具和库支持各种应用的开发。 常用的Rust库和框架 Serde:一个…

python pymodbus库使用教程(以Modbus RTU为例)

文档: https://pymodbus.readthedocs.io/en/latest/ 源码: https://github.com/riptideio/pymodbus/ 文章目录 Python PyModbus库使用教程:以Modbus RTU为例介绍安装PyModbus配置串行连接导入必要的模块创建Modbus客户端实例 建立连接连接…

CQ 社区版 V2.6.0 发布 | SQL闪回、权限看板、新增数据源人大金仓等

前言 HELLO,大家好,又到了 CloudQuery 社区版发版时间!本次更新版本为 v2.6.0,亮点多多,我们直入主题一起来看! 一、本期亮点 新增 3 种数据源支持 V2.6.0,新增三种国产数据源支持&#xff…

【广州华锐互动】VR溺水预防教育:在虚拟世界中学会自救!

在现代社会中,水上安全和救援行动的重要性不言而喻。尤其在自然灾害、游泳事故或航海事故中,有效的救援行动可以挽救许多生命。然而,传统的救援训练往往存在成本高、风险大、效率低等问题。在这样的背景下,虚拟现实(VR…

为什么要写测试用例,测试用例写给谁看?

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

buildAdmin 后端控制器的代码分析

buildAdmin的代码生成&#xff0c;很像是 fastadmin 的生成模式&#xff0c;当我们利用数据库生成了一个控制器的时候&#xff0c;我们可以看到&#xff0c; 它的生成代码很简洁 <?phpnamespace app\admin\controller\askanswer;use app\common\controller\Backend;/*** 回…

数据中台之用户画像

用户画像应用领域较为广泛,适合于各个产品周期,从新用户的引流到潜在用户的挖掘、 从老用户 的培养到流失用户的回流等。通过挖掘用户兴趣、偏好、人口统计特征,可以 直接 作用于提升营销精准 度、推荐匹配度,最终提升产品服务和企业利润。还包括广告投放、产品布局和行业报…

webshell之无扩展免杀

1.php加密 这里是利用phpjiami网站进行加密&#xff0c;进而达到加密效果 加密前&#xff1a; 查杀效果 可以看到这里D某和某狗都查杀 里用php加密后效果 查杀效果 可以看到这里只有D某会显示加密脚本&#xff0c;而某狗直接绕过 2.dezend加密 可以看到dezend加密的特征还是…

SA实战 ·《SpringCloud Alibaba实战》第14章-服务网关加餐:SpringCloud Gateway核心技术

大家好,我是冰河~~ 一不小心《SpringCloud Alibaba实战》专栏都更新到第14章了,再不上车就跟不上了,小伙伴们快跟上啊! 在《SpringCloud Alibaba实战》专栏前面的文章中,我们实现了用户微服务、商品微服务和订单微服务之间的远程调用,并且实现了服务调用的负载均衡。也基…

联想拯救者Lenovo Legion R9000K 2021H(82N6)原装出厂Windows10/Win11系统ISO镜像

链接&#xff1a;https://pan.baidu.com/s/13NkeCXNdV0Ib5eeRnZUeAQ?pwdnlr7 提取码&#xff1a;nlr7 拯救者笔记本电脑原厂WIN系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文…