点到点数据通信
点对点协议 PPP
**PPP 协议的特点 **
- 现在全世界使用得最多的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。
- 用户使用拨号电话线接入因特网时,一般都是使用 PPP 协议。
PPP协议使用场合
用户到ISP的链路使用PPP协议。该协议可以验证用户身份并且自动分配IP地址。
PPP 协议应满足的需求
- 简单——这是首要的要求
- 封装成帧
- 透明性
- 多种网络层协议
- 多种类型链路 (可以是光纤,双绞线等)
- 差错检测
- 检测连接状态
- 最大传送单元
- 网络层地址协商
- 数据压缩协商
PPP 协议不需要的功能
- 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
PPP 协议的组成
-
1992 年制订了 PPP 协议。经过 1993 年和 1994 年的修订,现在的 PPP 协议已成为因特网的正式标准[RFC 1661]。
-
PPP 协议有三个组成部分
- 一个将 IP 数据报封装到串行链路的方法。
- 链路控制协议 LCP (Link Control Protocol)。建立并维护数据链路连接。
- 网络控制协议 NCP (Network Control Protocol)。 允许在点到点连接上使用多种网络层协议,如图所示:
PPP 协议的帧格式
-
十六进制的7E,用二进制表示为0111 1110 表示帧头;帧尾也为7E;
-
十六进制的FF是目标地址,在点到点线路中这是固定的,(因为只有两头,一头发出,只有另一头接收一种可能)。
-
十六进制的03也是固定的;
-
PPP 有一个 2 个字节的协议字段:标识信息部分是什么内容。(如快递外面的分类标签)
- 当协议字段为 0x0021 时,PPP 帧的信息字段就是IP 数据报。
- 若为 0xC021,则信息字段是 PPP 链路控制数据。
- 若为 0x8021,则表示这是网络控制数据。
- 若为 0xC023,则表示信息字段是安全性认真PAP。
- 若为 0xC025,则表示信息字段是LQR。
- 若为 0xC223,则表信息字段是安全性认证CHAP。
-
2字节的FCS为帧检验序列。
透明传输问题
问题:信息字段中出现了标志字段的值,可能会被误认为是“标志位”,这时应该怎么办?
- 当 PPP 用在同步传输(传输的可能是比特流)链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)即零比特填充。
- 当 PPP 用在异步传输(传输的是字节)时,就使用一种特殊的字节填充法。
字节填充
- 将信息字段中出现的每一个 0x7E(即以7E结尾的数据) 字节转变成为 2 字节序列 (0x7D, 0x5E)。
- 若信息字段中出现一个 0x7D 的字节(即以7D结尾的数据), 则将其转变成为 2 字节序列 (0x7D, 0x5D)。
- 若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。
零比特填充
这样就不会产生歧义,解决了透明传输的问题。
PPP协议不提供使用序号和确认的可靠传输
PPP 协议之所以不使用序号和确认机制是出于以下的考虑:
- 在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。
- 在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。
- 帧检验序列 FCS 字段可保证无差错接受。
PPP协议的工作状态
- 当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。
- PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。
- 这些分组及其响应选择一些 PPP 参数,和进行网络层配置,NCP 给新接入的 PC机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。
- 通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。