网络链路层之(2)PPP协议

网络链路层之(2)PPP协议


Author: Once Day Date: 2024年3月27日

一位热衷于Linux学习和开发的菜鸟,试图谱写一场冒险之旅,也许终点只是一场白日梦…

漫漫长路,有人对你微笑过嘛…

全系列文章可参考专栏: 通信网络技术_Once-Day的博客-CSDN博客。

参考文章:

  • 《TCP/IP详解卷一》

文章目录

  • 网络链路层之(2)PPP协议
        • 1. 概述
          • 1.1 参考RFC文档
          • 1.2 详细说明
        • 2. 协议格式
          • 2.1 帧格式
          • 2.2 LCP操作过程
          • 2.3 PPP协议工作状态

1. 概述

ppp是一个协议集合,包含三部分:

  • 将IP数据报封装到串行链路的方法。

  • 一系列的链路控制协议(Link Control Protocol,LCP),用来建立、配置和测试数据链路连接。

  • 以及NCP(网络控制协议),每一个协议支持不同的网络层协议,如IP、OSI的网络层,DECnet,以及AppleTalk等。

PPP对物理层链路有最低要求,即必须支持双向操作,以及异步或同步操作。

ppp基本帧格式借用了HDLC的格式。

1999年公布的PPP over Ethernet(PPPoe),工作在以太网中,可以把PPP帧在封装在以太网帧中。

1.1 参考RFC文档

PPP协议的相关RFC文档包括但不限于以下几个:

  1. RFC 1661 - The Point-to-Point Protocol (PPP):
    这是PPP协议的主要标准文档,描述了PPP的基本框架,包括封装格式、链路控制协议(LCP)以及协议的工作流程。它是理解PPP如何在两个点之间传输数据包的基础。
  2. RFC 1662 - PPP in HDLC-like Framing:
    该文档描述了PPP如何在类似HDLC(高级数据链路控制)的帧中进行封装。它详细说明了帧的结构、透明传输和控制字符的使用方法。
  3. RFC 1332 - The PPP Internet Protocol Control Protocol (IPCP):
    这份文档定义了IPCP,即PPP的网络控制协议之一,用于在PPP连接上配置和测试IP参数,例如IP地址。
  4. RFC 1994 - PPP Challenge Handshake Authentication Protocol (CHAP):
    CHAP为PPP提供了一种认证机制,这份RFC文档详细阐述了CHAP的工作原理和实施方式。
  5. RFC 1570 - PPP LCP Extensions:
    此RFC提供了LCP的一些扩展,包括对多链路聚合、回环检测和快速连接选项的支持。
  6. RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE):
    这份文档描述了PPPoE协议,它允许将PPP帧封装在以太网帧中,常用于DSL(数字用户线)互联网连接。
1.2 详细说明

PPP(Point-to-Point Protocol)是一种数据链路层通信协议,旨在建立直接连接两个网络节点的标准方法。PPP的设计初衷是为了在串行连接上封装网络层协议,这使得它在早期的拨号和ISDN互联网接入服务中得到了广泛应用。尽管如今宽带接入技术(如DSL和光纤)已经取代了传统的拨号服务,PPP仍然在某些宽带和VPN场景中扮演着重要角色。

PPP提供了几个重要的功能:

  • 封装多种网络层协议:PPP能够封装IP、IPX等多种网络层协议,使其能够通过串行链路传输。
  • 链路控制协议(LCP):LCP用于建立、配置和测试数据链路连接。它提供了协商链路选项的功能,包括认证协议的选择、链路品质监控等。
  • 认证:PPP支持多种认证机制,包括PAP(Password Authentication Protocol)和CHAP(Challenge-Handshake Authentication Protocol),增强了连接的安全性。
  • 多协议支持:PPP定义了一种扩展的网络控制协议(NCP)框架,允许对各种网络层协议进行特定的选项协商。

一次典型的PPP会话开始于两个节点之间的物理或虚拟连接,接着使用LCP来建立和配置数据链路。一旦LCP达成一致,认证阶段开始,节点可能需要通过PAP或CHAP等方式验证彼此的身份。随后,NCP会协商网络层协议的参数,比如分配IP地址。最后,数据开始通过已配置好的链路传输。

PPP的设计使其适用于多种场景,包括但不限于:

  • 拨号网络:在拨号互联网接入时代,PPP是建立连接的标准手段。
  • VPN连接:在某些类型的VPN实现中,PPP提供了在互联网上建立安全连接的机制。
  • 宽带接入:如PPPoE(PPP over Ethernet),在DSL互联网接入中经常使用。

由于PPP的通用性和较高的安全性,它成为当时点对点通信的事实标准。即便在现代网络中,PPP的某些概念和机制仍然被应用于新的协议和网络架构中,显示出其设计的持久影响力。

当然,随着技术的发展,PPP在某些场合已被更高效、更安全的协议所替代,但在理解网络协议和网络历史的背景下,学习PPP依然具有重要意义。

2. 协议格式
2.1 帧格式

在这里插入图片描述

  • 标志字段用于帧定界,即收尾两个0x7E字符。

  • 地址和控制字段来自于HDLC协议,但在PPP中由于只有一个目的地和无需提供可靠服务。因此是固定的0xFF和0x03。该字段可通过地址和控制字段压缩(ACFC)的选项来省略他们。

  • 协议字段表示后面的数据类型,因为数据可能来自于网络控制协议NCP或者链路控制协议LCP以及网络层协议IP等。0x0021是IP数据报,0xC021是LCP的数据。协议字段压缩PFC可以减少长度到1字节。

  • 总信息长度MRU一般不超过1500。

  • FCS检验序列一般采用CRC-CCITT多项式:

    C R C − C C I T T = X 16 + X 12 + X 5 + 1 CRC-CCITT=X^{16}+X^{12}+X^5+1 CRCCCITT=X16+X12+X5+1

    默认为16位FCS,但可以通过LCP选项启用32位FCS。

异步传输采用字节填充

  • 转义字符定义为0x7D(01111101)

  • 把数据段中出现的每一个0x7E字节转变成(0x7D,0x5E)序列

  • 把数据段中出现的每一个0x7D字节转变成(0x7D,0x5D)序列

  • 数据段中小于0x20的字符c,则改变成(0x7D,0x20+c)序列

同步传输时使用位填充(零比特填充)

  • 即SONET/SDH链路,一连串的比特连续传输。

  • 扫描整个字段,只要有5个连续的1,立即填入一个0。即不会出现连续六个1的序列,0x7E(01111110)。

2.2 LCP操作过程

PPP协议的LCP分组:

在这里插入图片描述

代码字段给出了请求或响应的操作类型

  • 配置消息(开始基本配置,建立商定的选项)

  • 终止消息(清除一条链路)

  • 回送请求/应答消息(验证对方的操作)

  • 放弃请求消息(用于性能测试,丢弃没有响应的分组)

  • 标识和剩余时间消息(用于管理目的)

标识字段是有LCP请求帧的发送方提供的序列号,并随每个后续消息进行递增。

长度字段给出LCP分组的字节长度,这不是PPP协议的一部分。

2.3 PPP协议工作状态

在这里插入图片描述

  • 在鉴别阶段可进行用户身份认证。

  • NCP将根据网络层不同的协议进行配置,如IP协议将使用IP控制协议IPCP(IP Control Protocal)。







Alt

Once Day

也信美人终作土,不堪幽梦太匆匆......

如果这篇文章为您带来了帮助或启发,不妨点个赞👍和关注,再加上一个小小的收藏⭐!

(。◕‿◕。)感谢您的阅读与支持~~~

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

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

相关文章

pt-archiver的实践分享,及为何要用 ob-archiver 归档数据的探讨

作者简介:肖杨,软件开发工程师 在数据密集型业务场景中,数据管理策略是否有效至关重要,它直接关系到系统性能与存储效率的提升。数据归档作为该策略的关键环节,不仅有助于优化数据库性能,还能有效降低存储成…

(一)基于IDEA的JAVA基础9

循环结构及特点 while循环 do while循环 for 循环 特点:有循环条件 循环起始值 循环自增量(每次自增的量) 循环操作 while循环 语法: 初始部分//定义变量的地方,声明变量 while(循环条件){ 循环操作; 迭代部分; } 流程图: 练习:打…

Rust编程(三)生命周期与异常处理

生命周期 生命周期,简而言之就是引用的有效作用域。在大多数时候,我们无需手动的声明生命周期,因为编译器可以自动进行推导。生命周期的主要作用是避免悬垂引用,它会导致程序引用了本不该引用的数据: {let r;{let x …

【办公类-21-11】 20240327三级育婴师 多个二级文件夹的docx合并成docx有页码,转PDF

背景展示:有页码的操作题 背景需求: 实操课终于全部结束了,把考试内容(docx)都写好了 【办公类-21-10】三级育婴师 视频转文字docx(等线小五单倍行距),批量改成“宋体小四、1.5倍行…

2024 MCM数学建模美赛2024年A题复盘,思路与经验分享:资源可用性与性别比例 | 性别比例变化是否对生态系统中的其他生物如寄生虫提供优势(五)

审题 第四问让我们探究性别比例变化是否对生态系统中的其他生物如寄生虫提供优势。这里我们可以把问题简化一下,只探究性别比例会不会对寄生虫提供优势。因为考虑太多生物,会使模型更复杂,我这个水平处理不了这么复杂的问题,是我…

整数在内存里面的存储

整数在内存里面的存储 整数在计算机里面的存储是按照二进制的方式进行存储 显示的时候是按照16进制的方法进行显示 1. 整数在内存中的存储在讲解操作符的时候,我们就讲过了下⾯的内容:整数的2进制表⽰⽅法有三种,即原码、反码和补码 三种…

案例研究|DataEase实现物业数据可视化管理与决策支持

河北隆泰物业服务有限责任公司(以下简称为“隆泰物业”)创建于2002年,总部设在河北省高碑店市,具有国家一级物业管理企业资质,通过了质量体系、环境管理体系、职业健康安全管理体系等认证。自2016年至今,隆…

FIM配置

FIM(功能抑制管理器) FIM模块根据DTC状态来确定对应功能是否要禁止 FiM_GetFunctionPermission通过RTE提供给SWC FiMFIDs FiMInhibitionConfigurations FiMInhFunctionIdRef:关联FIMID FiMInhInhibitionMask: FIM_LAST_FAILED Inh Event…

【氮化镓】p-GaN栅极退化的温度和结构相关性

论文总结: 本文献深入研究了带有p-GaN栅极的正常关断型(normally-off)高电子迁移率晶体管(GaN-HEMTs)在恒定电压应力下的时序退化行为。通过直流特性分析和温度依赖性分析,研究了故障时间(TTF)与应力温度和器件几何结构的依赖性。结果显示,p…

算法打卡day19

今日任务: 1)235. 二叉搜索树的最近公共祖先 2)701.二叉搜索树中的插入操作 3)450.删除二叉搜索树中的节点 235. 二叉搜索树的最近公共祖先 题目链接:235. 二叉搜索树的最近公共祖先 - 力扣(LeetCode&…

Android 自定义EditText

文章目录 Android 自定义EditText概述源码可清空内容的EditText可显示密码的EditText 使用源码下载 Android 自定义EditText 概述 定义一款可清空内容的 ClearEditText 和可显示密码的 PasswordEditText,支持修改提示图标和大小、背景图片等。 源码 基类&#xf…

大语言模型(LLM)token解读

1. 什么是token? 人们经常在谈论大模型时候,经常会谈到模型很大,我们也常常会看到一种说法: 参数会让我们了解神经网络的结构有多复杂,而token的大小会让我们知道有多少数据用于训练参数。 什么是token?比…

【C语言】Infiniband驱动init_dev_assign函数

一、注释 一个内核模块的初始化函数,用于分配和初始化某些资源。以下是对代码块的逐行中文注释: // 定义一个初始化设备分配的函数 static void init_dev_assign(void) {int i 1;spin_lock_init(&dev_num_str_lock); // 初始化自旋锁if (mlx4_fil…

量化交易入门(二十三)什么是MTM指标,原理是什么

MTM指标全称是Momentum指标,翻译为动量指标。它用来衡量市场价格在一定时间内上涨或下跌的幅度,属于趋势型指标。其计算公式是: MTM(N) 当前收盘价 - N日前的收盘价 其中N表示统计的周期数,常用参数有6日、12日和24日。 MTM指标的应用要点如下: 判断趋势强弱:MTM数值越大,表…

泛型的进阶

1 通配符 &#xff1f; 我们想调用fun函数帮我们打印&#xff0c;但由于不知道Message具体是什么类型&#xff0c;所以我们可以使用 &#xff1a; &#xff1f;即通配符 当我们将fun函数中改为Message<?>此时就不会报错 2 通配符的上界&#xff1a; <? extends 上…

如何使用 ArcGIS Pro 自动矢量化水系

对于某些要素颜色统一的地图&#xff0c;比如电子地图&#xff0c;可以通过图像识别技术将其自动矢量化&#xff0c;这里为大家介绍一下 ArcGIS Pro 自动矢量化水系的方法&#xff0c;希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的电子地图数据&#…

二分练习题——123

123 二分等差数列求和前缀和数组 题目分析 连续一段的和我们想到了前缀和&#xff0c;但是这里的l和r的范围为1e12&#xff0c;明显不能用O(n)的时间复杂度去求前缀和。那么我们开始观察序列的特点&#xff0c;可以按照等差数列对序列进行分块。如上图&#xff0c;在求前10个…

虚拟机Linux(centos)安装python3.8(超详细)

一、Python下载 下载地址&#xff1a;https://www.python.org/downloads/source/ 输入下面网址即可直接下载&#xff1a; python3.8&#xff1a;https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz python3.6&#xff1a;https://www.python.org/ftp/python/3.6.5/…

Chrome 插件 tabs API 解析

Chrome.tabs API 解析 使用 chrome.tabs API 与浏览器的标签页系统进行交互&#xff0c;可以使用此 API 在浏览器中创建、修改和重新排列标签页 Tabs API 不仅提供操作和管理标签页的功能&#xff0c;还可以检测标签页的语言、截取屏幕截图&#xff0c;以及与标签页的内容脚本…

Prompt Engineering的4 种方法

此为观看视频 4 Methods of Prompt Engineering 后的笔记。 从通用模型到专用模型&#xff0c;fine tuning&#xff08;微调&#xff09;和prompt engineering&#xff08;提示工程&#xff09;是2种非常重要的方法。本文深入探讨了prompt engineering的4种方法。 首先&#…