【计算机网络 | 第九篇】PPP:点对点协议

文章目录

    • [3.2.1 PPP 协议概述](#3.2.1 PPP 协议概述)
    • [3.2.2 PPP 协议的需求与功能](#3.2.2 PPP 协议的需求与功能)
      • [1. PPP 协议应满足的需求](#1. PPP 协议应满足的需求)
      • [2. PPP 协议不需要的功能](#2. PPP 协议不需要的功能)
    • [3.2.3 PPP 协议的组成](#3.2.3 PPP 协议的组成)
    • [3.2.4 PPP 协议的帧格式](#3.2.4 PPP 协议的帧格式)
      • [1. 各字段含义](#1. 各字段含义)
      • [2. 透明传输问题](#2. 透明传输问题)
        • [A. 字符填充法 (用于异步传输)](#A. 字符填充法 (用于异步传输))
        • [B. 零比特填充法 (用于同步传输)](#B. 零比特填充法 (用于同步传输))
    • [3.2.5 PPP 协议的工作状态](#3.2.5 PPP 协议的工作状态)

3.2.1 PPP 协议概述

对于点对点的链路,目前使用最广泛的数据链路层协议是点对点协议 PPP , Point-to-Point Protocol

在实际应用场景中,用户通常通过接入网连接到互联网服务提供商 (ISP)。当用户计算机与 ISP 进行通信时,数据链路层所使用的协议即为 PPP 协议。


3.2.2 PPP 协议的需求与功能

1. PPP 协议应满足的需求

IETF 在设计 PPP 协议时,确立了以下主要需求:

  • 简单:这是首要要求。PPP 的设计旨在简化链路层的处理逻辑。
  • 封装成帧:必须规定特殊的字符作为帧定界符,以便接收端准确识别帧的起始与结束。
  • 透明性:必须保证数据传输的透明性,即无论数据载荷中包含何种比特组合,都能被正确传输。
  • 支持多种网络层协议:能够在同一条物理链路上同时支持多种网络层协议(如 IP、IPX 等)的运行。
  • 支持多种类型链路:能够在多种类型的链路上运行(如串行/并行、同步/异步、低速/高速、电/光链路)。
  • 差错检测:能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。
  • 检测连接状态:能够及时自动检测出链路是否处于正常工作状态。
  • 最大传送单元 (MTU):必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进互操作性。
  • 网络层地址协商:必须提供一种机制,使通信的两个网络层实体能够通过协商知道或配置彼此的网络层地址。
  • 数据压缩协商:必须提供一种方法来协商使用数据压缩算法。

2. PPP 协议不需要的功能

为了保持协议的简单性,PPP 不提供以下功能(这些功能通常由上层的运输层协议如 TCP 负责):

  • 纠错:只负责检错,不负责纠错。
  • 流量控制:不进行流量控制。
  • 序号:不对帧进行编号。
  • 多点线路:不支持多点线路(仅支持点对点)。
  • 半双工或单工链路:主要针对全双工链路设计。

3.2.3 PPP 协议的组成

PPP 协议并非单一协议,而是由三个核心部分组成的协议族:

  1. 封装方法:一种将 IP 数据报(或其他网络层数据)封装到串行链路的方法。
  2. 链路控制协议 LCP:用于建立、配置和测试数据链路连接。
  3. 网络控制协议 NCP:这是一套协议,其中每一个协议支持不同的网络层协议(如 IP、OSI 网络层、DECnet 等),用于配置和建立网络层连接。

3.2.4 PPP 协议的帧格式

PPP 帧采用面向字节的格式,所有帧的长度都是整数字节。

1. 各字段含义

  • 首部
    • 标志字段 F :值为 0x7E (二进制 01111110),表示帧的开始和结束。
    • 地址字段 A :规定为 0xFF。在 PPP 中该字段实际不起作用(因为是点对点)。
    • 控制字段 C :规定为 0x03
  • 协议字段 :长度为 2 字节。该字段说明了信息字段中封装的是什么协议的数据。
    • 0x0021:IP 数据报。
    • 0x8021:网络控制数据。
    • 0xC021:PPP 链路控制数据。
    • 0xC023:鉴别数据。
  • 信息字段:长度可变,但不得超过 1500 字节(默认 MTU)。
  • 尾部
    • FCS:2 字节的帧检验序列(通常使用 CRC)。
    • 标志字段 F0x7E,表示帧结束。

PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

2. 透明传输问题

为了防止信息字段中出现与标志字段 0x7E 相同的比特组合而被误判为帧边界,PPP 提供了两种透明传输机制,分别适用于异步链路和同步链路。

A. 字符填充法 (用于异步传输)

当 PPP 使用在异步传输链路(如传统的拨号调制解调器)时,采用特殊的字符填充法

  1. 转义字符定义 :将 0x7D 定义为转义字符。
  2. 填充规则
    • 若信息字段中出现 0x7E,则转换为 2 字节序列 (0x7D, 0x5E)
    • 若信息字段中出现 0x7D,则转换为 2 字节序列 (0x7D, 0x5D)
    • 若信息字段中出现 ASCII 控制字符(数值小于 0x20),则在该字符前加入 0x7D,并将该字符的编码加以改变(通常是第 5 位取反)。
B. 零比特填充法 (用于同步传输)

当 PPP 使用在同步传输链路(如 SONET/SDH,一连串比特连续传送)时,采用硬件实现的零比特填充法

  1. 发送端 :扫描整个信息字段,只要发现有 5 个连续的 1 ,则立即在后面填入一个 0
  2. 接收端 :扫描接收到的比特流,每当发现 5 个连续的 1 时,就把这 5 个连续 1 后的一个 0 删除。

通过这种方式,可以保证信息字段中不会出现 6 个连续的 1(即 01111110),从而避免与标志字段 F 冲突。


3.2.5 PPP 协议的工作状态

PPP 链路的建立、维持和终止是一个包含物理层、链路层和网络层交互的过程。

工作流程

  1. 链路静止:物理层连接尚未建立。
  2. 建立物理连接:当用户拨号接入 ISP 时,路由器通过调制解调器确认并建立物理连接。
  3. LCP 协商:PC 机向路由器发送一系列 LCP 分组(封装成多个 PPP 帧),协商 PPP 参数(如 MTU、鉴别协议等)。
  4. 鉴别:如果配置了鉴别(如 PAP 或 CHAP),则进行身份验证。若失败则链路终止。
  5. NCP 配置:NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为互联网上的一个主机。
  6. 链路打开:此时链路建立完成,开始进行网络层数据通信。
  7. 链路终止:通信完毕时,NCP 释放网络层连接,收回 IP 地址;接着 LCP 释放数据链路层连接;最后释放物理层连接。

由此可见,PPP 协议已超越了纯粹的数据链路层协议范畴,它包含了物理层(物理连接建立)和网络层(IP 地址分配)的相关内容。

PPP协议的状态图:

相关推荐
23zhgjx-zgx3 小时前
USB 设备通信数据包审计与键值解析报告
网络·ctf·流量
WJ.Polar3 小时前
FTP、Telnet、PPP、SNMP协议
服务器·网络
aesthetician4 小时前
实时通信的艺术:Server-Sent Events (SSE) 与 WebSocket 的深度解析
网络·websocket·网络协议
REDcker4 小时前
gRPC完整文档
服务器·网络·c++·网络协议·grpc
听麟4 小时前
HarmonyOS 6.0+ PC端虚拟仿真训练系统开发实战:3D引擎集成与交互联动落地
笔记·深度学习·3d·华为·交互·harmonyos
一个人旅程~4 小时前
我存在吗?你存在吗?
笔记·程序人生·电脑·ai写作
..过云雨4 小时前
多路转接select系统调用详解
网络·网络协议·tcp/ip
xqqxqxxq4 小时前
Java IO 核心:BufferedReader/BufferedWriter & PrintStream/PrintWriter 技术笔记
java·笔记·php
爱编码的傅同学4 小时前
【计算机网络】初识网络
网络·计算机网络