1.基本功能
在以太网协议中规定,同一局域网中的一台主机要和另一台主机进行直接通信,必须要知道目标主机的MAC 地址。而在TCP/IP 协议簇中,网络层和传输层只关心目标主机的IP地址。这就导致在以太网中使用IP 时,数据链路层的以太网协议接到上层IP 提供的数据中,只包含目的主机的IP 地址。于是需要一种方法,根据目的主机的IP 地址,获得其MAC 地址,这就是ARP(地址解析协议)要做的事情。所谓地址解析(address resolution),就是主机在发送帧前将目标IP 地址转换成目标MAC 地址的过程。
另外,当发送主机和目的主机不在同一个局域网中时,即便知道目的主机的MAC 地址,两者也不能直接通信,必须经过路由转发才可以。所以此时,发送主机通过ARP 获得的将不是目的主机的真实MAC 地址,而是一台可以通往局域网外的路由器的某个端口的MAC 地址。于是此后发送主机发往目的主机的所有帧,都将发往该路由器,通过它向外发送。这种情况称为ARP 代理。
2.工作原理
在每台安装有TCP/IP 的计算机中都有一个ARP 缓存表,表中的IP 地址与MAC 地址是一一对应的。
以主机A(192.168.1.5)向主机B(192.168.1.1)发送数据为例。当发送数据时,主机A会在自己的ARP 缓存表中寻找是否有目标IP 地址。如果找到了,也就知道了目标MAC 地址,直接把目标MAC 地址写入帧中发送即可;如果在ARP 缓存表中没有找到目标IP 地址,主机A 就会在网络上发送一个广播,这表示向同一网段内的所有主机发出这样的询问:“我是192.168.1.5,我的硬件地址是主机A 的MAC 地址,请问IP 地址为192.168.1.1 的MAC 地址是什么?”,网络上其他主机并不响应ARP 请求,只有主机B 接收到这个帧时,才向主机A 做出响应:“192.168.1.1 的MAC 地址是00-aa-00-62-c6-09 ”。
这样,主机A 就知道了主机B 的MAC 地址,它就可以向主机B 发送信息了。A 和B 还同时都更新了自己的ARP 缓存表(因为A 在询问时把自己的IP 地址和MAC 地址一起告诉了B),下次A 再向主机B 或者B 向A 发送信息时,直接从各自的ARP 缓存表中查找就可以了。ARP 缓存表采用了老化机制(即设置了生存时间TTL),在一段时间内(一般15~20 min)如果表中的某一行没有被使用,就会被删除,这样可以大大减少ARP 缓存表的长度,加快查询速度。
3.ARP 格式
ARP 通常应用于局域网,以太网中的ARP 报文格式,如图3.12所示。
图3.12 以太网中的ARP 报文格式(www.xing528.com)
ARP 报文中各个字段的含义如下:
(1)硬件类型:标明ARP 实现在何种类型的网络上。
(2)协议类型:表示解析协议(上层协议),一般是0800,即IP。
(3)硬件地址长度:MAC 地址长度,此处是6 字节,即48 位。
(4)协议地址长度:IP 地址长度,此处为8 位。
(5)操作类型:表示ARP 数据包类型。0 表示ARP 请求数据包,1 表示ARP 应答数据包。
(6)发送者硬件地址:发送端MAC 地址。
(7)发送者IP 地址:发送端IP 地址。
(8)目标硬件地址:目的端MAC 地址(等待接收端填充)。
(9)目标IP 地址:目的端IP 地址。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。