问题描述
- ppp帧wiresahrk抓包问题
-
请问,我用wireshark抓包分析用户上网拨号全过程,
1.发现阶段(PPPoED:PPPoE Discovery)
1.1 PADI(PPPoE Active Discovery Initiation)
主机广播发起分组,分组的目的地址为以太网的广播地址 0xffffffffffff,CODE(代码)字段值为0×09(PADI Code),SESSION-ID(会话ID)字段值为0x0000。PADI分组必须至少包含一个服务名称类型的标签(Service Name Tag,字段值为0x0101),向接入集中器提出所要求提供的服务。
1.2 PADO(PPPoE Active Discovery Offer)
接入集中器收到在服务范围内的PADI分组,发送PPPoE有效发现提供包分组,以响应请求。其中CODE字段值为0×07(PADO Code),SESSION-ID字段值仍为0x0000。PADO分组必须包含一个接入集中器名称类型的标签(Access Concentrator Name Tag,字段值为0x0102),以及一个或多个服务名称类型标签,表明可向主机提供的服务种类。PADO和PADI的Host-Uniq Tag值相同。
1.3 PADR(PPPoE Active Discovery Request)
主机在可能收到的多个PADO分组中选择一个合适的PADO分组,然后向所选择的接入集中器发送PPPoE有效发现请求分组。其中CODE字段为0x19(PADR Code),SESSION_ID字段值仍为0x0000。PADR分组必须包含一个服务名称类型标签,确定向接入集线器(或交换机)请求的服务种类。当主机在指定的时间内没有接收到PADO,它应该重新发送它的PADI分组,并且加倍等待时间,这个过程会被重复期望的次数。
1.4 PADS(PPPoE Active Discovery Session-confirmation)
接入集中器收到PADR分组后准备开始PPP会话,它发送一个PPPoE有效发现会话确认PADS分组。其中CODE字段值为0×65(PADS Code),SESSION-ID字段值为接入集中器所产生的一个惟一的PPPoE会话标识号码。PADS分组也必须包含一个接入集中器名称类型的标签以确认向主机提供的服务。当主机收到PADS 分组确认后,双方就进入PPP会话阶段。PADS和PADR的Host-Uniq Tag值相同。
2.会话阶段(PPPoES:PPPoE Session)
PPP会话的建立,需要两端的设备都发送LCP数据包来配置和测试数据通信链路。
用户主机与接入集中器根据在发现阶段所协商的PPP会话连接参数进行PPP会话。一旦PPPoE会话开始,PPP数据就可以以任何其他的PPP封装形式发送。所有的以太网帧都是单播的。PPPoE会话的SESSION-ID一定不能改变,并且必须是发现阶段分配的值。
2.1 LCP协商阶段(LCP:Link Control Protocol)
LCP的Request主机和AC都要给对方发送,LCP协商阶段完成最大传输单元(MTU),是否进行认证和采用何种认证方式(Authentication Type)的协商。
(1)LCP协议数据报文分类
链路配置报文:用来建立和配置一条链路,主要包括Configure-Request、Configure-Ack、Configure-Nak和Configure-Reject报文
链路维护报文:用来管理和调试链路,主要包括Code-Reject、Protocol-Reject、Echo-Request、Echo-Reply和Discard-Request报文
链路终止报文:用来终止一条链路,主要包括Terminate-Request和Terminate-Reply报文
(2)LCP协商过程
LCP协商的过程如下:协商双方互相发送一个LCP Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request报文,直到对端回应了ACK报文为止。
发先阶段是用的pppoe协议,这个我可以理解,然后会话阶段,这里我没有全部复制过来,就复制了前面一点,我用wireshark抓包时发现会话阶段protocol里协议是ppp lcp,但是为什么如图所示,还是有源mac地址和目的mac地址,ppp协议不是不包括这些吗?请知道的告诉下,谢谢了
解决方案
参考:
http://wenku.baidu.com/link?url=wTUJxWmv7LvlMO3jYDam7bbP3knMyv0NpbhDqWtiGavOFoz3QBSC-przLNUcumvPsBAcuwVQV5b20ucIhuXej7SqaUzasZg6l6g2ZhxCjPC
http://blog.chinaunix.net/uid-11639156-id-2379044.html
解决方案二:
pppoe是承载在eth上的,而ppp承载在pppoe上,一层嵌套一层。你看到的mac是属于eth层的。所以PPP协议里面没有mac,但你抓的包却包含mac。
很好理解的一个例子就是IP协议里面没有规定MAC地址,但是你抓的IP包里面却包含MAC。每一层协议都有每一层协议的作用,eth用于以太网的通信,pppoe用于将PPP协议复用到eth网络中。
时间: 2024-09-20 08:00:34