计算机网络链路层

数据链路

链路是从一个节点到相邻节点之间的物理线路(有线或无线) 数据链路是指把实现协议的软件和硬件加到对应链路上。是点对点信道的数据链路层的协议数据单元。

点对点信道

通信的主要步骤:

  1. 节点a的数据链路层将网络层交下来的包添加首尾分装成帧。
  2. 节点a将封好的帧发送给节点b的数据链路层。
  3. 若节点b收到的帧无差错则从收到的帧中提取出数据,否则将该帧丢弃。

广播信道

局域网的优点:

  • 具有广播功能。
  • 便于系统的扩展和演变。
  • 提高了系统的可靠性、可用性、生存性。

 静态划分信道、动态媒体接入控制。

以太网的两个主要标准。

三个基本问题

封装成帧

封装成帧就是在一段数据的前后分别加上首部和尾部。首部和尾部的一个重要作用就是帧定界。每一种链路协议都规定了所传输的帧的数据部分的最大长度——最大传输单元MTU

透明传输

透明传送数据:不管什么样的比特组合的数据,都能按照原样没有差错的通过数据链路层。

“透明”表示某个存在的事物看起来好像不存在一样。

当传输文件为非ASCII的文本文件时如果数据中的某个字节的二级制代码恰好为控制字符,数据链路层就会错误的把部分帧收下。 

解决透明传输的问题是:发送端数据链路层在数据中出现控制字符“SOC”和"EOT"时在SOC和EOT前插入一个转义字符“ESC”,接收端的数据链路层把数据送往网络层之前删除这个转义字符,这叫字符填充字节填充

差错检测

在传输过程中可能产生比特差错,即0变成1,1变成0 。传输错误的比特占所有传输的比特总数的比率称之为误码率BER。误码率与信噪比有很大关系。

循环冗余检验CRC

生成步骤

(1)、将x的最高次幂为R的生成多项式G(x)转换成对应的R+1位二进制数。
(2)、将信息码左移R位,相当于对应的信息多项式C(x)*x的R次方。
(3)、用生成多项式(二进制数)对信息码做除,得到R位的余数即冗余码
(4)、将余数拼到信息码左移后空出的位置,得到完整的CRC码。

循环冗余检验CRC和帧检验序列FCS并不是同一概念。CRC是检错方法,FCS是冗余码。

接收方:冗余码除以除数,余数不为零则该帧有差错丢弃该帧,余数为零可能出错但出错概率小。

缺点:这一种检测方法不知道哪个比特出错。

无比特差错与无传输差错
  • 比特差错:帧内部比特位出现错误,可以通过帧的FCS(方法:CRC检验)序列保证无比特差错。
  • 传输差错:帧丢失、帧重复、帧失序。
  • 在数据链路层使用CRC检验,能够实现无比特差错的传输,但这还不是可靠传输。(来自CSDN)

点对点协议PPP

特点:

  1. 简单
  2. 封装成帧
  3. 透明性
  4. 多种网络层协议
  5. 多种类型链路
  6. 差错检测
  7. 检测连接状态
  8. 最大传送单元
  9. 网络层地址协商
  10. 数据压缩协商

不需要的功能

  1. 纠错
  2. 序号
  3. 流量控制

多点线路:只支持点对点链路通信

半双工或单工链路:只支持全双工链路

三个组成部分:

  • 一个将IP数据报封装到串行链路的方法。
  • 一个链路控制协议。
  • 一套网络控制协议。

帧格式

首部和尾部分别为4个字段和两个字段。

首部:

首部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的开始。
首部中的地址字段A规定为0xFF(即11111111)。
首部中的控制字段C规定为0x03(即00000011)。
尾部:
尾部中的第一个字段(2个字节)是使用CRC的帧检验序列FCS。
尾部中的标志字段F(Flag),规定为0x7E(符号0x表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110),标志字段表示一个帧的结束。
注:标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果连续出现两个标志字段,就表示这是一个空帧,应当丢弃。(来自CSDN)

为点对点信道的透明传输提供的解决方案

异步传输

当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充
RFC1662规定了如下填充方法:

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

由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

同步传输

当PPP使用同步传输时,使用零比特填充
零比特填充的具体方法:

  1. 在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些)。
  2. 只要发现有5个连续的1,则立即填入一个0。
  3. 接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。

因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。

 (来自CSDN)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【three.js】后期处理outlinePass描边实现点击选中物体效果

在 Three.js 中,通过后期处理技术可以实现各种视觉效果,其中包括描边(Outline)效果,用于突出显示或选中特定物体。本文将重点介绍如何使用 Three.js 中的 OutlinePass 后期处理效果来实现点击选中物体的效果&#xff0…

LeetCode:509斐波那契数 C语言

斐波那契数 (通常用 F(n) 表示)形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) 0,F(1) 1 F(n) F(n - 1) F(n - 2),其中 n > 1给定 n &a…

【笔记】RDD算子操作(Spark基础知识)

持续更新中!!! 目录 一、RDD的创建 1.从本地创建 (1)本地文件 (2)hdfs文件(先提前创建目录并上传文件) 2.从集合创建(通过并行集合(列表&am…

【C语言基础】:数据在内存中的存储

文章目录 一、整数在内存中的存储二、大小端字节序和字节序判断1. 为什么有大小端?2. 练习 三、浮点数在内存中的存储1. 浮点数的存储1.1 浮点数的存储过程1.2 浮点数取的过程 四、题目解析 书山有路勤为径,学海无涯苦作舟。 创作不易,宝子们…

基于springboot+vue+Mysql的财务管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

LabVIEW单片机的废气再循环EGR检测系统

LabVIEW单片机的废气再循环EGR检测系统 实现了一种基于LabVIEW和STM32F103VET6单片机的EGR(废气再循环)检测系统,监测和控制船用二冲程柴油机的EGR运行状态。通过替代传统的NI采集卡,系统不仅降低了成本,同时也提升了数…

es6 Class基本语法和继承

es6 Class基本语法 class的基本语法: ES6 的class只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰、更像面向对象编程的语法而已 传统用构造函数生成实例 function Point(x, y) {th…

Unity AI Navigation自动寻路

目录 前言一、Unity中AI Navigation是什么?二、使用步骤1.安装AI Navigation2.创建模型和材质3.编写向目标移动的脚本4.NavMeshLink桥接组件5.NavMeshObstacle组件6.NavMeshModifler组件 三、效果总结 前言 Unity是一款强大的游戏开发引擎,而人工智能&a…

【漏洞复现】chatgpt pictureproxy.php SSRF漏洞(CVE-2024-27564)

0x01 漏洞概述 ChatGPT pictureproxy.php接口存在服务器端请求伪造 漏洞(SSRF) ,未授权的攻击者可以通过将构建的 URL 注入 url参数来强制应用程序发出任意请求。 0x02 测绘语句 fofa: icon_hash"-1999760920" 0x03 漏洞复现 G…

Machine Learning机器学习之统计分析

目录 前言 机器学习之统计分析 统计学的主要目标包括: 统计学核心概念: 统计基础: 训练误差: 常见的损失函数: 正则化和交叉验证 博主介绍:✌专注于前后端、机器学习、人工智能应用领域开发的优质创作者、秉…

使用pytorch构建一个初级的无监督的GAN网络模型

在这个系列中将系统的构建GAN及其相关的一些变种模型,来了解GAN的基本原理。本片为此系列的第一篇,实现起来很简单,所以不要期待有很好的效果出来。 第一篇我们搭建一个无监督的可以生成数字 (0-9) 手写图像的 GAN,使用MINIST数据…

进阶了解C++(6)——二叉树OJ题

Leetcode.606.根据二叉树创建字符串: 606. 根据二叉树创建字符串 - 力扣(LeetCode) 难度不大,根据题目的描述,首先对二叉树进行一次前序遍历,即: class Solution { public:string tree2str(Tr…

TheMoon 恶意软件短时间感染 6,000 台华硕路由器以获取代理服务

文章目录 针对华硕路由器Faceless代理服务预防措施 一种名为"TheMoon"的新变种恶意软件僵尸网络已经被发现正在侵入全球88个国家数千台过时的小型办公室与家庭办公室(SOHO)路由器以及物联网设备。 "TheMoon"与“Faceless”代理服务有关联,该服务…

【算法题】三道题理解算法思想--滑动窗口篇

滑动窗口 本篇文章中会带大家从零基础到学会利用滑动窗口的思想解决算法题,我从力扣上筛选了三道题,难度由浅到深,会附上题目链接以及算法原理和解题代码,希望大家能坚持看完,绝对能有收获,大家有更好的思…

Flask学习(六):蓝图(Blueprint)

蓝图(Blueprint):将各个业务进行区分,然后每一个业务单元可以独立维护,Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的。 Demo目录结构&#xf…

计算机专业学习单片机有什么意义吗?

玩单片机跟玩计算机区别还是很大的, 单片机有众多的种类,每一种又可能有很多个系列.可以说单片机就是为了专款专用而生的.这样来达到产品成本的降低,这就是现在身边的很多的电子产品价格一降再降的原因之一.在开始前我有一些资料,是我根据网友给的问题精心整理了一…

Python拆分PDF、Python合并PDF

WPS能拆分合并&#xff0c;但却是要输入编辑密码&#xff0c;我没有。故写了个脚本来做拆分&#xff0c;顺便附上合并的代码。 代码如下&#xff08;extract.py) #!/usr/bin/env python """PDF拆分脚本(需要Python3.10)Usage::$ python extract.py <pdf-fil…

腾讯云4核8g服务器多少钱?2024轻量和CVM收费价格表

2024年腾讯云4核8G服务器租用优惠价格&#xff1a;轻量应用服务器4核8G12M带宽646元15个月&#xff0c;CVM云服务器S5实例优惠价格1437.24元买一年送3个月&#xff0c;腾讯云4核8G服务器活动页面 txybk.com/go/txy 活动链接打开如下图&#xff1a; 腾讯云4核8G服务器优惠价格 轻…

uniapp 微信小程序 canvas 手写板获取书写内容区域并输出

uni.canvasGetImageData 返回一个数组&#xff0c;用来描述 canvas 区域隐含的像素数据&#xff0c;在自定义组件下&#xff0c;第二个参数传入自定义组件实例 this&#xff0c;以操作组件内 组件。 // 获取目标 canvas 的像素信息 pixelData let canvas uni.createSelector…

Linux 系统 CentOS7 上搭建 Hadoop HDFS集群详细步骤

集群搭建 整体思路:先在一个节点上安装、配置,然后再克隆出多个节点,修改 IP ,免密,主机名等 提前规划: 需要三个节点,主机名分别命名:node1、node2、node3 在下面对 node1 配置时,先假设 node2 和 node3 是存在的 **注意:**整个搭建过程,除了1和2 步,其他操作都使…