一、概述
几乎所有的数据包都是通过以太网来传输,所以使用wireshark抓取以太网数据包非常容易,这里我们以DNS数据包为例。
二、抓包
1. 准备数据
打开wireshark,在筛选栏输入dns,点击开始抓包,然后打开命令提示符,输入ping www.baidu.com
,此时wireshark将会抓到以下数据:
网卡信息如下:
2. 数据分析
第一步是请求dns服务器地址解析www.baidu.com
,本机IP为192.168.123.181
,为源IP地址,目的IP是两个dns服务器地址。由于设置了两个dns服务器,所以分别发送了两个数据包。
这里是收到的返回数据包:
随便点开一个数据包查看数据内容:
这是一个完整的dns数据包,wireshark已经很清楚的帮我们分好类了。直接点击Ehternet II直接就能看到数据包了,源MAC地址,目的MAC地址都已经帮我们标识好了,不得不说很强大。
以太网中首先是目的MAC地址,对本次请求来说,目的MAC地址是我设置的网关即路由器的MAC地址,Phicomm是我用的斐讯路由器型号。
源MAC地址即是本机的网卡的物理地址,从上面的网卡信息可以看出来物理地址为B8-76-3F-95-F0-5F
,也可以使用ipconfig /all
命令查看。
然后随之而来的就是数据部分的以太类型,0x0800
表示这是一个IPv4数据包。
接下来的就是数据部分,即为以太网帧中的有效载荷部分,这里是dns数据包,以后再讨论。
3. 为什么没有报头和校验字段
从数据中我们没有发现8个字节的前导头和4个字节的校验字段,为什么呢?
因为前导头是用来给物理链路层中的物理接口用来识别的,以此来定位数据包的开始。当它收到数据包后会进行校验码计算,如果数据没有错误会去掉前导部分和校验部分,再交给以太网卡驱动程序,当驱动程序收到数据包时就不存在有这两个字段了。
而wireshark抓包是位于网卡的驱动程序之内的,所以抓到的包就不存在有前导头和校验数据。
此处评论已关闭