一、协议格式
ARP协议的格式如下:
分两大块来讲解:
1、红色框起来的是:以太网的首部,共14字节。
这部分是你不管发送什么以太网协议的数据包,它都是需要的,而且是必须的。各字段的说明:
字段 | 所占字节数 | 说明 |
以太网目的地址 | 6 | 要向哪台主机发送信息,主机的MAC地址 |
以太网源地址 | 6 | 信息是从哪台机器发送出来的,主机的MAC地址 |
帧类型 | 2 | 表示这是什么类型的数据包。如果是RAP的话,该值为:0x0806 |
2、蓝色框起来的部分,这就是ARP协议的格式(请求/应答)
字段 | 所占字节数 | 说明 |
硬件类型 | 2 | 通常填1,表示以太网硬件地址类型 |
协议类型 | 2 | 通常为0x0800,表示IP地址类型 |
硬件地址长度 | 1 | MAC地址的长度,填6 |
协议地址长度 | 1 | IP地址长度,填4 |
op | 2 | 操作字段:
ARP请求:1 ARP相应:2 RARP请求:3 RARP相应:4 |
发送端以太网地址 | 6 | |
发送端IP地址 | 4 | |
目的以太网地址 | 6 | |
目的以太网IP地址 | 4 |
对于一个ARP请求来说,除目的端硬件地址外的所有其他的字段都有填充值。当系统收到一份目的端为本机的ARP请求报文后,它就把硬件地址填进去,然后用两个目的端地址分别替换两个发送端地址,并把操作字段置为2,最后把它发送回去。
二、分析ARP协议
这里要用到一抓包工具:wireshark,这是一免费的抓包工具,居于winpcap驱动,大家可以到网上去下载。下面我主要用这个工具来分析ARP协议格式。(Linux下可以用tcpdump来抓包,本ARP讲解全部都基于win7下)
1、wireshark基本用法
关于wireshark的用法,大家可以去搜索,而且在下载包里,也自带了一份使用说明。在这里简单讲解下它基本使用。
安装,打开wireshark会出现这样的界面:
点击 抓包 -- 网络接口
出现的窗口中,
第1列 详细信息, 就是你电脑里的网络适配器(网卡)的描述信息,我这有3个,第一个是无线网卡,第二个是虚拟的无线网卡,第三个是插入网线的网卡。
第2列 IP地址,就是每个网卡的IP/MAC地址。默认显示的是MAC地址,在上面在点击下,就会显示IP地址
第3列 包,是经过该网卡的包的数量
第4列 包数/秒, 是每秒经过该网卡包的数量
上面的3个网卡中,可以看出,只有第一个网卡是由流量的(包数),所以在这台机器上,第一个网卡是可用的。
当然,可能会同时存在多个可用的网卡,这个时候,要监听哪个网卡的数据,就由你来决定了。(可以通过IP/MAC地址来分辨)
wireshark可以有很多的过滤规则,如果不设置的话,它会显示所有经过该网卡的数据包。在这里,我先不对它进行过滤设置,点击上面的开始按钮,出现:
图中,我用红框分割出了4部分:
第1部分 过滤:这里填写你要过滤的表达式(不是随便填的,可以参考它的说明文档)
第2部分 是主体部分,这里主要显示了经过该网卡的数据包,各段的含义,大家看字段名就可以看出是什么意思,这里我就不再赘述了。
第3部分 是对应包格式说明
第4部分 是原始数据包的内容(十六进制)
2、ARP包详解
好,这个时候,我们根据RAP的协议,来研究下,ARP在真正网络上是如何来传输的。
另外,wireshark一旦开启后,就不停地把包展现出来,为避免显示包数过多,而不必我们分析时,可进行暂停,如图:
在Protocol这列我们找到ARP,如果太多,可以在 过滤框里输入arp回车,就把arp协议的过滤出来了
我们随便选出一ARP包:
上面红色线或框的部分,就是我们之前说的ARP协议格式的各个字段,大家对照协议,就都明白了。
有同学就问了,这个包,那我可以控制它么?
好,下面一篇,我们主要来学习,如果对ARP进行编程。
版权声明:本文为博主原创文章,未经博主允许不得转载。