1.2.5 ARP协议
ARP全称Address Resolution Protocol,中文译为地址解析协议,它工作在数据链路层,在本层和硬件接口联系,同时对上层提供服务。ARP协议用于将网络中的IP地址解析为目的硬件地址(MAC地址),以保证通信的顺利进行。在硬件层次上进行的数据帧交换必须有正确的接口地址(即硬件地址),但TCP/IP只能识别32bit的IP地址,知道主机的IP地址并不能让内核(如以太网驱动程序)发送一帧数据给主机,内核必须知道目的端的硬件地址才能发送数据,ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。从逻辑Internet地址到对应的物理硬件地址需要进行翻译,这就是ARP的功能。
ARP的工作原理如下:
首先,每台主机都会在自己的ARP高速缓冲区(ARP Cache)中建立一个ARP列表,以表示IP地址和MAC地址的对应关系。
当源主机需要将一个数据包发送到目的主机时,会首先检查ARP列表中是否存在该IP地址对应的MAC地址。如果有,直接使用此MAC地址;如果没有,主机先将目的主机的IP地址与自己的子网掩码进行“与”操作,以判定目的主机与自己是否位于同一网段内。假如目的主机与自己在同一网段内,向本地网段发起一个ARP请求的广播包,查询此目的主机对应的MAC地址;如果目的主机在一个远程网络上,会通过路由器等路由设备转发此ARP请求到远程网络中广播。此ARP请求数据包中包括源主机的IP地址、硬件地址、以及目的主机的IP地址。
源主机和目的主机在一个网络内的情况下:网络中所有的主机收到ARP请求后,会检查数据包中的目的主机IP和自己的IP地址是否一致。如果不相同就不回应,但是该主机仍然会检查自己的ARP高速缓存,如果此请求的源IP地址已经在高速缓存中,可以用ARP请求帧中的发送端硬件地址对高速缓存中相应的内容进行更新;如果相同,该主机首先将发送端的MAC地址和IP地址添加到自己的ARP列表中,如果ARP表中已经存在该IP的信息,则将其覆盖,然后给源主机发送一个ARP响应数据包,告诉它需要查找的MAC地址。
如果源主机和目的主机不在同一个网络内,ARP请求将由路由器转发至其他网络。如果能找到目的主机,将路由器的MAC地址当作目的主机的网络地址发给源主机,以后源主机和目的主机之间的信息交换都要经过此路由器,这个路由器就被称作ARP代理;如果没有找到目的主机,在ARP高速缓存中会产生一条不完整的表项记录下来。
源主机收到这个ARP响应数据包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用此信息开始数据的传输。
ARP高效运行的关键是由于每个主机上都有一个ARP高速缓存。这个高速缓存存放了最近Internet地址到硬件地址之间的映射记录。高速缓存中每一项都有一个默认的生成时间,起始时间从被创建时开始计算。
在Windows操作系统中,可以在命令提示符窗口中使用ARP命令来查看ARP缓存表,具体操作方法如下:
01 显示ARP缓存表信息 在命令提示符窗口中输入命令“arp -a”。按【Enter】键,即可显示本地电脑中的ARP缓存表信息,如下图所示。
02 捆绑IP地址与MAC地址 还可使用ARP命令将自己的IP地址与MAC地址捆绑起来,以避免局域网中的其他电脑使用自己的IP地址,执行命令“arp/s 192.168.1.10148-5B-39-E9-DE-9E”,前者为IP地址,后者为MAC地址。若无法执行此命令,需要以管理员身份运行命令提示符。要想解除IP地址与MAC地址的绑定,只需执行命令“arp-d 192.168.1.154”,如下图所示。