PPPoE会话解析

网络 网络管理
通过对PPPoE会话的了解,我们来对PPPoE的应用进行一下学习。那么这里我们就来具体看看我们的PPPoE会话的处理过程吧。

 

从PPPoE会话的内容中,我们可以了解到PPPoE应用的不同情况。那么我们在之前的文章中,也讲解了有关的内容。那么这里我们针对PPPoE会话,以及PPPoE协议的一些应用该内容再来进行一下具体的分析。PPP在拨号介入网络中的应用场景,先看一幅PPPoE接入场景图:

PPPoE场景1

用户在自己的PC上拨号以建立到达图中SSG设备的PPPoE通道.

下图和上图结构相同,在细节上画的更清晰了一些:

PPPoE场景2

从用户PC到modem,从modem到DSLAM,从DSLAM到PPPoE Server的链路和协议栈进本上在前文中都介绍了,读者可以在本场景图中自己回味一下.不清楚或者有疑问的地方欢迎和Hans做深入探讨.

下面介绍PPPoE协议的细节:

上图***行为Ethernet frame的格式,当ethernet type类型为0×8863时,表示payload承载的是PPPoE协商报文,当类型为0×8864时,表示承载的是PPPoE的会话数据报文.Payload部分就是PPPoE报文的内容了.

第二行中是PPPoE的报文头,版本、类型字段的数值恒为0×01.Code字段在各种报文中的数值不同,在后面会一一介绍.会话ID表示此报文为 哪个PPPoE会话的报文.长度字段表示后面Payload字段的长度.在这个层次上的Payload是一组的PPPoE标记(Tag).

第三行就显示了PPPoE Tag的组织格式,是以一串常见的TLV(类型、长度、值)三元组组成的.

标记(Tag)对照表:

标记类型

标记说明

0×0000

表示PPPOE报文数据域中一串标记的结束,为了保证版本的兼容性而保留,在有些报文中有应用。

0×0101

服务名,主要用来表明网络侧所能提供给用户的一些服务。

0×0102

访问集中器名,当用户侧接收到了AC的回应的PADO报文时,就可获从所携带的标记中获知访问集中器的名子,而且还可以据此来选择相应的访问集中器。

0×0103

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

0×0104

AC-Cookies,主要被用来防止恶意性DOS功击。

0×0105

销售商的标识符。

0×0110

中继会话ID,对于PPPOE的数据报文也同样可以像DHCP报文一样被中断到另外的AC上终结,这个字段则是用来维护另一个连接的。

0×0201

服务名错误,当请求的服务名不被对端所接受时,会在响应的报文中携带这个标记。

0×0202

访问集中器名出错。

0×0203

一般性错误。

PPPoE的协商流程:

1、PADI(PPPOE Active Discovery Initiation)报文

这是用户主机发起(广播方式)的一个PPPoE服务器探测报文.code字段为0×09,会话ID为0×0000(此时还没有会话session),必须需要包含0×0101标记,这个标记表示主机需要的服务.有时还会带上0×0103这个tag,表示主机的***标识.

2、PADO(PPPOE Active Discovery Offer)报文

这是PPPoE服务器收到PADI报文之后的回应报文(目的MAC地址为客户端主机的MAC地址).当PPPoE报文受到PADI报文后,如果此服 务器可以回应主机0×0101标记请求的服务,则可以回应PADO报文.PADO的code字段为0×07,会话ID为0×0000.此报文必须包含 0×0102标记以及一些针对收到的PADI报文的确认标记.

3、PADR(PPPOE Active Discovery Request)报文

这是用户主机收到PPPoE服务器回应的PADO报文后,单播(目的地址为此用户选定的那个PPPoE主机的MAC)发起的请求报文.code字段为0×19,session ID为0×0000.包含了0×0101标识.

4、PADS(PPPOE Active Discovery Session-confirmation)报文

PPPoE服务器会为在这个会话分配一个***的会话进程ID,并在发送给主机的PADS报文中携带上这个会话ID.当然如果PPPoE服务器不满足 用户所申请的服务的话,则会向用户发送一个PADS报文,而其中携带一个服务名错误的标记,而且此时该PADS报文中的会话ID填充0×0000. code为0×65.至此,一个PPPoE会话就建立成功了,用户和服务器两点之间可以进行会话,也就是可以发送PPP报文了.

5、PADT(PPPOE Active Discovery Terminate)报文

当用户或者服务器需要终止会话时,可以发送这种PADT报文.code字段为0xA7.session ID为希望终止的会话ID.此报文不需要附加任何的tag标识.

PPPoE的会话数据报文:

一旦经过前面介绍的协商之后,PPPoE的会话就建立成功了,客户端和服务器获得了会话ID,也就是建立了一条点对点的隧道(tunnel).此时 两端之间就可以发送会话报文,也就是PPP报文了.此时ethernet报文头的type字段为0×8864.PPPoE头的code字段为0×00.此 时PPPoE承载的payload就是PPP报文了.

总结:PPPoE为非点对点链路的以太网物理链路上承载PPP报文提供了一种创建虚拟点对点隧道链路的协商方式和封装方式.

责任编辑:佟健 来源: 互联网
相关推荐

2010-09-07 15:34:14

2010-09-07 12:06:46

PPPoE协议

2010-09-07 12:02:50

PPPoE协议

2010-09-27 14:31:35

PPPoE协议配置

2010-09-07 14:36:43

架设PPPOE服务器

2009-12-29 10:43:31

PPPOE协议

2010-02-22 17:13:40

WCF会话状态

2011-08-08 14:44:11

2011-08-08 15:23:06

PPPOE

2009-11-25 10:02:27

PHP会话Sessio

2010-09-02 15:50:01

PPPoE协议

2010-09-09 17:05:37

PPPoE协议

2010-09-06 13:53:21

PPPoE协议

2010-07-01 16:41:33

PPPOE协议

2010-09-17 16:29:56

2010-09-16 15:50:55

PPPoE配置

2010-09-16 15:11:58

FreeBSD PPP

2010-09-16 10:14:17

PPPoE Serve

2010-09-16 12:40:04

PPPOE SERVE

2010-09-07 14:10:26

PPPoE接口
点赞
收藏

51CTO技术栈公众号