PPPoE的验证方法以及对其的利用
二、PPPoE验证过程
1、PPPoE验证过程
首先了解一下PPPoE验证过程:
假如客户端要通过一个局域网与远程的PPPoE服务器进行身份验证,这时,它们会有两个不同的会话阶段,Discovery阶段和PPP会话阶段。当一个客户端想开始一个PPPoE会话时,它必须首先进行发现阶段以识别对端的以太网MAC地址,并建立一个PPPoESESSON_ID。在发现阶段,基于网络的拓扑结构,客户端可以发现多个PPPoE服务器,然后从中选择一个,不过通常都是选择反应最快的一个。
Discovery阶段是一个无状态的阶段,该阶段主要是选择接入服务器,确定所要建立的PPP会话标识符Session ID,同时获得对方点到点的连接信息;PPP会话阶段执行标准的PPP过程。当此阶段完成,通信的两端都知到PPPoESESSON_ID和对端的以太网地址,它们一起定义了一个唯一的PPPoE会话。这些步骤包括客户端广播一个发起分组(PASI),一个或多个PPPoE服务器发送响应分组(PADO),客户端向选中的服务器发送请求分组(PADR),选中的PPPoE服务器发送一个确认分组(PADS)给客户端。当客户端接收到确认分组,它可以开始进行PPP会话阶段。当PPPoE服务器发送出确认分组,它可以开始PPP会话。
当客户端在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。如果客户端正等待接收PADS,应该使用具有客户端重新发送PADR的相似超时机制。在重试指定的次数后,主机应该重新发送PADI分组。PPPOE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPOE会话。它可以由客户端或者PPPOE服务器发送。当接收到一个PADT,不再允许使用这个会话来发送PPP业务在发送或接收PADT后,即正常的PPP不能使用时,可以使用PADT,一旦PPPOE会话开始,PPP数据就可以以任何其它的PPP封装形式发送。所有的以太网帧都是单播的,身份验证是发生在会话阶段的,PPPoE会话的SESSION_ID一定不能改变,并且必须是发现阶段分配的值。
2、PPP over Ethernet基本帧格式
建立一个以太网上点对点协议会话包括两个阶段:1。发现(Discovery)阶段。在Discovery过程中用户主机以广播方式寻找可以连接的所有的接入集线器,并获得其以太网MAC地址。然后选择需要连接的主机并确定所要建立的PPP会话识别标号。2。PPP会话阶段。用户主机与接入集线器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。因此对应于这两种过程,以太网上点对点协议帧格式(如图2)也包括两种类型:发现阶段的以太网帧中的类型字段为0x8863;PPP会话阶段的以太网帧中的类型字段为0x8864,它们均已得到IEEE的认可。PPPoE包中的版本(VER) 字段和类型(TYPE)字段长度均为4比特,在当前版本PPPoE建议中这两个字段值都固定为0x1。代码(CODE)字段长度为8比特,根据两阶段中各种数据包的不同功能而值不同。在PPP会话阶段CODE字段为0x00,发现阶段中的各种数据包格式将在下面详细介绍发现阶段时给出。版本标识号码(SESSION_ID)字段长度为16比特,在一个给定的PPP会话过程中它是固定不变的。值0xffffff为保留值。长度(LENGTH)字段为16比特长,指示PPPoE净荷长度。发现阶段PPPoE载荷可以为空或由多个标记(TAG)组成,每个标记都是TLV(类型-长度-值)的结构;PPP会话阶段PPPoE载荷为标准的点对点协议包。
3、发现(Discovery)阶段的详细介绍
一个典型的发现(Discovery)阶段共包括4个步骤:
1、主机发出PPPoE有效发现启动(PADI)包。以太网目的地址为广播地址0xffffffffffff, CODE字段为0x09,SESSION_ID为0x0000。PADI包必须至少包含一个服务名称类型的标签(标签类型字段为0x0101),向接入集线器提出所要求提供的服务。
2、接入集线器收到在服务范围内的PADI包后,发送PPPoE有效发现提供(PADO)包以响应请求。其CODE字段为0x07,SESSION_ID仍为0x0000。PADO包必须包含一个接入集线器名称类型的标签(标签类型字段为0x0102)以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。
3、主机在可能收到的多个PADO包中选择一个合适的,然后向所选择的接入集线器发送PPPoE有效发现请求(PADR)包。其CODE字段为0x19,SESSION_ID仍为0x0000。PADR包必须包一个服务名称类型标签,确定向接入集线器请求的服务种类。
4、接入集线器收到PADR包后准备开始PPP会话,它发送一个PPPoE有效发现会话确认(PADS)包。其CODE字段为0x65,SESSION_ID为接入集线器所产生的一个唯一的PPPoE会话标识号码。PADS包也必须包含一个接入集线器名称类型的标签确认向主机提供的服务。当主机收到PADS包确认后,双方就进入PPP会话阶段。


















文章评论
共有 位CH网友发表了评论 查看完整内容