ARP概要
ARP是一个通过解析网络层地址来找寻数据链路层地址的网络传输协议。
确定了IP地址,就可向这个地址发送IP数据报。然而,在数据链路层,进行实际通信时必须要知道每个IP地址对应的MAC地址。
以目标IP地址为线索,用来定位接收数据包的网络设备对应的MAC地址。如果目标主机不在同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。ARP只适用于IPv4,不能用于IPv6。IPv6中可以用ICMPv6替代ARP发送邻居搜索消息
ARP工作机制
ARP借助APR请求与APR响应两种类型的包确认MAC地址。
下面以主机A(192.168.38.10)向主机B(192.168.38.11)发送数据为例
主机名称 | IP地址 | MAC地址 |
---|---|---|
A | 192.168.38.10 | 00-AA-00-62-D2-02 |
B | 192.168.38.11 | 00-BB-00-62-C2-02 |
- 当发送数据时,主机A会在自己的ARP缓存表中寻找是否有目标IP地址。如果找到就知道目标MAC地址为(00-BB-00-62-C2-02),直接把目标MAC地址写入帧里面发送就可。
- 如果在ARP缓存表中没有找到相对应的IP地址,主机A就会在网络上发送一个广播(ARP request),目标MAC地址是FF.FF.FF.FF.FF.FF,这表示向同一网段内的所有主机发出这样的询问:"192.168.38.11的MAC地址是什么?"
- 网络上其他主机并不响应ARP询问,只有主机B接收到这个帧时,才向主机A做出这样的回应(ARP response):"192.168.38.11的MAC地址是00-BB-00-62-C2-02",此回应以单播方式。这样,主机A就知道主机B的MAC地址,它就可以向主机B发送信息。同时它还更新自己的ARP高速缓存(ARP cache),下次再向主机B发送信息时,直接从ARP缓存表里查找就可。
根据ARP可以动态进行地址解析,在TCP/IP的网络结构和网络通信中无需要事先知道MAC地址究竟是什么,只要知道IP地址即可。
参考:https://zh.wikipedia.org/wiki/%E5%9C%B0%E5%9D%80%E8%A7%A3%E6%9E%90%E5%8D%8F%E8%AE%AE
参考:《图解TCP/IP》