地址解析协议

ARP协议Address Resolution Protocol),或称地址解析协议。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。他是IPv4中网络层必不可少的协议,不过在IPv6中已不再适用,并被ICMPv6所替代。

1. 基本功能

以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC地址。

而在TCP/IP协议中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP协议时,网络接口层的以太网协议接到上层IP协议提供的数据中,只包含目的主机的IP地址。于是需要一种方法,根据目的主机的IP地址,获得其MAC地址。这就是ARP协议要做的事情。所谓地址解析(address resolution)就是主机在发送帧前将目标IP地址转换成目标MAC地址的过程。

另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP协议获得的将不是目的主机的真实MAC地址,而是一台可以通往局域网外的路由器的MAC地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP代理(ARP Proxy)

2. 原理

在每台安装有TCP/IP协议的电脑或路由器裡都有一个ARP缓存表,表里的IP地址与MAC地址是一对应的,如下表所示。

主机名稱

IP地址

MAC地址

A

192.168.38.10

00-AA-00-62-D2-02

B

192.168.38.11

00-BB-00-62-C2-02

C

192.168.38.12

00-CC-00-62-C2-02

D

192.168.38.13

00-DD-00-62-C2-02

E

192.168.38.14

00-EE-00-62-C2-02

...

...

...

2.1. 查看ARP缓存表

#mac os x
arp -a
server1.li3huo.com (192.168.1.2) at 1c:6f:65:0:e2:b7 on en0 ifscope [ethernet]
? (192.168.1.254) at 2:e0:52:11:d1:ed on en0 ifscope [ethernet]
? (192.168.1.255) at ff:ff:ff:ff:ff:ff on en0 ifscope [ethernet]

#linux
arp
Address                  HWtype  HWaddress           Flags Mask            Iface
server2.li3huo.com      ether   00:00:0c:9f:f0:0b   C                     eth0

#windows
C:\Users\liyan>arp -a
Interface: 192.168.1.7 --- 0xf
  Internet Address      Physical Address      Type
  192.254.255.255       ff-ff-ff-ff-ff-ff     static
  224.0.0.22            01-00-5e-00-00-16     static
  224.0.0.252           01-00-5e-00-00-fc     static
  239.255.255.250       01-00-5e-7f-ff-fa     static
  255.255.255.255       ff-ff-ff-ff-ff-ff     static

3. 另见

4. [编辑]外部链接

5. Reference

MainWiki: ARP (last edited 2013-04-15 23:15:00 by twotwo)