视频加载失败

课程

6577 字
约 19 分钟

《计算机网络》课后探研题书面报告

计算机网络exercises/Q2·更新于 2026-09-15

《计算机网络》课后探研题书面报告

课后探研题 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 的运行机制、封装格式和两个关键阶段:

  1. 发现阶段: 定义了客户端(Host)如何在以太网中发现接入集中器(Access Concentrator, AC),以及两者如何协商建立一个唯一的会话标识(Session ID)。此阶段涉及 PADI、PADO、PADR、PADS 四种类型的报文。
  2. 会话阶段: 定义了在发现阶段建立的会话通道上,如何封装 PPP 报文进行传输。

此外,RFC 2516 还定义了 PPPoE 的以太网帧类型(EtherType):0x8863 用于发现阶段,0x8864 用于会话阶段。


3 PPPoE 协议工作原理

PPPoE 的工作过程严格划分为发现阶段、会话阶段和终结阶段。其核心是在客户端和服务器之间建立一个由双方 MAC 地址和 Session ID 共同标识的逻辑隧道。

3.1 发现阶段

此阶段的目的是让客户端在局域网中找到一个 PPPoE 服务器(AC),并获取一个唯一的 Session ID。这个过程涉及四个步骤:

  1. PADI(PPPoE Active Discovery Initiation): 客户端(用户的 PC 或路由器)需要上网时,它会在局域网中以广播形式发送一个 PADI 包。该以太网帧的目标 MAC 地址为 ff:ff:ff:ff:ff:ff。PADI 包中可以包含客户端希望的服务类型(Service Name),但通常为空,表示接受任何服务。

  2. PADO(PPPoE Active Discovery Offer): 局域网内所有能提供 PPPoE 服务的 AC(接入集中器)收到 PADI 后,会以单播形式向客户端回复一个 PADO 包。PADO 包中包含了 AC 的名称和服务类型,表示”我可以提供服务”。

  3. PADR(PPPoE Active Discovery Request): 客户端可能会收到多个 PADO 包。它会根据 AC 名称或服务类型选择一个(通常是第一个到达的),并向选定的 AC 单播发送一个 PADR 包,表示”我请求与你建立连接”。

  4. PADS(PPPoE Active Discovery Session-confirmation): 被选中的 AC 收到 PADR 后,会生成一个唯一的 Session ID,并通过单播 PADS 包发送给客户端,确认会话建立。

发现阶段至此结束。客户端和服务器都记录了对方的 MAC 地址以及这个唯一的 Session ID。

3.2 会话阶段

发现阶段成功建立会话后,PPPoE 进入会话阶段。此阶段所有的数据帧都使用 0x8864 的 EtherType,并且 PPPoE 头部都携带着在 PADS 中协商好的 Session ID。此阶段实质上就是标准的 PPP 协商和数据传输过程:

  1. PPP LCP 协商: 首先进行 LCP 协商,用于建立、配置和测试数据链路。协商内容主要包括最大接收单元(MRU)——通常设为 1492 字节(1500B 的以太网 MTU 减去 6B 的 PPPoE 头和 2B 的 PPP ID),以及认证方式(如 CHAP 或 PAP)。

  2. PPP 认证: LCP 协商完成后,进入认证阶段。客户端根据协商好的认证方式(通常是更安全的 CHAP),向 AC 发送加密的用户名和密码。AC 将认证信息转发给后端的 RADIUS 服务器进行验证。

  3. 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 协议的成功在于它巧妙地结合了多种技术的优点,其主要特点包括:

  1. 广泛的适用性: PPPoE 构建于以太网之上,使得 ISP 可以利用现有的、低成本的以太网基础设施为大量用户提供接入服务。

  2. 强大的管理功能: 它继承了 PPP 协议的认证(CHAP/PAP)、加密和压缩功能,使 ISP 能对每个用户进行精细化的身份验证和授权管理。

  3. 会话管理: 通过唯一的 Session ID,PPPoE 为每个用户建立了一个逻辑上的点对点会话。这极大地简化了 ISP 的计费、限速和故障排查工作。

  4. 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 上进行。配置相对复杂,主要包括:

  1. 启用 PPPoE 服务: 在 BAS 的物理接口或 VLAN 接口上启用 PPPoE Server 功能,使其能够响应 PADI 请求。

  2. 配置认证: 将 BAS 与后端的 RADIUS 服务器关联。当收到客户端的 CHAP/PAP 认证请求时,BAS 将用户名和密码信息转发给 RADIUS 服务器进行验证。

  3. 配置地址池: 在 BAS 上配置一个 IP 地址池。当 RADIUS 服务器认证通过后,BAS 从该地址池中取出一个 IP 地址,通过 IPCP 分配给客户端。


8 PPPoE 协议抓包与格式分析

通过使用 Wireshark 等抓包工具,可以清晰地观察 PPPoE 的通信过程。

8.1 抓包分析

在 PC 上进行 PPPoE 拨号,并使用 Wireshark 捕获数据包。可以设置显示过滤器 ppoed 来查看发现阶段报文,pppoes 来查看会话阶段报文。

发现阶段:

  1. PADI: 能看到源 MAC 是本机 MAC,目标 MAC 是广播地址 ff:ff:ff:ff:ff:ff。PPPoE Code 为 0x09,Session ID 为 0x0000

  2. PADO: 源 MAC 是 AC 的 MAC,目标 MAC 是本机 MAC。Code 为 0x07,Session ID 为 0x0000

  3. PADR: 源 MAC 是本机 MAC,目标 MAC 是 AC 的 MAC。Code 为 0x19,Session ID 为 0x0000

  4. 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 字节)非常简洁:

字段位数说明
VER4 bits版本号,必须为 0x1
TYPE4 bits类型,必须为 0x1
CODE8 bits报文类型。如 0x09 (PADI), 0x07 (PADO), 0x00 (Session Data) 等
SESSION_ID16 bits会话 ID。在发现阶段,PADI/PADO/PADR 中为 0x0000;在 PADS 中由 AC 分配
LENGTH16 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.

Profile Image of the Author
Sonder
好想要技术
这是公告标题
这只是一个公告
分类
标签
站点信息
构建平台
GitHub Actions
博客版本
Firefly v6.16.7
文章许可
CC BY-NC-SA 4.0
文章目录