用户接入 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 协议有三个组成部分:
( 1 )一个将 IP 数据报封到串行链路的方法。 PPP 既支持异步链路(无奇偶校验的 8 比特数据),也支持面向比特的同步链路。
( 2 )一个用来建立、配置和测试数据链路的链路控制协议 LCP ( Link Control Protocol )。通信的双方可协商一些选项。在 [RFC 1661] 中定义了 11 种类型的 LCP 分组。
( 3 )一套网络控制协议 NCP ( Network Control Protocol ),支持不同的网络层协议,如 IP 、 OSI 的网络层、 DECnet 、 AppleTalk 等。
PPP 帧格式和 HDLC 帧格式相似,如图 1 所示。二者主要区别: PPP 是面向字符的,而 HDLC 是面向位的。
?
图1 PPP 帧格式
??? 可以看出,PPP 帧的前3 个字段和{zh1}两个字段与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 码控制字符被错误地解释为控制字符。
当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出应答,并建立一条物理连接。这时 PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。这些分组及其响应选择了将要使用的一些 PPP 参数,接着就进行网络层培植, NCP 给新接入的 PC 机分配一个临时的 IP 地址,这样 PC 机就成为 Internet 上一个主机了。
当用户通信完毕时, NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着 LCP 释放数据链路层连接,{zh1}释放的是物理层的连接。
上述过程可用图 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