PPPoE报文格式及交互详解

PPPoE报⽂格式及交互详解
简介
PPPoE报⽂的格式就是在以太⽹帧中携带PPP报⽂,如图所⽰:
各个字段解释如下:
Destination_address:⼀个以太⽹单播⽬的地址或者以太⽹⼴播地址(0xffffffff)。对于Discovery数据包来说,该域的值是单播或者⼴播地址,PPPoE Client寻PPPoE Server的过程使⽤⼴播地址,确认PPPoE Server后使⽤单播地址。对于Session阶段来说,该域必须是Discovery阶段已确定的通信对⽅的单播地址。
Source_address:源设备的以太⽹MAC地址。
Ether_type:设置为0x8863(Discovery阶段或拆链阶段)或者0x8864(Session阶段)。
Ver:4bits,PPPoE版本号,值为0x1。 Type域:4bits,PPPoE类型,值为0x1。
Code:8bits,PPPoE报⽂类型。Code域为0x00,表⽰会话数据。Code域为0x09,表⽰PADI报⽂;Code域为0x07,表
⽰PADO或PADT报⽂;Code域为0x19,表⽰PADR报⽂;Code域为0x65,表⽰PADS报⽂。
Session_ID:16bits,对于⼀个给定的PPP会话,该值是⼀个固定值,并且与以太⽹Source_address和Destination_address⼀起实际地定义了⼀个PPP会话。值0xffff为将来的使⽤保留,不允许使⽤。
Length:16bits,定义PPPoE的Payload域长度。不包括以太⽹头部和PPPoE头部的长度。
数据:有时也称之为净载荷域,在PPPOE的不同阶段该域内的数据内容会有很⼤的不同。
在PPPOE的发现阶段时,该域内会填充⼀些Tag(标记);⽽在PPPOE的会话阶段,该域则携带的是标准的点对点协议包。PPPoE⼯作原理以及PPPoE帧格式
PPPoE协议的⼯作流程包含发现和会话两个阶段,发现阶段是⽆状态的,⽬的是获得PPPoE终结端(在局端的ADSL设备上)的以太⽹MAC地址,并建⽴⼀个惟⼀的PPPoESESSION-ID。发现阶段结束后,就进⼊标准的PPP会话阶段。
当⼀个主机想开始⼀个PPPoE会话,它必须⾸先进⾏发现阶段,以识别局端的以太⽹MAC地址,并建⽴⼀个PPPoE SESSION-ID。在发现阶段,基于⽹络的拓扑,主机可以发现多个接⼊集中器,然后允许⽤户选择⼀个。当发现阶段成功完成,主机和选择的接⼊集中器都有了他们在以太⽹上建⽴PPP连接的信息。直到PPP会话建⽴,发现阶段⼀直保持⽆状态的Client/Server(客户/服务器)模式。⼀旦
PPP会话建⽴,主机和接⼊集中器都必须为PPP虚接⼝分配资源。
绍兴县鉴湖小学PPPOE交互⽰意图
布兰妮最新专辑
PPPoE发现和会话两阶段
发现(Discovery)阶段
在发现(Discovery)阶段中⽤户主机以⼴播⽅式寻所连接的所有接⼊集中器(或交换机),并获得其以太⽹MAC地址。然后选择需要连接的主机,并确定所要建⽴的PPP会话标识号码。发现阶段有4个步骤,当此阶段完成,通信的两端都知道PPPoE SESSION-ID和对端的以太⽹地址,他们⼀起唯⼀定义PPPoE会话。这4个步骤如下。
(1)        主机⼴播发起分组(PADI)(PPPOE Active DiscoveryInitiation),分组的⽬的地址为以太⽹的⼴播地址
0xffffffffffff,CODE(代码)字段值为0x09,SESSION-ID(会话ID)字段值为0x0000。PADI分组必须⾄少包含⼀个服务名称类型的标签(标签类型字段值为0x0101),向接⼊集中器提出所要求提供的服务。
(2)        接⼊集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包(PADO)(PPPOE Active Discovery Offer)分组,以响应请求。其中CODE字段值为0x07,SESSION-ID字段值仍为0x0000。PADO分组必须包含⼀个接⼊集中器名称类型的标签(标签类型字段值为0x0102,以及⼀个或多个服务名称类型标签,表明可向主机提供的服务种类。许沂光
(3)        主机在可能收到的多个PADO分组中选择⼀个合适的PADO分组,然后向所选择的接⼊集中器发送PPPoE有效发现请求分组(PADR)(PPPOE Active Discovery Request)。其中CODE字段为0x19,SESSION_ID字段值仍为0x0000。PADR分组必须包含⼀个服务名称类型标签,确定向接⼊集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。
(4)        接⼊集中器收到PADR分组后准备开始PPP会话,它发送⼀个PPPoE有效发现会话确认(PADS)(PPPOE Active DiscoverySession-confirmation)分组。其中CODE字段值为0x65,SESSION-ID字段值为接⼊集中器所产⽣的⼀个惟⼀的PPPoE会话标识号码。PADS分组也必须包含⼀个接⼊集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS分组确认后,双⽅就进⼊PPP会话阶段。
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)(PPPOE ActiveDiscovery Terminate)结束。
有机硅树脂PPPoE会话阶段主要分为LCP协商阶段、认证阶段、IPCP阶段等,在这些阶段顺利完成后,就可以进⾏数据传输。
链路控制协议LCP(Link Control Protocol)
此阶段主要是协商链路的⼀些参数,如最⼤接收单元MRU、Magic Number,以及后续认证时使⽤的协议等。LCP协商分
为ConfigureRequest,ConfigureAck,TerminateRequest,Echo Request。
LCP交互⽰意图
SessionID就是PADS获得的SessionID,主要协商了MRU(Maximun Receive Ubit),并且提出认证使⽤的Magic Number。⼀般⽽⾔,MRU和MTU取值相同,PPPOE的最⼤MTU不能超过1492。计算⽅法如下:
⾸先,以太⽹帧⼤⼩限制:
Ethernet MinSize = 64 Byte
Ethernet MaxSize = 1518 Byte
去掉以太⽹帧头(6字节SRCMAC+6字节DSTMAC+2字节TYPE+4字节CRC)后的净荷为:
EthernetIP MTU =1518–18= 1500 B
所以,再去掉(6字节PPPoE_SESSION+2字节PPP_HEADER)的开销,所以PPPOE的MRU最⼤值为:PPPoEMTU/MRU=1500–
8=1492B。
Magic-number选项⽤来协商双⽅的魔术字,两端魔术字不能重复,魔术字可⽤来检测链路的环回情况。
该选项提供了⼀种探测短路连接和其它数据链路层异常的⽅法当⼀⽅接收到带有魔数选项的配置请求数据帧后,将接收到的魔数与上次发送的魔数进⾏⽐较,如果不相同就认为没有发⽣短路。如果两个魔数相同,则需要发送⼀个携带不同魔数的配置否认帧,然后将接收到的魔数与发送的魔数进⾏⽐较。
在⼴域链路上,最常⽤的⼀种检测链路的⽅法就是在远端将发送和接受短接成环路,在本端发送的信号如果能被⾃⼰成功的接受到,那么线路就有可能是Ok的,这就是LoopBack测试。如果环路在测试之后并未撤掉,PPP⼜没有引如Magic-Number的话,就可能⾃⼰和⾃⼰建⽴PPP关系。
C->S Configure Request
S->C Configure Request
C->SConfigure Ack
C->Secho
S->Cecho
认证阶段(⽹络层控制协议NCP)
认证阶段务器端将验证客户端的合法性。最常见的两种就是PAP和CHAP;
PAP(Password Authentication Protocol)验证为两次握⼿验证,密码为明⽂。
PAP验证的过程如下:
(1)被验证⽅发送⽤户名和密码到验证⽅;
(2)验证⽅根据本端⽤户表查看是否有此⽤户以及密码是否正确,然后返回不同的响应。
注意:PAP不是⼀种安全的验证协议。当验证时,⼝令以明⽂⽅式在链路上发送,并且由于完成PPP链路建⽴后,被验证⽅会不停地在链路上反复发送⽤户名和⼝令,直到⾝份验证过程结束,所以不能防⽌攻击。
CHAP(Challenge-Handshake Authentication Protocol)验证为三次握⼿验证,密码为密⽂(密钥)。
CHAP验证过程如下:
(1)Challenge:验证⽅主动发起验证请求,验证⽅向被验证⽅发送⼀些随机产⽣的报⽂,并同时将本端的⽤户名附带上⼀起发送给被验证⽅;
(2)Response:若被验证⽅接到验证⽅的验证请求后,检查本端接⼝上是否配置了缺省的CHAP密码,如果配置了则被验证⽅利⽤报⽂ID、该缺省密码和MD5算法对该随机报⽂进⾏加密,将⽣成的密⽂和⾃⼰的⽤户名发回验证⽅;若被验证⽅检查发现本端接⼝上没有配置缺省的CHAP密码,则被验证⽅根据此报⽂中验证⽅的⽤户名在本端的⽤户表查该⽤户对应的密码,如果在⽤户表到了与验证⽅⽤户名相同的⽤户,便利⽤报⽂ID、此⽤户的密钥(密码)和MD5算法对该随机报⽂进⾏加密,将⽣成的密⽂和被验证⽅⾃⼰的⽤户名发回验证⽅;
(3)result:验证⽅⽤⾃⼰保存的被验证⽅密码和MD5算法对原随机报⽂加密,⽐较⼆者的密⽂,根据⽐较结果返回不同的响应。
锵锵三人行2008
S->CChallenge
C->SResponse
S->CSucess
IPCP(IP Control Protocol)阶段
此阶段进⾏IP、DNS、WINS等的协商
IPCP交互⽰意图
S->CConfigure Request
C->SConfigure Request漂流瓶的故事
S->CConfigure Nak
C->SConfigure Request
S->CConfigure Ack 数据传输
pppoe数据
参考链接:

本文发布于:2024-09-23 10:25:25,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/508834.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:验证   阶段   发送   发现   分组
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议