第4章 ARP:地址解析协议
4.1 引言
ARP(Address Resolution Protocol)提供32bit IP地址到48bit硬件地址的动态映射。
4.2 一个例子
FTP连接过程中ARP的作用:
- 解析主机名→IP地址(DNS)
- TCP请求建立连接
- 发送IP数据报
- 判断目的在本地网络
- 需要将IP地址→硬件地址
- 广播ARP请求
- 目的主机发送ARP应答
- 发送IP数据报
4.3 ARP高速缓存
- 存放IP地址到硬件地址的映射
- 生存时间:20分钟(完整表项)
- 查看命令:
arp -a
4.4 ARP的分组格式
以太网ARP帧
- 以太网首部:目的地址、源地址、帧类型(0x0806)
- ARP字段:
- 硬件类型(1=以太网)
- 协议类型(0x0800=IP)
- 硬件地址长度(6)
- 协议地址长度(4)
- 操作码(1=请求,2=应答)
- 发送端硬件地址
- 发送端IP地址
- 目的端硬件地址
- 目的端IP地址
4.5 ARP举例
一般示例
arp who-has svr4 tell bsdi arp reply svr4 is-at 0:0:c0:c2:9b:26
text ARP请求是广播,应答是单播。
不存在主机的ARP请求
- 超时重传:5.5秒、24秒、29.5秒
- TCP连接超时:75秒
ARP高速缓存超时
- 完整表项:20分钟
- 不完整表项:3分钟
4.6 ARP代理(Proxy ARP)
- 路由器代替目的主机回答ARP请求
- 让发送端误以为路由器就是目的主机
- 也称为混合ARP或ARP出租
4.7 免费ARP(Gratuitous ARP)
- 主机发送查询自己IP地址的ARP请求
- 用途:
- 检测IP地址冲突
- 更新其他主机ARP缓存(硬件地址变更时)
4.8 arp命令
arp -a # 显示高速缓存
arp -d hostname # 删除表项
arp -s hostname eth_addr # 添加静态表项
arp -s hostname eth_addr pub # 代理ARP
4.9 小结
ARP提供IP到硬件地址的动态映射。ARP高速缓存是关键组件,通过arp命令可查看和修改。