加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

数据抓包分析

(2016-04-29 16:35:58)
分类: 路由交换

经常使用Wireshark等工具进行抓包,有一个困惑。就是如果有一天你仅仅给我一串16进制的数字。我如何分析报文?要想解决这个问题,至少我们需要学习进制转换,每一种数据封装的格式,顺序,内容字段长度等等。

http://s5/mw690/0041OZlcgy71i8zhX8wa4&690


我们大脑中都要有上面那一串数据的进制转换。第一行是10进制的,第二行则是2进制,第三行则是16进制。这是基础,理解了这一点,你才能明白你面对的那一串数据到底是什么含义。

我用的软件是GNS3+Wireshark分析。

http://s14/mw690/0041OZlcgy71i8APEzHed&690

 

图 GNS3 搭建的拓扑

首先为R1的接口f0/0开启了抓包功能,并配置IP地址。这时,R1会往接口f0/0发送无故ARP报文。我抓获了这段报文,如下:

http://s2/mw690/0041OZlcgy71i8EvJ6xd1&690

可以看到下面有一串16进制的数据。这段数据并不是毫无规律的放在那面。最左边填写了这整个报文的顺序。从0000到0010到0020……接下来我们说第几列的时候指的就是这个序列。

来看我们的报文,这是一个Gratuitous ARP报文,发出者是12.1.1.1,目的是Broadcast。这是从最上面的那一列我们得到的信息。

在看这个报文的结构,第一行是Frame 2,写的内容是我们整个报文的框架。点击这一行的时候,下面所有的16进制会被选中。第二行是Ethernet II,这是数据链路层了。这实际是一个以太网的帧结构。第三行是Address Resolution Protocol,地址解析协议,即ARP。

那我们数据分析从哪里开始呢?是从数据链路层开始的。

http://s16/mw690/0041OZlcgy71i8HWen5af&690

从0000行开始,就已经依次填写上了目的mac地址和源mac地址,并且写上了上层封装的协议Type。mac地址是2进制的48位组成,即6个字节,通常表示为12个16进制数。根据上图红色框标识。我们可以轻易的得出,目的mac为ff ff ff ff ff ff ,即广播,字段长度为6Bytes(字节)。源mac是cc 01 1e 0c 00 00 ,即R1的f0/0接口的mac地址。而紧接着的08 06是Type字段,字段长度为2Bytes,代表ARP。

http://s9/mw690/0041OZlcgy71i8O4SH648&690



http://s11/mw690/0041OZlcgy71i8O7SRAba&690

现在R1ping12.1.1.2。

http://s9/mw690/0041OZlcgy71i8T9ZH288&690



http://s16/mw690/0041OZlcgy71i8TcNXN4f&690
ICMP的请求包:

http://s9/mw690/0041OZlcgy71i8WBXNS78&690

我们来看报文,这是一个ICMP的请求包,从最上蓝色的那一行我们可以看出,源IP是12.1.1.1目的IP是12.1.1.2。

首先看数据链路层:

http://s2/mw690/0041OZlcgy71i90JgdP11&690


看最下面的数据得出,mac地址是6字节的,目的mac在前源mac在后。目的mac为cc 02 1c d0 00 00 。这是上从上面的ARP解析而得来的。源mac为cc 01 1e 0c 00 00 。而接下的2字节的Type字段写的是00 80。代表的是ip。

接下来我们来看IP数据包:

http://s8/mw690/0041OZlcgy71i93GHzx07&690

每个字段对应的数值:

http://s8/mw690/0041OZlcgy71i953LRZe7&690

首先我们看第1个字节为45。这里面包含了Version(版本)字段和IHL(头部长度)两个部分,每个部分都是4bit组成1个字节。我们可以看到版本是4,即这是一个IPV4报头。但是我们看到IHL写的是 20 bytes。

来自百度:

头部长度是用32位表示的internet头部的长度,它指向数据的开始处.备注:一个正确头部的最小头部长度值是5.(译者注:5表示头部长度值为5*4=20 Bytes)

接下来是Differentiated Services Field(区分服务领域),默认00,1个字节长度。

Total Length,16bit,2字节。0x 0064即2进制0000 0000 0110 0100,即10进制100。

Identification: 0x0001 (1),2字节。

Flags: 0x00,1字节。

Fragment offset: 0,1字节。

Time to live: 255,ff,1字节。

Protocol: ICMP (1),01,1字节。

Header checksum: 0xa193 [validation disabled],a1 93,2字节。

Source: 12.1.1.1 ,0c 01 01 01,源IP地址。

Destination: 12.1.1.2,0c 01 01 02,目的IP地址。

 

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有