PPPoE报文的格式就是在以太网帧中携带PPP报文,如图所示。
各个字段解释如下:
- Destination_address域:一个以太网单播目的地址或者以太网广播地址(0xffffffff)。对于Discovery数据包来说,该域的值是单播或者广播地址,PPPoE Client寻找PPPoE Server的过程使用广播地址,确认PPPoE Server后使用单播地址。对于Session阶段来说,该域必须是Discovery阶段已确定的通信对方的单播地址。
- Source_address域:源设备的以太网MAC地址。
- Ether_type:设置为0x8863(Discovery阶段或拆链阶段)或者0x8864(Session阶段)。
- Ver域:4bits,PPPoE版本号,值为0x1。
- Type域:4bits,PPPoE类型,值为0x1。
- Code域:8bits,PPPoE报文类型。Code域为0x00,表示会话数据。Code域为0x09,表示PADI报文;Code域为0x07,表示PADO或PADT报文;Code域为0x19,表示PADR报文;Code域为0x65,表示PADS报文。报文的具体情况请参见附录部分。
- Session_ID域:16bits,对于一个给定的PPP会话,该值是一个固定值,并且与以太网Source_address和Destination_address一起实际地定义了一个PPP会话。值0xffff为将来的使用保留,不允许使用。
- Length域:16bits,定义PPPoE的Payload域长度。不包括以太网头部和PPPoE头部的长度。