打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
PPP(Point-to-Point Protocol)协议

概念

PPP(Point-to-Point Protocol)协议是一种点到点链路层协议,主要用于在全双工的同异步链路上进行点到点的数据传输。

目的

PPP协议是在串行线IP协议SLIP(Serial Line Internet Protocol)的基础上发展起来的。由于SLIP协议具有只支持异步传输方式、无协商过程(尤其不能协商如双方IP地址等网络层属性)、只能承载IP一种网络层报文等缺陷,在发展过程中,逐步被PPP协议所替代。

PPP协议有如下优点:

  • 对物理层而言,PPP既支持同步链路又支持异步链路,SLIP仅支持异步链路。
  • PPP协议具有良好的扩展性,例如,当需要在以太网链路上承载PPP协议时,PPP可以扩展为PPPoE。
  • 提供LCP(Link Control Protocol)协议,用于各种链路层参数的协商。
  • 提供各种NCP(Network Control Protocol)协议(如IPCP、IPXCP),用于各网络层参数的协商,更好地支持了网络层协议。
  • 提供认证协议CHAP(Challenge-Handshake Authentication Protocol)、PAP(Password Authentication Protocol),更好的保证了网络的安全性。
  • 无重传机制,网络开销小,速度快。

PPP报文格式

PPP的基本构架

PPP协议处于TCP/IP协议栈的数据链路层,主要用在支持全双工的同异步链路上,进行点到点之间的数据传输。

图1:PPP在协议栈中的位置

PPP主要由三类协议族组成:

  • 链路控制协议族(Link Control Protocol),主要用来建立、拆除和监控PPP数据链路。
  • 网络层控制协议族(Network Control Protocol),主要用来协商在该数据链路上所传输的数据包的格式与类型。
  • 扩展协议族CHAP(Challenge-Handshake Authentication Protocol)和PAP(Password Authentication Protocol),主要用于网络安全方面的验证。

PPP报文封装的帧格式

图2:PPP报文封装格式

各字段的含义如下:

  • Flag域
  • Flag域标识一个物理帧的起始和结束,该字节为0x7E。
  • Address域
  • Address域可以唯一标识对端。PPP协议是被运用在点对点的链路上,因此,使用PPP协议互连的两个通信设备无须知道对方的数据链路层地址。按照协议的规定将该字节填充为全1的广播地址,对于PPP协议来说,该字段无实际意义。
  • Control域
  • 该字段默认值为0x03,表明为无序号帧,PPP默认没有采用序列号和确认应答来实现可靠传输。
  • Address和Control域一起标识此报文为PPP报文,即PPP报文头为FF03。
  • Protocol域
  • Protocol域可用来区分PPP数据帧中信息域所承载的数据包类型。
  • Protocol域的内容必须依据ISO 3309的地址扩展机制所给出的规定。该机制规定协议域所填充的内容必须为奇数,也就是要求最低有效字节的最低有效位为“1”。
  • 如果当发送端发送的PPP数据帧的协议域字段不符合上述规定,接收端则会认为此数据帧是不可识别的。接收端向发送端发送一个Protocol-Reject报文,在该报文尾部将填充被拒绝报文的协议号。

图3:常见的协议代码

  • Information域
  • Information域最大长度是1500字节,其中包括填充域的内容。Information域的最大长度称为最大接收单元MRU(Maximum Receive Unit)。MRU的缺省值为1500字节,在实际应用当中可根据实际需要进行MRU的协商。
  • 如果Information域长度不足,可被填充,但不是必须的。如果填充则需通信双方的两端能辨认出填充信息和真正需要传送的信息,方可正常通信。
  • FCS域
  • FCS域的功能主要对PPP数据帧传输的正确性进行检测。
  • 在数据帧中引入了一些传输的保证机制,会引入更多的开销,这样可能会增加应用层交互的延迟。

LCP报文封装的帧格式

图4:LCP报文封装格式

在链路建立阶段,PPP协议通过LCP报文进行链路的建立和协商。此时LCP报文作为PPP的净载荷被封装在PPP数据帧的Information域中,PPP数据帧的协议域的值固定填充0xC021。

在链路建立阶段的整个过程中信息域的内容是变化的,它包括很多种类型的报文,所以这些报文也要通过相应的字段来区分。

  • Code域
  • Code域的长度为一个字节,主要是用来标识LCP数据报文的类型。
  • 在链路建立阶段,接收方接收到LCP数据报文。当其Code域的值无效时,就会向对端发送一个LCP的代码拒绝报文(Code-Reject报文)。

图5:常见code值

  • Identifier域
  • Identifier域为1个字节,用来匹配请求和响应,当Identifier域值为非法时,该报文将被丢弃。
  • 通常一个配置请求报文的ID是从0x01开始逐步加1的。当对端接收到该配置请求报文后,无论使用何种报文回应对方,但必须要求回应报文中的ID要与接收报文中的ID一致。
  • Length域
  • Length域的值就是该LCP报文的总字节数据。它是Code域、Identifier域、Length域和Data域四个域长度的总和。
  • Length域所指示字节数之外的字节将被当作填充字节而忽略掉,而且该域的内容不能超过MRU的值。
  • Data域
  • Data域所包含的是协商报文的内容,这个内容包含以下字段。
    • Type为协商选项类型。
    • Length为协商选项长度,它是指Data域的总长度,也就是包含Type、Length和Data。
    • Data为协商选项的详细信息。

图6:常见Type中的协商类型值

PPP的建立连接过程

下图是PPP协议整个链路过程需经历阶段的状态转移图:

图7:PPP链路建立过程

PPP运行的过程简单描述如下:

  1. 通信双方开始建立PPP链路时,先进入到Establish阶段。
  2. 在Establish阶段,PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU(Maximum Receive Unit)、验证方式和魔术字(magic number)等选项。LCP协商成功后进入Opened状态,表示底层链路已经建立。
  3. 如果配置了验证,将进入Authenticate阶段,开始CHAP或PAP验证。如果没有配置验证,则直接进入Network阶段。
  4. 在Authenticate阶段,如果验证失败,进入Terminate阶段,拆除链路,LCP状态转为Down。如果验证成功,进入Network阶段,此时LCP状态仍为Opened。
  5. 在Network阶段,PPP链路进行NCP协商。通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。只有相应的网络层协议协商成功后,该网络层协议才可以通过这条PPP链路发送报文。NCP协商包括IPCP(IP Control Protocol)、MPLSCP(MPLS Control Protocol)等协商。IPCP协商内容主要包括双方的IP地址。
  6. NCP协商成功后,PPP链路将一直保持通信。PPP运行过程中,可以随时中断连接,物理链路断开、认证失败、超时定时器时间到、管理员通过配置关闭连接等动作都可能导致链路进入Terminate阶段。
  7. 在Terminate阶段,如果所有的资源都被释放,通信双方将回到Dead阶段,直到通信双方重新建立PPP连接,开始新的PPP链路建立。

下面具体介绍PPP协商阶段。

Dead阶段(链路不可用阶段)

Dead阶段也称为物理层不可用阶段。PPP链路都需从这个阶段开始和结束。

当通信双方的两端检测到物理线路激活(通常是检测到链路上有载波信号)时,就会从Dead阶段跃迁至Establish阶段,即链路建立阶段。

链路被断开后也同样会返回到链路不可用阶段。

Establish阶段(链路建立阶段)

在Establish阶段,PPP链路进行LCP协商。协商内容包括工作方式是SP(Single-link PPP)还是MP(Multilink PPP)、最大接收单元MRU、验证方式和魔术字(magic number)等选项。当完成配置报文的交换后,则会继续向下一个阶段跃迁。

在链路建立阶段,LCP的状态机会发生如下改变。

  • 当链路处于不可用阶段时,此时LCP的状态机处于初始化Initial状态或准备启动Starting状态。当检测到链路可用时,则物理层会向链路层发送一个Up事件。链路层收到该事件后,会将LCP的状态机从当前状态改变为Request-Sent(请求发送)状态,根据此时的状态机LCP会进行相应的动作,也就是开始发送Configure-Request报文来配置数据链路。
  • 如果本端设备先收到Configure-Ack报文,则LCP的状态机从Request-Sent状态改变为Ack-Received状态,本端向对端发送Configure-Ack报文以后,LCP的状态机从Ack-Received状态改变为Opened状态。
  • 如果本端设备先向对端发送Configure-Ack报文,则LCP的状态机从Request-Sent状态改变为Ack-Sent状态,本端收到对端发送的Configure-Ack报文以后,LCP的状态机从Ack-Sent状态改变为Opened状态。
  • LCP状态机变为Open状态以后就完成当前阶段的协商,并向下一个阶段跃迁。

下一个阶段既可能是验证阶段,也可能是网络层协商阶段。下一阶段的选择是依据链路两端的设备配置的,通常由用户来配置。

Authenticate阶段(验证阶段)

缺省情况下,PPP链路不进行验证。如果要求验证,在链路建立阶段必须指定验证协议。

PPP验证主要是用于主机和设备之间,通过PPP网络服务器交换电路或拨号接入连接的链路,偶尔也用于专用线路。

PPP提供密码验证协议PAP(Password Authentication Protocol)和质询握手验证协议CHAP(Challenge-Handshake Authentication Protocol)两种验证方式。

单向验证是指一端作为验证方,另一端作为被验证方。双向验证是单向验证的简单叠加,即两端都是既作为验证方又作为被验证方。在实际应用中一般只采用单向验证。

PAP验证过程

PAP验证协议为两次握手验证,口令为明文。

PAP验证的过程如图所示。

图8:PAP认证过程

  • 被验证方把本地用户名和口令发送到验证方。
  • 验证方根据本地用户表查看是否有被验证方的用户名若有,则查看口令是否正确,若口令正确,则认证通过;若口令不正确,则认证失败。若没有,则认证失败。

CHAP验证过程

CHAP验证协议为三次握手验证协议。它只在网络上传输用户名,而并不传输用户密码,因此安全性要比PAP高。

CHAP的验证过程如图所示。

图9:CHAP的验证过程

CHAP单向验证过程分为两种情况:验证方配置了用户名和验证方没有配置用户名。推荐使用验证方配置用户名的方式,这样可以对验证方的用户名进行确认。

  • 验证方配置了用户名的验证过程
    • 验证方主动发起验证请求,验证方向被验证方发送Challenge报文,报文中包含随机数和ID字段,并同时将本端的用户名附带上一起发送给被验证方。
    • 被验证方接到验证方的验证请求后,先检查本端接口上是否配置了ppp chap password命令,如果配置了该命令,则被验证方用报文ID、命令中配置的用户密码和随机数进行HASH/MD5运算,将生产的HASH值和自己的用户名发回验证方(Response)。如果接口上未配置ppp chap password命令,则根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,用报文ID、此用户的密钥(密码)和随机数进行HASH/MD5运算,将生产的HASH值和自己的用户名发回验证方(Response)。
  • 验证方没有配置用户名的验证过程
    • 验证方主动发起验证请求,验证方向被验证方发送Challenge报文,报文中包含随机数和ID字段。
    • 被验证方接到验证方的验证请求后,利用报文ID、ppp chap password命令配置的CHAP密码和随机数进行HASH/MD5运算,将生产的HASH值和自己的用户名发回验证方(Response)。

CHAP与PAP验证过程对比

  • PAP认证中,口令以明文方式在链路上发送,完成PPP链路建立后,被验证方会不停地在链路上反复发送用户名和口令,直到身份验证过程结束,所以安全性不高。当实际应用过程中,对安全性要求不高时,可以采用PAP认证建立PPP连接。
  • CHAP认证中,验证协议为三次握手验证协议。它只在网络上传输用户名,而并不传输用户密码,因此安全性比PAP认证高。当实际应用过程中,对安全性要求较高时,可以采用CHAP认证建立PPP连接。

Network阶段(网络层协商阶段)

PPP完成了前面几个阶段,通过NCP协商来选择和配置一个网络层协议并进行网络层参数协商。每个NCP协议可在任何时间打开和关闭,当一个NCP的状态机变成Opened状态时,则PPP就可以开始在链路上承载网络层数据传输。

Terminate阶段(网络终止阶段)

PPP能在任何时候终止链路。当载波丢失、认证失败或管理员人为关闭链路等情况均会导致链路终止。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
PPP协议
PAP和CHAP的配置与实现应用实例
【网工干货】PPP协议与认证(PAP、CHAP)......
PPP协议的5种模式
什么是PPP?PPP的认证方式又有哪些?
PPP和PPPoE的工作原理
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服