数据链路层-ppp帧wiresahrk抓包问题

问题描述

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

数据链路层-ppp帧wiresahrk抓包问题的相关文章

【原创】抓包分析RabbitMQ的帧数据构成

     本文仅记录研究rabbitmq-c客户端源码时,对RabbitMQ帧数据构成进行总结.      先上一张图:      上图是rabbitmq-c客户端与服务器进行初始信令交互时的抓包,在此仅此作为示例使用.其中图中所示为第一条Connection.Start信令的具体内容.请关注以下几个值: 1.第一行显示的Length值为389 2.协议内部的Length值为327      那么389-327=62字节的内容都包括了什么?其包括了:14(Ethernet头)+20(IP头)+2

c# SharpPcap网口抓包丢帧问题

问题描述 写了一个实时发送视频的程序,通过网口发给fpga,同时也从fpga接收视频数据,实现互相通信.我是通过连续发图片来实现视频的,一个图片2764854个字节,发送接收都是一次1038个字节(一包),带有帧头和计数,一个图片需要发2706个包.在调试中,是用wireshark进行抓包,发送接收都能抓到,一个不少,都是一个图片2706个包.但是C#程序中接收数据时一个图片只能接收到237左右个包,然后就是第二个图片的230多个包,以此类推.每个图片后面的两千多包数据都不知道跑到哪里了,根本没

数据链路层-ppp协议问题,ppp协议问题

问题描述 ppp协议问题,ppp协议问题 书上说ppp协议不需要两个设备之间的mac地址,为什么我在家里跳过路由器拨号抓包发现还是包含了源mac和目的mac?是因为这里都是pppoe吗?也就是把ppp帧再次封装在以太网帧中?是这样吗?还有个问题,如果只是二层转发的话不会涉及帧的改变,比如我电脑发出来的是ppp帧,那么中间二层转发始终是ppp帧,然后到了路由器,把这个帧剥离开来看IP地址,然后再重新封装,这个时候帧的类型才有可能发生改变是这样吗?请知道的告诉下,谢谢了 解决方案 http://we

wireshark抓包图解 TCP三次握手/四次挥手详解

一. TCP/IP协议族       TCP/IP是一个协议族,通常分不同层次进行开发,每个层次负责不同的通信功能.包含以下四个层次: 1. 链路层,也称作数据链路层或者网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡.它们一起处理与电缆(或其他任何传输媒介)的物理接口细节. 2. 网络层,也称作互联网层,处理分组在网络中的活动,例如分组的选路.网络层协议包括IP协议(网际协议).ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协

wireshark怎么抓包、wireshark抓包详细图文教程

wireshark是非常流行的网络封包分析软件,功能十分强大.可以截取各种网络封包,显示网络封包的详细信息.使用wireshark的人必须了解网络协议,否则就看不懂wireshark了.为了安全考虑,wireshark只能查看封包,而不能修改封包的内容,或者发送封包. wireshark能获取HTTP,也能获取HTTPS,但是不能解密HTTPS,所以wireshark看不懂HTTPS中的内容,总结,如果是处理HTTP,HTTPS 还是用Fiddler, 其他协议比如TCP,UDP 就用wires

wireshark抓包分析

wireshark抓包分析 wireshark是非常流行的网络封包分析软件,功能十分强大.可以抓取各种网络包,并显示网络包的详细信息. 开始界面 wireshark是捕获机器上的某一块网卡的网络包,当你的机器上有多块网卡的时候,你需要选择一个网卡. 点击Caputre->Interfaces.. 出现下面对话框,选择正确的网卡.然后点击"Start"按钮, 开始抓包 Wireshark 窗口介绍 WireShark 主要分为这几个界面 1. Display Filter(显示过滤

Linux网络抓包分析工具Tcpdump基础篇[参数说明]

很多故障排除或者网络分析的时候都需要进行抓包分析,windows下可以通过sniffer或者wireshark,科来等工具: linux下原生已经有了一个很强大的分析工具tcpdump,今天来测试一下这个工具的一些常用方法或者参数 首先需要查看设备上有哪些设备可以抓取,通过tcpdump -D会列出可以抓取的网络设备名以及编号 1 [root@localhost ~]# tcpdump -D 2 1.eth0 3 2.usbmon1 (USB bus number 1) 4 3.usbmon2

使用WinPcap抓包分析网络协议

创建一个使用wpcap.dll的应用程序 用 Microsoft Visual C++ 创建一个使用 wpcap.dll 的应用程序,需要按一下步骤: 在每一个使用了库的源程序中,将 pcap.h头文件包含(include)进来. 如果你在程序中使用了WinPcap中提供给Win32平台的特有的函数, 记得在预处理中加入WPCAP的定义. (工程->设置->c/c++->预处理程序定义      中添加WPCAP) 如果你的程序使用了WinPcap的远程捕获功能,那么在预处理定义中加入H

网络抓包工具

http://blog.csdn.net/wangxg_7520/article/details/2795229 看了太多的"自己动手",这次咱也"自己动手"一下,写个简单的网络抓包工具吧.要写出像tcpdump和wireshark(ethereal)这样的大牛程序来,咱也没那能耐,呵呵.所以这个工具只能抓取本地IP数据报,同时它还使用了BPF,目的是了解如何进行简单有效的网络抓包. 当打开一个标准SOCKET套接口时,我们比较熟悉的协议往往是用AF_INET来建立