计算机网络:数据链路层 - 点对点协议PPP
计算机网络:数据链路层 - 点对点协议PPP
- PPP协议的帧格式
- 透明传输
- 字节填充法
- 零比特填充法
- 差错检测
- 循环冗余校验
对于点对点链路,PPP协议是目前使用最广泛的数据链路层协议。比如说,当用户想要接入互联网,就需要通过因特网服务提供者ISP:
这些 ISP 已经从英特网管理机构申请到了一批 IP 地址,用户计算机只有获取到 ISP 所分配的合法 IP 地址后,才能成为因特网上的主机。而用户计算机与 ISP 之间进行通信时,所使用的数据链路层协议就是 PPP 协议。另外,点对点协议 PPP 也广泛应用于广域网路由器之间的专用线路。
PPP协议的帧格式
PPP协议的帧格式如下:
以上帧格式中,各区域功能如下:
F
:出现于整个帧的首尾,都是标志字段,也就是PPP帧的定界符,
帧定界符用于帮助接受方区分一个帧,这个标志字段规定为十六进制的0x7E
,在ASCII码表中代表字符'~'
。
A
:地址字段,没有实际意义
C
:控制字段,没有实际意义
在设计PPP协议之初,考虑以后再对这两个字段的值进行其他定义,但至今也没有给出,因此这两个字段并不携带什么信息。其中A
被规定为十六进制的0xFF
,C
被规定为十六进制的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
是如何计算的:
- 在原始
k
位数据后面加n
个0
- 用指定的
n + 1
位除数p
,对这个k + n
位的数据段做模2除法- 最后得到的
n
位除数就是冗余码FCS
,用冗余码FCS
替换最后的n
位0
假设我们现在的原始数据为101001
,约定的除数p
为1101
:
除数p
为4位数,那么n
就是4 - 1 = 3位,因此在101001
后面添上3位0:
现在就可以开始进行模2除法了:
所谓模2除法,就是每次进行相除操作时,上下按位异或,比如以上式子中1010
和1101
按位异或就是0111
,在后面补一位0就是1110
。以此类推,一直计算下去:
由于我们的除数p
是n + 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
去除以这个数据段。
相关文章:
计算机网络:数据链路层 - 点对点协议PPP
计算机网络:数据链路层 - 点对点协议PPP PPP协议的帧格式透明传输字节填充法零比特填充法 差错检测循环冗余校验 对于点对点链路,PPP协议是目前使用最广泛的数据链路层协议。比如说,当用户想要接入互联网,就需要通过因特网服务提供…...
Springboot集成token认证
一、引出session问题以及token、鉴权 session都是保存在内存中,认证用户增多,服务端开销明显增大。若是认证的记录保存在某台服务器内存中时,意味着用户的下次请求只能够在该服务器内存中进行认证。CSRF跨站攻击 token的鉴权机制࿱…...
计算机网络_工具
从你的电脑到指定ip网站,用时3ms ttl TTL Time To Live 数据包存活时间 指一个数据包在经过一个路由器时,可传递的最长距离(跃点数)。每当数据包经过一个路由器时,其存活次数就会被减一 256 - 249 7&…...
如何实现一个Java的@注解?
先看一段代码: ControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(value Exception.class)public ResponseEntity defaultErrorHandler(Exception e) {// 将错误信息转成字符串String errorMessage ExceptionUtils.getStackTrace(e);// 创…...
嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记12:DAC数模转换
系列文章目录 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记01:赛事介绍与硬件平台 嵌入式|蓝桥杯STM32G431(HAL库开发)——CT117E学习笔记02:开发环境安装 嵌入式|蓝桥杯STM32G431(…...
迅饶科技 X2Modbus 网关 GetUser 信息泄露漏洞复现
0x01 产品简介 X2Modbus是上海迅饶自动化科技有限公司Q开发的一款功能很强大的协议转换网关, 这里的X代表各家不同的通信协议, 2是T0的谐音表示转换, Modbus就是最终支持的标准协议是Modbus协议。用户可以根据现场设备的通信协议进行配置,转成标准的Modbus协议。在PC端仿真…...
修改亚马逊云科技账户的密码和MFA
要使用AWS CLI删除当前账户的多因素认证(MFA)设备并修改密码,你需要先确保已安装并配置了AWS CLI,并且你的账户有足够的权限执行这些操作。下面是如何分步进行的指导: 1. 删除MFA设备 首先,你需要找出MFA设备的序列号或ARN。可以…...
提升性能与精准追踪:SkyWalking自定义跟踪忽略插件
前言 当使用分布式追踪系统时,有时需要排除某些端点或路径,以减轻追踪系统的负载或减少不必要的数据收集。为了满足这种需求,SkyWalking 提供了一个可选的插件,即 apm-trace-ignore-plugin,它允许自定义需要跳过的路径…...
第十三届蓝桥杯大赛软件赛省赛CC++大学B组
第十三届蓝桥杯大赛软件赛省赛CC 大学 B 组 文章目录 第十三届蓝桥杯大赛软件赛省赛CC 大学 B 组1、九进制转十进制2、顺子日期3、刷题统计4、修建灌木5、x进制减法6、统计子矩阵7、积木画8、扫雷9、李白打酒加强版10、砍竹子 1、九进制转十进制 计算器计算即可。2999292。 2、…...
zookeeper监听集群节点的实现zkclient组件实现方案(Java版)
ZooKeeper Watcher 机制 client 向zookeeper 注册监听client注册的同时会存储一个WatchManager对象向zookeeper发生改变则notification client 并发送一个WatchManager对象,然后client再更新该对象 package com.jacky.zk.demo;import org.I0Itec.zkclient.IZkChildListener;…...
【ArduinoQuartus】在小脚丫STEP CYC10上安装PulseRain Reindeer并在软核上运行基础功能
【Arduino&Quartus】在小脚丫STEP CYC10上安装PulseRain Reindeer并在软核上运行基础功能 一、将Reindeer软核下载到STEP CYC10(一)下载PulseRain Reindeer软核(二)配置Reindeer软核到开发板1.将sof文件转换为jic文件2.将jic文…...
【电路笔记】-逻辑与门
逻辑与门 文章目录 逻辑与门1、概述2、2 输入晶体管与门3、数字与门类型4、7408 四路 2 输入与门逻辑与门是一种数字逻辑电路,仅当其所有输入均为高电平时,其输出才会变为高电平至逻辑电平 1。 1、概述 数字逻辑与门的输出状态仅在其任何输入处于逻辑电平“0”时再次返回“低…...
蓝桥杯练习——拼出一个未来
选中 index.html 右键启动 Web Server 服务(Open with Live Server),让项目运行起来。接着,打开环境右侧的【Web 服务】,就可以在浏览器中看到如下效果: 目标 完善 js/index.js 的 TODO 部分,实…...
stm32f103c8t6学习笔记(学习B站up江科大自化协)-SPI
SPI通信 SPI,(serial peripheral interface),字面翻译是串行外设接口,是一种通用的数据总线,适用于主控和外挂芯片之间的通信,与IIC应用领域非常相似。 IIC无论是在硬件电路还是在软件时序设计…...
云计算的安全需求
目录 一、概述 二、云安全服务基本能力要求 三、信息安全服务(云计算安全类)资质要求 3.1 概述 3.2 资质要求内容 3.2.1 组织与管理要求 3.2.2 技术能力要求 四、云安全主要合规要求 4.1 安全管理机构部门的建立 4.2 安全管理规范计划的编制 4…...
【C++】编程规范之表达式原则
表达式中变量的位置 在编写表达式时,将变量放置在右边,可以提高代码的可读性和可理解性。这种做法符合自然语言的阅读习惯,使得代码更易于理解。 // Good if (5 x) {// do something }// Avoid if (x 5) {// do something }不变量和资源申…...
Python人工智能基础知识:理解神经网络与机器学习的基本概念
人工智能(Artificial Intelligence,AI)是当今科技领域的热门话题之一,而神经网络和机器学习作为AI的两个重要分支,在解决各种问题中发挥着重要作用。本文将详细介绍神经网络和机器学习的基本概念,帮助读者更…...
10_MVC
文章目录 JSON常用的JSON解析Jackson的常规使用指定日期格式 MVC设计模式MVC介绍前后端分离案例(开发与Json相关接口) 三层架构三层架构介绍 JSON JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,是存…...
【Java多线程(4)】案例:设计模式
目录 一、什么是设计模式? 二、单例模式 1. 饿汉模式 2. 懒汉模式 懒汉模式-第一次改进 懒汉模式-第二次改进 懒汉模式-第三次改进 一、什么是设计模式? 设计模式是针对软件设计中常见问题的通用解决方案。它们提供了一种被广泛接受的方法来解决…...
时序预测 | Matlab实现CPO-BiLSTM【24年新算法】冠豪猪优化双向长短期记忆神经网络时间序列预测
时序预测 | Matlab实现CPO-BiLSTM【24年新算法】冠豪猪优化双向长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab实现CPO-BiLSTM【24年新算法】冠豪猪优化双向长短期记忆神经网络时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-BiLST…...
java面试题(4)|Spring和Spring Boot之间有什么关联和区别
文章目录 Spring和Spring Boot的有什么关联?Spring和Spring Boot有什么区别?如何快速区分某个项目采用的是 Spring 还是 Spring Boot? Spring和Spring Boot的有什么关联? Spring Boot是建立在Spring框架之上的,因此它…...
Spring Boot中前端通过请求接口下载后端存放的Excel模板
导出工具类 package com.yutu.garden.utils;import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import org.apache.commons.io.IOUtils; import org.apache.poi.hssf.util.HSSFColor; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.slf4j.Logger;…...
构建企业级微服务平台:实现可扩展性、弹性和高效性
在软件开发的快速发展领域中,企业不断努力构建健壮、可扩展和高效的系统。随着微服务架构的出现,再加上云原生技术的应用,创建敏捷且具有弹性的平台的可能性是无限的。在本指南中,我们将深入探讨使用强大的工具和技术组合…...
存内计算技术在边缘计算、物联网设备中的应用及前景
存内计算技术简介 存内计算技术是一种新兴的计算范式,其核心理念是将存储和计算功能集成在同一硬件单元中。这种技术的优势在于能够在存储单元内部直接进行计算操作,从而减少数据在存储器和处理器之间的传输,提高计算效率。 以下是存内计算技…...
C#使用Selenium驱动Chrome浏览器
1.Selenium库依赖安装 Selenium WebDriver是Selenium项目的一部分,用于模拟用户在Web应用程序中的交互操作。它支持多种浏览器,如Chrome、Firefox、IE等,且与各种编程语言(如Java、Python、C#等)兼容,具有…...
【软件工程】详细设计(二)
这里是详细设计文档的第二部分。前一部分点这里 4. 学生端模块详细设计 学生端模块主要由几个组件构成:学生登录界面,成绩查询界面等界面。因为学生端的功能相对来说比较单一,因此这里只给出两个最重要的功能。 图4.1 学生端模块流程图 4.…...
数据质量决定大模型能力,景联文科技提供高质量大模型数据
随着大模型的深入发展,各类资源要素的配置状态已悄然变化。其中,数据的价值已被提升到一个新高度。 大模型往往拥有庞大的参数和复杂的网络结构,需要大量的数据来学习和优化。数据的质量和数量直接决定了模型的训练效果。若数据不足或质量不佳…...
大话设计模式之状态模式
状态模式是一种行为设计模式,它允许对象在其内部状态发生变化时改变其行为。在状态模式中,对象将其行为委托给当前状态对象,从而在不同的状态下执行不同的行为,而不必在对象自身的代码中包含大量的条件语句。 通常,状…...
【机器学习】“强化机器学习模型:Bagging与Boosting详解“
1. 引言 在当今数据驱动的世界里,机器学习技术已成为解决复杂问题和提升决策制定效率的关键工具。随着数据的增长和计算能力的提升,传统的单一模型方法已逐渐无法满足高精度和泛化能力的双重要求。集成学习,作为一种结合多个学习算法以获得比…...
《QT实用小工具·九》设备按钮控件
1、概述 源码放在文章末尾 该项目实现了设备按钮控件,主要包含如下功能: 可设置按钮样式 圆形、警察、气泡、气泡2、消息、消息2。可设置按钮颜色 布防、撤防、报警、旁路、故障。可设置报警切换及对应报警切换的颜色。可设置显示的防区号。可设置是否…...
微信审批小程序/seo是什么服务
本文为美国俄亥俄州立大学(作者:Christine Ann Bryant)的硕士论文,共97页。 本文研究了在单接收机数据速率有限的情况下,实现多输入单输出(MISO)合成孔径雷达(SAR)空时自…...
济南做网站哪好/郑州网络推广方案
CPU(Central Processing Unit,中央处理器)发展出来三个分枝,一个是DSP(Digital Signal Processing/Processor,数字信号处理),另外两个是MCU(Micro Control Unitÿ…...
西藏自治区住房和城乡建设厅网站/windows优化大师官方免费
一、题目 问题描述输入两个矩阵,分别是m*s,s*n大小。输出两个矩阵相乘的结果。 输入格式第一行,空格隔开的三个正整数m,s,n(均不超过200)。接下来m行,每行s个空格隔开的整数,表示矩阵A…...
深圳外贸网站建设/靖江seo要多少钱
原文链接 作者: Jakob Jenkov 译者:赵亮 SOAP是Simple Object Access Protocol(简单对象传输协议)的缩写。SOAP消息是基于XML格式进行传输的,流行的web service就是使用SOAP进行客户端和服务器之间的通信的。在这篇…...
教学平台网站建设合同/企业网站推广渠道有哪些
一、准备环境1、两台虚拟机、一台正常运行oracle数据库的,一台装了软件没有启动数据库的(没有进行dbca)2、主库备库 修改环境变量,修改主机名,将主库备库的主机名都写入hosts文件二、开始搭建1.查看主库是否开启归档模…...
北京展览馆网站建设/免费的行情网站app
你有没有碰到过OpenStack中,VM失去IP地址的问题?如果有的话,你知道那可能是什么问题 ——特别是如果你拥有大量的节点和VM。你的客户会因为没有明显原因却断了与VM的连接而感到 挫败。甚至云的支持团队会为log文件里没有提示却出现问题感到挫…...