引言
当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48bit的以太网地址来确定目的接口的。
设备驱动程序从不检查IP数据报中的目的IP地址。
地址解析为两种不同的地址进行映射:32bit的IP地址和48bit的以太网地址。
ARP背后基本概念
- 网络接口有一个硬件地址(48bit的值)
- 在硬件层次上进行数据帧交换必须有正确的接口地址
- TCP/IP有自己的地址:32bit的IP地址
- 知道IP地址并能让内核发送数据给主机,必须知道目的端的硬件地址
- ARP的功能就是在32bit 的IP地址和硬件地址之间提供动态映射
ARP高速缓存
ARP高速缓存是ARP高效运行的关键。高速缓存存放了最近IP地址和硬件地址的映射记录。高速缓存中每一项的生存时间为20分钟,起始时间从被创建开始计算。
ARP分组格式
- 前两个字段为以太网的源地址和目的地址。目的地址为全1的特殊地址是广播地址,同一局域网的所有以太网接口都要接收广播的数据帧。
- 两字节长的帧类型,表示后面的数据类型。对于ARP请求或应答来说,是0x0806
- 硬件类型表示硬件地址的类型,为1表示以太网地址。协议类型字段表示要映射的协议地址类型,它的值为0x0800表示IP地址。
- 硬件地址长度和协议地址长度,以字节为单位
- 操作字段有4种类型。1表示ARP请求、2表示ARP应答、3表示RARP请求、4表示RARP应答。
ARP代理
如果ARP请求是从一个网络的主机发往另一个网络的主机,那么连接两个网络的路由器就可以回答该请求,这个过程称作委托ARP或ARP代理。
这样可以欺骗发起ARP请求的主机,以为路由器就是目的主机。
免费ARP
它是指主机发送ARP查找自己的IP地址。通常,发生在系统引导期间进行接口配置的时候。
免费ARP有两个作用:
- 一个主机通过它来确定另一个主机是否设置了相同的IP地址。
- 如果发送免费ARP的主机正好改变了硬件地址,那么这个分组就可以使其他主机高速缓存中旧的硬件地址进行相应的更新。