ARP (address resolution protocol,地址解析协议)是一个位于TCP/IP 协议栈中的底层协议,它用于映射计算机的物理地址与网络IP地址。
(mac address ——————————IP)
Internet分布式中,每个主机都被分配一个32位的网络地址,此时就存在将计算机的IP地址与物理地址之间的转换问题。
ARP所做的工作就是在主机端发送帧前,根据目标IP地址获取MAC地址,以保证通信过程的顺畅。
具体过程如下:
每台主机都会在自己的ARP缓冲区中简历一个ARP列表,用于存储IP地址与MAC地址的对应关系。
当源主机需要将一个数据包发送到目标主机时候?
(1)检查自己的ARP列表是否存在ARP列表是否存在该IP地址对应的MAC地址。
(2)如果存在,直接将数据包发送到MAC地址,如果不存在,就向本地网段发起一个ARP请求的广播包,用于查询目标主机对应的MAC地址。
【此ARP请求数据包里包括源主机的IP地址、硬件地址以及目标主机的IP地址等。】
(3)网络中所有的主机收到这个ARP请求之后,会检查数据包中的目的IP是否与自己的IP地址一致,如果不同就忽略此数据包;如果相同,该主机就会将发送端的MAC地址与IP地址添加到自己的ARP列表中。
(4)如果ARP列表中已经存在该IP地址的相关信息,则将其覆盖掉,接着给源主机发送一个ARP相应包,搞死对方自己是它所需要找的MAC地址。
(5)最后源主机收到这个ARP响应包后,将得到的目的主机的IP地址和MAC地址添加到自己的ARP列表中,并利用次信息开始数据的传输。
(6)如果源主机一直都没有收到ARP响应包,则表示ARP查询失败。
RARP 与ARP工作方式相反,RARP发出要反向解析的物理地址并希望返回其对应的IP地址。应答包括有能够提供所需信息的RARP服务器发出的IP地址。RARP获取IP地址的过程如下;
(1)需要知道自己的IP地址的机器向另外一台机器上的服务器发送请求,并等待服务器发出响应,开始不知道服务器的物理地址,所以通过广播。
(2)一旦通过广播对地址的请求,就必须唯一标识自己的硬件标识(如:cpu序列号),这个表示能让可执行程序容易获得。源主机收到从RARP服务器的响应消息后,就可以利用得到的 IP地址进行通讯。
还有 代理ARP概念;
IPv6 中用NDP 代替地址解析。
(还需要进一步查看其应用)