ARP (Address Resolution Protocol) 地址解析协议。通过IP地址得知其物理地址 !
每个主机或是路由器都维护ARP缓存(表)!可以使用命令arp -a 查看ARP表内容
1:DST:如果是ARP请求DST为ff:ff:ff:ff:ff:ff是广播地址,在同一广播地址中所有以太网接口都可以接受这个帧。
2:在以太网帧中ARP请求或是应答,2个字节的Length or Type字段必须是0x0806.
3: Hard Type 字段指出硬件地址类型,对于以太网,该值是1.
4:prot type 协议类型指出映射的协议地址类型,对于IPV4地址为0x0800
5:OP字段指出操作是ARP请求(value is 1),ARP应答(value is 2),RARP请求(3),RARP应答(4)
6:硬件地址长度和协议地址长度分别指出硬件地址和协议地址的长度,以字节为单位.对于以太网上 IP 地址的 ARP 请求或应答来说,它们的值分别为 6 和 4
7:这里有重复信息:Ethernet Header和ARp消息都包含发送方硬件地址。对于一个ARP请求处理目的硬件地址(设为0)之外,其他字段都要填值。When a system receives an ARP request directed to it, it fills in its hardware address, swaps the two sender addresses with the two target addresses, sets the Op field to 2, and sends the reply.
注意:
1:网络上其他主机并不响应 ARP 询问,只有接收端主机接收到这个帧时,才向发送端主机做出这样的回应:2:ARP 是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题.若所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络.剩下的工作就由下一个网络来做:
3:从IP地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的.
4:主机或路由器要和本网络上另一个已知 IP 地址的主机或路由器进行通信,ARP 协议会自动地将该IP地址解析为链路层所需要的硬件地址
四种典型情况:
1:发送方是主机,要把 IP 数据报发送到本网络上的另一个主机.这时用 ARP 找到目的主机的硬件地址: 2:发送方是主机要 IP 数据报发送到其他网络的主机.这时 ARP 找到本网络上某个路由器硬件地址.剩下工作由这个路由器完成
3:发送方是路由器,要把 IP 数据报转发到本网络上的一个主机.这时用 ARP 找到目的主机的硬件地址:
4:发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机.这时用 ARP 找到本网络上的一个路由器的硬件地址.剩下的工作由这个路由器来完成