课程
《计算机网络》课后探研题书面报告
《计算机网络》课后探研题书面报告
课后探研题 2: 了解 PPPoE 协议
摘要
PPPoE 即以太网上的点对点协议,是一种网络隧道协议,它将点对点协议(PPP)封装在以太网框架中。该协议的出现,旨在解决传统以太网无法提供认证、计费和会话管理,而 PPP 协议又无法直接运行在以太网这一广播型多路访问介质上的问题。PPPoE 有效地将以太网的廉价、高速特性与 PPP 强大的接入控制、认证和 IP 分配功能结合起来,成为数字用户线(DSL)等宽带接入服务的基石。
本文深入探讨了 PPPoE 协议的背景、标准文档(RFC 2516),详细阐述了其核心工作原理,包括发现阶段和会话阶段。通过分析其特点和典型应用场景,本文还将其与 PPP、Ethernet 协议进行了对比,并讨论了 PPPoE 在客户端和服务端的配置方法。最后,本文通过对 PPPoE 协议抓包的格式分析,直观地展示了其数据传输过程。
关键字: PPPoE;RFC 2516;工作原理;协议比较;抓包分析;宽带接入
1 引言
随着 20 世纪末互联网的迅猛发展,如何为海量家庭用户提供经济、高速且可管理的接入服务成为亟待解决的问题。以太网(Ethernet)技术因其成本低廉、部署简单、速率较高而成为局域网的主流。然而,以太网是一种广播型多路访问技术,其设计初衷是用于局域网内部的设备互联,本身不具备用户认证、IP 地址动态分配和访问控制等管理功能。
另一方面,点对点协议(PPP)提供了一套完整的解决方案,包括链路控制协议(LCP)、网络控制协议(NCP)以及多种认证协议(PAP、CHAP),能够很好地实现用户认证、IP 地址协商分配和会话管理。但是,PPP 协议最初是为串行链路(如拨号上网)设计的,无法直接运行在以太网这样的广播网络上。
为了融合以太网的经济高速与 PPP 的强大管理能力,互联网工程任务组(IETF)在 1999 年发布了 RFC 2516,正式定义了 PPPoE 协议。PPPoE 通过在以太网帧中封装 PPP 报文,成功地在以太网这一”广播域”上”模拟”出了点对点的逻辑链路。这使得互联网服务提供商(ISP)可以利用廉价的以太网设备,对接入的每一个用户进行身份认证、授权和计费,从而极大地推动了 DSL 等宽带接入技术的普及。
2 PPPoE 协议标准文档
PPPoE 协议的核心技术规范由 IETF 发布的 RFC 2516 文档定义。
RFC 2516,全称为《A Method for Transmitting PPP Over Ethernet (PPPoE)》,发布于 1999 年 2 月。该文档是理解 PPPoE 协议的根本。它详细规定了 PPPoE 的运行机制、封装格式和两个关键阶段:
- 发现阶段: 定义了客户端(Host)如何在以太网中发现接入集中器(Access Concentrator, AC),以及两者如何协商建立一个唯一的会话标识(Session ID)。此阶段涉及 PADI、PADO、PADR、PADS 四种类型的报文。
- 会话阶段: 定义了在发现阶段建立的会话通道上,如何封装 PPP 报文进行传输。
此外,RFC 2516 还定义了 PPPoE 的以太网帧类型(EtherType):0x8863 用于发现阶段,0x8864 用于会话阶段。
3 PPPoE 协议工作原理
PPPoE 的工作过程严格划分为发现阶段、会话阶段和终结阶段。其核心是在客户端和服务器之间建立一个由双方 MAC 地址和 Session ID 共同标识的逻辑隧道。
3.1 发现阶段
此阶段的目的是让客户端在局域网中找到一个 PPPoE 服务器(AC),并获取一个唯一的 Session ID。这个过程涉及四个步骤:
-
PADI(PPPoE Active Discovery Initiation): 客户端(用户的 PC 或路由器)需要上网时,它会在局域网中以广播形式发送一个 PADI 包。该以太网帧的目标 MAC 地址为
ff:ff:ff:ff:ff:ff。PADI 包中可以包含客户端希望的服务类型(Service Name),但通常为空,表示接受任何服务。 -
PADO(PPPoE Active Discovery Offer): 局域网内所有能提供 PPPoE 服务的 AC(接入集中器)收到 PADI 后,会以单播形式向客户端回复一个 PADO 包。PADO 包中包含了 AC 的名称和服务类型,表示”我可以提供服务”。
-
PADR(PPPoE Active Discovery Request): 客户端可能会收到多个 PADO 包。它会根据 AC 名称或服务类型选择一个(通常是第一个到达的),并向选定的 AC 单播发送一个 PADR 包,表示”我请求与你建立连接”。
-
PADS(PPPoE Active Discovery Session-confirmation): 被选中的 AC 收到 PADR 后,会生成一个唯一的 Session ID,并通过单播 PADS 包发送给客户端,确认会话建立。
发现阶段至此结束。客户端和服务器都记录了对方的 MAC 地址以及这个唯一的 Session ID。
3.2 会话阶段
发现阶段成功建立会话后,PPPoE 进入会话阶段。此阶段所有的数据帧都使用 0x8864 的 EtherType,并且 PPPoE 头部都携带着在 PADS 中协商好的 Session ID。此阶段实质上就是标准的 PPP 协商和数据传输过程:
-
PPP LCP 协商: 首先进行 LCP 协商,用于建立、配置和测试数据链路。协商内容主要包括最大接收单元(MRU)——通常设为 1492 字节(1500B 的以太网 MTU 减去 6B 的 PPPoE 头和 2B 的 PPP ID),以及认证方式(如 CHAP 或 PAP)。
-
PPP 认证: LCP 协商完成后,进入认证阶段。客户端根据协商好的认证方式(通常是更安全的 CHAP),向 AC 发送加密的用户名和密码。AC 将认证信息转发给后端的 RADIUS 服务器进行验证。
-
PPP IPCP 协商: 认证成功后,AC 允许连接。客户端通过 IPCP 协议向 AC 请求分配网络层地址。AC 从其地址池中选择一个可用的公网 IP 地址,连同 DNS 服务器地址、网关地址等信息,通过 IPCP 回复给客户端。
IPCP 协商完成后,客户端就获取了公网 IP 地址,PPPoE 会话完全建立,用户可以开始传输 IP 数据包(即上网)。所有用户的 IP 数据包都会被封装在 [Ethernet] -> [PPPoE] -> [PPP] -> [IP Packet] 结构中,发送给 AC,再由 AC 转发到互联网。
3.3 终结阶段
当用户主动断开连接,或 AC 因管理需要(如欠费)断开连接时,任何一方都可以发送一个 PADT 报文来终止会话。PADT 是单播报文,它通过 Session ID 来标识需要拆除的会话。
4 PPPoE 协议的特点
PPPoE 协议的成功在于它巧妙地结合了多种技术的优点,其主要特点包括:
-
广泛的适用性: PPPoE 构建于以太网之上,使得 ISP 可以利用现有的、低成本的以太网基础设施为大量用户提供接入服务。
-
强大的管理功能: 它继承了 PPP 协议的认证(CHAP/PAP)、加密和压缩功能,使 ISP 能对每个用户进行精细化的身份验证和授权管理。
-
会话管理: 通过唯一的 Session ID,PPPoE 为每个用户建立了一个逻辑上的点对点会话。这极大地简化了 ISP 的计费、限速和故障排查工作。
-
IP 地址动态分配: 通过 PPP 的 IPCP 协商,ISP 可以动态地为用户分配 IP 地址,有效节约了日益枯竭的 IPv4 地址资源。
5 PPPoE 协议的应用
PPPoE 协议最主要和最广泛的应用是在宽带接入市场。
-
DSL/ADSL 接入: 在数字用户线(DSL)技术中,PPPoE 是事实上的标准。用户的 ADSL Modem(猫)通过电话线连接到 ISP 的 DSLAM,然后在 Modem(或 PC/路由器)上运行 PPPoE 客户端,拨号连接到 ISP 的接入集中器(AC,通常是 BAS/BRAS 设备),完成认证和 IP 获取。
-
光纤到户(FTTH): 尽管 GPON 等光纤技术在物理层和链路层有所不同,但在国内许多 FTTH(光纤到户)方案中,仍然采用 PPPoE 协议对用户进行认证和 IP 分配。光猫(ONU)负责光电转换,用户侧的路由器依然需要进行 PPPoE 拨号。
-
企业接入: 部分企业专线也会使用 PPPoE 作为接入认证方式,以简化 ISP 侧的配置和管理。
6 PPPoE 与 PPP、Ethernet 协议的比较
理解 PPPoE 的关键在于理解它与 PPP 和 Ethernet 的关系。
-
与 Ethernet 的关系: Ethernet 是一种链路层协议,定义了在共享介质(如双绞线、光纤)上如何传输数据帧。它只关心 MAC 地址,不关心上层是谁,也无认证和会话的概念。PPPoE 运行在 Ethernet 之上,它将 Ethernet 视为一个透明的数据通道。PPPoE 弥补了 Ethernet 没有认证和会话管理的缺陷。
-
与 PPP 的关系: PPP 是用于在两个节点之间建立点对点链路的协议簇。PPPoE 不是 PPP 的替代品,而是 PPP 的封装和传输方式。PPPoE 的”发现阶段”是为了在以太网这个广播环境中”找到”对端,并建立一个逻辑通道(Session ID);而”会话阶段”则是将完整的 PPP 报文(LCP、CHAP、IPCP、IP 数据)原封不动地封装在 PPPoE 头部之后进行传输。
简而言之,PPPoE = “在以太网上传输 PPP”的方法。
7 PPPoE 协议的配置
PPPoE 的配置分为客户端和服务端。
7.1 客户端配置
客户端配置对普通用户非常熟悉。配置可以在 PC 上(如 Windows 的”宽带连接”)或家庭路由器上进行。
-
PC 拨号: 用户在操作系统中创建”宽带连接”,输入 ISP 提供的用户名和密码。此时 PC 直接获取公网 IP。
-
路由器拨号: 这是目前最常见的方式。用户在路由器的 WAN 口设置中选择”PPPoE”模式,输入用户名和密码。路由器负责完成 PPPoE 拨号、获取公网 IP,然后通过 NAT(网络地址转换)将网络共享给局域网内的所有设备(如手机、电脑)。
7.2 服务器端配置
服务器端配置在 ISP 的接入集中器(AC),也称为 BAS 或 BRAS 上进行。配置相对复杂,主要包括:
-
启用 PPPoE 服务: 在 BAS 的物理接口或 VLAN 接口上启用 PPPoE Server 功能,使其能够响应 PADI 请求。
-
配置认证: 将 BAS 与后端的 RADIUS 服务器关联。当收到客户端的 CHAP/PAP 认证请求时,BAS 将用户名和密码信息转发给 RADIUS 服务器进行验证。
-
配置地址池: 在 BAS 上配置一个 IP 地址池。当 RADIUS 服务器认证通过后,BAS 从该地址池中取出一个 IP 地址,通过 IPCP 分配给客户端。
8 PPPoE 协议抓包与格式分析
通过使用 Wireshark 等抓包工具,可以清晰地观察 PPPoE 的通信过程。
8.1 抓包分析
在 PC 上进行 PPPoE 拨号,并使用 Wireshark 捕获数据包。可以设置显示过滤器 ppoed 来查看发现阶段报文,pppoes 来查看会话阶段报文。
发现阶段:
-
PADI: 能看到源 MAC 是本机 MAC,目标 MAC 是广播地址
ff:ff:ff:ff:ff:ff。PPPoE Code 为0x09,Session ID 为0x0000。 -
PADO: 源 MAC 是 AC 的 MAC,目标 MAC 是本机 MAC。Code 为
0x07,Session ID 为0x0000。 -
PADR: 源 MAC 是本机 MAC,目标 MAC 是 AC 的 MAC。Code 为
0x19,Session ID 为0x0000。 -
PADS: 源 MAC 是 AC 的 MAC,目标 MAC 是本机 MAC。Code 为
0x65,此时 Session ID 被分配了一个非零值(例如0x01a2)。
会话阶段:
-
此后所有的报文(LCP、CHAP、IPCP、IP 数据)的 EtherType 均为
0x8864。PPPoE Code 均为0x00,Session ID 均为协商好的0x01a2。 -
在 Wireshark 中可以清晰地看到报文的封装层次:
[Frame] -> [Ethernet II] -> [Point-to-Point Protocol Over Ethernet] -> [Point-to-Point Protocol] -> [IP / LCP / IPCP ...]。
8.2 PPPoE 帧格式
PPPoE 报文封装在以太网帧中,其头部格式(6 字节)非常简洁:
| 字段 | 位数 | 说明 |
|---|---|---|
| VER | 4 bits | 版本号,必须为 0x1 |
| TYPE | 4 bits | 类型,必须为 0x1 |
| CODE | 8 bits | 报文类型。如 0x09 (PADI), 0x07 (PADO), 0x00 (Session Data) 等 |
| SESSION_ID | 16 bits | 会话 ID。在发现阶段,PADI/PADO/PADR 中为 0x0000;在 PADS 中由 AC 分配 |
| LENGTH | 16 bits | 载荷(Payload)的长度,即 PPP 报文的长度 |
这个 6 字节的头部加上 2 字节的 PPP 协议 ID(0x0021 代表 IP),总共占用了 8 字节。这就是为什么在 1500 字节的以太网 MTU 下,PPPoE 的 MTU(即 PPP 载荷的 MRU)通常是 1492 字节(1500 - 8 = 1492)。
参考文献
[1] IETF. RFC 2516 - A Method for Transmitting PPP Over Ethernet (PPPoE)[S]. 1999.
[2] 毛建军. 计算机网络原理与应用[M]. 北京:电子工业出版社, 2015.
[3] Kurose J F, Ross K W. 计算机网络:自顶向下方法[M]. 7 版. 北京: 机械工业出版社, 2018.
[4] 李晓. PPPoE 技术在宽带接入认证中的应用分析[J]. 计算机与电信, 2018(5): 30-33.













