计算机网络学习小结_数据链路层

embedded/2024/11/14 6:16:06/

数据链路和帧

帧:数据链路层传输基本单元。链路层将网络层传过来的数据构成帧发到链路上,并将发到链路层的帧取出数据交给网络

数据报/分组/包:网络层传输基本单元

三个基本问题

封装成帧、透明传输、差错检测

封装成帧

概念:将数据在头部和尾部加帧头和帧尾组,数据,帧头,帧尾组成的结构叫帧,是链路层发送的基本单位。帧头和帧尾可用来帧定界,即从发来或收到的一串数据甄别哪里是一个帧的开始和结束,定界可用来对数据帧进行差错检验

透明传输

即帧的数据中如果出现帧头和帧尾,识别帧起始时,会误把数据里的帧头和帧尾当作帧头或帧尾,导致数据未读取完就截取了,只截取了片段。数据里出现的和帧头帧尾编码一样的字节序,数据里的东西(帧头帧尾相同的字节序)不是透明的。

当帧数据里出现了和帧头帧尾相同字节序的数据怎么办?加转义字符,发的时候加,收到的时候去掉

差错检测

数据传输过程中,可能会产生误码,即传输的数据1变成0或者0变成1。这种误码和信噪比有关,信噪比越高误码率越小。链路层广泛使用循环冗余校验(CRC,Cyclic Redundancy Check)来检测这种误码

CRC:发送方和接收方共同商议一个n + 1位除数P,用数据对这个除数P进行模2运算得出n位余数,将原始数据末尾加上这个n位余数就是crc校验,接收方对这个数据同样做模2运算,如果余数不相同则丢弃数据,如果余数相同则接受数据

无比特差错和无传输差错:链路层的CRC校验只能保证帧无比特差错,不能保证其他差错,比如帧丢失,帧乱序,所以仅实现CRC不能叫无传输差错,只能叫无比特差错。链路层不保证无传输差错,仅可保证帧传输无比特差错,无传输差错由上层协议保证

PPP协议

早期通信线路质量较差年代,链路层使用一种可靠传输协议HDLC(高级数据链路控制),后来用的少了,取代之的是简单的多的PPP协议(点对点协议,Point-To-Point)

ppp协议保证差错检测

ppp帧格式

帧头4个字段帧尾2个字段

字段含义

帧头帧尾的F表示帧定界符,标志帧的开头和结束。两个F出现时表示这是个空帧,应该丢弃(会不会是没有数据中间是空的,开头和结尾的F连在一起变成两个F)

A和C表示2个固定字符,还没有明确含义

协议字段表示数据类型,2个字节

帧尾的FCS是冗余校验的字串

字节填充

即帧数据中出现帧开始结束标识符等字符时处理逻辑是添加填充字符比如转义字符,虽然填充字符后帧长度会变长,但接受后进行相反处理可还原出原始帧

零比特填充

因为ppp协议帧标志字段比特由连续超过5个1,所以发数据时如果发现至少有5个连续的1则在1后面加一个比特0,可以让数据和标志符区分开,接收方如果发现5个连续的1就把五个连续1后面的位删除

ppp协议工作状态

使用广播信道的链路层

局域网数据链路层

共享信道方法:静态划分(频分,时分,波分等,代价高,不太适用)和动态划分(随机接入和受控接入)


http://www.ppmy.cn/embedded/42210.html

相关文章

VUE3注册指令的方法

指令注册只能全局指令和选项式页面指令,composition api没有页面指令 选项式页面指令 <template><div class"home"><h3>自定义指令</h3><div class"from"><el-input type"text" v-focus v-model"name&q…

坦克大战源码,C++复刻经典小游戏

源代码文末自取 狼人杀游戏&#xff1a;复古坦克大战的编程艺术 引言 在数字化飞速发展的今天&#xff0c;复古游戏以其独特的魅力和简单纯粹的游戏性&#xff0c;成为了游戏界的一股清流。它们不仅仅是游戏&#xff0c;更是一种文化&#xff0c;一种情怀。今天&#xff0c;…

Tomcat与JDK各版本的兼容性

Tomcat和JDK之间的兼容性通常取决于Tomcat的版本和JDK的版本。以下是Tomcat和JDK之间的一些常见版本兼容性概述&#xff1a; Tomcat 7&#xff1a; 兼容JDK 1.6、JDK 1.7 和 JDK 1.8。Tomcat 7是基于Java EE 6规范构建的&#xff0c;而JDK 1.6、1.7和1.8都提供了对Java EE 6规…

Nacos 进阶篇---Nacos服务端怎么维护不健康的微服务实例 ?(七)

一、引言 在 Nacos 后台管理服务列表中&#xff0c;我们可以看到微服务列表&#xff0c;其中有一栏叫“健康实例数” &#xff08;如下图&#xff09;&#xff0c;表示对应的客户端实例信息是否可用状态。 那Nacos服务端是怎么感知客户端的状态是否可用呢 &#xff1f; 本章…

反序列化漏洞(JBoss、apache log4、apache Shiro、JWT)Weblogic未授权访问、代码执行、任意上传

1.1什么是反序列化 就是把一个对象变成可以传输的字符串&#xff0c;目的就是为了方便传输。假设&#xff0c;我们写了一个class&#xff0c;这个class里面存有一些变量。当这个class被实例化了之后&#xff0c;在使用过程中里面的一些变量值发生了改变。以后在某些时候还会用到…

Qt | 布局部件拉伸(Stretch)原理及大小策略

Qt | 布局管理器基础(QLayout)01、简介 1、部件的大小策略 sizePolicy、大小限制、拉伸因子(Stretch Factors)的含义 ①、部件的大小策略、大小提示、拉伸因子从三个方面对布局内的部件怎样进行拉伸以填 满布局进行了说明。 ②、拉伸因子:描述了各个部件在进行拉伸时,多个…

Vitis HLS 学习笔记--避免使用多重访问指针

目录 1. 简介 2. 代码解析 2.1 pointer_stream_bad 2.2 pointer_stream_better 2.3 pointer_stream_good 3. 总结 1. 简介 本文将探讨在 Vitis HLS 中正确处理多重访问指针重要性以及其对功能的影响。通过分析示例代码&#xff0c;我们将讨论在如何正确处理指针访问&…

如何开发一个基于通义千问-14B的对话应用

目录 一:开发流程 二:安装 一:开发流程 1:安装环境 需要安装python依赖环境 2:配置项目 我们利用Langchain-Chatchat和Qwen1.5-14B-Chat-GPTQ-Int4来实现一个对话项目应用 3:启动项目 二:安装 1:安装环境 初始化一个python环境: conda create -n qwen-chat py…