PPP协议(详解)

这篇具有很好参考价值的文章主要介绍了PPP协议(详解)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。



PPP协议概述

点对点协议(Point-to-Point Protocol, PPP):PPP协议是点对点访问应用最多的协议。PPP协议其实是一个协议族,包含多个协议(LCP,NCP等)。

PPP协议的组成

PPP协议有三个组成部分:
(1) 一种将封装了多种协议的数据报传输到串行链路的方法。
(2)链路控制协议(Link Control Protocol, LCP),LCP协议是PPP协议的一部分。它用于建立、配置、测试数据链路的连接。
(3)一套网络控制协议(Network Control Protocol, NCP),NCPs是一系列协议,用于建立和配置不同的网络层协议。每个NCP协议都支持不同的网络层协议,比如IP协议,OSI的网络层,苹果的Appple Talk等。



PPP协议的帧格式

下图展示了PPP帧的各个字段:
ppp协议,# 数据链路层,网络,网络协议,运维

标志字段

标志(flag):首部的第一个字段和尾部的最后一个字段都是标志字段F(flag),规定的值用十六进制表示为:0x7E = 01111110。标志字段是PPP帧的定界符。连续两帧之间只有一个标志字段。如果数据字段碰巧出现了标志字段的值,则需要在数据字段进行字节填充,来消除这种歧义。

PPP协议可以应用在异步传输或者同步传输中,异步传输以字节为单位传输,同步传输以比特为单位传输。所以填充方式也分为字节填充比特填充

字节填充

字节填充(byte stuffing):当PPP使用异步传输时,如果信息字段出现了和标志字段一样的字节(0x7E),就需要进行字节填充,核心思路是通过在该字节前面填充转义字符(escape character, ESC)

PPP协议字节填充的规则如下图所示:
ppp协议,# 数据链路层,网络,网络协议,运维
ppp协议,# 数据链路层,网络,网络协议,运维

规则如下:

  1. 当信息字段出现标志字段的0x7E这个字节时,PPP协议会把0x7E改为0x5E,并且在前面加上规定好的转义字符0x7D,也就是把0x7E变成0x7D5E
  2. 如果转移字符0x7D本身出现在帧中,就用2字节序列0x7D5D替换,把0x7D变成0x7D5E。也就是先把0x7D变成0x5D,再在前面加上一个0x7D。
  3. 如果信息字段出现ASCII码的控制字符(即数值小于0x20 = 小于十进制32的字符),则将该字节加上0x20,比如0x03(ASCII码的传输结束控制字符ETX)就变成0x23。然后再在前面加上转义字符0x7D。拿0x03举例,就变成字符序列0x7D23

当接收点接收到填充后的帧后,就采取相反的变换,恢复填充前的数据信息。

比特填充

比特填充:PPP协议在用在同步光纤网络等链路时,会使用同步传输(将一连串的比特连续传送,而不是按字节为单位传送)。这时候PPP协议采用比特填充。

PPP协议比特填充的规则如下图所示:
ppp协议,# 数据链路层,网络,网络协议,运维

规则如下:

  1. 发送端会扫描整个数据字段(用硬件实现),只要发现5个连续的1,就立即填入一个0。这就保证数据字段不会出现6个连续的1,也就不会出现和标志字段0111 1110相同的比特组合。
  2. 接收方在接受到帧之后,先找到首部的标志字段,然后也用硬件对之后的比特流进行扫描,每当发现5个连续1时,就把5个1之后的0删除,也就逆向操作还原了数据字段。等再次遇到0111 1110的标志字段后,就说明整个帧结束了。

透明传输

不管是字节填充(也叫字符填充)还是比特填充,目标都是实现透明传输

透明传输(Transparent transmission):在传输过程中,不管所传数据是什么样的比特组合,都能够在链路上正常传送。对于数据而言,传输的链路仿佛透明不存在一样,它只是一个通道,能够将数据传过去,不会对数据本身有任何影响和限制。

比如寄信就是透明传输,你只需要把信件放到邮箱,至于信怎么到你收信的地址,你不需要了解。

而PPP协议正是利用了字节填充或者比特填充,消除了数据字段的某个字节碰巧和特殊的标志字段比特组合相同的情况,让上层协议的数据字段可以用任意的比特组合。PPP协议也是一种透明传输

地址字段和控制字段

地址字段(address)控制字段(control):都是借鉴了HDLC协议的地址和控制字段的格式。但是,在PPP中这2个字段目前还没有参与使用。
地址字段原本指示哪个站正在处理,但是PPP只有一个目的地,所以地址字段被设置为固定值0xFF(表示所有站)
而控制字段用于指示帧序列和重传行为(应用于可靠传输),但是链路层的可靠性不依靠简单的PPP协议实现。所以控制字段设置为固定值0x03
实际传输中,经常使用一个称为地址和控制字段压缩(ACFC)的选项来省略它们,也就是发送方和接收方会约定好消除这2个字节。

协议字段

协议字段(protocol):协议字段表明PPP携带的数据字段的协议类型。PPP协议可以携带多种协议,所以需要协议字段确定数据字段使用的协议类型。包括各种网络层协议,NCP协议和LCP协议。

字段默认为2个字节,但是可以通过一个叫协议字段压缩(PFC)的选项,双方在链路建立时协商,将协议字段压缩为1个字节

当协议字段值为0x0021时,PPP的信息字段就是IP数据报。
当协议字段值为0xC021时,信息字段就是LCP分组。
当协议字段值为0x8021时,信息字段就是NCP的IPCP协议分组。
当协议字段值为0xC023时,信息字段就是PAP鉴别协议。
当协议字段值为0xC223时,信息字段就是CHAP鉴别协议。

有效数据部分

数据字段是PPP协议的有效载荷信息,它的长度是可变的,最多不超过1500字节。

帧检验序列FCS字段

帧检验序列(Frame Check Sequence, FCS):FCS字段是用于差错检测的,让接收方可以知晓收到的帧是否出了差错。它只能检错,不能纠错。

PPP的差错检测使用的是循环冗余校验CRC算法。想了解CRC算法可以阅读我的这篇博文:循环冗余校验CRC

PPP帧的FCS一般是16位的生成多项式(叫做CRC-16,为 x 16 x^{16} x16+ x 12 x^{12} x12+ x 5 x^{5} x5+1 = 1 0001 0000 0010 0001)。而通过协商,LCP选项可将FCS扩展为32位,使用32位的生成多项式CRC-32

所以,PPP帧的FCS字段为2或者4个字节



PPP协议的工作状态

链路的连接是需要分阶段完成的,包括:闲置、建立、鉴别、联网、打开、终止再到再一次闲置。
在每个阶段PPP协议数据字段的协议都不同,理解链路连接的各个阶段才能完全理解PPP的工作模式。

  1. 闲置:此时链路没有被使用。发送方和接收方之间并不存在物理层和链路层的连接(比如个人用户刚开始还没有连接上本地ISP)。
  2. 建立:如果双方想进行链路的连接,首选需要进入建立阶段。此阶段LCP协议会起作用(也就是PPP帧会封装LCP协议,双方通过交换包含LCP协议的PPP帧来完成建立工作)。发送方会和接收方交换LCP分组,用于协商一些选项的配置(比如帧的有效载荷大小,是否压缩PPP的协议字段等)。(其实严格说,建立阶段需要物理层和数据链路层两层同时起作用,发送方一开始是先发送物理层的载波信号,等建立物理层连接后,再协商链路层连接需要的选项配置)。
  3. 鉴别:鉴别阶段是可选的。主要目的是鉴别发送方的身份,根据鉴别报文的ID和口令等身份信息,接收方来决定是否要和发送方通信。如果发送方身份被接收方认可,就进入联网阶段,否则直接进入终止阶段。常用的鉴别协议是PAP协议CHAP协议
  4. 联网:联网阶段是对网络层协议的协商。通过对应的网络控制协议NCP来完成。因为PPP协议支持多种网络层协议,双方必须在进行数据报传输前,确定到底交换哪种网络层协议,对应网络层协议的相关规定也要达成一致。比如,如果PPP协议要封装IP数据报,那就需要在双方配置交换IP数据报需要的模块。双方会交换IP控制协议IPCP来完成配置工作。
  5. 打开:到打开阶段,连接的相关配置才算完成,双方才能正式进行数据分组的交换。直到连接终止前,双方都可以进行数据的传输。在打开阶段,双方也可以交换回声请求和回声应答LCP分组来检查链路的连接状态。
  6. 终止:如果双方不需要交换数据分组,则可以利用LCP协议完成终止连接的操作。双方会交换相关用于终止连接的LCP分组,来关闭链路。

PPP协议每个阶段如何相互转换可以参考下图:
ppp协议,# 数据链路层,网络,网络协议,运维

LCP协议

链路控制协议LCP(Link Control Protocol):LCP协议是用来建立、测试、监控、终止链路的连接。在PPP工作的建立阶段和终止阶段,必须通过交换LCP分组控制链路的建立和终止。在PPP工作的打开阶段,不仅可以发送网络层的报文,也可以发送LCP的回声请求和回声应答分组,测试链路是否正常连接。

LCP协议的报文格式如下图所示:
ppp协议,# 数据链路层,网络,网络协议,运维

编码

编码:编码字段为1个字节,用于确定LCP分组的类型,不同类型的LCP分组在链路连接的不同阶段发挥不同的作用。

编码 分组类型 说明
0x01 配置请求 包含建议选项及其值的列表
0x02 配置确认 接受所有建议的选项
0x03 配置不确认 告知某些选项不能被接受
0x04 配置拒绝 告知某些选项不可识别
0x05 终止请求 请求关闭线路
0x06 终止确认 接受关闭请求
0x07 编码拒绝 告知一个未知编码
0x08 协议拒绝 告知一个未知协议
0x09 回声请求 检测另一端是否活动的一种呼叫报文
0x0A 回声应答 对回声请求报文的响应
0x0B 丢弃请求 丢弃分组的请求

如上表所示,LCP分组类型可以分为3类:

  1. 在建立阶段,双方对选项配置的协商(前4种)。
  2. 在终止阶段,用于链路终止(第5,6种)。
  3. 在打开阶段,用于链路的测试和调试。

标识

标识(identification,ID):因为LCP分组经常是成对出现的。比如发送方发送配置请求LCP分组,接收方可能会回复对应的配置确认LCP分组。标识就用于将请求和应答分组匹配在一起。
首先,发送方会提供序列号,每发送一个消息进行递增(这样发送方的LCP报文的ID就不一样了),接收方在生成对应的应答报文时,该报文的ID字段会复制请求报文的ID。这样请求方收到应答报文后,可以通过看标识字段是否相同来匹配报文。

长度

长度:长度字段给出了LCP分组的字节长度,它不能超过链路的最大接受单元(MRU)。

选项

LCP协议常用于链路建立连接的阶段,它会让双方协商选项的配置。选项并不在LCP的首部,而是LCP的数据部分。LCP的数据字段分为三段:选项类型、选项长度和选项值。下面是最常见的一些选项:

选项 默认值
最大接受单位 1500
鉴别协议
协议字段压缩 关闭
地址和控制字段压缩 关闭

鉴别协议

PPP协议在鉴别阶段会封装鉴别协议(Authentication protocol, AP)。鉴别的作用是让接受方识别发送方的身份。PPP有两种鉴别协议:口令鉴别协议查询握手鉴别协议

口令鉴别协议PAP

口令鉴别协议(Password Authentication Protocol, PAP):这是一种非常简单的鉴别协议。它在PPP的协议字段的值为:0xC023。发送方需要提供鉴别身份(通常是用户名)和口令(俗称的密码),接收方会检测身份和口令的合法性,决定是否接受连接。

查询握手鉴别协议CHAP

查询握手鉴别协议(Challenge Handshake Authentication Protocol, CHAP):CHAP使用一个三步握手的鉴别方式,它不需要传输口令。口令一开始发送方和接收方都是已知的。它在PPP的协议字段的值为:0xC223
1.接收方会给发送方一个包含查询值的查询分组。
2.发送方根据该查询分组结合口令生成一个结果,并把该结果作为响应分组发送给接收方。
3.接收方也用同样的方式生成一个结果,如果和发送方的结果一致,就允许访问;否则访问被拒绝。
这其实是很简单的密码学的原理,这比PAP协议安全很多。因为口令始终没有在链路上传输。

网络控制协议NCP

网络控制协议(Network Control Protocol, NCP):这实际是一个协议组合,有多个NCP协议。因为PPP协议支持多种网络层协议,比如IP协议,Xerox协议等,每一种网络层协议在发送数据报之前,都需要对应的网络控制协议为其配置相关信息。比如IP数据报在链路层传输前,就需要IPCP协议配置好用来承载IP数据报的链路。
由于IP数据报非常重要,所以我着重介绍为其配置网络信息的IPCP协议。

IPCP协议

互联网络协议控制协议(Internet Protocol Control Protocol, IPCP):IPCP协议在PPP的协议字段的值为0x8021。
它的首部和LCP分组类似,也有编码字段,标识字段,长度字段。它的数据字段也包含可变的IPCP信息。
它的编码字段有7种,编码从0x01到0x07,每种编码对应不同的作用。
链路层需要传输IP数据报,必须用IPCP协议进行网络层信息的配置,双方达成一致之后,才可以进入打开状态,才能正常传输IP数据报。文章来源地址https://www.toymoban.com/news/detail-786341.html

到了这里,关于PPP协议(详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • PPP协议讲解(PPP连接状态、PPP报文)

    目录 简介 PPP定义的一整套协议(3大部分) PPP建立连接的五种状态(阶段) Establish阶段 LCP简介 LCP报文类型---3大类报文 LCP协商报文交互过程 LCP协商状态—5种状态 Authenticate验证阶段(可选) PAP认证报文交互过程 CHAP认证报文交互过程 Network网络层协商阶段 IPCP简介 IPCP报文类

    2024年02月06日
    浏览(41)
  • HDLC和PPP协议

    广域网中经常会使用串行链路来提供远距离的数据传输,高级数据链路控制(High-Level Data Link Control)和点对点协议PPP(Point to Point Protocol)是两种典型的串口封装协议 HDLC具有以下特点: HDLC协议只支持点到点链路,不支持点到多点。 HDLC协议不支持IP地址协商,不支持认证。

    2024年02月04日
    浏览(38)
  • PPP协议实验及配置

    首先在设备上增添两个Serial接口: AR1作为认证方,AR2作为被认证方: AR1: [Huawei]int s 4/0/0 进入S4/0/0接口 [Huawei-Serial4/0/0]ip address 12.1.1.1 24 配置接口地址 [Huawei-Serial4/0/0]link-protocol ppp 链路类型是PPP链路,这条,命令在Serial接口之下默认是开启的,不用手动进行配置 [Huawei-Seria

    2024年02月06日
    浏览(36)
  • 华为---PPP协议简介及示例配置

             PPP 是Point-to-Point Protocol的简称,中文翻译为点到点协议。与以太网协议一样,PPP也是一个数据链路层协议。以太网协议定义了以太帧的格式,PPP协议也定义了自己的帧格式,这种格式的帧称为PPP帧。         利用PPP协议建立的二层网络称为PPP网络。一个PPP网络

    2024年02月07日
    浏览(43)
  • PPP协议概念及鉴权方式概述

    PPP(Point-to-Point Protocol点到点协议)是为在同等单元之间传输数据包这样的简单链路设计的链路层协议。这种链路提供全双工操作,并按照顺序传递数据包。设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的

    2024年02月05日
    浏览(41)
  • PPP协议原理介绍+报文分析+配置指导-RFC1661

    个人认为, 理解报文就理解了协议 。通过报文中的字段可以理解协议在交互过程中相关传递的信息,更加便于理解协议。 因此本文将在PPP协议报文的基础上进行介绍。 关于PPP协议基本原理,可参考 RFC1661-The Point-to-Point Protocol (PPP) 。 关于PPP协议的IPv4控制协议,可参考 RFC1

    2024年01月25日
    浏览(41)
  • 华为eNSP配置PPP协议中的PAP认证

    PC1IP地址配置 PC2IP地址配置 PC1ping通PC2 PC2ping通PC1

    2024年02月09日
    浏览(45)
  • 华为ensp中PPP(点对点协议)中的PAP认证 原理和配置命令

    作者主页: 点击! ENSP专栏:点击! 创作时间: 2024年4月8日14点31分   PPP协议 (Point-to-Point Protocol)是点到点协议,是一种常用的串行链路层协议,用于在两个节点之间建立点对点连接。它可以用于拨号网络、虚拟专用网络(VPN)和其他类型的点对点连接。 PPP协议的特性 支

    2024年04月12日
    浏览(42)
  • 哈工大计算机网络课程数据链路层协议详解之:多路访问控制(MAC)协议

    在上一小节介绍完数据链路层功能和所提供的服务后,接下来我们介绍一个在 数据链路层非常重要的一个协议:多路访问控制MAC协议。 多路访问控制主要是为了解决一类链路的使用问题。作为网路中的链路,大致可以分为以下两类: 点对点链路 顾名思义,链路只连接两个相

    2024年02月15日
    浏览(56)
  • PPP的认证【eNSP实现】

    PPP 协议之所以能成为广域网中应用较为广泛的协议,原因之一就是它能提供验证协议 CHAP 【 Challenge Handshake Authentication Protocol ,挑战式握手验证协议】、 PAP 【 Password Authentication Protocol ,密码验证协议】,更好地保证了网络安全性。 PAP 为两次握手验证,口令为明文,验证过

    2024年02月08日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包