网络工具-arp作用

Posted by 周思进 on November 24, 2019

文章网络工具-ifconfig-MAC信息谈到MAC地址信息,准备先说说arp。

前面文章并没有谈到MAC地址的作用,这里简单说下。

下面是TCP/IP详解卷一中的封装过程截图。

数据封装

从图中可以看到应用数据包由对应的协议层一层层封装后才从物理网卡发送出去,那同样数据包接收过程也是向上一层层解封装后处理。

网卡接收数据包后,首先检查的是以太网首部,以太网首部这14个字节包含的就是目的mac地址和源mac地址及2个字节的类型字段。只有目的mac地址是本机接收地址的情况下,数据包才会继续进行处理。

所以两个设备之间收发数据,最终都是需要先通过mac地址来确定目标主机。

那么目标mac地址怎么来确认呢?这里就需要使用到arp协议了。


arp工作于链路层,用于将局域网的主机IP地址转换成对应的物理mac地址。

因为mac地址是局域网才有效,访问跨局域网的目标主机,都是先通过IP路由转发给网关地址,由网关进行转发到达最终的目标局域网后,再通过arp来确定目标主机的mac地址,这中间数据包转发的目的mac地址则都是网关的mac地址。当然这都是通过设备在局域网发送arp包来询问网关mac地址或者最终的目标主机mac地址。

发送方如果没有目标主机的mac地址缓存,则会发送arp广播到局域网,所有主机都会收到arp查询包,而只有目标主机才会响应,这样发送方得到目标mac地址后,将其记录到arp缓存中。

arp缓存也有相应的老化时间,超过这个时间,arp缓存就会清除。如果不想让目标主机清除arp缓存而影响通信效率,设备可以通过主动发送arp包到网络中,也就是俗称的免费arp,局域网的设备收到arp包,都会自动更新arp缓存。不过因为arp是广播包,如果太过频繁,那反而得不偿失,影响网络收发效率。

另外需要说明的是arp只适用于查询IPV4地址,IPV6则不是通过arp来查询,而是通过NDP协议来进行发现。

最后说下ARP的另一个常用作用,就是用于检测是否有IP冲突。通过arp查询自己的IP,如有回应,则说明冲突了。