一、概述

几乎所有的数据包都是通过以太网来传输,所以使用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抓包是位于网卡的驱动程序之内的,所以抓到的包就不存在有前导头和校验数据。

最后修改:2017 年 11 月 19 日
如果觉得我的文章对你有用,请随意赞赏