Chinaunix首页 | 论坛 | 博客
  • 博客访问: 80287
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 220
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-17 11:15
个人简介

The important thing in life is not how long you will live, but whom you are living with.

文章分类

全部博文(21)

文章存档

2022年(1)

2021年(6)

2016年(1)

2015年(2)

2014年(11)

我的朋友

分类: 网络与安全

2014-07-21 13:48:14

1.PPPOE的数据报文格式

4bits   4bits    8 bits               16bits

版本

类型

代码

Session ID

长度

净载荷

   16bits

PPPOE最开始的4位是版本域,协议中给出了明确的规定,这个域的内容填充为0x01

紧接着版本位的后4位是类型域,协议中同样规定,这个域的内容填充为ox01

代码域占用一个字节,对于PPPOE的不同阶段,这个域的内容也是不一样的

会话ID占用2个字节,当访问集中器还未分配唯一的会话ID给用户主机的话,该域填充0x0000,一旦主机获得会话ID后,那么后续的所有报文中该域必须填充那个唯一的会话ID值

长度域为2个字节,用来指示PPPOE数据报文中净载荷的长度

数据域有时也称为净载荷域,在PPPOE的不通阶段改域内容会有很大不同,在PPPOE的发现阶段,该域会填充一些TAG,而在PPPOE会话阶段,该域携带的PPP的报文

2.PPPOE发现阶段的数据报文

PPPOE的发现阶段可分为四步,其实这个过程也是PPPOE四种数据报文的交换的一个过程。当完成这四步后,用户主机与访问集中器双方就能获知对方的MAC地址和唯一的会话ID号,从而进入到下一个阶段(PPPOE的会话阶段)。实际上双方在互相知道了对方的MAC地址后,就已经在广播式的网络上确定了一一的对应关系,为了保证这个连接的有效性,同时使PPPOE协议能更加灵活的运用,因此还加入了会话ID字段,通过这两个条件就可完成确定双方点对点的关系。
在这个阶段一开始,由于接入用户并不知道访问集中器的MAC地址,则使用类似于ARP解析的过程的机制来获取访问集中器的MAC地址。首先由接入用户侧发起一个初始化的广播报文,对于访问集中器如果配置了PPPOE的业务时,它会时实检测网络上的数据包,当发现以太网数据帧中所承载的是PPPOE报文时(通过协议域的内容来区分),就会将其交给相应的模块去处理。当收到初始化报文后,访问集中器会向该用户回应一个报文。如果网络上存在很多这样的访问集中器且都收到了用户侧发送的初始化报文时,它们也都会向用户侧会送一个确认报文,如果该用户收到这个报文后,则会依据报文中所携带的内容或本端的一些配置来选择一个唯一的访问集中器进行会话。到此时已完成了前两步了,那么剩下的两步则是协商一些所提供的服务选项和获取PPPOE会话阶段所必须的会话ID值。

在这个阶段,所有数据报文是被承载在以太网的数据域中的,而且以太网数据帧的协议域始终为0x8863。下面我们结合具体的数据报文的内容,来具体的讲解这四步的过程。


PPPOE数据报文中Tag(标记)的格式
对于发现阶段的PPPOE数据报文而言,它的净载荷可能包含零个或多个Tag(标记),实际上这些标记的意义非常类似于PPP配置参数选项,它同样也是要经过协商的。对于PPPOE协议而言,没有像PPP的配置参数选项那样定义了很多细节,而只是一个初略的定义,因此在实际当中实现这个过程会依据不同厂商的设备有不同。首先还是让我们看一下承载在PPPOE报文数据域中的标记封装格式:
    16bits                        16bits

 类型

 长度

 数据



 类型

 标记说明

 0x0000

表示在报文数据域中一串标记的结束,

 0x0101

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

 0x0102

 访问集中器名,当用户侧接收到AC的PADO报文时,就可从携带的标记中获得访问集中器的名字,而且还可以据此选择访问集中器

 0x0103

 主机唯一标识

 0x0104

主要用来防止恶意DOS攻击

 0x0105

 销售商的标识符

 0x0110

 中继会话ID

 0x0201

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

 0x0202

 访问集中器名出错

 0x0203

 一般性错误


PADI(PPPOE acitive diacovery initation)报文 (0x09)

FF FF FF FF FF FF      00 10 10 04 98 0A A9    88 63             11              09        00 00     00 0C    01 03 00 04 01 00 00 00 01 01 00 00
以太网帧的目的地址     源地址           协议域    PPPOE数据报文  代码域    会话ID    长度域  TAG    TAG    TAG数据        
                                                的版本和类型域                              类型    长度

报文中有2个TAG,0103 ,0101
协议域8863表示PPPOE发现,8864表示PPPOE会话

PADO(PPPOE active discovery offer)报文(ox07)

00 10 10 04 98 0A A9   00 03 04 03 06 06     88 63             11              07       00 00     00 1A    01 02 00 06 01 00 00 00 34 56 
以太网帧的目的地址     源地址           协议域    PPPOE数据报文  代码域    会话ID   长度域  TAG    TAG      TAG数据        
                                                  的版本和类型域                            类型    长度
10 03 00 04 01 00 00 00 01 01 00 00
00 00 00 00

报文中有4个TAG,在PADI的基础上又多了2个,一个是访问集中器名,一个是标记结束标志。


PADR(PPPOE active discovery request)报文(0x19)


00 03 04 03 06 06      00 10 10 04 98 0A A9    88 63             11              19        00 00     00 0C    01 03 00 04 01 00 00 00 01 01 00 00
以太网帧的目的地址     源地址            协议域    PPPOE数据报文  代码域    会话ID    长度域  TAG    TAG    TAG数据        
                                                 的版本和类型域                             类型    长度
当收到PADO后用户主机会发送PADR

PADS(PPPOE active discovery session-confirmation)报文(ox65)

00 10 10 04 98 0A A9   00 03 04 03 06 06     88 63             11              65       01 6B     00 10    01 03 00 04 01 00 00 00
以太网帧的目的地址     源地址             协议域    PPPOE数据报文  代码域    会话ID   长度域  TAG    TAG      TAG数据        
                                                的版本和类型域                                类型    长度
 01 01 00 00
00 00 00 00

当访问集中器收到PADR后分配唯一会话ID,发送给用户一个PADS报文;如果访问集中器不满足申请的服务,发送到PADS中会携带服务器名错误的标记,且此时PADS的报文中会话ID填充为0x0000


PADT(PPPOE active discovery terminate)报文(0xA7)

PADT报文可以在会话开始后的任何时间发送,主要用来终止一个会话,可以由主机或访问集中器发送,


00 03 04 03 06 06      00 10 10 04 98 0A A9    88 63             11              A7       01 6B    00 00   
以太网帧的目的地址     源地址                     协议域    PPPOE数据报文  代码域    会话ID    长度域         
                                                                             的版本和类型域                    
这个报文中不含有任何TAG

PPPOE的报文是被承载在以太网的 数据域中传送
发现阶段遇到4种报文 PADI PADO PADR PADS
PADT用来终止一个会话
在发现阶段,以太网协议域中值为0x8863,session中值为0x8864
                   


阅读(3431) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~