目录

ppp协议

2025-11-19

ppp协议

1 概述

用户计算机与ISPInternet Service Provider)进行通信时,所使用的数据链路层协议通常就是点对点协议PPPPoint-to-Point Protocol)。PPP协议是目前使用最广泛的点对点数据链路层协议,也广泛应用于广域网路由器之间的专用线路。

2 组成

  • 对各种协议数据报的封装方法(封装成帧)
  • 链路控制协议LCP 用于建立、配置以及测试数据链路的连接
  • 一套网络控制协议NCPs 其中的每一个协议支持不同的网络层协议

2.1 帧格式

alt text

  • Flag字段为帧定界标志,用来标识PPP帧的开始与结束,长度为1字节,取值固定为0x7E
  • Address字段为地址字段,用来标识接收方的地址,长度为1字节,由于点到点链路的接收方是唯一的,故此字段取值固定为0xFF,表示只有对端才能接受到数据。
  • Control字段为控制字段,长度为1字节,取值固定为0x03,表示无序号信息Unnumbered Information
  • Protocol字段为协议字段,用来标识PPP帧封装的协议数据类型,长度为1-2字节。此字段使PPP得以封装不同的协议。
字段值 协 议
0x0021 IP(Internet Protocol)
0x0029 Appletalk
0x8021 IPCP(Internet Protocol Control Protocol)
0xC021 LCP(Link Control Protocol)
0xC023 PAP(Password Authentication Protocol)
0xC025 LQR(Link Quality Report)
0xC223 CHAP(Challenge Handshake Authentication Protocol)
  • Information字段为信息字段,该字段长度不固定,最大长度等于MRUMaximum Receive Unit)值,默认为1500字节。此字段存放承载的协议数据,包括LCP、NCP等
  • FCSFrame Checksum)字段为帧校验和字段,用来检测PPP帧的完整性(CRC计算),长度为2-4字节,通常为2。

由于Address和Control字段总是常量,因此LCP提供了某种必要的机制,允许通信双方协商一个选项,确定是否省略这两个字段。

2.2 字节填充法

  • PPP帧标志字段取值为7E(16进制),如果数据中出现7E则需要在数据前插入转义字符7D(16进制),并将原来的7E0x20(16进制) 做异或运算,所以7E在数据中最终会变成7D,5E
  • 如果数据中有转义字符7D怎么办呢?可以在转义字符7D前再加一个转义字符7D,并将数据的7D0x20(16进制),于是转义字符7D在数据中最终会变成7D,5D
  • 数据中出现的每一个ASCII码控制字符(数值小于0x20的字符),则在该字符前面插入一个7D字节,同时将该字符的编码加上0x20

2.3 差错控制

alt text

接收方每收到一个PPP帧,就进行CRC检验(多项式)。若CRC检验正确,就收下这个帧;反之就丢弃这个帧(不可靠传输服务)。检验由尾部的FCS实现

使用PPP的数据链路层,向上提供的是不可靠数据传输服务PPP 数据链路层向上提供不可靠服务,核心原因是它未内置确认重传等可靠性保障机制。

3 工作流程

  1. 链路不可用阶段 Dead
  2. 链路建立阶段 Establish
  3. 认证阶段 Authenticate
  4. 网络层协议阶段 Network
  5. OPEN
  6. 链路中止阶段 Terminate

alt text

4 LCP 协议

LCPLink Control Protocol链路控制协议):用于建立、配置、维护和终止PPP链路

LCP负责PPP的链路管理,和上层(网络层)协议无关

报文格式

PPP帧Protocol字段0xC021时,表示Information 字段数据为LCP报文

  • Code为代码字段(也称类型字段),长度为1字节,用来标识LCP中链路控制报文的类型。
  • Identifier为标识符字段,长度为1字节,是报文的唯一标识。
    • Identifier字段用于匹配请求和回复。
  • Length为长度字段,长度为2字节,Length字段指出该报文的长度,包括CodeIdentifierLengthData
  • Data为数据字段,长度是零或多个八位字节,由Length字段声明。
    • Data字段的格式由Code字段决定。

5 NCP协议

NCPNetwork Control Protocol网络控制协议)用于建立、配置网络层协议,进行参数协商。

不同的网络层协议会使用不同的NCP协议

  • IP协议使用IPCPInternet Protocol Control ProtocolIP控制协议);
  • Appletalk协议使用Appletalk NCP进行协商;
  • NovellIPX协议使用IPEInternet Packet Exchange互连网包交换协议)进行协商。

6 hdlc协议

HDLC高级数据链路控制协议)是ISO制定的面向比特的同步数据链路层协议,是数据链路层协议的经典标准,具有极强的通用性和灵活性。

一、核心定位与适用场景

  • 定位:替代早期面向字符的协议(如BSC),提供标准化的链路层数据传输、差错控制和流量控制功能。
  • 适用场景:支持点到点、点到多点拓扑,可用于专线、卫星链路等同步传输场景,是X.25帧中继等协议的基础链路层协议。

二、核心特性

  1. 面向比特传输:以比特流为处理单位,不受字符编码限制,适配任意上层数据。
  2. 同步传输:依赖物理层同步信号(如时钟),无需额外同步字符,传输效率高。
  3. 全双工通信:支持双向同时传输,通信双方可随时发送数据。
  4. 统一帧格式:所有数据和控制信息均封装为统一格式的HDLC帧,结构清晰。
  5. 内置可靠性机制:自带差错控制、流量控制和帧序号管理,可提供可靠传输。

三、帧格式详解(核心组成)

HDLC帧由5个字段组成,字段长度除信息字段外均固定:

字段 长度(比特) 功能说明
标志字段F 8 帧起始和结束标识,固定为01111110,用于帧同步;通过”0比特插入法“避免数据中出现假标志。
地址字段A 8(可扩展) 指明接收方地址,点到点链路中可固定为全1,点到多点链路中需明确目标设备地址。
控制字段C 8 核心字段,区分帧类型(信息帧、监控帧、无编号帧),包含序号、确认号等控制信息。
信息字段I 可变长度 承载上层协议数据,长度无严格限制(由链路带宽和缓存决定)。
帧校验序列FCS 16或32 采用CRC校验CRC-CCITTCRC-32),检测帧在传输过程中的差错(比特错、帧丢失等)。

四、三种帧类型及功能

  1. 信息帧I帧):用于传输上层数据,控制字段包含发送序号(N(S))和接收序号(N(R)),支持连续发送和累计确认。
  2. 监控帧S帧):用于差错控制和流量控制,无信息字段,包含确认号(N(R))和监控类型(如接收准备好RR接收未准备好RNR拒绝重传REJ等)。
  3. 无编号帧U帧):用于链路控制,无序号字段,包含链路建立(SABM)、链路释放(DISC)、确认(UA)等控制功能。

五、关键工作机制

  1. 0比特插入/删除:发送方在数据中连续5个”1“后插入1个”0“,接收方删除该”0“,避免数据与标志字段01111110)混淆。
  2. 差错控制:通过FCS校验检测差错,结合S帧REJ(拒绝)或选择性重传机制,实现差错恢复。
  3. 流量控制:接收方通过RNR接收未准备好)帧告知发送方暂停发送,待缓存空闲后用RR帧恢复,避免接收方溢出。
  4. 链路管理:通过U帧完成链路建立(SABM→UA)、数据传输、链路释放(DISC→UA)的完整流程。

六、与PPP的核心区别

  • 帧格式HDLC帧无协议字段,PPP帧新增协议字段以适配多种上层协议。
  • 可靠性HDLC内置确认、重传机制,PPP默认无可靠性保障。
  • 适用场景HDLC多用于设备间专线连接,PPP更适用于拨号、宽带等用户接入场景。