PPP
协议介绍
用户接入
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