地址解析协议 -- ARP

2016-01-02 23:19:36   最后更新: 2016-01-02 23:21:35   访问数量:993




以太网、令牌环等等数据链路都有自己的寻址机制,通常地址是 48bit 的,这是使用数据链路的任何网络层都需要遵从的

当一台主机接入以太网,把以太网数据帧发送到位于同一局域网的另一台主机时,需要根据 48bit 的以太网地址来确定目的接口,而不是网络层所使用的 IP 地址或其他协议地址

32bit 的 IP 地址怎么映射到 48bit 的以太网地址,这就是 ARP 地址解析协议的工作

 

下图展示了一次网络请求的完整过程,也十分形象地说明了 ARP 的工作:

 

 

当 IP 数据报发送给 ARP,ARP 在不知道目的主机的硬件地址的情况下是不能和硬件进行通信的,因此,ARP 发送一份称作 ARP 请求的以太网数据帧给局域网中的每个主机,这个过程就被成为广播,意思就是“如果你是这个 IP 地址的拥有者,请回答你的硬件地址”

目的主机收到 ARP 请求后,检测到请求中的目的 IP 地址就是主机自己的 IP 地址,这时,他就会发送一个 ARP 应答给 ARP,ARP 应答中包含主机 IP 地址及对应的硬件地址

随后,ARP 就可以传送完整的 IP 数据报了

 

点对点链路并不需要使用 ARP,他们只需要 IP 地址就可以进行通讯了

 

每个主机都有一个 ARP 缓存,一般保存时间为 20 分钟

运行命令: arp -a 可以查看 ARP 缓存中的所有内容

48bit 的以太网地址用 6 个 16 进制数表示,中间以冒号隔开,如:

? (192.168.1.1) at 88:25:93:33:e0:5c on en0 ifscope [ethernet] ? (192.168.1.103) at (incomplete) on en0 ifscope [ethernet] ? (192.168.1.104) at (incomplete) on en0 ifscope [ethernet] ? (192.168.1.108) at (incomplete) on en0 ifscope [ethernet] ? (192.168.1.255) at (incomplete) on en0 ifscope [ethernet]

 

 

ARP 分组中包含了以太网首部和 ARP 请求/应答两部分:

 

 

对于 ARP 请求/应答,帧类型字段值为 0x0806

硬件地址类型为 1 表示是以太网地址,协议类型为 0x0800 表示是 IP 协议

OP 字段即操作类型,取值如下:

  • 1 -- ARP 请求
  • 2 -- ARP 应答
  • 3 -- RARP 请求
  • 4 -- RARP 应答

 






技术帖      网络      network      ip      计算机网络      龙潭书斋      通信      协议      protocol      以太网      arp      ip地址      地址解析协议      通信协议      地址      硬件地址     


京ICP备15018585号