欢迎大家订阅【计算机网络】学习专栏,开启你的计算机网络学习之旅!
文章目录
前言1 定义2 特点3 组成4 帧格式5 透明传输问题5.1 字节填充5.2 零比特填充
6 工作状态
前言
在现代网络通信中,点对点协议(PPP,Point-to-Point Protocol)是广泛应用于点对点链路的关键数据链路层协议。本文将详细介绍 PPP 协议的特点、组成、帧格式、透明传输处理方式,以及其在链路建立和管理过程中的工作状态。
1 定义
点对点协议(PPP,Point-to-Point Protocol) 是一种用于数据链路层的通信协议,专门用于在两点之间建立直接连接,以实现网络数据的可靠传输。
PPP 最早于 1994 年成为互联网标准 [RFC 1661],主要用于串行链路(如拨号连接)和其他点对点的网络连接(如 DSL、VPN 和移动网络)。
PPP 的主要目标是通过灵活、高效的方式,将网络层数据报(如 IP 包)封装并传输于各种类型的链路上。它不仅支持多种网络层协议,还能够对链路的状态、数据压缩、错误检测等进行控制和管理。
2 特点
简单:协议设计应尽量简化,以便于实现和部署。封装成帧:需要使用特殊字符作为帧定界符,以明确数据的边界。透明性:应保证数据传输的透明性,无论数据内容为何,都能准确无误传输。多种网络层协议支持:在一条物理链路上,PPP 能同时支持多个网络层协议。多类型链路兼容:可在异步、同步等不同链路类型上运行。差错检测:具备检测错误帧的能力,并自动丢弃有差错的帧。链路状态检测:能够及时判断链路的正常工作状态,并进行处理。最大传输单元(MTU)设置:为不同链路类型设置标准默认值,确保互操作性。网络层地址协商:允许通信双方通过协商,了解和配置彼此的网络层地址。数据压缩协商:支持协商使用数据压缩算法,提高传输效率。
3 组成
PPP 协议由以下三部分组成:
IP 数据报封装:定义了将 IP 数据报封装到串行链路中的方法。链路控制协议(LCP):负责建立、配置和管理链路的逻辑连接。网络控制协议(NCP):负责为不同的网络层协议(如 IP)进行配置和控制。
4 帧格式
PPP 的帧结构包括首部和尾部,共包含以下字段:
①首部字段
标志字段 (F):每帧以 0x7E 标志开始和结束。连续两帧之间只需用一个标志字段隔开。地址字段 (A):固定为 0xFF,一般没有实际作用。控制字段(C):通常设置为 0x03。协议字段:标识信息字段的数据类型。例如:
0x0021:IP 数据报0x8021:网络控制数据0xC021:PPP 链路控制数据0xC023:鉴别数据
②信息字段 此字段封装具体的数据,如 IP 数据报或 LCP/NCP 控制信息。
③尾部字段
帧校验序列 (FCS):用于检测帧的传输错误。标志字段 (F):与首部标志字段一致,用于结束当前帧。
注意:PPP 是面向字节的协议,所有的帧长度均为整数个字节。
5 透明传输问题
在 PPP 传输过程中,数据中的某些内容可能与帧的定界符(如 0x7E)冲突,导致边界误判。因此,PPP 使用不同的方法保证透明性:
5.1 字节填充
当 PPP 用在异步传输时,使用字节填充法。字节填充法是 PPP 协议中的一种透明传输机制,用于解决数据内容与帧定界符冲突的问题。 【解析】 从图中可以看到,PPP 帧使用 0x7E 作为帧的起始和结束标志。如果原始数据中包含与 0x7E 相同的字节,可能会造成接收方误认为帧结束,导致传输错误。 字节填充具体步骤:
①检测冲突字符 在原始数据中发现了需要特殊处理的字节,如 0x7E 和 0x7D。
②字节填充的处理规则
当原始数据中出现 0x7E(标志符),就会在该字节前插入一个 0x7D(转义符),并将原来的 0x7E 改为 0x5E。当数据中出现 0x7D(转义符)时,同样会在该字节前插入另一个 0x7D,并将原来的 0x7D 改为 0x5D。
③填充后的数据变化
原始数据: 7E → 填充后: 7D 5E原始数据: 7D → 填充后: 7D 5D
④数据的透明传输
在发送时,这些填充字节确保数据传输过程中不会出现与标志符冲突的情况。接收端收到填充后的数据时,会识别并去除这些填充字节,还原原始数据。
那原始数据 03 为何变为 7D 23?
在 PPP 协议中,字节填充法(Byte Stuffing)不仅针对标志符 0x7E 和转义符 0x7D,还会处理一些特定的控制字符。这些字符如果不加处理,可能会对接收方的协议解析产生干扰。
①控制字符的转义规则 PPP 协议中,一些常用的低值控制字符(如 0x00、0x03 等)在某些网络设备或链路上传输时,可能会被误认为控制命令。为了避免这些数据干扰协议的正常运行,这些字节会通过字节填充法进行转义。
②字节填充规则
在特殊字符 0x03 前插入一个 转义符 0x7D。将原始字节 0x03 与 0x20 进行异或运算(XOR):0x03 ⊕ 0x20 = 0x23。
③填充后的数据变化 原始数据: 03 → 填充后: 7D 23
5.2 零比特填充
当 PPP 用在同步传输链路时,采用零比特填充法。在信息字段中每当检测到连续的五个 1,就会自动插入一个 0,防止与标志字段 0x7E 冲突。
6 工作状态
PPP 链路的初始化、管理和关闭分为多个阶段: ① 链路初始化阶段 当用户拨号接入 ISP(互联网服务提供商)后,用户电脑与 ISP 之间建立物理连接。此时,用户电脑会发送一系列 LCP 数据包(封装成 PPP 帧)以建立逻辑链路。
②网络层配置阶段 成功建立链路后,NCP 协议开始为用户电脑分配临时 IP 地址等网络配置。
③数据通信阶段 链路建立后,用户可以通过 PPP 传输数据报,如 IP 数据报。
④链路关闭阶段 当用户结束通信时,NCP 会释放 IP 地址等网络资源,LCP 释放数据链路连接,最终断开物理连接。