最近在研读《深入理解计算机网络》,发现好多关于网络知识好匮乏。在看到ARP协议时,就在想java不是有接口可以获取计算机mac地址、ip、网卡等信息,是不是也可以伪造被攻击主机的mac地址进行攻击,使其不能上网。
首先,先熟悉一下ARP协议:
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。目前IPv6已经开始普及。(https://baijiahao.baidu.com/s?id=1616377983144293359&wfr=spider&for=pc)
以下是百度截图:
延伸:MAC地址是数据链路层和物理层使用的地址(物理地址),而IP地址是网络层和以上各层使用的地址,是一种逻辑地址。
至于网路层次划分请自行百度。
我们所使用的安装有TCP/IP协议的电脑或路由器里都有一个ARP缓存表,通过cmd命令: arp -a,查询
arp报文格式:14字节 以太网首部 + 28字节 ARP请求/应答
以太网传输层
目标以太网地址:目标MAC地址。FF:FF:FF:FF:FF:FF (二进制全1)为广播地址。
源以太网地址:发送方MAC地址。
帧类型:以太类型,ARP为0x0806。
在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。所以需要通过地址解析在主机在发送帧前将目标IP地址转换成目标MAC地址。
情景:当主机A要向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查找有无主机B的IP地址。如果有,就在ARP高速缓存中查出其对应的硬件地址,再把其硬件地址写入到MAC帧,然后通过局域网把该MAC帧发往此硬件地址,即实现主机A和主机B通信。
ARP攻击原理: ARP地址转换表是依赖于计算机中高速缓冲存储器动态更新的,而高速缓冲存储器的更新是受到更新周期的限制的,只保存最近使用的地址的映射关系表项