一、在以太网的局域网中,一台主机和另外一台主机通信发包,是根据48bit的以太网地址来确定目的接口的,设备驱动程序从不检查IP数据报中的目的IP地址。地址解析协议(ARP)为这两种不同的地址形式提供映射:32bit的IP地址和数据链路层48bit地址的转换。
二、ARP为IP地址到对应的硬件地址之间提供动态映射。RARP是被那些没有磁盘驱动器的系统使用,它需要系统管理员进行手工设置,ARP通信过程解析:1、比如在一个局域网上,一台主机A(192.168.0.12)要访问机器B(192.168.0.11)。他会发送一份称作ARP请求的以太网数据帧给以太网上的每个主机(广播包)。ARP请求数据帧中包含目的主机的IP地址。2、目的主机收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。3、收到ARP应答后,系统的ARP缓存便会记录MAC-IP的对应信息(ARP攻击点),在CMD里打ARP -a便可查询现在机器的ARP缓存情况。现在IP数据报现在就可以传送了。
三、在ARP背后有一个基本概念,那就是网络接口有一个硬件地址(一个48bit的值,标识不同的以太网或令牌环网络接口)。在硬件层次上进行的数据帧交换必须有正确的接口地址。但是,TCP/IP有自己的地址:32 bit的IP地址。
四、知道主机的IP地址并不能让内核发送一帧数据给主机。内核(如以太网驱动程序)必须知道目的端的硬件地址才能发送数据。ARP的功能是在32bit的IP地址和采用不同网络技术的硬件地址之间提供动态映射。
五、ARP协议是不可靠和无连接的,通常即使主机没有发出ARP请求,也会接受发给它的 ARP回应,并将回应的mac和ip对应关系放入自己的ARP缓存中。此外,内核为2.4.x的linux系统在ARP实现中,考虑到了ARP欺骗,不会接受未经请求的ARP回应,因此直接向这种系统发送ARP reply也是无效的,不过,有意思的是虽然它不会接受未经请求的ARP reply,但是只要接收到ARP的request,它就会更新自己的ARP缓存。ARP协议并不只在发送了ARP请求才接收ARP应答。当电脑接收到ARP应答数据包的时候,就会对本地的ARP缓存进行更新,将应答中的IP和MAC地址存储在ARP缓存中,其中包含一个或多个表,它们用于存储路由器IP 地址及其经过解析的以太网或令牌环物理地址。计算机上安装的每一个以太网或令牌环网络适配器都有自己单独的表,如果在没有参数的情况下使用,则 arp 命令将显示帮助信息。