### 3.2 点对点协议(PPP)
在数据传输的早期阶段,通信线路质量常常不稳定,这时在数据链路层使用可靠的传输协议是一个明智的选择。高级数据链路控制HDLC是当时的流行选择。但在当前的场景下,HDLC已逐渐被取代。现如今,点对点协议PPP是数据链路层中最广泛使用的协议。
#### 3.2.1 PPP协议的特点
PPP协议充当了用户计算机与ISP之间的桥梁,使用户能够接入互联网。此协议由IETF于1992年制定,经过数次修订后,至1994年成为互联网的标准。
##### 1. PPP协议需满足的需求:
- **简单性**:互联网体系结构的设计理念是将复杂性主要集中在TCP协议中,而IP相对简单,因此在数据链路层,不需要进行纠错、设置序号或进行流量控制。
- **封装成帧**:必须有明确的字符作为帧的开始和结束标识,确保帧的准确传输。
- **透明性**:数据传输中可能会有与帧定界符相同的字符组合,PPP协议必须能够处理这种情况。
- **支持多种网络层协议**:PPP应该支持多种网络协议同时在一个物理链路上运行。
- **支持多种类型链路**:PPP应能在各种类型的链路上运行,无论是电的还是光的,同步或异步,低速或高速。
- **差错检测**:PPP必须能对接收到的帧进行检查,并立即丢弃有误的帧。
- **连接状态检测**:PPP应能及时自动检测链路的工作状态。
- **设置最大传输单元MTU**:为了增强实现之间的互操作性,PPP对每种类型的点对点链路都应设定一个标准的默认MTU值。
- **网络层地址协商**:PPP必须有一种机制让通信双方的网络层实体能够协商并知道彼此的网络地址。
- **数据压缩协商**:PPP应提供一种协商数据压缩算法的方法。
##### 2. PPP协议的组成:
PPP协议由三部分组成:
1. **封装方法**:将IP数据报封装到串行链路,既支持异步链路也支持同步链路。
2. **链路控制协议LCP**:用于建立、配置和测试数据链路连接。
3. **网络控制协议NCP**:每个协议支持不同的网络层协议,如IP、OSI网络层、DECnet等。
这部分主要介绍了PPP协议的历史背景、特点、需求和组成部分。PPP协议是数据链路层中的关键元素,确保点对点的通信链路在各种条件下都能稳定工作。
**3.2.2 PPP协议的帧格式**
**1. 各字段的章义**
- PPP帧由首部、信息部分、尾部组成。
- **首部和尾部**
- 标志字段F(Flag):首部的第一个字段和尾部的第二个字段。规定为Ox7E,二进制表示是01111110,用作PPP帧的定界符。连续两帧之间只需要一个标志字段。连续两个标志字段表示空帧,应丢弃。
- 地址字段A:规定为OxFF(即11111111)。
- 控制字段C:规定为0x03(即00000011)。这两个字段并没有实际信息传输用途。
- 协议字段:2字节。例如0x0021表示信息字段为IP数据报,0xC021表示LCP数据,0x8021表示网络层控制数据。
- **信息部分**:长度可变,不超过1500字节。
- **尾部**:包括2字节的使用CRC的帧检验序列FCS。
**2. 字节填充**
- 目的:当信息字段中出现与标志字段相同的比特组合Ox7E时,要确保这种组合不出现在信息字段中。
- 填充方法(异步传输时):
- 信息字段中的0x7E转为2字节序列(0x7D,0x5E)。
- 0x7D转为2字节序列(Ox7D,0x5D)。
- 数值小于0x20的ASCII码的控制字符,例如0x03,转为2字节序列(0x7D,0x23)。
接收端会进行相反的变换以恢复原始信息。
**3. 零比特填充**
- 使用场景:PPP用于SONET/SDH链路,使用同步传输。
- 填充方法:
- 发送端扫描信息字段。当发现有5个连续的1时,插入一个0。
- 接收端在收到一个帧时,找到标志字段确定帧边界,然后每当发现5个连续的1时,就删除后面的0。
这种方法确保透明传输,避免对帧边界的错误判断。
**3.2.3 PPP协议的工作状态**
- PPP链路初始化:用户通过调制解调器拨号连接到ISP建立物理连接。之后,用户PC向ISP发送LCP分组(封装成PPP帧)来建立LCP连接。这些分组选择PPP参数。接下来是网络层配置,NCP为新接入的用户PC分配一个临时的IP地址。
- PPP链路终止:用户结束通信时,NCP释放网络层连接并回收IP地址。然后,LCP释放数据链路层连接。最后释放的是物理层连接。
整个PPP链路的状态可以通过状态图来描述,从“链路静止”到“链路建立”,再到通信和最终释放连接。
**3.2.3 PPP协议的工作状态笔记**
- **PPP链路初始化:**
1. 用户拨号接入ISP后,建立从用户个人电脑到ISP的物理连接。
2. 用户向ISP发送链路控制协议LCP分组(封装成PPP帧),建立LCP连接。
3. 选择PPP参数。
4. 进行网络层配置:网络控制协议NCP为新接入的用户分配一个临时IP地址。
- **PPP链路终止:**
1. NCP释放网络层连接,回收IP地址。
2. LCP释放数据链路层连接。
3. 释放物理层连接。
- **PPP工作状态(参照图3-12):**
1. **链路静止 (Link Dead)**: 不存在物理层连接。
2. **链路建立 (Link Establish)**: 建立物理层连接,并协商LCP连接。
- LCP配置请求帧(Configure-Request)。
- 响应有三种:配置确认帧、配置否认帧、配置拒绝帧。
3. **鉴别 (Authenticate)**:
- 传送LCP分组、鉴别分组、监测链路质量分组。
- 口令鉴别PAP或复杂的CHAP。
4. **网络层协议 (Network-LayerProtocol)**: NCP交换网络层特定的网络控制分组。PPP的两端可以运行不同的网络层协议。
5. **链路打开 (Link Open)**:
- 链路两端可以彼此发送分组。
- 发送回送请求LCP分组和回送回答LCP分组检查链路状态。
6. **链路终止 (Link Terminate)**:
- 由链路一端发出终止请求LCP分组。
- 收到终止确认LCP分组或链路出现故障后转到此状态。
- **LCP配置选项:**
- 链路最大帧长。
- 使用的鉴别协议。
- 是否省略PPP帧中的地址和控制字段。
- **总结:**
PPP协议不仅仅是数据链路层的协议,还包括物理层和网络层内容。
1. **定义与应用**:PPP 是用于在点对点连接上传输网络层数据报的数据链路层协议。
2. **组成**:主要包括三部分,即链路控制协议 (LCP)、认证协议 (如PAP和CHAP) 和网络控制协议 (NCP)。
3. **工作过程**:包括链路建立、认证、网络层协议配置、数据传输和链路终止。
4. **PPP帧格式**:特定的封装格式用于在连接上发送数据。
**难点:**
1. **状态转换与管理**:理解PPP的工作状态,如链路静止、链路建立、鉴别、网络层协议、链路打开和链路终止等,并知道它们之间如何转换。
2. **认证过程**:理解PAP(口令鉴别协议)与CHAP(挑战握手鉴别协议)的工作原理及其区别。
3. **配置与选项协商**:如何通过LCP来协商和配置连接的各种参数。
**易错点:**
1. **状态混淆**:可能会混淆PPP的不同状态及其之间的转换条件。
2. **认证细节**:在描述PAP与CHAP时,可能会忽略它们之间的主要差异,或者混淆它们的工作流程。
3. **NCP的作用**:可能会忽视或混淆NCP在PPP中的作用,即用于为不同的网络层协议进行特定的配置。
4. **PPP帧格式**:可能会混淆PPP帧的各个字段及其意义。
当学习或应用PPP时,应特别注意这些重点、难点和易错点,确保对PPP的理解既全面又准确。