ARP : Address Resolution Protocol 即为地址解析协议,其主要功能是实现IP地址到以太网物理地址(MAC地址)的映射。
需要注意的是这里说的IP地址是32bit的IPv4, 所以ARP协议仅适用于IPv4,而在IPv6中可以使用ICMP来替代ARP发送探索消息。
我们知道TCP/IP的四层模型是目前TCP/IP实际遵守的协议:
说到四层模型就不得不说TCP/IP各层的地址:
应用层的地址: 端口号
网络层的地址: 32bit 的IP地址
网络接口层地址:48bit 的MAC地址
端口号用于表明具体主机上的某一个特定的应用,而IP地址是TCP/IP虚拟世界的主机地址,MAC地址是网络接口层的地址。
利用ARP协议实现IP地址到MAC的映射.具体的实现步骤可以描述为'广播请求与单播响应'具体步骤:
本地主机在局域网中广播ARP请求,ARP请求数据帧中包含目的主机的IP地址。
目的主机收到广播报文以后进行ARP解析,识别出是询问其硬件地址。于是发送ARP应答包,里面包含IP地址及其对应的硬件地址。
本地主机收到ARP应答后,知道了目的地址的硬件地址,更新ARP缓存或者发送数据。
APR请求包是广播的,但是ARP应答帧是单播的,所以从 Wireshark的以太网帧中可以看到,ARP请求报文的以太网帧的目的地址为ff : ff : ff : ff : ff : ff
首先附上以太网帧格式:
帧类型(2 字节):类型字段指明使用的上层协议,也就是封装的是什么协议的数据帧,数据帧是在链路层,封装的是网络层的数据包。比如IP协议对应的帧类型字段为0x0800。
常见的类型如下:
0x0806 arp协议
0x0800 ip协议
0x8035 rarp 协议(反向arp协议)
操作类型(op):四中操作类型。
ARP请求(1),
ARP应答(2),
RARP请求(3),
RARP应答(4)。
所以ARP的协议号是0x0806
通过'广播请求与单播响应'的方式获取到特定IP对应的MAC地址,然后存储到本地【ARP缓存表】,以便后续使用。既然是'缓存'表,意味着它有时效性,所以ARP缓存表是实时刷新的,在我们的windows系统下,可以通过命令行'arp -a'
联系客服