为什么我们不直接使用硬件地址进行通信?
由于全世界存在着各式各样的网络,它们使用不同的硬件地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此几乎是不可能的事。
连接到因特网的主机都拥有统一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为调用 ARP 来寻找某个路由器或主机的硬件地址都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
功能:从IP地址到物理地址的映射。
高速缓存技术:
在主机内开辟一片专用内存空间,用来存放局域网上所有的主机和路由器的IP地址到物理地址的映射表。
当主机1向主机2发送报文时,它首先检查高速缓存中有没有主机2的IP地址,如果有,就查找出对应的物理地址,将其写入到MAC帧,然后通过局域网发送出去。
如果没有主机2的IP地址,主机1自动运行ARP去查找主机2的物理地址。
ARP工作原理/步骤
1)主机 A 上的 ARP 协议进程在本局域网上发送一个ARP广播帧,该帧的主要内容是:“我的IP地址是202.197.12.1,物理地址是E1(08-00-2B-00-EE-0A),我想知道IP地址为202.197.12.2的主机的硬件地址。”
2)本网络上所有计算机都收到广播帧,并检查自己的 IP 地址。
3)主机 B 发现它与自己的IP地址相同,于是就向主机 A发送一个ARP响应报文,该报文的主要内容是:“我的IP地址是202.197.12.2,物理地址是E2(00-00-2C-00-44-0D)”。
4)主机 A 收到主机 B 的 ARP 响应报文后,就在其高速缓存中写入主机 B 的 IP 地址到硬件地址的映射。当主机 A向主机 B 发送数据时,就可以直接从高速缓存中找到主机 B 的 IP 地址到物理地址的映射。
提高 ARP的效率的措施
1)采用高速缓存技术。
2)在源端主机发送的ARP请求报文(ARP广播帧)中加入它自己的地址映射。
3)源主机在局域网上广播它自己的地址映射时,网络上所有主机都应将它存放到它们各自的高速缓存中。
4)新计算机入网时,要主动广播地址映射。
应当注意的问题
ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题
路由器不转发以太网广播帧。
不在同一局域网:
如果所要找的主机和源主机不在同一个局域网上:
通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址
把分组发送给这个路由器,让这个路由器把分组转发给下一个网络
剩下的工作就由下一个网络来做
不在同一局域网上的地址解析:
总结:ARP地址解析过程需记住8个字:广播请求、单播响应
如果需要进一步分析ARP地址解析的过程,就需要用wires hark抓取数据包来进行分析。
原文地址:https://www.cnblogs.com/dragon2018/p/8886444.html