用户接入Internet,在传送数据时都需要有数据链路层协议,其中最为广泛的是串行 线路网际协议(SLIP)和点对点协议(PPP)。由于SLIP具有仅支持IP等缺点,主要用于低速(不超过19.2kbit/s)的交互性业务,它并未成为Internet的标准协议。为了改进SLIP,人们制订了点对点PPP(Point-to-Point Protocol)。RFC1661、RFC1662、RFC1663。
PPP三大成就:
1.明确地划分出一帧的尾部和下一帧的头部的成帧方式。这种帧格式也处理错误检测工作。
2.当线路不再需要时,挑出这些线路,测试它们,商议选择,并仔细地再次释放链路控制协议。这个协议被称为链路控制协议LCP(link control protocol)。
3.用独立于所使用的网络层协议的方法来商议使用网络层的哪些选项。对于每个所支持的网络层来说,所选择的方法有不同的网络控制协议NCP(network control protocol)。
PPP帧不仅能通过拨号电话线发送出去,而且还能通过SONET或真正面向位的HDLC线路(即路由器与路由器相连)发送出去。
一、PPP协议组成
PPP协议有三个组成部分:
(1)一个将IP数据报封到串行链路的方法。PPP既支持异步链路(无奇偶校验的8比特数据),也支持面向比特的同步链路。
(2)一个用来建立、配置和测试数据链路的链路控制协议LCP(Link Control Protocol)。通信的双方可协商一些选项。在[RFC 1661]中定义了11种类型的LCP分组。
(3)一套网络控制协议NCP(Network Control Protocol),支持不同的网络层协议,如IP、OSI的网络层、DECnet、AppleTalk等。
二、PPP帧格式
PPP帧格式和HDLC帧格式相似,如图1所示。二者主要区别:PPP是面向字符的,而HDLC是面向位的。
图1 PPP帧格式
可以看出,PPP帧的前3个字段和最后两个字段与HDLC的格式是一样的。标志字段F为0x7E(0x表示7E),但地址字段A和控制字段C都是固定不变的,分别为0xFF、0x03。PPP协议不是面向比特的,因而所有的PPP帧长度都是整数个字节。
与HDLC不同的是多了2个字节的协议字段。协议字段不同,后面的信息字段类型就不同。如:
0x0021——信息字段是IP数据报
0xC021——信息字段是链路控制数据LCP
0x8021——信息字段是网络控制数据NCP
0xC023——信息字段是安全性认证PAP
0xC025——信息字段是LQR
0xC223——信息字段是安全性认证CHAP
当信息字段中出现和标志字段一样的比特0x7E时,就必须采取一些措施。因PPP协议是面向字符型的,所以它不能采用HDLC所使用的零比特插入法,而是使用一种特殊的字符填充。具体的做法是将信息字段中出现的每一个0x7E字节转变成2字节序列(0x7D,0x5E)。若信息字段中出现一个0x7D的字节,则将其转变成2字节序列(0x7D,0x5D)。若信息字段中出现ASCII码的控制字符,则在该字符前面要加入一个0x7D字节。这样做的目的是防止这些表面上的ASCII码控制字符被错误地解释为控制字符。
三、PPP链路工作过程
当用户拨号接入ISP时,路由器的调制解调器对拨号做出应答,并建立一条物理连接。这时PC机向路由器发送一系列的LCP分组(封装成多个PPP帧)。这些分组及其响应选择了将要使用的一些PPP参数,接着就进行网络层培植,NCP给新接入的PC机分配一个临时的IP地址,这样PC机就成为Internet上一个主机了。
当用户通信完毕时,NCP释放网络层连接,收回原来分配出去的IP地址。接着LCP释放数据链路层连接,最后释放的是物理层的连接。
上述过程可用图2来描述。
图2 PPP协议过程状态图
当线路处于静止状态时,并不存在物理层的连接。当检测到调制解调器的载波信号,并建立物理层连接后,线路就进入建立状态,这时LCP开始协商一些选项。协商结束后就进入鉴别状态。若通信的双方鉴别身份成功,则进入网络状态。NCP配置网络蹭,分配IP地址,然后就进入可进行数据通信的打开状态。数据传输结束后就转到终止状态。载波停止后则回到静止状态。
四、举例
路由器Router1和Router2的S0口均封装PPP协议,采用CHAP做认证,在Router1中应建立一个用户,以对端路由器主机名作为用户名,即用户名应为router2。同时在Router2中应建立一个用户,以对端路由器主机名作为用户名,即用户名应为router1。所建的这两用户的password必须相同。
设置如下:
Router1:
hostname router1
username router2 password xxx
interface Serial0
ip address 192.200.10.1 255.255.255.0
clockrate 1000000
ppp authentication chap
Router2:
hostname router2
username router1 password xxx
interface Serial0
ip address 192.200.10.2 255.255.255.0
ppp authentication chap