PPPPPP 是一种数据链路层协议,遵循HDLC(高级数据链路控制协议)族的一般报文格式
PPP 是为了在点对点物理链路(例如RS232 串口链路、电话ISDN 线路等)上传输OSI 模型中的网络层报文而设计的,它改进了之前的一个点对点协议–SLIP 协议–只能同时运行一个网络协议、无容错控制、无授权等许多缺陷,PPP 是现在最流行的点对点链路控制协议
上图中PPP 的flag 字段恒为0×7f,地址(adress)字段恒为0xff,控制(control)字段恒为0×03
协议(protocol)字段表示 PPP 报文中封装的payload(data 字段)的类型,如果为0×0021,则表示 PPP 封装的IP 报文,0×002B 表示 IPX 报文,0×0029 表示 AppleTalk 报文,这几种都属于 PPP 的数据报文;如果为0×8021则表示PPP的LCP报文(用来协商连 接),如果为0xC021则属于 PPP 的NCP 报文(用来协商封装的三层协议),这些属于 PPP的控制报文
PPP 协议状态机如下图所示:在上图的链接建立阶段(建立),PPP 使用 LCP 报文来协商连接(一种发送配置请求,然后接收响应的简单“握手”过程,不做过多介绍,感兴趣可以去细读RFC1661),协商中双方获得当前点对点连接的状态配置等,之后的“鉴别”阶段使用哪种鉴别方式也在这个协商中确定下来
鉴别阶段是可选的,如果链接协商阶段并没有设置鉴别方式,则将忽略本阶段直接进入“网络”阶段
鉴别阶段使用链接协商阶段确定下来的鉴别方式来为连接授权,以起到保证点对点连接安全,防止非法终端接入点对点链路的功能
常用的鉴别认证方式有 CHAP 和 PAP 方式
CHAP 方式的原理是由一端定期发起挑战“challenge”,收到“challenge”的一端将收到的“challenge”报文中的密钥使用