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

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

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

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

相关文章

嵌入式QT学习第4天:Qt 信号与槽

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 本章思维导图如下: 不使用 Qt Designer 的方式进行开发,用代码绘界面,可以锻炼我们的布局能力,和代码逻辑能力&#x…

Figma入门-自动布局

Figma入门-自动布局 前言 在之前的工作中,大家的原型图都是使用 Axure 制作的,印象中 Figma 一直是个专业设计软件。 最近,很多产品朋友告诉我,很多原型图都开始用Figma制作了,并且很多组件都是内置的,对…

Redis使用场景-缓存-缓存穿透

前言 之前在针对实习面试的博文中讲到Redis在实际开发中的生产问题,其中缓存穿透、击穿、雪崩在面试中问的最频繁,本文加了图解,希望帮助你更直观的了解缓存穿透😀 (放出之前写的针对实习面试的关于Redis生产问题的博…

洞察2024:Data+AI驱动的NoETL技术,引爆数据分析新革命

洞察2024:DataAI驱动的NoETL技术,引爆数据分析新革命 NoETL的背景和整体架构聚焦NoETL的技术创新与实践NoETL技术展望与实践建议 深夜11点,某电商数据工程师小王还在加班处理数据分析需求。 ‘老板临时要看各省份用户行为分析,我这…

AGX orin下电控制

AGX orin下电主要有两种,一种通过软件控制下电,另一种通过按键强制关机。下电流程和电脑关机流程类似。 AGX orin核心板与扩展板 AGX orin核心板由英伟达生产,不提供原理图,通过下图所示连接器与扩展板连接。 AGX orin扩展板&am…

【HarmonyOS NEXT】ACL 受限权限申请

关键词:受限开放权限、ACL、鸿蒙 在鸿蒙应用开发过程中,部分权限被受到限制(如悬浮窗开发、读取联系人数据、读取公共目录音频文件等权限),但是在我们的应用开发过程中又不得不使用该权限时可向华为申请受限权限&#…

富文本编辑器图片上传并回显

1.概述 在代码业务需求中,我们会经常涉及到文件上传的功能,通常来说,我们存储文件是不能直接存储到数 据库中的,而是以文件路径存储到数据库中;但是存储文件的路径到数据库中又会有一定的问题,就是 浏览…

黑马程序员Java笔记整理(day05)

1.面向对象编程 2.用法 3.对象是什么 4.对象在计算机中是啥 5.无参与有参构造器 小结: 6.this的作用 7.小结 8.封装 9.小结 10.实体类 11.小结 12.static 13.小结 14.static修饰方法 15.static应用前景 16.几个注意事项 17.java中可以直接用类的名字创建数组,如: M…

微服务即时通讯系统的实现(服务端)----(2)

目录 1. 语音识别子服务的实现1.1 功能设计1.2 模块划分1.3 模块功能示意图1.4 接口的实现 2. 文件存储子服务的实现2.1 功能设计2.2 模块划分2.3 模块功能示意图2.4 接口的实现 3. 用户管理子服务的实现3.1 功能设计3.2 模块划分3.3 功能模块示意图3.4 数据管理3.4.1 关系数据…

Windows系统怎么把日历添加在桌面上用来记事?

在众多电脑操作系统中,Windows系统以其广泛的用户基础和强大的功能,成为许多人的首选。对于习惯于在电脑前工作和学习的用户来说,能够直接在桌面上查看和记录日历事项,无疑会大大提高工作效率和生活便利性。今天,就为大…

org.apache.commons.lang3包下的StringUtils工具类的使用

前言 相信平时在写项目的时候,一定使用到StringUtils.isEmpty();StringUtils.isBlank();但是你真的了解他们吗? 也许你两个都不知道,也许你除了isEmpty/isNotEmpty/isNotBlank/isBlank外,并不知道还有isAnyEmpty/isNon…

【ROS2】ROS2 Hello World (C++实现)

ROS 系列学习教程(总目录) ROS2 系列学习教程(总目录) 目录 一、Hello World工程简介二、ROS2 Hello World C版2.1 创建工作空间目录2.2 创建功能包2.3 编辑源文件2.4 编辑编译配置文件CMakeList.txt2.5 编译工程2.6 运行节点 万物始于Hello World,为了体验ROS2&…

springboot 整合 rabbitMQ (延迟队列)

前言: 延迟队列是一个内部有序的数据结构,其主要功能体现在其延时特性上。这种队列存储的元素都设定了特定的处理时间,意味着它们需要在规定的时间点或者延迟之后才能被取出并进行相应的处理。简而言之,延时队列被设计用于存放那…

电路基础——相量法

相量法 为什么要使用相量表示? 电路方程是微分方程: 电路的运算(如KCL、KVL方程运算)会涉及到两个正弦量的相加: 如下图所示同频率的正弦量相加仍得到同频率的正弦量,因此只需确定初相位和有效值。 基于上…

深度学习:梯度下降法

损失函数 L:衡量单一训练样例的效果。 成本函数 J:用于衡量 w 和 b 的效果。 如何使用梯度下降法来训练或学习训练集上的参数w和b ? 成本函数J是参数w和b的函数,它被定义为平均值; 损失函数L可以衡量你的算法效果&a…

ProtonBase 教育行业解决方案

01/方案概述 当前,大数据、云计算等技术正加速教育行业的数字化转型,教学模式从线下转向线上,传统教育企业向具有互联网性质的新型教育企业转变。在此背景下,教育企业亟需探索多源数据的融合扩展,以应对复杂的业务场景…

Socket编程(TCP/UDP详解)

前言:之前因为做项目和找实习没得空,计算机网络模块并没有写成博客,最近得闲了,把计算机网络模块博客补上。 目录 一,UDP编程 1)创建套接字 2)绑定端口号 3)发送与接收数据 4&…

求平均年龄

求平均年龄 C语言代码C 代码Java代码Python代码 💐The Begin💐点点关注,收藏不迷路💐 班上有学生若干名,给出每名学生的年龄(整数),求班上所有学生的平均年龄,保留到小数…

40分钟学 Go 语言高并发:GC原理与优化

GC原理与优化 一、GC基础知识概览 方面核心概念重要性优化目标GC算法三色标记法、并发GC⭐⭐⭐⭐⭐理解GC工作原理垃圾回收策略触发条件、回收步骤⭐⭐⭐⭐⭐掌握GC过程GC调优参数设置、性能监控⭐⭐⭐⭐优化GC效果内存管理内存分配、内存逃逸⭐⭐⭐⭐⭐减少内存压力 让我们…

论文笔记 SliceGPT: Compress Large Language Models By Deleting Rows And Columns

欲买桂花同载酒,终不似,少年游。 数学知识 秩: 矩阵中最大线性无关的行/列向量数。行秩与列秩相等。 线性无关:对于N个向量而言,如果任取一个向量 v \textbf{v} v,不能被剩下的N-1个向量通过线性组合的方式…