将IP地址转换成MAC地址的网络层协议
为什么需要ARP
位于网络层的主机和路由器是通过其逻辑地址
标识的,在TCP/IP协议簇中,逻辑地址对应为IP地址,长度为32比特。
报文是通过物理网络送达主机和路由器的。在物理层中,通过各自的物理地址识别,其要求物理地址本地唯一,不必全局唯一。如以太网使用的48比特MAC地址。
报文传输需要两个层次的寻址:逻辑寻址、物理寻址
需要解决的问题:IP数据包包含的是IP地址,而路由器上的硬件接口只理解物理网络的寻址;硬件接口必不可少
地址映射和解析
静态映射:创建一张逻辑地址与物理地址相关联的表格。
静态映射的局限性主要体现在主机IP与MAC地址的更新。例如更换新的网卡等,会导致MAC地址或IP地址发生变化。因此,静态映射表需要周期性更新,而这将导致巨大的网络开销
动态映射:当主机知道逻辑或物理地址中的一个时,可以使用协议去查询对应的另一个地址
实现动态映射通常有两种协议:地址解析协议(Address Resolution Protocol,ARP)和逆向地址解析协议(Reverse Address Resolution Protocol,RARP)。
ARP将一个逻辑地址映射到一个物理地址,RARP将一个物理地址映射到一个逻辑地址。
ARP的四种情况
- 发送者是一台主机,向同一网络中的另一台主机发送报文。此时IP需要与一个物理地址建立映射
- 发送者是一台主机,向另一个网络中的另一台主机发送报文。主机查询路由表,查询下一跳路由器的IP地址。此时,路由器的IP地址成为必须映射到物理地址的逻辑地址。IP地址仍然是目的地址,而物理地址为下一跳路由器的MAC地址。
- 发送者是一台路由器,接收到一个目的地址是处于其他网络主机的数据包。发送者查询路由表,找到目的主机对应的下一跳的IP地址。下一跳的IP地址成为必须映射到物理地址的逻辑地址。此时,IP地址仍是目的地址,物理地址是通往目的主机的路径上下一跳路由器的MAC地址。
- 发送者是一台路由器,接受到目的地址是同一网络主机的数据报。数据报的目的IP成为必须映射到物理地址的逻辑地址。
RARP服务器
RARP服务器是一台特殊的服务器,可以通过配置来侦听RARP请求并作出应答。
RARP的工作方式
- 发送者生成RARP请求消息:源节点生成RARP请求,发送者MAC地址和目的地址均设置为本机的MAC地址。发送者IP和目的IP为空。
- 发送者广播RARP请求,在本地网络中。
- 本地节点处理RARP请求消息,通过本地网络中的RARP服务器。没有被设置为RARP服务器的主机会忽略这个请求。
- RARP服务器查询表中源节点的硬件地址,寻找对应的IP地址,发送者MAC和IP均设为RARP服务器自身的地址,目的MAC地址为源节点的MAC地址,目的IP地址为查询出的IP地址。
- RARP服务器发送RARP应答消息,通过单播形式,传回源节点。
- 源节点处理应答消息,将应答消息中的目的IP设为自身的IP地址。
RARP的限制
RARP是一个非IP协议,它不能被客户端的TCP/IP协议栈所处理。而且每一台中心服务器的MAC地址必须手动配置,并且协议只能返回一个IP地址。
因此,近年来RARP已经被停用,被引导程序协议(Bootstrap Protocol,BOOTP)与动态主机分配协议(Dynamic Host Configuration Protocol,DHCP)所取代。