地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议

在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC地址的。在以太网中,一个主机和另一个主机进行直接通信,必须要知道目标主机的MAC地址。但这个目标MAC地址是如何获得的呢?它就是通过地址解析协议获得的。所谓“地址解析”就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。

示例:

主机B要向主机C发送数据包,但是主机B只知道主机C的IP地址,不知道C的MAC地址,所以主机B在数据链路层封装MAC帧时,无法填写目的MAC地址。

其实,每台主机都有arp缓存表。

arp缓存表中记录有ip地址和mac地址的对应关系。

arp缓存表里面记录着之前和该主机通信的主机信息,例如,ip地址,mac地址

主机B和主机C通信时会首先查看arp缓存表,在表里查找主机C的ip地址和所对应的mac地址。但是主机B的arp缓存表里面并没有主机C的ip地址和mac地址,因此,主机B需要发送arp请求报文来获取主机C的mac地址。它会发送如下arp请求报文(因为不知道目的mac地址,所以会进行广播)

下图是以通俗的语言来描述请求报文内容,其实arp报文是有其规定的格式的。

arp请求报文被封装在帧中发送,目的地址为广播地址,主机B发送封装有arp请求报文的广播帧,总线上的所有设备都能收到广播,

当主机A收到广播以后,网卡将帧交付上层处理,上层的arp进程解析arp请求报文,发现所询问的ip地址不是自己的ip地址,主机A就会将该帧丢弃不会响应。

当主机C收到广播以后,网卡将帧交付上层处理,上层的arp进程解析arp请求报文,发现所询问的ip地址是自己的ip地址,需要进行响应,于是主机C会首先将B的ip地址和mac地址记录到自己的arp缓存表里面,然后给B发送arp响应,告诉主机B自己的mac地址

主机C给主机B发送arp响应报文(因为此时主机C知道主机B的mac地址,所以arp响应报文会进行单播)主机B发现mac地址匹配,网卡将帧交付上层处理,上层的arp进程会解析arp报文,然后将主机C的ip地址与mac地址记录到自己的arp缓存表中

然后主机B就可以给主机C发送数据包了。

arp缓存表里面记录的信息分动态和静态两种类型,

动态类型:自动获取,生命周期默认为两分钟,

静态类型:手工设置,不同操作系统下的生命周期不同,

arp的作用范围:逐段链路或逐个网络使用。

arp协议只能在一个网络或者一段链路中使用,而不能跨网段使用。

但是arp协议可以逐段链路来获取。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐