了解PPPoE协议的发现阶段

网络 网络管理
下面我们来对PPPoE协议以及发现阶段的内容进行一下介绍。通过文章内容,我们能够了解到基础的概念,在之后的一系列文章中,我们还对这些内容进行一下细化和补充。

这里我们来对PPPoE协议的一些内容进行一下具体的分析。我们以前也曾学习过PPP协议,想必大家在学习PPPoE的时候也会更容易理解。这次我们也会涉及到PPPoE的发现阶段的讲述。PPPoE协议的数据报文是被封装在以太网帧的数据域内的。

以太网帧头包括:

1. 目的MAC地址(该阶段为ffffffffffff的广播地址)

2. 源MAC地址(客户端MAC地址)

3. 以太网协议类型(该阶段为0x8863,表示为发现阶段)。

PPPoE数据报文的格式:

1. PPPoE数据报文最开始的4位为版本域(Version),协议中给出了明确的规定,这个域填充的内容为0x01.

2. 版本域后是4位的类型域(Type),根据协议规定,这个域填充的内容也是0x01.

3. 代码域(Code)占用一个字节,对于PPPoE的不同阶段这个域内容也不一样。

4. 会话ID(Session ID)占用两个字节,当访问集中器(Access Concentrator)还没有分配唯一的会话ID给用户主机的话,改域的内容必须填充为0x0000;一旦主机获取了会话ID后,那么在后续的所有报文里面必须填充那个唯一的会话ID。

5. PPPoE协议的Payload长度(Length)占两个字节。PPPoE的Payload可以由多个TLV组成,每个包括Tag_Type,Tag_Length,Tag_Vlaue。

发现阶段

PPPoE的发现阶段一共分为4步,分别是:PADI(PPPoE Active Discovery Initiation),PADO(PPPoE Active Discovery Offer),PADR(PPPoE Active Discovery Request),PADS(PPPoE Active Discovery Session-confirmation)。当完成这四步之后,用户主机(PC)和访问集中器(AC)双方就能获知对方唯一的MAC地址和唯一的会话ID。MAC地址和会话ID 共同定义了唯一的PPPoE会话。PPPoE Discovery的以太网类型域为0x8863。

1. PADI:PPPoE发现阶段的第一步。用户主机以广播的方式发送PADI数报包,请求建立链路。Code域置为0x09,会话ID域必须置为0x0000。

2. PADO:PPPoE发现阶段的第二步。访问集中器(AC)以单播的方式发送一个PADO数据包对主机的请求做出应答。目的地址为主机的MAC地址,Code域置为0x07,会话ID域必须置为0x0000。PADO数据包必须包含一个类型为AC-Name的Tag(包含了访问集中器的名字)。

3. PADR:PPPoE发现阶段的第三步。因为PADI数据包是广播的,所以主机可能收到不止一个的PADO报文。主机在收到报文后,会根据AC-Name或者PADO所提供的服务来选择一个AC,然后主机向选中的AC单播一个PADR数据包。目的地址域为AC的MAC地址,Code域置为0x19,会话ID域必须置为0x0000。PADR报文必须且只能包含一个Tag_Type为Service-Name的Tag,表明主机请求的服务。

4. PADS:PPPoE发现阶段最后一步。当AC在收到PADR报文时,就准备开始一个PPP的会话了。它为PPPoE会话创建一个唯一的会话ID并用单播一个PADS数据包来给主机做出响应。目的地址域为主机的MAC地址,Code域置为0x65,会话ID必须设置为所创建好的会话ID。

注意:

1. Host-Uniq

在PPPoE协议的发现阶段的四个步骤中,PPPoE头的Payload中始终含有这样一个TLV:

Tag_Type = 0103 (表示为Host-Uniq)

Tag_Length = 8 (8个字节的长度)

Tag_Value = 0500000008000000

Host-Uniq为主机唯一标识,类似于PPP数据报文中的标识域,主要是用来匹配发送和接收端的。因为对于广播式的网络中会同时存在很多个PPPoE的数据报文。

2. AC-Cookie

PADO和PADR数据包里面都含有Tag_Type为AC-Cookie的Tag,16Bytes。Ac-Cookie是为了防止拒绝服务攻击(Denial of Service,简称DOS)。访问集中器(AC)能够根据PADR的源地址来重新产生唯一的Tag_Value。使用这种方法,AC可以确保PADI的源地址是可达的,并对该地址的并行会话数进行限制。
 

责任编辑:佟健 来源: hi.baidu.com
相关推荐

2009-12-29 10:43:31

PPPOE协议

2009-09-17 10:06:21

云计算

2018-03-26 08:20:57

PPPOE认证宽带

2013-11-14 11:04:42

七类综合布线

2019-10-10 09:43:50

编程语言JavaJavaScript

2010-09-02 15:50:01

PPPoE协议

2010-09-09 17:05:37

PPPoE协议

2010-07-06 17:05:22

PPPOE协议

2010-09-06 13:53:21

PPPoE协议

2010-07-01 16:41:33

PPPOE协议

2010-09-07 12:06:46

PPPoE协议

2010-09-06 16:35:18

PPPoE协议

2010-09-06 16:48:23

PPPoE协议BAS

2010-04-06 17:19:47

4G无线上网

2010-07-06 17:47:44

PPPoE协议

2010-09-16 13:03:02

PPPoE协议配置

2010-09-07 12:02:50

PPPoE协议

2010-09-07 14:21:22

PPPoE协议

2010-09-07 14:47:42

2010-09-27 14:31:35

PPPoE协议配置
点赞
收藏

51CTO技术栈公众号