1.ARP简介
地址解析协议(Address Resolution Protocol),其基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。它是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被邻居发现协议(NDP)所替代。
2.ARP工作流程
假设主机A和B在同一个网段,主机A要向主机B发送信息,具体的地址解析过程如下:
(1) 主机A首先查看自己的ARP表,确定其中是否包含有主机B对应的ARP表项。如果找到了对应的MAC地址,则主机A直接利用ARP表中的MAC地址,对IP数据包进行帧封装,并将数据包发送给主机B。
(2) 如果主机A在ARP表中找不到对应的MAC地址,则将缓存该数据报文,然后以广播方式发送一个ARP请求报文。ARP请求报文中的发送端IP地址和发送端MAC地址为主机A的IP地址和MAC地址,目标IP地址和目标MAC地址为主机B的IP地址和全0的MAC地址。由于ARP请求报文以广播方式发送,该网段上的所有主机都可以接收到该请求,但只有被请求的主机(即主机B)会对该请求进行处理。
(3) 主机B比较自己的IP地址和ARP请求报文中的目标IP地址,当两者相同时进行如下处理:将ARP请求报文中的发送端(即主机A)的IP地址和MAC地址存入自己的ARP表中。之后以单播方式发送ARP响应报文给主机A,其中包含了自己的MAC地址。
(4) 主机A收到ARP响应报文后,将主机B的MAC地址加入到自己的ARP表中以用于后续报文的转发,同时将IP数据包进行封装后发送出去。
知道了arp协议原理,再来说说linux的arp命令
arp命令用于操作主机的arp缓冲区,它可以显示arp缓冲区中的所有条目、删除指定的条目或者添加静态的IP地址与MAC地址对应关系。
格式:
arp
例:#]arp -i eth0 -d 10.10.10.1
#]arp -i eth0 -Ds 10.10.10.2 eth1 pub
选项:
-a:显示arp缓冲区的所有条目;
-H:指定arp指令使用的地址类型;
-d:从arp缓冲区中删除指定主机的arp条目;
-D:使用指定接口的硬件地址;
-e:以Linux的显示风格显示arp缓冲区中的条目;
-i:指定要操作arp缓冲区的网络接口;
-s:设置指定的主机的IP地址与MAC地址的静态映射;
-n:以数字方式显示arp缓冲区中的条目;
-v:显示详细的arp缓冲区条目,包括缓冲区条目的统计信息;
-f:设置主机的IP地址与MAC地址的静态映射。
例:
![e7b7e95b3de2e8c68431899be37ad56b.png](https://i-blog.csdnimg.cn/blog_migrate/95bbcb1a9b9fe364214ab0a492668a16.jpeg)
![534b99a9bce3be08f86246d5285b8afa.png](https://i-blog.csdnimg.cn/blog_migrate/9ed2e7e06a3aecce94ff71762e46ab57.jpeg)
![db568d452c644a963d6104da2769641a.png](https://i-blog.csdnimg.cn/blog_migrate/555407370aba175bb23c4e057aa5a510.jpeg)