PPP over Ethernet(PPPoE)协议,是在以太网络中转播PPP帧信息的技术,尤其适用于ADSL等方式。可以使以太网的主机通过一个简单的桥接设备连到一个远端的接入集中器上。通过pppoe协议,远端接入设备能够实现对每个接入用户的控制和计费。PPPoE协议的作用是:实现有效的用户管理,进行网络接入计费等
PPPoE帧
PPPoE帧的内容作为以太帧的负载存在, 当一个以太帧为PPPoE帧时,其Len/Type字段应该为0x8863(表示PPPoE的发现阶段)或者0x8864(表示PPPoE的会话阶段)。
+ Ver: 版本号, 4bit, PPPoE规范的本版本为0x01
+ Type: 类型, 4bit, PPPoE规范的本版本应设置为0x01
+ Code:代码字段、8bit, 根据两阶段中各种数据包的不同功能而值不同。
Code | Description |
---|---|
0x00 | 表示PPP会话阶段 |
0x09 | PADI 报文 |
0x07 | PADO报文 |
0x19 | PADR报文 |
0x65 | PADS报文 |
+ Session-ID:会话ID, 8bit, 是一个网络字节序的无符号值, 其值会在Discovery数据包中定义。 对一个给定的PPP会话来说,该值是一个固定值。 Session-ID 与 以太网Src_addr 和 Dst_addr一起实际定义了一个PPP会话。 Session-ID不允许使用0xFFFF(该值保留作将来使用)。
+ Length: PPPoE负载长度,不包括以太网头部和PPPoE头部。
+ Payload: PPPoE帧的净负载,在不同的阶段PPPoE的Payload字段的格式有很大区别。在PPPOE的发现阶段时,该域内会填充一些Tag(标记);而在PPPOE的会话阶段,该域则携带的是PPP的报文。
下图是一个PPPoE的PADO报文
PPPoE链接 建立过程
PPPoE链路的建立 和PPP会话阶段
发现阶段:
会话阶段: