PPP点对点协议

概述

Point-to-Point Protocol,点到点协议,工作于数据链路层,在链路层上传输网络层协议前验证链路的对端,主要用于在全双工的同异步链路上进行点到点的数据传输。

PPP主要是用来通过拨号或专线方式在两个网络节点之间建立连接、发送数据。PPP是各类型主机、网桥和路由器之间简单连接的一种解决方案。在RFC1661中有详细的描述。PPP协议是目前广域网上应用最广泛的协议之一,它的优点在于简单、具备用户验证能力、可以解决IP分配等。

PPP协议是IETF在1992年制定的。经过1993年和1994年的修订,在1994年就已成为互联网的正式标准。

PPP

PPP包含如下三个部分:

  • 在串行链路上封装数据报的方法。PPP既支持异步链路(无奇偶检验的8比特数据),也支持面向比特的同步链路。IP数据报在PPP帧中就是其信息部分。这个信息部分的长度受最大传送单元MTU的限制;
  • 建立、配置和测试数据链路连接的链路控制协议(Link Control Protocol,LCP),用于对封装格式选项的自动协商、建立和终止连接,探测链路错误和配置错误;
  • 建立和配置不同网络层协议的一组网络控制协议(Network Control Protocol,NCP),PPP协议规定针对每一种网络层协议都有相应的网络控制协议,并用他们来管理各个协议不同的需求。

PPP协议定义三种认证协议:

  • PAP:Password Authentication Protocol,密码验证协议
  • CHAP:Challenge-Handshake Authentication Protocol,挑战—握手验证协议
  • EAP:Extensible Authentication Protocol,扩展认证协议

特点

  • PPP既支持同步传输又支持异步传输,而X.25、FR(Frame Relay)等数据链路层协议仅支持同步传输,SLIP仅支持异步传输
  • PPP 协议具有很好的扩展性。如,当需要在以太网链路上承载PPP协议时,PPP可扩展为PPPoE
  • PPP提供LCP协议,用于各种链路层参数的协商
  • PPP提供各种NCP协议(如IPCP、IPXCP),用于各网络层参数的协商,更好地支持网络层协议
  • PPP 提供认证协议CHAP、PAP,更好地保证网络安全性
  • 无重传机制,网络开销小,速度快

一个典型的PPP链路建立过程分为三个阶段:

  • 创建阶段:将对基本的通信方式进行选择。链路两端设备通过LCP向对方发送配置信息,建立链路。在链路创建阶段,只是对验证协议进行选择,具体的用户验证过程在认证阶段实现
  • 认证阶段:客户端会将自己的身份发送给远端的接入服务器。该阶段使用一种安全的验证方式避免第三方窃取数据或冒充远程客户接管与客户端的连接。认证成功,则转到网络层协商阶段。如果认证失败,则链路终止
  • 网络层协商阶段:认证阶段完成之后,PPP将调用在链路创建阶段选定的各种NCP协商高层协议问题,例如,在该阶段IP控制协议可以向拨入用户分配动态地址。

报文格式

在这里插入图片描述
包含字段:

  • Flag域:标识一个物理帧的起始和结束,该字节为二进制序列01111110(0x7E)
  • Address域:字节固定为11111111(0xFF),是一个广播地址
  • Control域:默认为00000011(0X03),表明为无序号帧
  • Protocol字段:用来说明PPP所封装的协议报文类型;典型字段值有:0xC021代表LCP,0xC023代表PAP报,0xC223代表CHAP报文。如果协议字段被设为0xC021,则说明通信双方正通过LCP报文进行PPP链路的协商和建立
  • Information字段:包含协议字段中指定协议的数据包
    • Code 字段:主要是用来标识LCP数据报文的类型。典型的报文类型有:配置信息报文(Configure Packets:0x01),配置成功信息报文(Configure-Ack:0x02),终止请求报文(Terminate-Request:0x05)
    • Identifier域:1个字节,用来匹配请求和响应
    • Data字段:默认最大长度(不包括协议字段)称为最大接收单元MRU(Maximum Receive Unit),MRU缺省值为1500字节
  • FCS:Drame Check Sequence,帧校验序列,是个16位的校验和,用于检查PPP帧的完整性

字节填充
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。

当PPP使用异步传输时,它把转义符定义为0x7D(即01111101),并使用字节填充,RFC 1662规定如下填充方法:

  • 把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D, 0x5E)
  • 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成为2字节序列(0x7D, 0x5D)
  • 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是传输结束,ETX)就要把它转变为2字节序列(0x7D, 0x23)

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

零比特填充
PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)而不是异步传输(逐个字符地传送)。在这种情况下,PPP协议采用零比特填充方法来实现透明传输。

具体做法是:在发送端,先扫描整个信息字段(通常用硬件实现,也可用软件实现,只是会慢些)。只要发现有5个连续1,则立即填入一个0。经过这种零比特填充后的数据,可保证在信息字段中不会出现6个连续1。接收端在收到一个帧时,先找到标志字段F以确定一个帧的边界,接着再用硬件对其中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除,以还原成原来的信息比特流。这样就保证透明传输:在所传送的数据比特流中可以传送任意组合的比特流,而不会引起对帧边界的错误判断。

建立状态机

在这里插入图片描述
包含如下几个阶段:

  • Dead阶段:也称为物理层不可用阶段。当通信双方的两端检测到物理线路激活时,就会从Dead阶段迁移至Established阶段,即链路建立阶段
  • Established阶段:PPP链路进行LCP参数协商。协商内容包括最大接收单元MRU、认证方式、魔术字(Magic Number)等选项。LCP参数协商成功后会进入Opened状态,表示底层链路已经建立
  • Authenticate阶段:多数情况下,链路两端的设备是需要经过认证阶段(Authenticate)后才能够进入到网络层协议阶段。PPP链路在缺省情况下是不要求进行认证的。如果要求认证,则在链路建立阶段必须指定认证协议。认证方式是在链路建立阶段双方进行协商的。如果在这个阶段再次收到Configure-Request报文,则又会返回到链路建立阶段
  • Network阶段:PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。如果在这个阶段收到Configure-Request报文,也会返回到链路建立阶段。NCP协商成功后,PPP链路将保持通信状态
  • Terminate:PPP运行过程中,可以随时中断连接,例如物理链路断开、认证失败、超时定时器时间、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接。

工作原理

当用户拨号接入ISP后,就建立一条从用户个人电脑到ISP的物理连接。这时,用户个人电脑向ISP发送一系列的链路控制协议LCP分组(封装多个PPP帧),以便建立LCP连接。这些分组及其响应选择了将要使用的一些PPP参数。接着进行网络层配置,网络控制协议NCP给新接入的用户个人电脑分配了一个临时的IP地址,这样,用户个人电脑就成为互联网上的一个有IP地址的主机了。当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址,接着,LCP释放数据链路层连接,最后释放物理层连接。
在这里插入图片描述
步骤:

  • 当用户个人电脑通过调制解调器呼叫路由器时(比如点屏幕上点击宽带连接),路由器就能够检测到调制解调器发出的载波信号。在双方建立了物理层连接后,PPP进入链路建立状态(Link Establish),其目的是建立链路层的LCP连接。
  • 接下来,LCP开始协商一些配置选项,即发送LCP的配置请求帧,这是一个PPP帧,其协议字段为LCP对应的代码(0xC021),信息字段包含特定的配置请求。LCP配置选项包括:链路上的最大帧长、所使用的鉴别协议的规约(如果有)、不使用PPP帧中的地址和控制字段(因为这两个字段的值是固定的,没有任何信息量,可以在PPP帧的首部忽略这两个字节)。链路的另一端可以发送以下几种响应中的一种:
    • 配置确认帧(Configure-Ack):所有选项都接受
    • 配置否认帧(Configure-Nak):所有选项都理解但不能接受
    • 配置拒绝帧(Configure-Reject):有的选项无法识别或不能接受,需要协商
  • 协商结束后,双方就建立LCP链路,接着就进入鉴别状态(Authenticate)。在这一状态,只允许传送LCP协议的分组、鉴别协议的分组、监测链路质量的分组。若使用口令鉴别协议PAP(Password Authentication Protocol),则需要发起通信的一方发送身份标识符和口令。系统可允许用户重试若干次。如果需要有更好的安全性,则可使用更加复杂的口令握手鉴别协议CHAP(Challenge-Handshake Authentication Protocol)。若鉴别身份失败,则转到链路终止状态(Link Terminate),若鉴别成功,则进入网络层协议状态(Network Layer Protocol)
  • 在网络层协议状态,PPP链路的两端的网络控制协议NCP根据网络层的不同协议互相交换网络层特定的网络控制分组,现在的路由器都能够同时支持多种网络层协议,PPP协议的两端的网络层可以运行不同的网络层协议,但仍然使用同一个PPP协议。如果PPP链路上运行的是IP协议,则对PPP链路的每一端配置IP协议模块时(如分配IP地址)就要使用NCP中支持的协议—IP控制协议IPCP(IP Control Protocol)。IPCP分组也封账成PPP帧(协议字段为OX8021)在PPP链路上传送。在低速链路上运行时,双方还可以协商使用压缩的TCP和IP首部,以减少在链路上发送的比特数
  • 当网络层配置完毕后,链路就进入可进行数据通信的链路打开状态(Link Open)。链路的两端可以向彼此发送分组。两端还可发送回送请求LCP分组(Echo-Request)和回送回答LCP分组(Echo-Reply),以检查链路的状态。数据传输结束后,可以由链路的一端发出终止请求LCP分组(Terminate-Request),请求终止链路连接。在收到对方发来的终止确认LCP分组后(Terminate-Ack),转到链路终止状态。如果链路出现故障,也会从链路打开状态转到链路终止状态。当调制解调器的载波停止后,则回到链路静止状态。

从设备无链路开始,先建立物理链路,再建立链路控制协议LCP链路。经过鉴别后,再建立网络控制协议NCP链路,然后才能交换数据。可见,PPP协议已不是纯粹的数据链路层的协议,它包含物理层和网络层的内容。

PAP

PAP是一种简单的明文验证方式。网络接入服务器要求用户提供用户名和口令,PAP以明文方式返回用户信息,并且对回送或者重复验证和错误攻击没有保护措施。

很明显,这种验证方式的安全性较差,第三方可以很容易地获取被传送的用户名和口令,并利用这些信息与网络接入服务器建立连接获取网络接入服务器提供的资源。所以,一旦用户密码被第三方窃取,PAP无法提供避免受到第三方攻击的保障措施。

CHAP

CHAP是一种加密的验证方式,能够避免建立连接时传送用户的明文密码。网络接入服务器向远程用户发送一个挑战口令,其中包括会话ID和一个任意生成的挑战字串。远程客户端使用MD5散列算法返回用户名和加密的挑战口令、会话ID及用户口令。

CHAP对PAP进行了改进,不再直接通过链路发送明文口令,而是使用挑战口令以散列算法对口令进行加密。因为服务器端存有客户的明文口令,所以服务器可以重复客户端进行的散列操作,并将结果与用户返回的口令进行对照。

CHAP为每一次验证任意生成一个挑战字串来防止受到攻击。在整个连接过程中,CHAP将不定时地随机向客户端重复发送挑战口令,从而避免非法入侵者冒充远程客户进行攻击。

CHAP优点:

  • 通过可变的挑战口令和随机地、重复地发挑战口令,CHAP防止重放攻击
  • 该认证方法依赖于认证者和对端共享的密钥,密钥不是通过链路发送的
  • 虽然该认证是单向的,但是在两个方向都进行CHAP协商,同一密钥可以很容易地实现交互认证
  • 由于CHAP可以用在许多不同的系统认证中,因此可以用用户名作为索引,以便在一张大型密钥表中查找正确的密钥。这样也可以在一个系统中支持多个用户名—密钥对,在会话中随时改变密钥。

CHAP在设计上的要求:

  • CHAP算法要求密钥长度必须至少是1字节,至少应该不易让人猜出,密钥最好至少是散列算法所选用的散列码的长度,如此可以保证密钥不易受到穷举搜索攻击。所选用的散列算法,必须保证从已知挑战口令和响应值来确定密钥在计算上是不可行的。
  • 每一个挑战口令应该是唯一的,否则在同一密钥下,重复挑战口令将使攻击者能够用以前截获的响应值应答挑战口令。由于希望同一密钥可以用于地理上分散的不同服务器的认证,因此挑战口令应该做到全局临时唯一。
  • 每一个挑战口令也应该是不可预计的,否则攻击者可以欺骗对方,让对方响应一个预计的挑战口令,然后用该响应冒充对端欺骗认证者。虽然CHAP不能防止实时地主动搭线窃听攻击,但是只要能产生不可预计的挑战口令就可以防范大多数的主动攻击。

EAP

EAP是一个用于PPP认证的通用协议,可以支持多种认证方法。EAP并不在链路控制阶段而是在认证阶段指定认证方法,这样认证方就可以在得到更多的信息以后再决定使用什么认证方法。这种机制还允许PPP认证方简单地把收到的认证信息传给后方的认证服务器,由后方的认证服务器来真正实现各种认证方法。

EAP的认证过程:在链路阶段完成以后,认证方向对端发送一个或多个请求报文。在请求报文中有一个类型字用来指明认证方所请求的信息类型,例如,可以是对端的ID、MD5的挑战口令、一次性密码及通用密码卡等。MD5的挑战口令对应于CHAP认证协议的挑战口令。典型情况下,认证方首先发送一个ID请求报文随后再发送其他的请求报文。对端对每一个请求报文响应一个应答报文。和请求报文一样,应答报文中也包含一个类型字段,对应于所回应的请求报文中的类型字段。认证方再通过发送一个成功或者失败的报文来结束认证过程。

优点:它可以支持多种认证机制,而不需要在建立连接阶段指定;某些设备,例如,网络接入服务器,不需要关心每一个请求信息的真正含义,而是作为一个代理把认证报文直接传给后端的认证服务器,设备只需关心认证结果是成功还是失败,然后结束认证阶段。

缺点:需要在LCP中增加一个新的认证协议,这样现有的PPP要想使用EAP就必须进行修改。同时,使用EAP也和现有的在LCP协商阶段指定认证方法的模型不一致。

参考

  • 数据链路层-点对点协议PPP

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【智能楼宇秘籍】一网关多协议无缝对接BACnet+OPC+MQTT

在繁华的都市中心,一座崭新的大型商业综合体拔地而起,集购物、餐饮、娱乐、办公于一体,是现代城市生活的缩影。然而,这座综合体的幕后英雄——一套高度集成的楼宇自动化系统,正是依靠多功能协议网关,实现了…

事业单位向媒体投稿发文章上级领导交给了我投稿方法

作为一名事业单位的普通职员,负责信息宣传工作,我见证了从传统投稿方式到智能化转型的全过程,这段旅程既是一次挑战,也是一次宝贵的成长。回想起初涉此领域的日子,那些通过邮箱投稿的时光,至今仍然历历在目,其中的酸甜苦辣,构成了我职业生涯中一段难忘的经历。 邮箱投稿:费时费…

添砖Java之路其二——基本数据类型,scanner,字符拼接。

目录 基本数据类型: ​编辑 Scanner: 字符拼接: 课后小题: 基本数据类型: 如图可见:Java里面有八种基本数据类型。 注意:在其中我们需要注意的是int默认整型数据,double是默认浮点型数据。因…

Python练习(函数)

目录 6-1 使用函数求素数和 函数接口定义: 裁判测试程序样例: 输入样例: 输出样例: 6-2 使用函数输出指定范围内Fibonacci数的个数 函数接口定义: 裁判测试程序样例: 输入样例: 输出样…

C语言----杨辉三角

各位看官们好。学习到这里想必大家应该对C语言的了解也是很深刻的了吧。但是我们也不能忘记我们一起学习的知识啊。在我们以前学习C语言的时候我想大家应该都听说过杨辉三角吧。虽然我们把其中的规律找到那么这个代码就简单很多了。那么接下里我们就来讲讲杨辉三角。 首先我们先…

Linux学习笔记1

1.背景认知 可能很多人还没有接触Linux,会有点畏惧,我们可以把Linux类比成Windows, 下面是Windows和Linux的启动对比 Windows:上电后一开始屏幕是黑黑的---bios在启动Windows----Windows之后找到c盘启动各种应用程序 Linux&am…

漏扫神器Invicti V2024.4.0专业版

前言 Invicti Professional是Invicti Security公司推出的一个产品,它是一种高级的网络安全扫描工具。Invicti Professional旨在帮助组织发现和修复其网络系统中的潜在安全漏洞和弱点。它提供了全面的漏洞扫描功能,包括Web应用程序和网络基础设施的漏洞扫…

OSI七层模型

ISO为了更好的使网络应用更为普及,推出了OSI参考模型。 (1)应用层 OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP&…

每日OJ题_记忆化搜索①_力扣509. 斐波那契数(四种解法)

目录 记忆化搜索概念和使用场景 力扣509. 斐波那契数 解析代码1_循环 解析代码2_暴搜递归 解析代码3_记忆化搜索 解析代码4_动态规划 记忆化搜索概念和使用场景 记忆化搜索是一种典型的空间换时间的思想,可以看成带备忘录的爆搜递归。 搜索的低效在于没有能够…

JRT失控处理打印和演示

基于JRT完备的脚本化和打印基础,基于JRT的业务可以轻松的实现想要的打效果,这次以质控图的失控处理打印和月报打印来分享基于JRT的打印业务实现。 演示视频链接 失控报告打印 失控处理打印的虚拟M import JRT.Core.DataGrid.GridDto; import JRT.Co…

redis分片java实践、redis哨兵机制实现、redis集群搭建

redis分片java实践 linux安装redishttps://mp.csdn.net/mp_blog/creation/editor/134864302复制redis.conf配置文件成redis1.conf、redis2.conf、redis3.conf 修改redis的端口信息和存pid文件的路径。存pid文件的路径只要不同就行了,没什么特别要求。 指定配置文件…

Redis(主从复制搭建)

文章目录 1.主从复制示意图2.搭建一主多从1.搭建规划三台机器(一主二从)2.将两台从Redis服务都按照同样的方式配置(可以理解为Redis初始化)1.安装Redis1.yum安装gcc2.查看gcc版本3.将redis6.2.6上传到/opt目录下4.进入/opt目录下然…

论文阅读】 ICCV-2021-3D Local Convolutional Neural Networks for Gait Recognition

motivation :现有方法方法无法准确定位身体部位,不同的身体部位可以出现在同一个条纹(如手臂和躯干),一个部分可以出现在不同帧(如手)的不同条纹上。其次,不同的身体部位具有不同的尺度,即使是不同帧中的同一部分也可以出现在不同…

Web前端三大主流框架是什么?

Web前端开发领域的三大主流框架分别是Angular、React和Vue.js。它们在Web开发领域中占据着重要的地位,各自拥有独特的特点和优势。 Angular Angular是一个由Google开发的前端框架,最初版本称为AngularJS,后来升级为Angular。它是一个完整的…

Apple强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片潜力

Apple 的最新强大功能:在新款 iPad Pro 和 iPad Air 中释放 M4 芯片的潜力 概述 Apple 推出配备强大 M4 芯片的最新 iPad Pro 和 iPad Air 型号,再次突破创新界限。新一代 iPad 有望彻底改变我们的工作、创造和娱乐方式。凭借无与伦比的处理能力、令人惊…

【Kolmogorov-Arnold网络 替代多层感知机MLPs】KAN: Kolmogorov-Arnold Networks

KAN: Kolmogorov-Arnold Networks 论文地址 代码地址 知乎上的讨论(看一下评论区更正) Abstract Inspired by the Kolmogorov-Arnold representation theorem, we propose Kolmogorov-Arnold Networks (KANs) as promising alternatives to Multi-Layer…

区块链 | NFT 相关论文:Preventing Content Cloning in NFT Collections(三)

🐶原文: Preventing Content Cloning in NFT Collections 🐶写在前面: 这是一篇 2023 年的 CCF-C 类,本博客只记录其中提出的方法。 F C o l l N F T \mathbf{F_{CollNFT}} FCollNFT​ and Blockchains with Native S…

损失函数详解

1.损失函数 是一种衡量模型与数据吻合程度的算法。损失函数测量实际测量值和预测值之间差距的一种方式。损失函数的值越高预测就越错误,损失函数值越低则预测越接近真实值。对每个单独的观测(数据点)计算损失函数。将所有损失函数(loss function&#xf…

树莓派4b测量PM2.5

1.GP2Y1010AU0F粉尘传感器连接图 2. GP2Y1010AU0F工作原理 工作原理 传感器中心有个洞可以让空气自由流过,定向发射LED光,通过检测经过空气中灰尘折射过后的光线来判断灰尘的含量。 3.源代码 main.py # coding=UTF-8 import RPi.GPIO as GPIO from ADC import ADS1015…

神经网络案例实战

🔎我们通过一个案例详细使用PyTorch实战 ,案例背景:你创办了一家手机公司,不知道如何估算手机产品的价格。为了解决这个问题,收集了多家公司的手机销售数据:这些数据维度可以包括RAM、存储容量、屏幕尺寸、…