1. 发展:
SLIP(Serial Line Internet Protocol)协议,人们不仅可以通过在计算机上安装该协议实现浏览Internet的梦想,而且还可以互连许多网络设备(如路由器与路由器的互连、路由器与主机的互连和主机与主机的互连)。
日益增长的网络需求,如何在串行点对点的链路上封装IPX、AppleTalk等网络层的协议呢?
2.简介
PPP(Point to Point Protocol, PPP)提供了一种在点对点的链路上封装多协议数据报(IP、IPX和AppleTalk)的标准方法。
它不仅能支持IP地址的动态分配和管理;
同步(面向位的同步数据块的传送)或异步(起始位+数据位+奇偶校验位+停止位元)物理层的传输;
网络层协议的复用;
链路的配置、质量检测和纠错;
而且还支持多种配置参数选项的协商。
主要包括三个部分:
通过串行链路封装数据包的方法;
用于建立、配置和测试数据连接的链路控制协议(LCP);
用于配置不同网络层协议的网络控制协议簇(NCPS)。
3.封装格式
标志域(F):
标志域为一个字节,表示数据帧的开始或结束。标志序列为16 进制 7E。它是数据
帧间隔,两个数据帧之间只要一个标志即可,两个连续的标志表示一个空数据帧。
地址域(A):
地址域为一个内容为 16 进制 FF 的字节,该地址为广播地址,所有的终端都必须接
受并使用该地址,使用其它地址的数据帧应该被忽略。
控制域(C) :
控制域为一个字节,内容为16 进制 0x03,对于包含其它内容的数据帧应该忽略。
协议域:
0021: IP
8021: IP 控制协议
C021: 连接控制协议
C023: 密码鉴权协议 PAP
C223: 握手挑战鉴权协议
信息域:
信息域的长度是可变的,其中的内容是按协议域指定的协议封装的用户数据,信息
域的最大长度默认是1500 字节,在经过双方协商后,可以更改为其它值。
校验域 (Frame Check Sequence, FCS):
2个字节,它计算的是在没有插入任何转义符号前的地址域、控制域、协议域、信息域内的数据,不包括标志域和校验域。在发送数据时,依次计算上述内容,然后将计算后的结果放入校验域;在接收时,首先去除转义字符,然后再计算校验。在接收中计算校验时可以将校验域也计算在内,计算的结果应该是固定值 F0B8(16进制)。
4.其他补充协议
LCP协议:
为了能适应复杂多变的网络环境,PPP协议提供了一种链路控制协议来配置和测试
数据通信链路,它能用来协商PPP协议的一些配置参数选项;处理不同大小的数据帧;检测链路环路、一些链路的错误;终止一条链路。
NCP协议:
PPP的网络控制协议根据不同的网络层协议可提供一族网络控制协议,常用的有提
供给TCP/IP网络使用的IPCP网络控制协议和提供给SPX/IPX网络使用的IPXCP网络控制协议等,但最为常用的是IPCP协议,当点对点的两端进行NCP参数配置协商时,主要是用来通信双方的网络层地址。
5.PPP链路建立:
a PPP协议建立点对点的通信,双端设备需发送LCP数据报文来配置链路(测试链路)。
b 双方根据LCP配置请求报文中所协商的认证配置参数选项(信息包括:通信过程中的数据包的最大长度、异步通信中的控制字符映像、协议和地址控制域压缩、鉴权协议以及链路检测协议等。)来决定链路两端设备所采用的认证方式。目前,PPP 中支持的鉴权协议包括密码鉴权协议(PAP)和挑战握手协议(CHAP)。
(LCP协议缺省,点对点通信双方不认证)
c 网络层协商,NCP配置参数选项。
d 几个配置过程全部完成后,双方就可以开始通过已建立好的链路进行网络层数据报文的传送,链路处于可用状态。
e 当任何一端收到LCP或NCP的链路关闭报文时(NCP协议无关闭链路能力要求),故关闭过程:
在LCP协商阶段或应用程序会话阶段发出;
物理层无法检测到载波或管理人员对该链路进行关闭操作,都会将该条链路断开,
最终,终止PPP会话。
6.关于LCP 协商
PPP 数据帧的协议域固定填充 0xC021,不同信息域内容通过不同协议域字段加以区分。
代码域用来决定数据包的类型;
标识域用来确定发送和请求资料包是否匹配;
长度域表示资料包的长度,包括代码域、标识域、长度域和数据域。
链路配置报文主要包括Config-Request 、Config-Ack 、Config-Nak 和Config-Reject四种:
7.关于鉴权协商
1、PAP-密码鉴权协议,
通过双向握手,在LCP链路建立后,被鉴权者将身份和密(明文,非绝对安全)发送给鉴权者,然后等待对方的确认信息。
鉴权请求报文(Authenticate-Request) ,启动密码认证协议,将本地的身份标识和密码发送给对方,并等待对方应答。多次重复直到接收到对方的应答信息。
鉴权确认/鉴权否认报文(Authenticate-ACK/Authenticate-NAK) ,若接收到的鉴权请求数据帧中的用户标识和密码都合法,那么通信终端将使用鉴权确认数据帧进行确认,以通知对方已经通过了身份验证;如果接收到的信息不合法,则使用鉴权否认数据帧通知对方。在鉴权确认数据帧的数据域中可以包含一些用于显示的信息。
2、CHAP-挑战握手鉴权协议,
三次握手协议,更具有安全性。(它只在网络上传送用户名而不传送口令,因此安全性比PAP高。)首先,鉴权过程中使用不断变化的挑战信息和身份标识,这使得攻击者很难有机会进行破解;其次,鉴权由鉴权者控制,它可以随时对对方进行身份确认。使用CHAP时,必须配合一种链表算法,目前与CHAP配合使用的算法是MD5算法。在PPP中使用CHAP必须在LCP协商时配置相应的鉴权算法给到CHAP
挑战和应答数据帧,
用来启动CHAP。鉴权者在LCP协商后主动发送挑战信息来验证用户身份。对方在接收到挑战信息后用单向链表算法进行计算,然后将计算后的结果用应答数据帧进行应答。代码1表示挑战,代码2表示应答。
成功和失败数据帧,
如果接收到的应答信息是正确的,那么主机使用成功数据包进行应答;反之,主机发送失败数据包并终止连接。代码3表示成功,代码4表示失败。
8.网络层NCP协商
该协议的数据报文是在网络层协议阶段被交换的,在这个阶段所需的一些配置参数选项协商完后,就可以点对点地进行网络层的通信。NCP协议主要包括IPCP(常见)、IPXCP等。
以IPCP数据帧为例:
IPCP配置选项:
IPCP协商过程:
9.模块侧ip获取过程
模块初始化:
SIM卡良好状态检测、SIM卡网络检测、配置对应网络制式的PDP格式及发送拨号指令。
获取PPP报文
发送PPP报文请求
解析PPP报文,并进行组帧回馈
LCP报文协商:
捕获收到的PPP报文,依据协议类型,编码类型,ID编号,信息长度,配置选项等进行分析后,对捕获到的PPP报文包进行回复。例如: C0 21 7D 22 7D 21
IPCP协商
IPCP协商需要由Module方主动发起。否则,PPP将停留在LCP建立状态。