您的位置:首页 > 其它

ARP数据包分析

2015-09-22 10:59 232 查看
在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。想一想,为什么表项要有过期时间而不是一直有效?

注意到源MAC地址、目的MAC地址在以太网首部和ARP请求中各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。硬件类型指链路层网络类型,1为以太网,协议类型指要转换的地址类型,0x0800为IP地址,后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),op字段为1表示ARP请求,op字段为2表示ARP应答。

以太网首部:

字段
长度(Byte)
默认值
备注

接收方MAC
6 广播时,为 ff-ff-ff-ff-ff-ff

发送方MAC
6

Ethertype 2 0x0806 0x0806是ARP帧的类型值

ARP包:

字段
长度(Byte)
默认值
备注

硬件类型 2
0x1 以太网类型值

上层协议类型 2
0x0800 上层协议为IP协议

MAC地址长度
1 0x6 以太网MAC地址长度为 6

IP地址长度
1 0x4 IP地址长度为 4

操作码
2 0x1表示ARP请求包,0x2表示应答包

发送方MAC 6

发送方IP
4

接收方MAC
6

接收方IP
4

填充数据
18 因为物理帧最小长度为64字节,前面的42字节再加上4个CRC校验字节,还差18个字节


二 实例解析

本机IP:192.168.0.1
(c0 a8 00 01)

本机MAC:00-50-56-c0-00-01

目标IP:192.168.0.2 (c0 a8 00 02)

目标MAC:00-0c-29-0b-42-7e

1、 Ping 目标主机192.168.0.2时,本机发送的ARP数据包为

00000000 : ff ff ff ff ff ff 00 50 56 c0 00 01 08 06 00 01

00000010 : 08 00 06 04 00 01 00 50 56 c0 00 01 c0 a8 00 01

00000020 : 00 00 00 00 00 00 c0 a8 00 02

以太网数据包发送目的地:ff ff ff ff ff ff(全网)

以太网数据包发送源:00 50 56 c0 00 01(本机)

以太网数据包数据包内容类型:08 06(ARP数据包)

ARP数据包类型:00 01(Request)

数据内容:告诉IP为c0 a8 00 02的目标主机,本机的IP为c0 a8 00 01,MAC为

00 50 56 c0 00 01,请更新,并将你的MAC发送给我。

目标主机回应本机的ARP数据包为

00000000 : 00 50 56 c0 00 01 00 0c 29 0b 42 7e 08 06 00 01

00000010 : 08 00 06 04 00 02 00 0c 29 0b 42 7e c0 a8 00 02

00000020 : 00 50 56 c0 00 01 c0 a8 00 01

以太网数据包发送目的地:00 50 56 c0 00 01

以太网数据包发送源: 00 0c 29 0b 42 7e

以太网数据包数据包内容类型:08 06(ARP数据包)

ARP数据包类型:00 02(Reply)

数据内容:告诉MAC为 00 50 56 c0 00 01 的主机,你的IP和MAC我已经收到,我的MAC和IP为00 0c 29 0b 42 7e 和c0 a8 00 02,请保存更新。

2、 修改系统IP时(未发生IP冲突的情况下),发送的ARP数据包为

00000000 : ff ff ff ff ff ff 00 0c 29 0b 42 7e 08 06 00 01

00000010 : 08 00 06 04 00 01 00 0c 29 0b 42 7e c0 a8 00 03

00000020 : 00 00 00 00 00 00 c0 a8 00 03

以太网数据包发送目的地:ff ff ff ff ff ff(全网)

以太网数据包发送源:00 0c 29 0b 42 7e(本机)

以太网数据包数据包内容类型:08 06(ARP数据包)

ARP数据包类型:00 01(Request)

数据内容:告诉IP为c0 a8 00 03的主机,本机的MAC和IP为00 0c 29 0b 42 7e 和c0 a8 00 03。由于网络内没有c0 a8 00 03 主机,所以此数据包将不会有回应,此时,局域网交换机将会刷新缓存,使你的IP和MAC对应起来。

3、 修改系统IP时(发生IP冲突的情况下),发送的ARP数据包为

00000000 : ff ff ff ff ff ff 00 0c 29 0b 42 7e 08 06 00 01

00000010 : 08 00 06 04 00 01 00 0c 29 0b 42 7e c0 a8 00 01

00000020 : 00 00 00 00 00 00 c0 a8 00 01

以太网数据包发送目的地:ff ff ff ff ff ff(全网)

以太网数据包发送源:00 0c 29 0b 42 7e

以太网数据包数据包内容类型:08 06(ARP数据包)

ARP数据包类型:00 01(Request)

数据内容:告诉IP为c0 a8 00 01的主机,本机的MAC和IP为00 0c 29 0b 42 7e 和c0 a8 00 01。由于网络内已经有c0 a8 00 01 主机,将会发生冲突。这时将收到ARP Reply数据包。

接收的ARP数据包为

00000000 : 00 0c 29 0b 42 7e 00 50 56 c0 00 01 08 06 00 01

00000010 : 08 00 06 04 00 02 00 50 56 c0 00 01 c0 a8 00 01

00000020 : 00 0c 29 0b 42 7e c0 a8 00 01

以太网数据包发送目的地:00 0c 29 0b 42 7e

以太网数据包发送源:00 50 56 c0 00 01

以太网数据包数据包内容类型:08 06(ARP数据包)

ARP数据包类型:00 02(Reply)

数据内容:告诉MAC为00 0c 29 0b 42 7e的主机,本机的MAC和IP为00 50 56 c0 00 01和 c0 a8 00 01。这时MAC 为42 7e c0 a8 00 01的主机收到这个包后,并知道他的IP与其它主机冲突了。

4、 伪造ARP数据包

向目标MAC发送伪造的ARP Reply,告知一个假的信息,达到欺骗的目的。

本机真实IP为:192.168.0.1(c0 a8 00 01)

本机真实MAC为:00-50-56-c0-00-01

伪造的MAC为:11-11-11-11-11-11

欺骗目标:

IP为:192.168.0.2(c0 a8 00 02)

MAC:00-0c-29-0b-42-7e

伪造的数据包如下:

Packet length: 60

00000000 : 00 0c 29 0b 42 7e 11 11 11 11 11 11 08 06 00 01

00000010 : 08 00 06 04 00 02 11 11 11 11 11 11 c0 a8 00 01

00000020 : 00 0c 29 0b 42 7e c0 a8 00 02(剩余部分用0填补)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: