数据链路层解读

基本介绍

概述

 数据链路层使用的信道主要有两种类型

  • 点对点信道。使用一对一的点对点通信方式的信道。
  • 广播信道。使用一对多的广播通信方式的信道。由于广播信道上连接的主机很多,必须使用专用的共享信道协议来协调这些主机的数据发送,因此通信过程比较复杂。

 不同的链路层可能采用不同的数据链路层协议

数据链路层的协议数据单元。帧由首部、数据部分和尾部组成。首部含有帧的控制信息(如地址、控制等),尾部包含帧校验序列,数据部分作为存放IP数据报的数据域。

物理链路与数据链路

 物理链路 (link,链路)   指相邻两结点之间无源的物理线路段,中间没有任何其他的交换结点。

当两台计算机通信时,其通路是由多条链路串接构成的,这说明一条链路只是一条通路的一个组成部分。

数据链路(datalink,逻辑链路)    由物理线路以及实现通信协议的硬件和软件组成的。数据链路层协议(即链路控制规程)在不太可靠的物理链路上实现可靠的数据传输所必不可少的。

网络适配器(即网卡)是实现这些协议的硬件和软件,它通常具有数据链路层和物理层的功能。

 功能

通常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是

早期的数据通信协议曾叫作通信规程(procedure)。因此在数据链路层,规程和协议是同义语。 

数据链路层在物理层提供服务的基础上向网络层提供服务。其基本任务是:把网络层下传的IP数据报封装成帧往下传给物理层,从物理层接收到的无差错帧中提取IP数据报上交给网络层,对差错帧则将其丢弃。    

数据链路层的主要功能

  • 链路管理 数据链路的建立、维持和释放。
  • 帧定界   接收方应当从收到的比特流中准确地区分出一帧的开始和结束,即确定帧的边界位置。
  • 透明传输   任意的比特组合数据均可正确传输。
  • 流量控制   实质是控制发送方的发送数据速率,不应超过接收方所能承受的能力。
  • 差错检测   通常采用发送端对被传输的比特流后面附加差错检测码,接收端重新计算检测码,两者进行比较,判别差错存在与否。     

三个基本问题

点对点信道的数据链路层协议要解决三个基本问题:

  • 帧定界
  • 透明传输
  • 差错检测 

帧定界 

帧定界(framing)就是从传送的比特流中正确地区分出帧的边界

帧定界采用的几种方法:

字节填充法   采用一些特定的控制字符来定界一帧的开始和结束。

当PPP使用异步传输时,我们使用0x7D(01111101)作为转义符,转义的规则如下:

  • 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。

  • 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。

  • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。

在字节填充法中,采用字节填充技术。被填入的字节是转义字节(ESC)。 

比特填充法   采用一特定的比特组合01111110来定界一帧的开始和结束,是目前最常用的方法。

采用“零比特插入、删除”技术来解决传送的数据信息中出现特定比特组合的问题。 

零比特填充相较字节填充要简单得多,0x7E的二进制表示是01111110,因此只要在每出现5个1时插入一个0就可以避免在数据中出现0x7E.

字节计数法   采用一特定字符来表示一帧的开始,随后使用一个字节计数字段指明该帧所要求传输的字节数。

此法仅应用于DDCMP规程中,存在的问题在于字节计数值在传输过程中出现错误,就无法确定帧的结束边界。 

非法比特编码法   采用非法编码作为帧的边界。 

此法仅适用于物理媒体上采用特定比特编码的场合。例如,在局域网中采用双相码传输时,每个码元的中点都存在电平跳变。显然,对于码元中点不发生电平跳变的比特编码就属于非法比特编码,这种非法比特编码就可用作帧的定界 

透明传输 

 透明传输是指不管链路上传输的是何种形式的比特组合,都不会影响数据传输的正常进行。

  • 在字节填充法中,采用字节填充技术。被填入的字节是转义字节(ESC)
  • 在比特填充法中,采用“零比特插入、删除”技术。如插入特定的比特组合“01111110”
  • 在字节计数法中,采用字节计数字段指明所要传输的字节数。

 采用字节填充技术的透明传输举例

若传送的数据中出现控制字符,则采用插入一个转义字符“ESC(1BH)来解决。如果转义字符也出现数据当中,应在转义字符前面再插入一个转义字符。在接收端应删除其插入的转义字符

 

差错控制 

数据信号在传输过程中可能会产生差错:1 可能会变成 0 ,而 0 也可能变成 1

误码率 BER (Bit Error Rate)是衡量传输差错的度量指标。该指标表示:在一段时间内,传输错误的比特占所传输比特总数的比率。

误码率与信噪比有着很大的关系。为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。循环冗余检验CRC是数据链路层被广泛采用的一种差错检测技术。

注意

  • 帧校验序列FCSCRC有着不同的含义。CRC指的是一种检错方法,而FCS则是添加在数据域后面起着检错作用的冗余码。
  • 循环冗余检验CRC差错检测技术只能做到无差错接受无差错接受”是指:凡是接受的帧(不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错。换句话说,凡是接收端数据链路层接受的帧都没有传输差错(有差错的帧就丢弃而不接受)。
  • 要做到“可靠传输(即发送什么就收到什么)就必须再加上确认重传机制。

习题讲解 

数据链路层协议使用了下面的字符编码:A:01000111 B:11100011 FLAG:01111110 ESC:11100000。为了传输一个包含4个字符的帧:A B ESC FLAG,试问使用下面哪种成帧方法时所发送的比特序列是什么(二进制表示)?(1)字节计数(2)字节填充的标志字节(3)比特填充的标志字节

  • (1)字节计数法需要帧的长度信息,所以一共需要发送5个字节。发送序列为:00000100(表示4)01000111 (A)11100011 (B)11100000(ESC)01111110 (FLAG);

字节计数法需要帧的长度信息,也就是需要用同样的长度和二进制来表达对应的总共的字节的数量,所以是4,所以一共需要发送5个字节。

  • (2)FLAG是起始、结束标志。所以发送序列为:01111110(FLAG) 01000111(A) 11100011(B) 11100000(ESC) 11100000(ESC) 11100000(ESC)01111110(FLAG)01111110(FLAG)

FLAG是起始、结束标志。也就是必须在开头和结尾之中加上对应的转义符号,然后对于其中本身已经是转义符号的东西还要在前面加上另外的转义符号,所以一共是加上了2个esc和两个flag

  • (3)数据中若遇到连续5个1则在其后添加0。所以发送序列为:01111110(FLAG)01000111(A)110100011(B)111000000(ESC)011111010 (FLAG)01111110 (FLAG)

 比特填充方法就是数据中若遇到连续5个1则在其后添加0,然后本身还要有flag的结束和开头。

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

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

相关文章

【Windows】共享文件夹拍照还原防火墙设置(入站,出站设置)---图文并茂详细讲解

目录 一 共享文件夹(两种形式) 1.1 普通共享与高级共享区别 1.2 使用 二 拍照还原 2.1 是什么 2.2 使用 三 防火墙设置(入栈,出站设置) 3.1 引入 3.2 入站出站设置 3.2.1入站出站含义 3.3入站设置 3.4安装jdk 3.5使用tomcat进行访…

sql_lab之sqli中的堆叠型注入(less-38)

堆叠注入(less-38) 1.判断注入类型 http://127.0.0.3/less-38/?id1 and 12 -- s 没有回显 http://127.0.0.3/less-38/?id1 and 11 -- s 有回显 则说明是单字节’注入 2.查询字段数 http://127.0.0.3/less-38/?id1 order by 4 -- s 报错 http:/…

智能优化算法应用:基于人工兔算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于人工兔算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于人工兔算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.人工兔算法4.实验参数设定5.算法结果6.参考文…

取证工具volatility插件版学习记录

更新时间:2023年12月18日11:48:29 1. 背景描述 在以前学习过volatility的基础功能,主要是使用volatility独立版进行学习的,前几天遇到一个ctf赛事,需要用到的是volatility的mimikatz模块,因为以前没使用过那个模块&…

【Filament】立方体贴图(6张图)

1 前言 本文通过一个立方体贴图的例子,讲解三维纹理贴图(子网格贴图)的应用,案例中使用 6 张不同的图片给立方体贴图,图片如下。 读者如果对 Filament 不太熟悉,请回顾以下内容。 Filament环境搭建绘制三角…

HTML制作暴雨特效

🎀效果展示 🎀代码展示 <body> <!-- partial:index.partial.html --> <canvas id="canvas-club">

python消费rabbitmq

队列经常用&#xff0c;能保持信息一致性。也能跨语言&#xff0c;java写的生产者&#xff0c;推到队列中&#xff0c;python写的消费者消费。 这里&#xff0c;生成者&#xff0c;我们是java&#xff0c;已经发了一条消息了。 python是使用pika来链接rabbitmq 安装pika pip…

扩展mybatis-plus,保留逻辑删、逻辑查的前提下,扩展硬删除、硬查询

引入相关依赖 <!-- 提示&#xff1a;1. common-mybatis-plus:2100.8.8 中只有4个类文件&#xff0c;是对硬删除、硬查询的扩展支持&#xff0c;如果你不想引入依赖的话&#xff0c;你可以把这四个文件复制到自己的项目中即可2. common-mybatis-plus:2100.8.8 对应mybatis-p…

青少年CTF-qsnctf-Web-include01include02(多种方法-知识点较多-建议收藏!)

PHP常见伪协议 php://filter是PHP中独有的一种协议&#xff0c;它是一种过滤器&#xff0c;可以作为一个中间流来过滤其他的数据流。通常使用该协议来读取或者写入部分数据&#xff0c;且在读取和写入之前对数据进行一些过滤&#xff0c;例如base64编码处理&#xff0c;rot13处…

MongoDB ReplicaSet 部署

文章目录 前言1. 环境准备2. 生成密钥3. 配置参数4. 创建 ReplicaSet5. 副本集维护5.1 新增成员5.2 移除节点5.4 主节点降级5.5 阻止选举5.6 允许副本节点读5.7 延迟观测 6. 连接副本集 后记 前言 本篇文章介绍 MongoDB ReplicaSet 如何搭建&#xff0c;及常用的维护方法。 1…

求简单表达式的值

题目&#xff1a;在键盘输入类似(56-20)/(42)这样的表达式输出结果 此题分为两部分&#xff08;1&#xff09;将表达式转换成后缀表达式&#xff08;2&#xff09;计算后缀表达式的值 需要注意的是本题要定义两个不同的栈 一个数据类型是字符&#xff0c;一个数据类型是doubl…

Spring Boot:Spring Boot 入门、yaml 配置文件给属性赋值、自动装配原理详解

文章目录 Spring Boot - 01一、概述二、第一个 Spring Boot 程序补充知识 三、配置文件1. yaml 配置文件2. 使用 yaml 配置文件给属性赋值3. 松散绑定以及数据校验4. 配置文件的位置以及多环境配置 四、Spring Boot 分析1. pom.xml2. 启动器3. 主程序4. 自动装配原理5. 主启动类…

数栈UI5.0设计实战|B端表单这样设计,不仅美观还提效

表单是B端产品中最常见的组件之一&#xff0c;主要⽤于数据收集、校验和提交。比如登陆流程的账号密码填写&#xff0c;注册流程的邮箱、用户名等信息填写&#xff0c;都是表单应用的常见案例&#xff0c;在数栈产品中也是出现频率⾮常⾼的组件。 尽管表单应用十分普遍&#x…

腾讯云4核8G服务器轻量和CVM标准型S5对比

腾讯云4核8G服务器优惠价格表&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;阿腾云atengyun.com分享腾讯云4核8G服务器详细配置、优惠价格及限制条件&…

网络通信协议

WebSocket通信 WebSocket是一种基于TCP的网络通信协议&#xff0c;提供了浏览器和服务器之间的全双工通信&#xff08;full-duplex&#xff09;能力。在WebSocket API中&#xff0c;浏览器和服务器只需要完成一次握手&#xff0c;两者之间就直接可以创建持久性的连接&#xff…

虚幻学习笔记16—C++和3DUI(二)

一、前言 上一篇虚幻学习笔记15—C和UI&#xff08;一&#xff09;中介绍了通过C代码创建2D的ui&#xff0c;本章主要讲解怎么用C代码创建3D的UI&#xff0c;在虚幻学习笔记3—UI跟随弹窗这章中讲解了怎样用蓝图创建一个3D的UI&#xff0c;并且和其交互。 本系列使用的虚幻5.2.…

【Tensor张量】AI模型的信息流通货币

官方解释https://www.tensorflow.org/guide/tensor?hl=zh-cn 1.Tensor的概念理解 如果大模型是一个会运行的城市工厂,那么Tensor就是 运输车! 如果大模型是计算机,那么Tensor就是硬盘。 负责深度学习数据的运输和存储!把数据送给AI模型进行训练,AI模型推理后的数据也…

操作系统“文艺复兴”,云数智融合涌现“美第奇效应”

操作系统作为信息技术中的基础软件&#xff0c;是现代计算机的“灵魂”。随着大模型AI推动云计算、大数据、人工智能、物联网和5G等新一代数字技术的飞速融合&#xff0c;现代计算机体系结构和软件架构面临着重大创新机遇期。图灵奖获得者John Hennessy和David Patterson早在20…

接口测试学习笔记

文章目录 认识urlhttp协议接口规范Postman实现接口测试设计接口测试用例使用软件发送请求并查看响应结果Postman 自动关联Postman如何提交multipart/form-data请求数据Postman如何提交查询参数Postman 如何批量执行用例单接口测试Postman 断言Postman参数化 接口测试自动化requ…

家有一宝,快乐翻倍,最新最全面基于AdGuard Home 自建 DNS 防污染、去广告教程、安装部署详解、优化增强设置详解

家有一宝,快乐翻倍,最新最全面基于AdGuard Home 自建 DNS 防污染、去广告教程、安装部署详解、优化增强设置详解。支持各个客户端,全平台覆盖。 AdGuard Home 部署的方式有很多种,一般二进制文件部署和直接编译到 OpenWrt 系统中是大家所常用的。而博主个人倾向于使用 Dock…