通过分析移动宽带的数据包了解PPPoE

来源:互联网 发布:淘宝三大零食店铺 编辑:程序博客网 时间:2024/04/30 05:25

先来介绍下PPPoE的工作流程:

PPPoE协议的工作流程包含发现和会话两个阶段,目的是获得PPPoE终结端的MAC地址,并建立一个唯一的PPPoE SESSION-ID。发现阶段结束后,就进入标准的PPP会话阶段。
当一个主机想开始一个PPPoE会话,它必须首先进行发现阶段,并建立一个PPPoE SESSION-ID。


这是我抓到的数据包


发现阶段:

在发现阶段中主机以广播方式寻找所连接的接入设备,并获得其以太网MAC地址。然后选择需要连接的主机,并确定所要建立的PPP会话标识号码。发现阶段有4个步骤,当此阶段完成,通信的两端都知道PPPoE SESSION-ID和对端的以太网地址,他们一起唯一定义PPPoE会话。这4个步骤如下。


1.PADI


主机广播发起分组(PADI),分组的目的地址为以太网的广播地址0×ffffffffffff,CODE(代码)字段值为0×09,SESSION-ID(会话ID)字段值为0×0000,向接入设备提出所要求提供的服务。


2.PADO


接入设备收到在服务范围内的PADI分组,发送PPPoE有效发现提供包(PADO)分组,以响应请求。其中CODE字段值为0×07,SESSION-ID字段值仍为0×0000,表明可向主机提供的服务。


3.PADR


主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入设备发送PPPoE有效发现请求分组(PADR)。其中CODE字段为0×19,SESSION_ID字段值仍为0×0000。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。


4.PADS


接入设备收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65,SESSION-ID字段值为接入交换机所产生的一个唯一的PPPoE会话标识号码(这里是0x6430)。当主机收到PADS分组确认后,双方就进入PPP会话阶段。


会话阶段:

LCP:


LCP用于建立、拆除和监控PPP数据链路,还用于链路层参数的协商,如MRU、验证方式。如果通信双方希望通过PPP协议建立点对点的通信,无论哪一端都要发送LCP报文来建立链路。LCP配置参数选项协商完后,通信双方就会根据LCP配置请求报文中所协商的认证配置参数选项,决定链路两端设备所采用的认证方式。这里经协商采用CHAP认证方式。


CHAP:


接入设备通过Challenge报文发送给认证客户端,客户端收到Challenge报文后,将密码和Challenge做MD5算法后的Challenge—Password,在Response回应报文中把它发送给接入设备接入设备将Challenge、challenge-Password和用户名一起送到RADIus用户认证服务器,由RADIUS用户认证服务器进行认证。RADIUS用户认证服务器根据用户信息判断用户是否合法,然后回应认证成功/失败报文到接入设备。如果成功,携带协商参数,以及用户的相关业务属性给用户授权。如果认证失败,则流程到此结束。接入设备将认证结果返回给客户端。


IPCP:


用户进行IPCP协商,通过接入设备获取到规划的IP地址等参数。认证如果成功,接入设备发起计费开始请求给RADIUS用户认证服务器。RADIUS用户认证服务器回应计费开始请求报文。用户上线完毕,开始上网


结束:



退出时用户和接入设备先互相发送PPP-LCF Termination再发送PADT。

PADT分组,它可以在会话建立后的任何时候发送,来终止PPPOE会话。它可以由客户端或者PPPOE服务器发送。当接收到一个PADT,不再允许使用这个会话来发送PPP业务。

但是我不懂得是为什么在PADT前还要加入PPP-LCF Termination Request Ack 的过程呢?

若有人明白为什么,请告诉我。

0 0
原创粉丝点击