免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2674 | 回复: 0
打印 上一主题 下一主题

PPPoE协议 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-16 22:48 |只看该作者 |倒序浏览

PPPoE协议

PPPoE:以太网上的 PPP
  (PPPoE:point to point protocal over Ethernet)
在以太网上承载PPP协议(点到点连接协议),它利用以太网将大量主机组成网络,可以使以太网的主机通过一个简单的桥接设备连到一个远端的接入集中器上。通过pppoe协议,远端接入设备能够实现对每个接入用户的控制和计费。与传统的接入方式相比,pppoe具有较高的性能价格比,它在包括小区组网建设等一系列应用中被广泛采用,目前流行的宽带接入方式adsl就使用了pppoe协议。
我们了解到了PPP在拨号介入网络中的应用场景,今天,就详细介绍一下PPPoE协议。先看一幅PPPoE接入场景图:
[/url]

                       PPPoE场景1
用户在自己的PC上拨号以建立到达图中SSG设备的PPPoE通道。
下图和上图结构相同,在细节上画的更清晰了一些:
[url=http://adreaman.com/wp-content/uploads/2009/04/pppoe-basic.gif]


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

上图第一行为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报文提供了一种创建虚拟点对点隧道链路的协商方式和封装方式。



本文来自ChinaUnix博客,如果查看原文请点:[url]http://blog.chinaunix.net/u3/109487/showart_2151044.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP