PPPoE

PPPoE的阶段

PPPoE分为两个阶段：

PPPoE发现

由于传统的PPP连接是创建在串行链路或拨号时创建的ATM虚电路连接上的，所有的PPP帧都可以确保通过电缆到达对端。但是以太网是多路访问的，每一个节点都可以相互访问。乙太帧包含目的节点的物理地址（MAC地址），这使得该帧可以到达预期的目的节点。
因此，为了在以太网上创建连接而交换PPP控制报文之前，两个端点都必须知道对端的MAC地址，这样才可以在控制报文中携带MAC地址。PPPoE发现阶段做的就是这件事。除此之外，在此阶段还将创建一个会话ID，以供后面交换报文使用。

PPP会话

一旦连接的双方知道了对端的MAC地址，会话就创建了。

PPPoE发现阶段（PPPoED）

尽管传统的PPP是点对点协议，但是由于多个主机可以通过一个单独的物理连接连接到一个服务提供者，因此PPPoE本身就是一个客户端-服务器的关系。
发现过程包含四个步骤。主机作为客户端，ISP端的访问集中器作为服务器。这四步在下面详述。最后一步第五步是关闭一个现存会话的方法。

客户端到服务器：Initiation（PADI）

PADI为PPPoE Active Discovery Initiation的缩写。

如果一个用户想要使用DSL拨号连入Internet，那么他的计算机必须首先在其ISP的网络服务提供点（POP）找到DSL访问集中器（DSL-AC）。在以太网上通讯只能通过MAC地址。由于计算机不知道DSL-AC的MAC地址，于是就在以太网上广播一个PADI报文。这个报文中包含发送者的MAC地址。
PADI报文示例：
Frame 1 (44 bytes on wire, 44 bytes captured)
Ethernet II, Src: 00:50:da:42:d7:df, Dst: ff:ff:ff:ff:ff:ff
PPP-over-Ethernet Discovery
  Version: 1
  Type 1
  Code Active Discovery Initiation (PADI)
  Session ID: 0000
  Payload Length: 24
PPPoE Tags
  Tag: Service-Name
  Tag: Host-Uniq
    Binary Data: (16 bytes)
Src.（=source）包含发送计算机的MAC地址。
Dst.（=destination）为以太网广播地址。

PADI报文可能被一个以上的DSL-AC接收。
只有可以提供“服务名称”（Service-Name）的DSL-AC设备才应该回复。

服务器到客户端：Offer (PADO)

PADO为PPPoE Active Discovery Offer的缩写。

一旦用户计算机发送了PADI报文，DSL-AC就会使用PADI中提供的MAC地址回复一个PADO报文。PADO报文中包含了DSL-AC的MAC地址、名称以及服务名。如果多于一个POP的DSL-AC回复了PADO报文，用户计算机就使用提供的名称和服务来从中选择一个。
PADO报文示例：
Frame 2 (60 bytes on wire, 60 bytes captured)
Ethernet II, Src: 00:0e:40:7b:f3:8a, Dst: 00:50:da:42:d7:df
PPP-over-Ethernet Discovery
  Version: 1
  Type 1
  Code Active Discovery Offer (PADO)
  Session ID: 0000
  Payload Length: 36
PPPoE Tags
  Tag: AC-Name
    String Data: IpzbrOOl
  Tag: Host-Uniq
    Binary Data: (16 bytes)
AC-Name ->字符串数据包含了AC名称，这里为“Ipzbr001”（莱比锡的Arcor DSL-AC）
Src.包含了DSL-AC的MAC地址。

DSL-AC的MAC地址还包含了了DSL-AC的制造商信息（这里为北电网络）。

客户端到服务器：Request（PADR）

PADR为PPPoE Active Discovery Request的缩写。

当用户计算机收到一个来自DSL-AC的可接受的PADO报文后，就会发送一个PADR报文给DSL-AC，用来确认接受发送PADO报文的DSL-AC所提供的PPPoE连接。

服务器到客户端：Session-confirmation（PADS）

PADS为PPPoE Active Discovery Session-confirmation的缩写。

上面的PADR报文由DSL-AC的PADS报文进行确认，并在其中携带一个会话ID。用户计算机与此DSL-AC的连接现在就完整创建了。

任何一方：Termination（PADT）

PADT为PPPoE Active Discovery Termination的缩写。

这个报文终结用户计算机与POP的的连接，可由用户计算机或DSL-AC任意一方发送。