1、ARP是什么?
A
RP(Address Resolution Protocol)地址解析协议,是根据
IP地址
获取
物理地址
的一个
TCP/IP协议
,是
IPv4
中必不可少的协议。
2、A
RP有什么作用?
简单讲就是把IP地址转换成MAC地址,那为什么要转换呢?在现行寻址机制中,主机的以太网网卡只能识别MAC地址,而不能识别IP地址,若数据帧中不指明主机B的MAC 地址,主机B的网卡不能识别该帧是发给自己的,因此主机A仅知道主机B的IP地址还不够,还必须知道主机B的MAC地址,才能完成对主机B的访问;网络之间是用IP地址寻址,网络之内(同一物理网段或称IP子网)是用MAC地址寻址。
3、ARP工作流程
主机之间的通信通常是通过IP地址进行,例如ping 192.168.0.2。主机将报文发出之前,必须填好以太网头部,也就是目标MAC和源MAC,那MAC是怎么填的呢?
实际上,每一台主机都有一个IP地址与MAC地址的映射表(简称ARP缓存表),主机发送报文之前,通过IP地址在表里查找对应的MAC地址,找到后,就可以封装以太网帧然后发送出去。
ARP缓存表是动态更新的,刚开始的时候这个表是空的,如图1.1所示。
图1.1
4、举个例子
假设在一个局域网中,有两台主机,分别是主机A(IP地址是192.168.0.1,MAC是b0-fc-36-3c-17-10),主机B(IP地址是192.168.0.2,MAC是00-0c-29-ed-76-b0),主机A向主机B发送消息时会经过以下的步骤:
第1步:主机A首先查看自己的ARP表,确认是否有主机B对应的ARP表项。如果找到了对应的MAC地址,主机A直接利用ARP表中的MAC地址,对应IP地址进行帧封装,并将数据包发送给主机B。
第2步:如果主机A在ARP缓存表中找不到主机B的对应的MAC地址,它将询问192.168.0.2的MAC地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,主机B将ARP请求报文中的发送端(主机A)的IP地址和MAC地址存入自己的ARP表中。以单播的方式发送ARP响应给主机A,其中也包含了自己的MAC地址。。
第4步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。如图1.2是更新后的缓存表。
图1.2