温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ARP工作原理及解析

发布时间:2020-06-05 08:00:07 来源:网络 阅读:4523 作者:拼命学 栏目:网络安全


一、ARP包格式分析

工作原理:

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

每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。试想一下如果没有缓存,我们每发一个IP包都要发个广播查询地址,岂不是又浪费带宽又浪费资源?而且我们的网络设备是无法识别ARP包的真伪的,如果我们按照ARP的格式来发送数据包,只要信息有效计算机就会根据包中的内容做相应的反应.

ARP数据报格式


ARP工作原理及解析


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

以太网首部:

字段                   长度(Byte)          默认值                 备注
接收方MAC       6                                                    广播时, ff-ff-ff-ff-ff-ff
发送方MAC       6        
Ethertype           2                                                   0x0806       0x0806ARP帧的类型值

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字节再加上4CRC校验字节,还差18个字节

 实例解析   

本机IP192.168.0.1 (c0 a8 00 01)
本机MAC00-50-56-c0-00-01

目标IP192.168.0.2 (c0 a8 00 02)
目标MAC00-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 06ARP数据包)
ARP数据包类型:00 01Request
数据内容:告诉IPc0 a8 00 02的目标主机,本机的IPc0 a8 00 01MAC
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 06ARP数据包)
ARP数据包类型:00 02Reply
数据内容:告诉MAC    00 50 56 c0 00 01 的主机,你的IPMAC我已经收到,我的MACIP00 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 06ARP数据包)
ARP数据包类型:00 01Request
数据内容:告诉IPc0 a8 00 03的主机,本机的MACIP00 0c 29 0b 42 7e c0 a8 00 03。由于网络内没有c0 a8 00 03 主机,所以此数据包将不会有回应,此时,局域网交换机将会刷新缓存,使你的IPMAC对应起来。

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 06ARP数据包)
ARP数据包类型:00 01Request
数据内容:告诉IPc0 a8 00 01的主机,本机的MACIP00 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 06ARP数据包)
ARP数据包类型:00 02Reply
数据内容:告诉MAC00 0c 29 0b 42 7e的主机,本机的MACIP00 50 56 c0 00 01c0 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)
MAC00-0c-29-0b-42-7e

伪造的数据包如下:
Packet length60
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填补)

 


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI