定义
通过PPPOE,在一个共享的以太网上的多个主机,可以通过一个或多个简单的桥接入设备,与远程接入集中器进行多个PPP会话。使用这种模型,每个主机使用它自己的PPP协议栈,并且提供给用户一个熟悉的用户接口。接入控制、计费和服务类型能够基于每用户,而不是每站点来处理。PPPOE包含发现和PPP会话两个阶段,发现阶段是无状态的Client/Server模式,目的是获得PPPOE终结端的以太网MAC地址,并建立一个唯一的PPPOESESSION_ID。发现阶段结束后,就进入标准的PPP会话阶段。
协议基本框架
PPPOE协议参照RFC2516。PPPOE实现PPP帧在Ethernet上的适配,并提供Ethernet上的PPP连接。图1和图2分别是以太网上的PPPOE协议栈和AAL5上的PPPOE协议栈。
PPPOE连接示意图
图3显示了典型的PPPOE的连接方式
PPPOE通信流程
PPPOE有两个不同的阶段:发现阶段和PPP会话阶段。当一个主机想开始一个PPPOE会话,它必须首先进行发现阶段以识别对端的以太网MAC地址,并建立一个PPPOESESSION_ID。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器。发现阶段答应主机发现所有的接入集中器,然后选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立PPP连接的信息。直到PPP会话建立,发现阶段一直保持无状态的状态。一旦PPP会话建立,主机和接入集中器都必须为PPP虚接口分配资源。图4显示了PPPOE通信流程。
发现阶段
发现阶段有四个步骤,当此阶段完成,通信的两端都知道PPPOESESSION_ID和对端的以太网地址,他们一起唯一定义PPPOE会话。这些步骤包括:主机广播一个发起分组(PADI),一个或多个接入集中器发送给予分组(PADO),主机发送单播会话请求分组(PADR),选择的接入集中器发送一个确认分组(PADS)。当主机接收到确认分组,它可以开始进行PPP会话阶段。当接入集中器发送出确认分组,它可以开始进行PPP会话阶段。
当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。假如主机正在等待接收PADS,应该使用具有主机重新发送PADR的相似超时机制。在重试指定的次数后,主机应该重新发送PADI分组。
PPPOE还有一个PADT分组,它可以在会话建立后的任何时候发送,来终止PPPOE会话。它可以由主机或者接入集中器发送。当接收到一个PADT,不再答应使用这个会话来发送PPP业务。在发送或接收PADT后,即使正常的PPP终止分组也不必发送。PPP对端应该使用PPP协议自身来终止PPPOE会话,但是当PPP不能使用时,可以使用PADT。
PPP会话阶段
一旦PPPOE会话开始,PPP数据就可以以任何其它的PPP封装形式发送。所有的以太网帧都是单播的。PPPOE会话的SESSION_ID一定不能改变,并且必须是发现阶段分配的值。
PPPOE的LCP配置选项
PPPoverEthernet(RFC2516)建议进行魔数选项协商,不建议进行协议域压缩选项(PFC)协商。实现中必须不请求进行任何下面的选项协商,并且必须拒绝这样选项协商的请求:FieldCheckSequence(FCS)Alternatives,Address-and-Control-Field-Compression(ACFC),Asynchronous-Control-Character-Map(ACCM)
MRU必须不能大于1492。
建议接入集中器偶然向主机发送Echo_Request报文,来决定会话的状态。否则,假如主机没有发送Terminate_Request报文就终止了会话,接入集中器将会不能决定会话已经终止了。
当LCP终止,主机和接入集中器必须停止使用这个PPPOE会话。假如主机希望开始另一个PPP会话,它必须返回到PPPOE的发现阶段。
Greenfoot是一款简单易用的Java开发环境,该软件界面清爽简约,既可以作为一个开发框使用,也能够作为集成开发环境使用,操作起来十分简单。这款软件支持多种语言,但是默认的语言是英文,因此将该软件下载到电脑上的时候,会发现软件的界面语言是英文版本的,这对于英语基础较差的朋友来说,使用这款软件就会...
07-05
Egret UI Editor是一款开源的2D游戏开发代码编辑软件,其主要功能是针对Egret项目中的Exml皮肤文件进行可视化编辑,功能十分强大。我们在使用这款软件的过程中,可以将一些常用操作设置快捷键,这样就可以简化编程,从而提高代码编辑的工作效率。但是这款软件在日常生活中使用得不多,并且专业性...
07-05
KittenCode是一款十分专业的编程软件,该软件给用户提供了可视化的操作界面,支持Python语言的编程开发以及第三方库管理,并且提供了很多实用的工具,功能十分强大。我们在使用这款软件进行编程开发的过程中,最基本、最常做的操作就是新建项目,因此我们很有必要掌握新建项目的方法。但是这款软件的专业性...
07-05
Thonny是一款十分专业的Python编辑软件,该软件界面清爽简单,给用户提供了丰富的编程工具,具备代码补全、语法错误显示等功能,非常的适合新手使用。该软件还支持多种语言,所以在下载这款软件的时候,有时候下载到电脑中的软件是英文版本的,这对于英语基础较差的小伙伴来说,使用这款软件就会变得十分困难,...
07-05