PPPoE工作原理与帧格式

以下内容摘自笔者的《网络工程师必读――接入网与交换网》一书(如感兴趣,请加入我的技术圈子:[url]http://group.51cto.com/lycb[/url]一起讨论学习):

4.3.2 P PPoE协议工作原理

PPPoE 协议的工作流程包含发现和会话两个阶段,发现阶段是无状态的,目的是获得 PPPoE 终结端(在局端的 ADSL 设备上)的以太网 MAC 地址,并建立一个唯一的 PPPoESESSION_ID 。发现阶段结束后,就进入标准的 PPP 会话阶段。
当一个主机想开始一个 PPPoE 会话,它必须首先进行发现阶段,以识别局端的以太网 MAC 地址,并建立一个 PPPoESESSION_ID 。在发现阶段,基于网络的拓扑,主机可以发现多个接入集中器,然后允许用户选择一个。当发现阶段成功完成,主机和选择的接入集中器都有了他们在以太网上建立 PPP 连接的信息。直到 PPP 会话建立,发现阶段一直保持无状态的 Client/Server (客户 / 服务器)模式。一旦 PPP 会话建立,主机和接入集中器都必须为 PPP 虚接口分配资源。
PPPoE 协议会话的发现和会话两个阶段具体进程如下:

1. 发现(Discovery)阶段

在发现( Discovery )阶段中用户主机以广播方式寻找所连接的所有接入集线器(或交换机),并获得其以太网 MAC 地址。然后选择需要连接的主机,并确定所要建立的 PPP 会话识别标号。发现阶段有四个步骤,当此阶段完成,通信的两端都知道 PPPoESESSION_ID 和对端的以太网地址,他们一起唯一定义 PPPoE 会话。这四个步骤如下:
1 )主机广播一个发起分组( PADI ),分组的目的地址为以太网的广播地址 0xffffffffffff CODE (代码)字段值为 0x09 SESSION_ID (会话 ID )字段值为 0x0000 PADI 包必须至少包含一个服务名称类型的标签(标签类型字段值为 0x0101 ),向接入集中器提出所要求提供的服务。
2 )接入集中器收到在服务范围内的 PADI 包分组,发送 PPPoE 有效发现提供包( PADO )分组,以响应请求。其中 CODE 字段值为 0x07 SESSION_ID 字段值仍为 0x0000 PADO 分组必须包含一个接入集中器名称类型的标签(标签类型字段值为 0x0102 ),以及一个,或多个服务名称类型标签,表明可向主机提供的服务种类。
3 )主机在可能收到的多个 PADO 分组中选择一个合适的 PADO 分组,然后向所选择的接入集中器发送 PPPoE 有效发现请求分组( PADR )。其中 CODE 字段为 0x19 SESSION_ID 字段值仍为 0x0000 PADR 分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到 PADO ,它应该重新发送它的 PADI 分组,并且加倍等待时间,这个过程会被重复期望的次数。
4 )接入集中器收到 PADR 包后准备开始 PPP 会话,它发送一个 PPPoE 有效发现会话确认( PADS )分组。其中 CODE 字段值为 0x65 SESSION_ID 字段值为接入集中器所产生的一个惟一的 PPPoE 会话标识号码。 PADS 分组也必须包含一个接入集中器名称类型的标签确认向主机提供的服务。当主机收到 PADS 包确认后,双方就进入 PPP 会话阶段。
【注意】如果主机正在等待接收 PADS 分组,应该使用具有主机重新发送 PADR 的相似超时机制。在重试指定的次数后,主机应该重新发送 PADI 分组。

2. PPP会话阶段

用户主机与接入集中器根据在发现阶段所协商的 PPP 会话连接参数进行 PPP 会话。一旦 PPPoE 会话开始, PPP 数据就可以以任何其它的 PPP 封装形式发送。所有的以太网帧都是单播的。 PPPoE 会话的 SESSION_ID 一定不能改变,并且必须是发现阶段分配的值。
PPPoE 还有一个 PADT 分组,它可以在会话建立后的任何时候发送,来终止 PPPoE 会话,也就是会话释放。它可以由主机或者接入集中器发送。当对方接收到一个 PADT 分组,就不再允许使用这个会话来发送 PPP 业务。 PADT 包不需要任何标签,其 CODE 字段值为 0xa7 SESSION_ID 字段值为需要终止的 PPP 会话的会话标识号码。在发送或接收 PADT 后,即使正常的 PPP 终止分组也不必发送。 PPP 对端应该使用 PPP 协议自身来终止 PPPoE 会话,但是当 PPP 不能使用时,可以使用 PADT
以上各个阶段的会话流程可用图 4-5 描述。
4-5  PPPoE 会话建立流程

4.3.3 P PPoE帧格式

对应于上节介绍的两个 PPPoE 协议会话的两个阶段, PPPoE 帧格式也包括两种类型:发现阶段的以太网帧中的类型字段值为 0x8863 PPP 会话阶段的以太网帧中的类型字段值为 0x8864 ,均已得到 IEEE 的认可。 PPPoE 分组帧结构如图 4-6 所示。
4-6  PPPoE 帧结构
PPPoE 分组中的版本( VER 字段和类型( TYPE )字段长度均为 4 比特,在当前版本 PPPoE 建议中这两个字段值都固定为 0x1 。代码( CODE )字段长度为 8 比特,根据两阶段中各种数据包的不同功能而值不同。在 PPP 会话阶段 CODE 字段值为 0x00 ,发现阶段中的各步骤中的各种数据分组格式参见前面介绍。版本标识号码( SESSION_ID )字段长度为 16 比特,在一个给定的 PPP 会话过程中它的值是固定不变的,其中值 0xffffff 为保留值。长度( LENGTH )字段为 16 比特长,指示 PPPoE 净荷长度。发现阶段 PPPoE 载荷可以为空或由多个标记( TAG )组成,每个标记都是 TLV (类型 - 长度 - 值)的结构; PPP 会话阶段 PPPoE 载荷为标准的点对点协议包。

你可能感兴趣的:(职场,休闲,pppoe)