数据链路层(三)--点对点通信协议PPP

news2024/12/1 10:49:44

PPP协议叫做点对点协议,是目前使用的最广泛的数据链路层协议。

1 PPP协议的特点

用户通常需要连接到某个ISP才能接入互联网,PPP协议就是用户计算机和ISP进行通信所使用的数据链路层协议。

fhtnAV0jgYAAAAAElFTkSuQmCC

1.1 PPP协议应满足的需求

(1)简单:PPP协议,简单是首要的需求,不需要设计的太麻烦;

(2)封装成帧:PPP协议必须使用规定的特殊字符作为帧定界符,以便接收端收到的比特流中能够找出帧的开始和结束位置;

(3)透明性:PPP协议必须保证数据传输的透明性;

(4)多种网络层协议:PPP协议必须能够在同一条物理链路上同时支持多种网络层协议的运行(此时PPP协议承载着上层网络层协议)

(5)多种类型链路:PPP协议必须能够在多种类型的链路上运行。比如:同步、异步、低速或高速、电的或光的等;

(6)差错控制:PPP协议必须能够对接受到的帧进行检测,并立即丢弃有差错的帧;

(7)检测连接状态:PPP协议必须具有一种检测机制,能够即使的自动检测链路书否处于正常工作状态;

(8)最大传输单元:PPP协议必须对每一种类型的点对点链路设置最大的传送单元MTU的标准默认值。MTU是数据部分的最大长度,不是帧的总长度,帧的总长度包括:帧头+数据部分+帧尾。

(9)网络层地址协商:PPP协议必须提供一种机制使通信的两个网络层的尸体能够 通过协商指导或能够配置彼此的网络层地址;

(10)数据压缩协商:PPP协议必须提供一种方法来协商使用数据压缩算法。

1.2 PPP协议的组成

PPP协议有三个部分组成:

(1)一个将IP数据报封装到串行链路的方法。PPP既支持异步链路,也支持面向比特的同步链路。IP数据包在PPP帧中就是其信息部分。这部分数据长度受最大传输单元MTU限制。

(2)一个用来建立、配置和测试数据链路连接的链路控制协议LCP。通信双方可协商一些选项。

(3)一套网络控制协议NCP,其中每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及appletalk.

1.3 ppp协议帧的格式

1、各字段的意义

cac2cd24bd1d490eb2bfd473fe78aefe.jpg

首部第一个字段和尾部的第二个字段都是标志字段F(flag),规定为0x7E,十六进制表示。十六进制的7E转换为二进制为:01111110。标志字段表示一个数据帧开始和或结束,字段F就是PPP帧的界定符。连续的连个帧之间只需要用一个标志字段即可,但如果出现了两个连续的标志字段,则表示这是一个空帧,应当丢弃。

首部中的字段A(0xFF)和控制字段C(0x03)没有意义,不携带PPP帧的信息。

PPP首部的第四个字段是2字节的协议字段。当协议字段为0x0021时,PPP帧的信息字段就是IP数据包;当为0xC021时,则信息部分为LCP的数据;当协议字段为0x8021时,则表示为网络层的控制数据。

信息部分的长度为可变的,最大受MTU的控制,不超过1500字节。

尾部的第一个字段是2字节的FCS字段,用来进行CRC帧序列检测。

2、字节填充

为了避免信息字段部出现与标志字段(F:0x7E)一样的比特组合时候,采用字节填充的措施使这种情况不出现在信息字段,RFC1662规定了如下的填充方法:

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

(2)把信息字段中出现的每一个0x7D字节转换为2字节序列的(0x7D,0x23),(即当数据字段中原先就在存在0x7D也要转换);

(3)若信息字段出现了ASCII码的控制字符(数值小于0x20的字符),则该字符要加入一个0x7d字符,同时该字符的编码加以改变。例如:0x03(表示传输结束的ETX),就要把他转变为2字节的序列0x7d,0x23.

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

3、零比特填充

PPP协议在使用SONTE/SDH链路时,使用同步传输而不是异步传输。PPP协议采用零比特填充的方法来实现透明传输。

具体方法:在发送端,先扫描整个信息字段,只要发现有5个连续的1,则立即填充一个0。因此在填充后的比特流中,不会出现连续的6个1.接收端在收到一个数据帧时,先找到标志字段F以确定帧的边界,然后对其中的比特流进行扫描,每当出现5个连续的1时,就把后面的一个0删除掉,以此类推,最终完成原数据帧比特流的还原。在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断,达到透明传输。

9b9056530d9d4135af4e613345ab25c9.jpg

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

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

相关文章

C语言 分支语句(if)

分支语句(if) if语句形式一 适用只有一个分支判断 if(表达式1) //如果 { 语句块1 } if语句形式二 适用有两个分支判断 if(表达式1) //如果 { 语句块1 } else //否则 { 语句块2 } 例:求方程的根 if语句形式三 适用多分支判断 if(表达式1) //多分支 { 语句块1 } else if(表达…

如何将WSL的虚拟机安装到任意目录中

目录 引言 下载安装包 解压安装包 手工安装 结语 引言 WSL默认是将虚拟机安装在C盘的用户目录下,如果长时间使用Windows后,可能C盘的空间就会非常吃紧,所以非常希望把虚拟机安装到C盘以外的目录中。本文就介绍一下相关的工作。 这里只讨…

一款.NET开源的Windows资源管理器标签页工具

前言 今天大姚给大家分享一款基于.NET开发的可以让你在Windows资源管理器中使用Tab多标签功能的小工具:QTTabBar。 工具介绍 QTTabBar是一款基于.NET开发的可以让你在Windows资源管理器中使用Tab多标签功能的小工具。从此以后工作时不再遍布文件夹窗口&#xff0c…

传输控制协议(TCP)

传输控制协议是Internet一个重要的传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。 1、TCP报文段结构 注:TCP默认采用累积确认机制。 2、三次握手、四次挥手 (1)当客户向服务器发送完最后一个数据段后,发送一个FIN段…

c++哈希表(原理、实现、开放寻址法)适合新手

c系列哈希的原理及实现(上) 文章目录 c系列哈希的原理及实现(上)前言一、哈希的概念二、哈希冲突三、哈希冲突解决3.1、开放寻址法3.2、删除操作3.3、负载因子四、代码实现 总结 前言 红黑树平衡树和哈希有不同的用途。 红黑树、…

服务器数据恢复—raid6阵列硬盘被误重组为raid5阵列的数据恢复案例

服务器存储数据恢复环境: 存储中有一组由12块硬盘组建的RAID6阵列,上层linux操作系统EXT3文件系统,该存储划分3个LUN。 服务器存储故障&分析: 存储中RAID6阵列不可用。为了抢救数据,运维人员使用原始RAID中的部分…

Python酷库之旅-第三方库Pandas(250)

目录 一、用法精讲 1181、pandas.tseries.offsets.BusinessMonthEnd.is_on_offset方法 1181-1、语法 1181-2、参数 1181-3、功能 1181-4、返回值 1181-5、说明 1181-6、用法 1181-6-1、数据准备 1181-6-2、代码示例 1181-6-3、结果输出 1182、pandas.tseries.offse…

layui table 纵向滚动条导致单元格表头表体错位问题

我用的时layui2.6.8版本 历史项目维护,bug给我让我做了,本来利用前端手段强解决,后来发现很多table 找了解决办法 打开layui-v2.6.8/lay/modules/table.js 如果打开后时压缩的代码 直接搜索 e.find(".layui-table-patch") …

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比

BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比 目录 BWO-CNN-BiGRU-Attention白鲸优化算法优化卷积神经网络结合双向门控循环单元时间序列预测,含优化前后对比预测效果基本介绍模型描述程序设计…

vue.js学习(day 13)

.sync修饰符 App.vue <template><div class"app"><buttonclick"isShow true">退出按钮</button><!-- :visible.sync > :visible update:visible--><BaseDialog :visible.sync"isShow"></BaseDia…

Android复习简答题

一、基础入门 Android程序架构 &#xff08;1&#xff09;app:用于存放程序的代码和资源等内容。包含很多子目录 libs:存放第三方jar包 src/androidTest&#xff1a;存放调试的代码文件 src/main/androidMainfest.xml 整个程序的配置文件&#xff0c;可配置程序所需要的权…

【娱乐项目】竖式算术器

Demo介绍 一个加减法随机数生成器&#xff0c;它能够生成随机的加减法题目&#xff0c;并且支持用户输入答案。系统会根据用户输入的答案判断是否正确&#xff0c;统计正确和错误的次数&#xff0c;并显示历史记录和错题记录。该工具适合用于数学练习&#xff0c;尤其适合练习基…

架构-微服务-服务配置

文章目录 前言一、配置中心介绍1. 什么是配置中心2. 解决方案 二、Nacos Config入门三、Nacos Config深入1. 配置动态刷新2. 配置共享 四、nacos服务配置的核心概念 前言 服务配置--Nacos Config‌ 微服务架构下关于配置文件的一些问题&#xff1a; 配置文件相对分散。在一个…

基础(函数、枚举)错题汇总

枚举默认从0开始&#xff0c;指定后会按顺序赋值 而这个枚举变量X&#xff0c;如果在全局&#xff08;函数外部&#xff09;定义&#xff0c;那默认为0&#xff0c;如果在函数内部&#xff08;局部变量&#xff09;&#xff0c;那就是随机值&#xff0c;必须初始化。 枚举变量…

flink学习(7)——window

概述 窗口的长度(大小): 决定了要计算最近多长时间的数据 窗口的间隔: 决定了每隔多久计算一次 举例&#xff1a;每隔10min,计算最近24h的热搜词&#xff0c;24小时是长度&#xff0c;每隔10分钟是间隔。 窗口的分类 1、根据window前是否调用keyBy分为键控窗口和非键控窗口…

Spring Boot 的 WebClient 实践教程

什么是 WebClient&#xff1f; 在 Spring Boot 中&#xff0c;WebClient 是 Spring WebFlux 提供的一个非阻塞、响应式的 HTTP 客户端&#xff0c;用于与 RESTful 服务或其他 HTTP 服务交互。相比于传统的 RestTemplate&#xff0c;WebClient 更加现代化&#xff0c;具有异步和…

二叉搜索树讲解

二叉搜索树概念和定义 二叉搜索树是一个二叉树&#xff0c;其中每个节点的值都满足以下条件&#xff1a; 节点的左子树只包含小于当前节点值的节点。节点的右子树只包含大于当前节点值的节点。左右子树也必须是二叉搜索树。 二叉树搜索树性质 从上面的二叉搜索树定义中可以了…

FinalShell工具数据备份升级、密码解密方法

前言 FinalShell 作为国产的服务器管理工具和远程终端软件。一个一体化的运维工具&#xff0c;在国内运维人员中还是比较受欢迎。它整合了多个常用功能&#xff0c;界面友好&#xff0c;使用方便。不过它是一个闭源的商业软件&#xff0c;虽然提供免费版本&#xff0c;但部分高…

241130_昇思MindSpore函数式自动微分

241130_昇思MindSpore函数式自动微分 函数式自动微分是Mindspore学习框架所特有的&#xff0c;更偏向于数学计算的习惯。这里也是和pytorch差距最大的部分&#xff0c;具体体现在训练部分的代码&#xff0c;MindSpore是把各个梯度计算、损失函数计算 在这幅图中&#xff0c;右…

菱形打印(Python)

“以块组合块”&#xff0c;以行凝结循环打印。 (笔记模板由python脚本于2024年11月30日 19:55:22创建&#xff0c;本篇笔记适合正在学习python循环的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”…