了解PPP状态,掌握PPP协议


在我们学习网络协议的过程中,定听说过点对点协议,也就是PPP协议。那么这个协议有什么特点呢?这里我们就来了解一下PPP协议以及PPP状态。PPP是一种数据链路层协议,遵循HDLC高级数据链路控制协议)族的一般报文格式。

PPP是为了在点对点物理链路(例如RS232串口链路、电话ISDN线路等)上传输OSI模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP是现在最流行的点对点链路控制协议.

了解PPP状态,掌握PPP协议

上图中PPP的flag字段恒为0×7f,地址(adress)字段恒为0xff,控制(control)字段恒为0×03.协议protocol)字段表示PPP报文中封装的payloaddata字段)的类型,如果为0×0021,则表示PPP封装的IP报文,0×002B表示IPX报文,0×0029表示AppleTalk报文,这几种都属于PPP的数据报文;如果为0×8021则表示PPP的LCP报文用来协商连接),如果为0xC021则属于PPP的NCP报文用来协商封装的三层协议),这些属于PPP的控制报文.

PPP协议状态机如下图所示:

了解PPP状态,掌握PPP协议

在上图的链接建立阶段建立),PPP使用LCP报文来协商连接一种发送配置请求,然后接收响应的简单"握手"过程,不做过多介绍,感兴趣可以去细读RFC1661),协商中双方获得当前点对点连接的状态配置等,之后的"鉴别"阶段使用哪种鉴别方式也在这个协商中确定下来.

鉴别阶段是可选的,如果链接协商阶段并没有设置鉴别方式,则将忽略本阶段直接进入"网络"阶段.鉴别阶段使用链接协商阶段确定下来的鉴别方式来为连接授权,以起到保证点对点连接安全,防止非法终端接入点对点链路的功能.常用的鉴别认证方式有CHAP和PAP方式.

了解PPP状态,掌握PPP协议

CHAP方式的原理是由一端定期发起挑战"challenge",收到"challenge"的一端将收到的"challenge"报文中的密钥使用之前双发协商好的一种算法加密后再把结果发回发起端,这种算法应该是结果唯一不同输入必得到不同输出)且不可逆由输出无法得到输入)的,发起端也使用该算法计算后验证结果是否正确来为对端授权认证.一个常用的方案实例是:发起端发送随机长度及内容的字符串加上自己的用户名作为"密钥"发送出来,接受到"challenge"的一方将收到的字符串和与对方用户名相对应的本端用户的密码使用MD5算法计算后发回,然后发起端将收到的计算结果和本端MD5计算该随机字符串加自己密码的结果相对照,如果双发一致,则认证成功.

另一种认证方式PAP方式相比就简单很多,直接由被验证方将自己的用户名和密码明文方式发送给对端,由对端对用户名和密码验证来决定是否认证成功.所以,比较而言,CHAP是一种相对更安全一些的验证方式.

需要注意的是,PPP两端双方向的鉴权方式可以不同,即A端为B端鉴权时使用PAP方式B发送自己的用户名和密码给请A认证),而同时B端使用CHAP方式为A端鉴权B向A发起CHAP挑战),是完全可以的.

如果鉴别阶段成功,则PPP状态机进入"网络"阶段.这个阶段主要是使用NCP报文来协商将PPP封装怎样的网络层的问题.NCP报文及协商流程和LCP极为相似,就不过多介绍了.

经过网络阶段后,PPP状态机进入OPEN打开状态,在这个状态下,PPP链路上的三层数据报文即可正常通信了.

相关内容