1.关于ARP协议

ARP:address resolution protocol 地址解析协议

java arp 报文 arp报文类型_数据链路层

目的MAC不能不存在,负责完成不了封装,于是出现ARP

 

2.ARP报文

java arp 报文 arp报文类型_数据链路层_02

ARP报文的类型分为request请求和reply/respond回应

 

1)ARP请求:

在发送arp请求你时,不知道目标mac地址;

数据链路层在封装成帧时,会将目标mac设为全f表示向广播域中所有目标发送;

arp结构封装在数据链路层的以太网后面,主要包括:源ip、目标ip、源mac、目标mac;

    其中只有目标mac是未知的,目标mac就会用全0表示;

java arp 报文 arp报文类型_java arp 报文_03

java arp 报文 arp报文类型_数据链路层_04

ARP请求发送的类型为广播帧 (同一广播域的主机都会收到)

 

2)ARP响应:

arp响应时,数据链路层的帧目的mac地址就是arp请求设备的mac地址;

arp数据结构中:源ip、目标ip、源mac、目标mac都是已知的,主要是讲自己的mac地址作为源mac告诉对方;

java arp 报文 arp报文类型_mac地址_05

 

java arp 报文 arp报文类型_数据链路层_06

ARP响应的类型为单播帧 (可以使用软件修改为广播-ARP欺骗)

 

3.ARP缓存

ARP缓存表:获取到的MAC地址会存放在该表

也就是arp请求成功后就会有缓存,就不用每次请求都需要发送arp请求了,用arp -a命令查看缓存;

java arp 报文 arp报文类型_数据链路层_07

 

java arp 报文 arp报文类型_缓存_08

 

命令

备注

Arp -a

查看ARP缓存

Arp -d

清空ARP缓存

4.ARP欺骗

ARP欺骗:攻击者发送“无故ARP响应”来伪装其他设备

java arp 报文 arp报文类型_缓存_09

主要原理:冒充网关, 给目标设备发送arp回复,导致目标无法通过路由器转发而无法上网;

实现方式:抓取一个网关的arp回复包,改包(回复一个错误的mac地址),用发包软件不停发送改过的包;

防御:装arp防火墙:就是绑定正确的网关mac地址和网关ip,如果不对就说明是arp攻击,发送警告;

 

5.免费ARP 

java arp 报文 arp报文类型_缓存_10

用来检测配置/修改的IP地址是否重复

例如:

    自己的ip是1.0.0.1,想知道ip是否与别人冲突;

    发送arp请求,将目标ip设为1.0.0.1,如果有人回复,说明这个ip被其它设备使用了;

 

java arp 报文 arp报文类型_java arp 报文_11

连续发送3次来检测地址有没有冲突

 

6.ARP数据包格式

java arp 报文 arp报文类型_缓存_12