PPPOE协议简介( 二 )


2. 接入设备收到在服务范围内的PADI包后,发送PPPOE有效发现提供(PADO) 包以响应请求 。其CODE字段为0x07,SESSION_ID仍为0x0000 。PADO包必须包含一个接入设备名称类型(AC-Name)的标签(标签类型字段为0x0102)以及一个或多个服务名称类型标签,表明可向用户主机提供的服务种类 。
3.用户主机在可能收到的多个PADO包中选择一个合适的接入设备,选择的原则是根据PADO中接入设备名称类型标签和服务名称类型标签的内容 。然后向所选择的接入设备发送PPPOE有效发现请求(PADR)包 。其CODE 字段为0x19,SESSION_ID仍为0x0000 。PADR包必须包一个服务名称类型标签,确定向接入设备请求的服务种类 。当一个用户主机在确定时间没有收到PADO,他会重发一个PADI,同时等待两倍的时间 。这种过程可以根据需要重复多次 。
4.接入设备收到PADR包后预备开始PPP会话,它发送一个PPPOE 有效发现会话确认( PADS)包 。其CODE 字段为0x65,SESSION_ID为接入设备所产生的一个唯一的PPPOE会话标识号码 。0xffff作为预留资源,目前不能被使用作SESSION_ID 。PADS包也必须包含一个服务名称类型的标签确认向用户主机提供的服务 。当用户主机收到PADS包确认后,双方就进入PPP会话阶段 。假如接入设备不能识别PADR中的服务名称类型的标签,则会回一个包含服务名称错误( Service-Name-Error ) 标签的PADS,其SESSION_ID仍然是0x0000 。假如用户主机在确定时间没收到PADS包,与没收到PADO作同样处理 。
还有一种PPPOE有效发现终止(PADT)包,在一个PPP会话建立后它随时可由用户主机或接入设备中任何一方发送,指示PPP会话已终止 。PADT包不需要任何标签,其CODE字段为0xa7,SESSION_ID 为需要终止的PPP会话的会话标识号码 。
安全性
为防止DOS(Denial of Service)攻击,接入设备应该可以使用AC-Cookie属性,接入设备应可以根据PADR中的源地址唯一再生成一个值,这样就而已保证PADI的源地址是真正可达,同时限制与这个地址同时连接数量 。这个算法细节并没有在RFC2516中具体描述 。虽然AC-Cookie在反DOS攻击方面很有效,但它并不能防止所有DOS攻击,在接入设备上也可以采用其他方法来对抗DOS 。
常用PPPOE软件
PPPOE软件的作用就是连接操作系统的PPP协议和Ethernet协议,并通过PPPOE协议连接
ISPEnterNet:由NTS.COM 开发(现在已经并入Efficient Networks这个有名的设备开发制造公司),自己具备独立的PPP协议,可以不依靠操作系统的拨号网络来提供PPP协议,具有直接通过网卡和ISP连接的能力,目前是最通用和流行的PPPOE 软件,并且支持多种操作系统,目前已经提供有Windows,Linux,MacOS的版本,并且根据功能的多少又分为100、300、500等多个系列 。该软件的300系列最流行,已经被多家特大型的ISP采用,例如法国电信,中国电信,在其网站提供有30天试用版 。
WinPoET:由iVasion.com 开发(现在已经改为WindRiver 公司), 它是PPPOE 协议起草者之一,它在PPPOE软件中也占有极大的份额,许多特大型ISP也采用它 。它通过操作系统的拨号网络来提供PPP协议,所以在使用上和我们使用普通56K拨号上网非常相似,它只是在后台静静地进行着PPPOE服务 。它的网站目前停止了该软件的下载评估,软件只批量卖给ISP
RASPPPOE:个人开发的PPPOE驱动软件,小巧精干,没有自己的界面面板完全只是一个驱动程序,也是依靠操作系统拨号网络来提供PPP协议,由于它是以网络协议组件的形式来工作,所以在使用上,完全和使用老式的Modem一样简单 。
Access Manager/IHS:实质就是EnterNet 300,只是打上了BELL的ISP接入服务部门Sympatico的商标 。

推荐阅读