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的格式是一样的。标志字段F0x7E0x表示7E),但地址字段A和控制字段C都是固定不变的,分别为0xFF0x03PPP协议不是面向比特的,因而所有的PPP帧长度都是整数个字节。

    HDLC不同的是多了2个字节的协议字段。协议字段不同,后面的信息字段类型就不同。如:

0x0021 ——信息字段是IP数据报

0xC021 ——信息字段是链路控制数据LCP

0x8021 ——信息字段是网络控制数据NCP

0xC023 ——信息字段是安全性认证PAP

0xC025 ——信息字段是LQR

0xC223 ——信息字段是安全性认证CHAP

    当信息字段中出现和标志字段一样的比特0x7E时,就必须采取一些措施。因PPP协议是面向字符型的,所以它不能采用HDLC所使用的零比特插入法,而是使用一种特殊的字符填充。具体的做法是将信息字段中出现的每一个0x7E字节转变成2字节序列(0x7D0x5E)。若信息字段中出现一个0x7D的字节,则将其转变成2字节序列(0x7D0x5D)。若信息字段中出现ASCII码的控制字符,则在该字符前面要加入一个0x7D字节。这样做的目的是防止这些表面上的ASCII码控制字符被错误地解释为控制字符。

三、PPP链路工作过程

当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出应答,并建立一条物理连接。这时 PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。这些分组及其响应选择了将要使用的一些 PPP 参数,接着就进行网络层培植, NCP 给新接入的 PC 机分配一个临时的 IP 地址,这样 PC 机就成为 Internet 上一个主机了。
当用户通信完毕时, NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着 LCP 释放数据链路层连接,最后释放的是物理层的连接。
上述过程可用图 2 来描述。
2 PPP 协议过程状态图

当线路处于静止状态时,并不存在物理层的连接。当检测到调制解调器的载波信号,并建立物理层连接后,线路就进入建立状态,这时 LCP 开始协商一些选项。协商结束后就进入鉴别状态。若通信的双方鉴别身份成功,则进入网络状态。 NCP 配置网络蹭,分配 IP 地址,然后就进入可进行数据通信的打开状态。数据传输结束后就转到终止状态。载波停止后则回到静止状态。

四、举例

路由器Router1Router2S0口均封装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