PPP协议要求进行通信的双方之间是点到点的关系,不适于广播型的以太网和另外一些多点访问型的网络,于是就产生了PPPOE协议(Point-to-Point Protocol Over Ethernet)。它不仅为使用桥接以太网接入的用户提供了一种宽带接入手段,同时还能提供方便的接入控制和计费。每个接入用户均建立一个独一无二PPP的会话,因此会话建立之前必需知道远端访问集中设备的MAC地址,PPPOE协议可通过发现协议来获取到。
正如RFC2516中定义的,PPPoE有两个明显的阶段,发现阶段(PPPoE Discovery stage)和PPP会话阶段(PPPoE Session Stage)。
当主机希望开始一个PPPOE会话时,它首先要执行一个发现过程来识别对方的MAC地址,然后建立一个唯一的PPPOE会话ID。PPPOE使用一个发现协议来解决这个问题,它是基于客户/服务器模型的。由于以太网的广播特性,在这个过程中主机(客户)能发现所有的访问集中器(服务器),并选择其中一个,根据所获信息在两者之间建立点对点的连接。当一个PPP会话被建立起来之后,就完成了PPPOE的整个发现阶段。
发现阶段有四个步骤。当它完成时,PPPoE双方都知道了PPPoE SESSION_ID和对方的以太网地址,它们一起唯一定义了PPPoE会话:
- 主机广播一个初始数据包PADI(PPPOE Active Discovery Initiation) {PADI:主机发送一个广播,找PPPoE服务器,源为本地接口的mac地址,目标为FFFF.FFFF.FFFF.FFFF}
- 接入集中器发送有效发现提供数据包响应请求PADO(PPPOE Active Discovery Offer) {PADO:对客户端进行回应目的mac地址为客户端的mac地址}
- 用户主机向接入集中器以单播发送会话请求数据包PADR(PPPOE Active Discovery Request) {单播请求,要求建立链接}
- 被选中的接入集中器发送一个确认数据包PADS(PPPOE Active Discovery Session-confirmation){确认,如果用户名与密码全正确,则分配给ip地址,开始连入网络} 然后PPP经历标准的LCP和NCP(IPCP)过程,
下图显示了PPPoE是如何工作的:
下面是对过程进行抓包分析:
来源:oschina
链接:https://my.oschina.net/u/4367530/blog/4873314