ARP地址解析协议
是根据IP地址来获取物理地址的一个TCP/IP协议。
原理
主机A的IP地址为192.168.1.1,MAC地址为0A-11-22-33-44-01;
主机B的IP地址为192.168.1.2,MAC地址为0A-11-22-33-44-02;
当主机A要与主机B通信时,地址解析协议可以将主机B的IP地址(192.168.1.2)解析成主机B的MAC地址,以下为工作流程:
- 第1步:根据主机A上的路由表内容,IP确定用于访问主机B的转发IP地址是192.168.1.2。然后A主机在自己的本地ARP缓存中检查主机B的匹配MAC地址。
- 第2步:如果主机A在ARP缓存中没有找到映射,它将询问192.168.1.2的硬件地址,从而将ARP请求帧广播到本地网络上的所有主机。源主机A的IP地址和MAC地址都包括在ARP请求中。本地网络上的每台主机都接收到ARP请求并且检查是否与自己的IP地址匹配。如果主机发现请求的IP地址与自己的IP地址不匹配,它将丢弃ARP请求。
- 第3步:主机B确定ARP请求中的IP地址与自己的IP地址匹配,则将主机A的IP地址和MAC地址映射添加到本地ARP缓存中。
- 第4步:主机B将包含其MAC地址的ARP回复消息直接发送回主机A。
- 第5步:当主机A收到从主机B发来的ARP回复消息时,会用主机B的IP和MAC地址映射更新ARP缓存。本机缓存是有生存期的,生存期结束后,将再次重复上面的过程。主机B的MAC地址一旦确定,主机A就能向主机B发送IP通信了。
通俗的说,假设现在有一个村庄A,村里有个小明想和本村的小强通话,小明首先查找自己的电话簿,如果有小强的电话,那么就直接打电话给小强,否则,小明就会在全村广播,“本村的小强你听着,你个大傻逼,欠我的钱还不还了,我的电话是****,收到请回复。”,本村的所有的人都听到了,其他人在心里骂了句“大傻逼”就装作没听见,小强听到后果断不能忍啊,立刻打了电话过去,并把电话告诉了小明,“以后就直接打我电话,别嚷嚷”。小明也是很听话,把电话记录下来,以后都直接打电话给小强了。这里的小明和小强对应的是主机IP,而电话则对应MAC地址。
那如果小明想和村庄B的小花联系,怎么办呢,在全村广播也没有用啊,这里就涉及了代理ARP.
ARP代理
地址解析协议工作在一个网段中,而代理ARP工作在不同的网段间,其一般被像路由器这样的设备使用,用来代替处于另一个网段的主机回答本网段主机的ARP请求。
例如,主机PC1(192.168.20.66/24)需要向主机PC2(192.168.20.20/24)发送报文,因为主机PC1不知道子网的存在且和目标主机PC2在同一主网络网段,所以主机PC1将发送ARP协议请求广播报文请求192.168.20.20的MAC地址。这时,路由器将识别出报文的目标地址属于另一个子网(注意,路由器的接口IP地址配置的是28位的掩码),因此向请求主机回复自己的硬件地址(0004.dd9e.cca0)。之后,PC1将发往PC2的数据包都发往MAC地址0004.dd9e.cca0(路由器的接口E0/0),由路由器将数据包转发到目标主机PC2。(接下来路由器将为PC2做同样的代理发送数据包的工作)。代理ARP协议使得子网化网络拓扑对于主机来说时透明的(或者可以说是路由器以一个不真实的PC2的MAC地址欺骗了源主机PC1)。
通俗的讲,如果小明和跟村庄B的小花通话,但是没有小花的电话,这时候小明又开始在村里广播了,“小花,小花,我爱你”,村长张大爷(路由器)听到后心想小花也不是咱们村的啊,你叫个毛,太扰乱村安了,于是就把自己的电话给了小明,这就是代理ARP,然后村长开始向隔壁村寻找,小花在属于哪个村子(这里涉及到路由器的路径选择),最终经过多个村子后,终于找到了小花所在的村庄,就江消息转发给了村庄B的村长老王,老王再去把消息传递给小花。
最后附上OSI七层协议图:
Mac地址,也称为局域网地址,以太网地址或者物理地址。他是用来确定网络设备位置的地址。在OSI模型中,第三层网络层负责IP地址,第二层数据链路层负责MAC地址。Mac地址用于在网络中唯一的标识一个网卡。