计算机网络:数据链路层 - 点对点协议PPP

计算机网络:数据链路层 - 点对点协议PPP

    • PPP协议的帧格式
    • 透明传输
      • 字节填充法
      • 零比特填充法
    • 差错检测
      • 循环冗余校验


对于点对点链路,PPP协议是目前使用最广泛的数据链路层协议。比如说,当用户想要接入互联网,就需要通过因特网服务提供者ISP:
在这里插入图片描述
这些 ISP 已经从英特网管理机构申请到了一批 IP 地址,用户计算机只有获取到 ISP 所分配的合法 IP 地址后,才能成为因特网上的主机。而用户计算机与 ISP 之间进行通信时,所使用的数据链路层协议就是 PPP 协议。另外,点对点协议 PPP 也广泛应用于广域网路由器之间的专用线路。

PPP协议的帧格式

PPP协议的帧格式如下:

在这里插入图片描述
以上帧格式中,各区域功能如下:

F:出现于整个帧的首尾,都是标志字段,也就是PPP帧的定界符

帧定界符用于帮助接受方区分一个帧,这个标志字段规定为十六进制的0x7E,在ASCII码表中代表字符'~'

A:地址字段,没有实际意义
C:控制字段,没有实际意义

在设计PPP协议之初,考虑以后再对这两个字段的值进行其他定义,但至今也没有给出,因此这两个字段并不携带什么信息。其中A被规定为十六进制的0xFFC被规定为十六进制的0x03

协议:指明信息部分的类别

上图中,网络层把数据段交给数据链路层封装成帧,而协议这个字段的作用就是用于指明网络层传来的数据的种类。该字段占两个字节,当协议字段为十六进制0x0021,PPP中的信息字段就是IP数据报;当协议字段为十六进制0xC021,PPP中的信息字段就是LCP分组;当协议字段为十六进制0x8021,PPP中的信息字段就是NCP分组

FCS:用于差错检测

此处使用的时CRC循环冗余校验,这个在博客后文会讲解。

信息部分:即上层传递下来的,被封装成帧的数据

这个信息字段的长度不是固定的,但是如果信息字段太长,就会导致分组的效率变低,因此规定信息字段的长度不超过1500 byte

数据链路层的三大问题在于:封装成帧透明传输差错检测

现在我们已经了解了PPP协议是如何封装成帧的,接下来我们再来看看PPP协议是如何完成透明传输的。


透明传输

字节填充法

当PPP使用异步传输时,以字节为单位传输数据,采用字节填充法来实现透明传输,字节填充法采用转义字符实现对数据段中的0x7E的转义。
在这里插入图片描述
比如上图中,如果我们只考虑两个帧定界符,不考虑地址字段控制字段FCS。帧定界符的十六进制为0x7E,但是如果数据段中也出现了0x7E,这该怎么办?

这就会导致一个问题,那就是对帧的拆分错误,比如上图中,第一个粉色的0x7E是帧开始符,最后一个粉色的0x7E是帧结束符。但是数据段中还有三个0x7E,因此接收方就有可能把第一个粉色的符号当作帧的开始,而第二个绿色的符号当作帧的结束。这就会造成错误的帧划分,以及错误的数据接收。因此我们要对数据段中的0x7E数据段进行特殊处理,让接收端可以区别数据段中的0x7E帧定界符

处理方式为字节填充,规则如下:

在这里插入图片描述

当在数据段中遇到0x7E,先将0x7E的第五个比特位取反变成0x5E,再在其前面插入0x7D

在数据段中遇到0x7E,就把0x7E第五位取反,为0x5E,然后再在其前面插入一个0x7D。这样只要接收方在读取数据的时候,只要遇到了0x7D这个转义字符,就把这个转义字符丢弃,再将其后一位字节的第五位取反,就得到了原先的数据。

但是我们还有一个问题,如下:

在这里插入图片描述

如果原本的数据段中就有转义字符0x7D,那么接收方又要如何识别这是一段数据,而不是一个转义字符呢?

当在数据段中遇到0x7D,先将0x7D的第五个比特位取反变成0x5E,再在其前面插入0x7D

在这里插入图片描述
用和之前相同规则,当接收方遇到0x7D,就把0x7D丢弃,然后把后面的0x5E的第五位取反,得到原始数据。

另外的,PPP协议对数据段还有额外的处理,在所有字符中,还有一些控制字符,即ASCII码表中的0 - 32号字符,以及第127号字符。这些字符才数据段中也要处理:

当在数据段中遇到控制字符,将该字符的第五个比特位取反,再在其前面插入0x7D

和之前一模一样的方法,不再赘述了。

字节填充汇总如下:

一旦遇到0x7E帧定界符,0x7D转义符,以及控制字符,就将其第五位取反,再在其前面插入一个0x7D转义

接收方受到数据后,只要遇到0x7D转义符,就把该符号丢弃,然后将其后一个字节的数据,第五位取反


零比特填充法

当PPP使用同步传输时,以比特为单位传输数据,采用零比特填充法来实现透明传输。

零比特填充法规则如下:

在这里插入图片描述

当在数据段中遇到连续的五个1,就在其后面插入一个0

PPP协议中,帧定界符是0x7E,转为2进制就是01111110,其中出现了连续的六个1。为了保证数据部分中的数据不会被判断为定界符,于是只要数据段中出现连续的五个1就插入一个0,这样就只有帧定界符中会出现连续的六个1

当接收方接收时,只需要在遇到五个1时,看其后面的一位,如果第六位为1,说明这是帧定界符。如果第六位为0,说明这个0是插入的,把它删除后还原出原始数据。


差错检测

再来看差错检测,发送方将封装好的帧通过物理层发送到传输媒体。帧在传输过程中遭遇干扰后,可能会出现误码,也就是比特 0 可能变成了比特 1,反之亦然

在一段时间内,传输错误的比特占所传输比特总数的比率,称为误码率。

但是接收方主机如何判断帧在传输过程中是否出现了误码呢?

这可以通过检错码来发现。发送方在发送帧之前基于待发送的数据和检错算法计算出检错码,并将其封装在帧尾。接收方主机收到帧后,通过检错码和检错算法就可以判断出帧在传输过程中是否出现了误码

循环冗余校验

在PPP协议中,使用了循环冗余校验 CRC 的检错技术。

在这里插入图片描述
假定发送端发送的原始数据为k个比特,对原始数据进行CRC运算,产生了n位冗余码FCS,把n位冗余码FCS放入帧的末尾一起发送出去。

那么我们现在就来讲解一下这个冗余码FCS是如何计算的:

  1. 在原始k位数据后面加n0
  2. 用指定的n + 1位除数p,对这个k + n位的数据段做模2除法
  3. 最后得到的n位除数就是冗余码FCS,用冗余码FCS替换最后的n0

假设我们现在的原始数据为101001,约定的除数p1101

在这里插入图片描述

除数p为4位数,那么n就是4 - 1 = 3位,因此在101001后面添上3位0:

在这里插入图片描述

现在就可以开始进行模2除法了:

在这里插入图片描述

所谓模2除法,就是每次进行相除操作时,上下按位异或,比如以上式子中10101101按位异或就是0111,在后面补一位0就是1110。以此类推,一直计算下去:

在这里插入图片描述
由于我们的除数pn + 1位,所以最后的余数一定是小于等于n位的,如果不够n位就在前面补0,补到n位。然后把这n位除数替换掉原数据中的n位0,得到101001 001

101001 001这一段数据中,101001是原始的数据, 001就是冗余码FCS

一开始我们拿p除以101001 000,余数为001。我们把001补上去后,数据变成了101001 001,那么p除以101001 001就应该是0。因此如果接收端用p除以k + n位数据等于0,就说明数据没有出问题,是正常的。但是如果结构非0,说明有比特位出现了差错,那么接收端就可以知道传输出问题,进行后续操作了。

要注意的是,这个除数p是一开始双方就约定好的,因此双方都是知道拿p去除以这个数据段。


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

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

相关文章

被狠狠拷打!想冲 PDD 机器学习算法岗,一面直接挂了。。。

节前,我们社群组织了一场技术&面试讨论会,邀请了一些互联网大厂朋友、今年参加社招和校招面试的同学,针对新手如何机器学习算法、企业级落地场景、大模型的发展趋势与落地实践、新人该如何备考、面试常考点等热门话题进行了深入的讨论。 …

LoRa自组网络设计 6

1 深入了解LoRaWan 1.1 LoRaWan概述 LoRaWAN采用星型无线拓扑 End Nodes 节点 Gateway 网关 Network Server 网络服务器 Application Server 应用服务器 LoRa联盟是2015年3月Semtech牵头成立的一个开放的、非盈利的组织,发起成员还有法国Actility,中国…

FL Studio21水果软件有哪些新功能?如何下载破解版

FL Studio 21是一款由Image-Line公司开发的专业的音乐制作软件,它提供了音乐编曲、录音、编辑、混音等多种功能,非常适合专业音乐制作人、DJ及音乐爱好者使用。这款软件不仅具有高级的音频编辑功能,如切片、时间伸缩、音高调整,还…

场景文本检测识别学习 day02(AlexNet论文阅读、ResNet论文精读)

怎么读论文 在第一遍阅读的时候,只需要看题目,摘要和结论,先看题目是不是跟我的方向有关,看摘要是不是用到了我感兴趣的方法,看结论他是怎么解决摘要中提出的问题,或者怎么实现摘要中的方法,然…

机器学习(五) -- 监督学习(2) -- k近邻

系列文章目录及链接 目录 前言 一、K近邻通俗理解及定义 二、原理理解及公式 1、距离度量 四、接口实现 1、鸢尾花数据集介绍 2、API 3、流程 3.1、获取数据 3.2、数据预处理 3.3、特征工程 3.4、knn模型训练 3.5、模型评估 3.6、结果预测 4、超参数搜索-网格搜…

QT drawPixmap和drawImage处理图片模糊问题

drawPixmap和drawImage显示图片时,如果图片存在缩放时,会出现模糊现象,例如将一个100x100 的图片显示到30x30的区域,这个时候就会出现模糊。如下: 实际图片: 这个问题就是大图显示成小图造成的像素失真。 当…

【stm32】I2C通信协议

【stm32】I2C通信协议 概念及原理 如果我们想要读写寄存器来控制硬件电路,就至少需要定义两个字节数据 一个字节是我们要读写哪个寄存器,也就是指定寄存器的地址 另一个字节就是这个地址下存储寄存器的内容 写入内容就是控制电路,读出内容就…

利用IP地址判断羊毛用户:IP数据云提供IP风险画像

在当今数字化社会,互联网已经成为人们日常生活和商业活动中不可或缺的一部分。然而,随着网络的普及,网络欺诈行为也日益猖獗,其中包括了羊毛党这一群体。羊毛党指的是利用各种手段获取利益、奖励或者优惠而频繁刷取优惠券、注册账…

FME学习之旅---day21

我们付出一些成本,时间的或者其他,最终总能收获一些什么。 教程:AutoCAD 变换 相关的文章 为您的 DWG 赋予一些样式:使用 DWGStyler、模板文件、块等 FME数据检查器在显示行的方式上受到限制。它只能显示线条颜色,而…

Java NIO Selector选择器源码分析

文章目录 前言Selector类结构Selector抽象类AbstractSelectorSelectorImplWindowsSelectorImpl三种SelectionKey集合 前言 Java NIO(New I/O)的Selector选择器是一个用于多路复用(Multiplexing)的I/O操作的关键组件。它允许一个单…

弹幕功能1

今天看pure-admin的时候发现有个弹幕功能 GitHub - hellodigua/vue-danmaku: 基于 Vue 的弹幕交互组件 | A danmaku component for Vue

使用VPN时,Java程序无法访问远程网络的解决办法

应用场景: 电脑连接VPN之后,Java程序无法连接远程服务,比如第三方接口、远程数据库连接、远程微服务等。我个人遇到的情况有连接海康威视SDK,influxdb以及一些微服务。 解决办法: 启动Java时加入参数:-D…

Webots常用的执行器(Python版)

文章目录 1. RotationalMotor2. LinearMotor3. Brake4. Propeller5. Pen6. LED 1. RotationalMotor # -*- coding: utf-8 -*- """motor_controller controller."""from controller import Robot# 实例化机器人 robot Robot()# 获取基本仿真步长…

LeetCode 热题 100 题解(二):双指针部分(1)

题目一:移动零(No. 283) 题目链接:https://leetcode.cn/problems/move-zeroes/description/?envTypestudy-plan-v2&envIdtop-100-liked 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同…

惠海 H4029 同步整流降压芯片IC 支持24V/36V转12V/5V/3.3V5A方案 大电流温度低

同步整流降压芯片IC是一种高效能的电源管理方案,用于将较高的输入电压(如24V或36V)转换为较低的输出电压(如12V、5V或3.3V),同时提供高达5A的大电流输出。这种芯片采用同步整流技术,相比传统的线…

自动驾驶基础技术-无迹卡尔曼滤波UKF

自动驾驶基础技术-无迹卡尔曼滤波UKF Unscented Kalman Filter是解决非线性卡尔曼滤波的另一种思路,它利用Unscented Transform来解决概率分布非线性变换的问题。UnScented Kalman Filter不需要像Extended Kalman Filter一样计算Jacobin矩阵,在计算量大…

Vue通过自定义指令实现元素平滑上升的动画效果。没一句废话

1、演示 2、介绍 这个指令不是原生自带的&#xff0c;需要手动去书写&#xff0c;但是这辈子只需要编写这一次就好了&#xff0c;后边可以反复利用。 用到的API&#xff1a;IntersectionObserver 这里有详细介绍 3、Vue文件代码 <template><div class"container&…

软件测试面试入职了,背完这写轻松上岸

全网首发-涵盖16个技术栈 第一部分&#xff0c;测试理论&#xff08;测试基础需求分析测试模型测试计划测试策略测试案例等等&#xff09; 第二部分&#xff0c;Linux&#xff08; Linux基础Linux练习题&#xff09; 第三部分&#xff0c;MySQL&#xff08;基础知识查询练习…

AI技术创业有哪些机会?

引言 在当今数字化时代&#xff0c;人工智能&#xff08;AI&#xff09;技术正不断地推动着各行各业的创新和变革。AI作为一项具有巨大潜力的技术&#xff0c;正在为创业者带来许多新的机会。本文将探讨AI技术创业领域中的机会&#xff0c;并通过具体的例子来说明它们。 1. 智…

学习操作系统之多道批处理系统

1964年IBM生产了第一台小规模集成电路计算机IBM System/360&#xff08;第三代计算机&#xff09;&#xff0c;并为该计算机开发了OS/360操作系统&#xff0c;是第一个多道批处理系统。 多道批处理的运行机制&#xff1a; 多道批处理系统同样要求事先将多道作业存放到外存上并…