- 点对点连接的两个主机,不需要地址也可以进行通信
- 但是当多个主机连接在同一个数据链路中,想要实现两个主机之间的通信,则每个主机都必须要有一个唯一标识,即数据链路层地址
- 每个主机发送的帧中,必须携带发送主机和接收主机的地址,由于这类地址是用于媒体接受控制(Media Access Control),所以称为MAC地址
- MAC地址一般被固化在网卡中,因此又被称为硬件地址或物理地址
- 一般情况下用户主机包含两个网络适配器(有线网卡与无线网卡),每个网络适配器都有一个全球唯一的MAC地址
- 交换机和路由器有多个网络接口,所以交换机与路由器有多个MAC地址
- 严格说,MAC地址是对网络上各接口的唯一标识,而不是网络上各设备的唯一标识
IP地址是因特网上的主机和路由器所使用的地址,用于标识两部分信息:
- 网络地址:标识因特网上数以百万计的网络
- 主机地址:标识同一网络上的不同主机
显然,如果只是在一个数据链路上,只需要知道源主机与目的主机的MAC地址也可以进行通信,但是如果是在不同的网络中,还需要有IP地址才可以进行通信。
上图中:
- 主机H1知道把数据包发送给R1,由R1把数据包转发出去,H1知道R1的IP地址,但是不知道R1的MAC地址
- R1知道把数据包转发给R2,R1知道R2的IP地址,但是不知道R2的MAC地址是多少
如何通过主机的IP地址找到其相应的MAC地址,就是ARP协议所要解决的问题。ARP协议只能在一个数据链路或一个网络上使用,不能跨网络使用。
- 在一个数据链路(一个网络)中,有三台主机A,B,C
- 每台主机内部都有一个ARP高速缓存表,主要记录该网络中每台主机的IP地址,及其对应的MAC地址
- 当主机B要给主机C发送数据包时,会先在自己的ARP缓存表中,查找主机C的IP地址对应的MAC地址
- 如果ARP缓存表中没有找到对应关系,那么主机B会在网络中发送ARP请求报文(广播)
- ARP请求报文内容主要包含:主机B的IP地址,主机B的MAC地址,目的主机的IP地址,希望获取目的主机的MAC地址
- 主机B发送广播帧后,该网络内的所有主机都会接受到ARP请求报文
- 主机A接受ARP请求后,发现所询问的IP地址不是自己的IP地址,就不理会
- 主机C收到ARP请求后,发现所询问的IP地址是自己的IP地址,主机C会先将主机B的IP地址与MAC地址记录在自己的ARP缓存表中,然后响应ARP请求,将自己的IP地址与MAC地址发送给主机B
- 主机B收到ARP响应后,将主机C的IP地址与MAC地址记录在自己的ARP高速缓存表中

