PPP 协议简介
一、
PPP 主要由三类协议族组成:
链路控制协议族(LCP):主要用来建立、拆除和监控PPP数据链路。
网络层控制协议族(NCP): 主要用来协商在该数据链路上所传输的数据包的格式与类型。
扩展协议族CHAP和PAP: 主要用于网络安全方面的验证,验证对端设备的合法性。
简述PPP 链路的状态机
1、Dead阶段(链路不可用阶段)
Dead阶段也称为物理层不可用阶段。
当通信双方的两端检测到物理线路激活(通常是检测到链路上有载波信号)时,就会从Dead阶段跃迁至Establish阶段,即链路建立阶段。
链路被断开后也同样会返回到链路不可用阶段。
2、Establish阶段(链路建立阶段)
接口UP之后,就会进入Establish状态,在Establish状态,会进行LCP协商,主要协商的内容有以下几点:
a.工作方式:SP/MP;协商使用单链路工作方式还是多链路工作方式;
b.接口最大接收单元:MRU;(两端不一致,则向小的协商);
c.魔术字:魔术字主要用于PPP链路上检查环路,主要用于检查物理链路的环路,比如光纤打环测试的时候,就会出现发送的LCP报文中的魔术字和接收到的LCP报文的魔术字相同的情况;如果相同则会重新选取魔术字;
d.认证方式。
下一个阶段既可能是验证阶段,也可能是网络层协议阶段。下一阶段的选择是依据链路两端的设备配置的,通常由用户来配置。
备注:MRU和MTU的区别:
MTU:最大传输单元
MRU:最大接收单元
接口的MRU=MTU
3、Authenticate阶段(验证阶段)
LCP协商通过则进入Authentication阶段,可选阶段,,进行PAP或者CHAP的认证;
4、Network阶段(网络层协商阶段)
认证通过则进入Network阶段;Network协商不通过也不会进入Terminate阶段,因为这样的话,配置了相应的IP地址之后,就可以直接发送业务,不需要重新建立链路后,再进行NCP协商。
5、Terminate阶段(网络终止阶段)
认证不通过则进入Terminate阶段,也就是拆链阶段;
详细讲解PPP 链路建立的过程
PPP链路建立过程分为三个阶段:
LCP协商阶段、认证阶段(可选)、NCP协商阶段;
1、LCP协商阶段:
协商的参数:工作方式MP/SP(两端不一致则使用SP)、魔术字(用于防止物理环路)MRU(会向小的协商)、认证方式;
当链路UP后,开始LCP协商。Client发送配置请求(Configuration Request)消息,里面携带参数(MRU,认证类型、魔术字),假设Server协商通过,回复确认消息(ACK)。假设Server协商不通过,回复NAK或者Reject消息。Client收到NAK或者Reject消息后,再次发送使用了新协商参数的Configuration Request消息(Configuration Request最多发送10次)。同理,Server也会向Client进行类似的过程。最终,如果双方协商成功,则进入下一个协商阶段,如果协商不成功则PPP链路无法建立
2、认证阶段:
PAP:
被验证方把本地用户名和口令以明文的形式发送到验证方验证方根据本地用户表查看是否有被验证方的用户名若没有,则认证失败;
若有,则查看口令是否正确,若口令正确,则认证通过;若口令不正确,则认证失败。
CHAP:
认证端接口配置用户名的情况下,被认证端接口用户名一定要配,密码可配可不配;认证端的接口下没有配置用户名的情况下,被认证端的接口下用户名一定要配,此时密码也必须配置。否则认证过程失败。
1.验证方配置用户名的验证过程
a)验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge),并同时将本端的用户名附带上一起发送给被验证方(挑战报文里面包含一个随机数和ID)
b)被验证方接到验证方的验证请求后,先检查本端接口上是否配置了PPP CHAP Password命令,如果配置了该命令,则被验证方用报文ID、随机数,命令中配置的用户密码和MD5算法对该随机报文进行加密,将生成的密文和接口的用户名发回验证方(Response)。
如果接口上未配置PPP CHAP Password命令,则根据此报文中验证方的用户名在本端的用户表查找该用户对应的密码,用报文ID、随机数,此用户的密钥(密码)和MD5算法对该随机报文进行加密,将生成的密文和被验证方自己的用户名发回验证方(Response)
c)验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,若比较结果一致,认证通过,若比较结果不一致,认证失败
2.验证方没有配置用户名的验证过程
a)验证方主动发起验证请求,验证方向被验证方发送一些随机产生的报文(Challenge)
b)被验证方接到验证方的验证请求后,利用报文ID、随机数,PPP CHAP Password命令配置的CHAP密码和MD5算法对该随机报文进行加密,将生成的密文和接口的用户名发回验证方(Response)
c)验证方用自己保存的被验证方密码和MD5算法对原随机报文加密,比较二者的密文,若比较结果一致,认证通过,若比较结果不一致,认证失败
3、NCP协商阶段:
a.静态IPCP协商:
R1会向R2发送Configure-Request报文,报文中携带自己接口的IP地址10.0.0.1。R2收到R1发送的配置请求报文后,进行相应的检查,先看IP地址是否冲突,如果不冲突,检查对方的IP地址是否为合法的单播IP地址(不为0.0.0.0),如果是合法单播IP地址,为对方的接口IP地址生成一个32位的主机路由。
b.动态IPCP协商:
R1会向R2发送配置请求报文,报文中携带的IP地址为0.0.0.0,R2收到对端的配置请求报文后,发现对端IP地址为0.0.0.0,于是回复一个Configure-NAK报文,并且从全局地址池中选出的一个IP地址(10.0.0.254),通过Configure-NAK报文发送给到R1。
R1收到Configure-NAK报文后,将报文中的IP地址作为自己接口的IP地址使用,并回复Configure-Request报文,报文中携带的IP地址为10.0.0.254。
R2收到报文检查通过,生成一个10.0.0.254/32的主机路由,回复Configure-ACK报文。
链路监控阶段:
使用LCP协议的Echo-Request报文(10S/次)和echo-reply报文;
链路拆除阶段:
使用LCP协议的Terminate-Request报文(3s重传,只发送2次)和Terminate-reply报文;