PPPoE建立过程可以分为Discovery阶段和PPP会话阶段。Discovery阶段是一个无状态的阶段,该阶段主要是选择接入服务器,确定所要建立的PPP会话标识符Session ID,同时获得对方点到点的连接信息;PPP会话阶段执行标准的PPP过程。
一、发现阶段(Discovery)
1、 PADI:PPPoE发现阶段的第一步。用户主机以广播的方式发送PADI数报包,请求建立链路。Code域置为0x09,会话ID域必须置为0x0000。
2.PADO:PPPoE发现阶段的第二步。访问BRAS以单播的方式发送一个PADO数据包对主机的请求做出应答。目的地址为主机的MAC地址,Code域置为0x07,会话ID域必须置为0x0000。PADO数据包必须包含一个类型为AC-Name的Tag(包含了访问BRAS的名字)
3. PADR:PPPoE发现阶段的第三步。因为PADI数据包是广播的,所以主机可能收到不止一个的PADO报文。主机在收到报文后,会根据BRAS-Name或者PADO所提供的服务来选择
一个BRAS,然后主机向选中的BRAS单播一个PADR数据包。目的地址域为BRAS的MAC地址,Code域置为0x19,会话ID域必须置为0x0000。PADR报文必须且只能包含一个Tag_Type为Service-Name的Tag,表明主机请求的服务。
4. PADS:PPPoE发现阶段最后一步。当BRAS在收到PADR报文时,就准备开始一个PPP的会话了。它为PPPoE会话创建一个唯一的会话ID并用单播一个PADS数据包来给主机做出响应。目的地址域为主机的MAC地址,Code域置为0x65,会话ID必须设置为所创建好的会话ID。
二、会话阶段(PPP)
PPP会话的建立,需要两端的设备都发送LCP(Link Control Protocol)数据包来配置和测试数据通信链路。
Ⅰ LCP协商阶段
LCP的Request主机和BRAS都要给对方发送,LCP协商阶段完成最大传输单元,是否进行认证和采用何种认证方式的协商。
Ⅱ 认证阶段
会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的IPCP协商。认证过程在链路协商LCP结束后就进行。
可以抓到PPPoE拨号的用户名和密码(明文显示)还有主机名等相关信息。
Ⅲ IPCP协商阶段
用户和接入设备对IP服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。如:IP业务阶段使用的IP压缩协议等。双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。最后双方都需要对方答复Configure_Ack的同意报文。