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

文章目录

    • PPP 帧
      • PPP帧的格式
      • PPP帧的透明传输
        • 面向字节的异步链路
        • 面向比特的同步链路
      • PPP帧的差错检测
    • PPP 的工作状态

点对点协议(Point-to-Point Protocol,PPP)是目前使用最广泛的点对点数据链路层协议,用于在两个节点之间进行数据传输。它通常用于建立在串行线路上的点对点连接,例如通过电话线或光纤的连接。

PPP 将上层交付下来的协议数据单元 PDU 封装成帧,为支持不同的网络层协议,PPP 协议包含了一套网络控制协议 NCP链路控制协议 LCP,用于建立、配置以及测试数据链路的连接。PPP 协议能够在多种类型的点对点链路上运行,如面向字节的异步链路,面向比特的同步链路。

PPP 帧

PPP帧的格式

PPP 帧是在 PPP 点对点协议中用于传输数据的基本单元。它由帧首部、数据载荷和帧尾部三个部分组成:

![[PPP.png]]

  • 标志(Flag)字段:PPP帧的定界符,取值为0x7E

  • 地址(Address)字段:取值为0xFF

  • 控制(Control)字段:取值为0x03

  • 协议(Protocol)字段:其值用来指明帧的数据载荷应向上交付给哪个协议处理。

    • P 取值为 0x0021 时,数据载荷封装的是 IP数据报
    • P 取值为 0XC021 时,数据载荷封装的是 LCP分组
    • P 取值为 0X8021 时,数据载荷封装的是 NCP分组
  • 帧检验序列(Frame Check Sequence,FCS)字段:其值是使用[[数据链路层概述#循环冗余校验|循环冗余校验 CRC]] 计算出的检错码。

PPP帧的透明传输

PPP 帧的首部和尾部,均包含一个帧定界符,若帧的数据载荷中恰好包含有帧定界符,即 0x7E0111 1110

面向字节的异步链路

PPP 协议使用的是面向字节的异步链路,使用字节填充来实现透明传输,将帧定界符看作取值为0x7E的一个字符:

发送方

  1. 将数据载荷中出现的每一个 0x7E 减去 0x20(相当于异或 0x20),然后在其前面插入转义字符 0x7D

  2. 若数据载荷中原来就含有 0x7D,则把每一个 0x7D 减去 0x20,然后在其前面插入转义字符 0x7D

  3. 将数据载荷中出现的每一个 ASCII 码控制字符(即数值小于0x20的字符)加上 0x20(相当于异或 0x20,将其转换成非控制字符),然后在其前面插入转义字符 0x7D

接收方:进行与发送方相反的变换,就可以正确地恢复出未经过字节填充的原始数据载荷。

面向比特的同步链路

面向比特的同步链路使用零比特填充来实现透明传输,将帧定界符看作取值为0111 1110 的 8 比特定位串:

发送方:对帧的数据载荷进行扫描(一般由硬件完成),每出现 5 个连续的比特1,则在其后填充一个比特0

接收方:对帧的数据载荷进行扫描,每出现 5 个连续的比特1时,就把其后的一个比特0删除

PPP帧的差错检测

PPP 帧尾部的帧检验序列 FCS 字段,其值是使用[[数据链路层概述 循环冗余校验 CRC 计算出的检错码,CRC 采用的生成多项式为 CRC - CCITT = X 16 + X 12 + X 5 + 1 X^{16}+X^{12}+X^5+1 X16+X12+X5+1

接收方每收到一个 PPP 帧,就进行 CRC 检验:若 CRC 检验正确,就收下这个帧;否则,就丢弃这个帧。使用 PPP 的数据链路层,向上提供的是不可靠数据传输服务

PPP 的工作状态

以用户主机拨号接入因特网服务提供者 ISP 的拨号服务器的过程为例:PPP 链路的开始和结束状态都是 静止 状态

在这里插入图片描述

PPP 的工作状态通常可以分为三个阶段:链路建立网络层协议配置数据传输。以下是 PPP 的工作状态:

  1. 链路建立(Link Establishment)

    • 在这个阶段,当检测到载波并建立物理层连接之后,PPP 使用链路控制协议(LCP)来建立、配置和测试数据链路连接。

    • 在通信的起始阶段,发送方发送 LCP 配置请求,接收方收到请求后发送 LCP 配置应答,进行链路参数的协商和确认。若协商成功,进入认证(鉴别)过程;若协商失败,回到静止状态。

    • 这个阶段还包括认证过程,如果配置了认证机制的话,发送方可能会要求接收方进行认证。

  2. 网络层协议配置(Network Layer Protocol Configuration)

    • 一旦链路建立完成,PPP 使用网络控制协议(NCP)来协商和配置网络层协议的选项。

    • 例如,对于 IP 协议,发送方发送 IPCP 配置请求,接收方收到请求后发送 IPCP 配置应答,协商 IP 地址、DNS 服务器等配置信息。

  3. 数据传输(Data Transmission)

    • 在链路建立和网络层协议配置完成后,PPP 进入数据传输阶段。

    • 在这个阶段,PPP 将封装好的网络层数据帧通过已建立的链路进行传输。

    • 发送方将数据封装成 PPP 帧并发送,接收方接收到帧后进行解封装并将数据交给上层网络协议进行处理。

在数据传输阶段,PPP 还会持续进行链路的检测和维护,以确保链路的稳定性和可靠性。如果链路出现故障或中断,PPP 将会尝试重新建立连接或进行相应的错误处理。

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

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

相关文章

双目视觉搭配YOLO实现3D测量

一、简介 双目(Stereo Vision)技术是一种利用两个相机来模拟人眼视觉的技术。通过对两个相机获取到的图像进行分析和匹配,可以计算出物体的深度信息。双目技术可以实现物体的三维重建、距离测量、运动分析等应用。 双目技术的原理是通过两…

【最新华为OD机试E卷-支持在线评测】英文输入法(100分)多语言题解-(Python/C/JavaScript/Java/Cpp)

🍭 大家好这里是春秋招笔试突围 ,一枚热爱算法的程序员 💻 ACM金牌🏅️团队 | 大厂实习经历 | 多年算法竞赛经历 ✨ 本系列打算持续跟新华为OD-E/D卷的多语言AC题解 🧩 大部分包含 Python / C / Javascript / Java / Cpp 多语言代码 👏 感谢大家的订阅➕ 和 喜欢�…

大数据-158 Apache Kylin 安装配置详解 集群模式启动

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完&am…

多态常见面试问题

1、什么是多态? 多态(Polymorphism)是面向对象编程中的一个重要概念,它允许同一个接口表现出不同的行为。在C中,多态性主要通过虚函数来实现,分为编译时多态(静态多态)和运行时多态…

Qt事件——鼠标事件

通过label来显示各种事件 鼠标按下事件 //按下显示坐标 void MyLabel::mousePressEvent(QMouseEvent * ev) {int i ev->x();int j ev->y();//判断按下的鼠标键位if (ev->button() Qt::LeftButton) {qDebug() << "LeftButton";}else if (ev->bu…

HAL库常用的函数:

目录 HAL库&#xff1a; 1.GPIO常用函数&#xff1a; 1.HAL_GPIO_ReadPin( ) 2.HAL_GPIO_WritePin( ) 3.HAL_GPIO_TogglePin( ) 4.HAL_GPIO_EXTI_IRQHandler( ) 5.HAL_GPIO_EXTI_Callback( ) 2.UART常用函数&#xff1a; 1.HAL_U…

数通--3

一、动态路由 内部 路由器之间要互联互通&#xff0c;必须遵循相同的协议 企业内部用 IGP&#xff0c;企业之间用BGP RIP&#xff08;已淘汰&#xff0c;不考&#xff09; 距离就是长短&#xff0c;矢量就是方向&#xff0c;即路由的出接口 一台路由器 A 配好RIP&#xff0c;…

JavaWeb 17.过滤器

目录 一、过滤器概述 生活举例&#xff1a;公司前台&#xff0c;停车场安保系统&#xff0c;地铁检票闸机 过滤器开发中应用场景 过滤器工作位置图解 Filter接口API&#xff1a; 二、过滤器过滤过程图解 三、过滤器生命周期 四、过滤器链的使用 工作流程图解 注解方式配置过滤…

map和set(一)

首先模拟一下key形式类 使用的结构是搜索二叉树 结点中有左孩子和右孩子 还有一个存储的值 template <class K>struct BSTnode//搜索二叉树不支持修改 中序遍历是有序的{K _key;BSTnode<K>* _left;BSTnode<K>* _right;BSTnode(const K& key):_key(key…

网络资源模板--Android Studio 实现记事本App

目录 一、项目演示 二、项目测试环境 三、项目详情 四、完整的项目源码 一、项目演示 网络资源模板--基于Android studio 实现的记事本App 二、项目测试环境 三、项目详情 首页 显示笔记列表&#xff1a;使用 ListView 显示从数据库中查询到的笔记内容。搜索功能&#xff…

web-105linux权限提升

rsync未授权本地覆盖 Rsync 是 linux 下一款数据备份工具&#xff0c;默认开启 873 端口 https://vulhub.org/#/environments/rsync/common/ 借助 Linux 默认计划任务调用/etc/cron.hourly&#xff0c;利用 rsync 连接覆盖 前提条件就是需要知道rsync的密码或者存在未授权 -提…

Java微信支付接入(6) - API V3 Native 支付通知API

官方文档&#xff1a;https://pay.weixin.qq.com/wiki/doc/apiv3/apis/chapter3_4_5.shtml 通知规则&#xff1a;用户支付完成后&#xff0c;微信会把相关支付结果和用户信息发送给商户&#xff0c;商户需要接收处理该消息&#xff0c;并返回应答。对后台通知交互时&#xff0c…

如何解决 Vim 中的 “E212: Can‘t open file for writing“ 错误:从编辑到权限管理(sudo)

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

第十五届蓝桥杯C++B组省赛

文章目录 1.握手问题解题思路1&#xff08;组合数学&#xff09;解题思路2&#xff08;暴力枚举&#xff09; 2.小球反弹做题思路 3.好数算法思路&#xff08;暴力解法&#xff09;---不会超时 4.R格式算法思路 5.宝石组合算法思路---唯一分解定理 6.数字接龙算法思路----DFS 7…

TinyOS 点对基站通信

文章目录 一、前言1.1 发包的BlinkToRadio的数据包格式 二、混淆基站源码分析2.1 Makefile2.2 组件连接2.3 主逻辑代码 一、前言 1.1 发包的BlinkToRadio的数据包格式 如下&#xff0c;注意&#xff1a;AM层类型(1byte)即handlerID使可以在组件中修改的。 二、混淆基站源码…

uniapp学习(004-1 组件 Part.2生命周期)

零基础入门uniapp Vue3组合式API版本到咸虾米壁纸项目实战&#xff0c;开发打包微信小程序、抖音小程序、H5、安卓APP客户端等 总时长 23:40:00 共116P 此文章包含第31p-第p35的内容 文章目录 组件生命周期我们主要使用的三种生命周期setup(创建组件时执行)不可以操作dom节点…

使用 three.js和 shader 实现一个五星红旗 飘扬得着色器

使用 three.js和 shader 实现一个五星红旗 飘扬得着色器 源链接&#xff1a;https://threehub.cn/#/codeMirror?navigationThreeJS&classifyshader&idchinaFlag 国内站点预览&#xff1a;http://threehub.cn github地址: https://github.com/z2586300277/three-ce…

python异常检测 - 随机离群选择Stochastic Outlier Selection (SOS)

python异常检测 - Stochastic Outlier Selection (SOS) 前言 随机离群选择SOS算法全称stochastic outlier selection algorithm. 该算法的作者是jeroen janssens. SOS算法是一种无监督的异常检测算法. 随机离群选择SOS算法原理 随机离群选择SOS算法的输入: 特征矩阵(featu…

【代码】集合set

哈喽大家好&#xff0c;我是学霸小羊&#xff0c;今天来讲一讲集合&#xff08;set&#xff09;。 在数学上&#xff0c;集合长这样&#xff1a; 那今天就来讲一讲编程上的集合。 集合的定义&#xff1a;把一些元素按照某些规律放在一起&#xff0c;就形成了一个集合。比如说…

stm32单片机个人学习笔记10(TIM编码器接口)

前言 本篇文章属于stm32单片机&#xff08;以下简称单片机&#xff09;的学习笔记&#xff0c;来源于B站教学视频。下面是这位up主的视频链接。本文为个人学习笔记&#xff0c;只能做参考&#xff0c;细节方面建议观看视频&#xff0c;肯定受益匪浅。 STM32入门教程-2023版 细…