初识ARP 从网络分层上看,我们知道二层网络中,使用MAC地址进行传输,MAC地址做为数据链路层的设备标识符。 二层网络 三层网络中,使用IP地址进行传输,IP地址做为网络层的设备标识符。 三层网络 我们还知道,容易记忆的域名,通过DNS解析成IP地址,有了IP地址就可以在网络上找到目的地。 DNS IP地址通过ARP,获得MAC地址,有了MAC地址才能在物理网络上传输数据。 ARP ARP是什么呢? ARP,是地址解析协议。根据设备的IP地址来查询对应MAC地址的协议。主机通过ARP查询到MAC地址后,将在ARP缓存表中增加映射表项,即IP地址和MAC地址的映射表项。 ARP表 举个栗子:我想去腾讯总部(IP地址),但不知道具体位置(MAC地址),这时我就可以通过导航软件(ARP)找到腾讯大厦。 腾讯大厦ARP原理 ARP是如何知道MAC地址的呢?简单说,ARP是通过ARP请求和ARP响应报文确定MAC地址的。 ARP报文 假如主机A向同一网段上的主机B发送数据。主机A的IP地址为10。0。0。1,主机B的IP地址为10。0。0。2,主机C的IP地址为10。0。0。3。它们都不知道对方的MAC地址。ARP地址解析过程如下: ARP解析过程主机A首先查看自己的ARP表(即ARP缓存表),确定是否有主机B的IP地址对应表项。如果有,则直接使用表项中的MAC地址进行封装,封装成帧后发送给主机B。 主机A查看ARP表如果主机A的ARP表没有对应的表项,就发送一个广播帧,源IP和源MAC地址是主机A,目的IP地址是主机B,目的MAC地址是广播MAC地址,即FFFFFFFFFFFF。这就是ARP请求报文。 ARP请求ARP请求是广播报文,同一个网段的所有主机都能收到。只有主机B发现报文中的目的IP地址是自己,于是主机B发送响应报文给主机A,源MAC地址和源IP地址是主机B,目的MAC地址和目的IP地址是主机A,这个报文就叫ARP响应报文。同时,主机B的ARP表记录主机A的映射关系,即主机A的IP地址和MAC地址的对应关系。 ARP响应主机C也收到了ARP请求报文,但目的IP地址不是自己,所以不会进行响应。于是主机C添加主机A的映射关系到ARP表,并丢弃ARP请求报文。 ARP表主机A收到ARP响应报文后,添加主机B的映射关系,同时用主机B的MAC地址做为目的地址封装成帧,并发送给主机B。 ARP获取MAC地址 如果每发送一个IP报文就要进行一次ARP请求,来确定MAC地址,那将会造成不必要的网络流量,通常的做法是用ARP表记录IP地址和MAC地址的映射关系。主机发送报文时,首先会查看它的ARP表,目的是为了确定是否是已知的设备MAC地址。如果有,就直接使用;如果没有,就发起ARP请求获取。不过,缓存是有一定期限的。ARP表项在老化时间(agingtime)内是有效的,如果老化时间内未被使用,表项就会被删除。 ARP缓存 ARP表项分为动态ARP表项和静态ARP表项:动态ARP表项由ARP动态获取,因此在网络通信中,无需事先知道MAC地址,只要有IP地址即可。如果老化时间内未被使用,表项就会被自动删除。静态ARP表项是手工配置,不会老化。静态ARP表项的优先级高于动态ARP表项,可以将相应的动态ARP表项覆盖。 ARP表项类型代理ARP ARP广播报文会被路由器隔离,没有默认网关、网段不同的主机相互通信时,连接这两个网络的路由器可以响应这个ARP请求,这个过程叫做代理ARP(ProxyARP)。 代理ARP 主机A与另一个网段的主机B通信,主机A直接发送ARP请求,解析主机B的MAC地址。运行了代理ARP的路由器收到ARP请求后,代替主机A在20。0。0。0网段发出ARP请求,解析主机B的地址。 代理ARP请求 主机B收到路由器发出的ARP请求,发出ARP响应报文,告知自己的MAC地址是222222222222。路由器收到ARP响应后,也向主机A发送ARP响应,但目的MAC地址是与10。0。0。0网段连接的端口MAC地址是101010101010。主机A收到报文后,在ARP表中添加IP地址是20。0。0。1和MAC地址是101010101010的映射表项。 代理ARP响应 因此主机A会将所有要发送给主机B的数据发送给路由器,路由器再将其转发给主机B。反之亦然。 代理ARP功能屏蔽了分离的网络,主机不用修改IP地址和子网掩码就可以和现有的网络互通。让用户使用起来,跟在同一个网络上一样。代理ARP使用在主机没有默认网络,或没有任何路由的网络上,通常是那些不支持设定子网掩码的老设备。但代理ARP会转发ARP广播报文,造成网络效率低,不适合用于大规模网络。 代理ARPRARP RARP是将ARP反过来,从设备MAC地址获取IP地址的一种协议。通常是打印机等小型嵌入式设备接入网络时会用得到。 RARPRARP原理 使用RARP需要搭建一台RARP服务器,在服务器上注册设备的MAC地址及IP地址。设备插电启动后,广播发送一个请求报文,希望获得IP地址应答。目的MAC地址是广播地址,源MAC地址是自己的物理地址。 RARP请求RARP服务器收到IP地址请求后,给设备分配一个IP地址,并通过响应报文发送给设备。设备收到响应报文后,把RARP服务器分配的IP地址设置成自己的IP地址。 RARP响应免费ARP 免费ARP是一种特殊的ARP请求,它并非通过IP找到对应的MAC地址,而是当主机启动的时候,发送一个免费ARP请求,即请求自己的IP地址的MAC地址。 免费ARP 与普通ARP请求报文的区别在于报文中的目标IP地址。普通ARP报文中的目标IP地址是其它主机的IP地址;而免费ARP的请求报文中,目标IP地址是自己的IP地址。 广播免费ARP 免费ARP的作用:起到一个宣告作用。它以广播的形式将数据包发送出去,不需要得到回应,只为了告诉其它主机自己的IP地址和MAC地址。可用于检测IP地址冲突。当一台主机发送了免费ARP请求报文后,如果收到了ARP响应报文,则说明网络内已经存在使用该IP地址的主机。可用于更新其它主机的ARP缓存表。如果该主机更换了网卡,而其它主机的ARP缓存表仍然保留着原来的MAC地址。这时,通过免费的ARP数据包,更新其它主机的ARP缓存表。ARP报文 ARP报文分为ARP请求报文和ARP应答报文,它们的报文格式相同,但是各个字段的取值不同。 ARP报文格式 ARP报文中各个字段的含义如下。 ARP报文字段含义网络实战 ARP可以动态地进行地址解析,因此网络中的设备无需配置,只要有IP地址就可以自动获得MAC地址。但是静态ARP和代理ARP等是需要单独配置。下面我们代理ARP的实验。代理ARP网络拓扑 网络拓扑实验要求PC1和PC2只配置IP地址和子网掩码;RT(路由器)配置代理ARP功能,PC1可以ping通PC2。操作步骤PC1、PC2分别配置IP地址。 PC配置RT配置IP地址和代理ARP功能。 RT配置功能验证 配置完成后,下面就要进行验证,检查功能是否生效、配置是否正确。在PC1上pingPC2的IP地址,进行连通性测试。 ping测试验证 还可以抓包查看完整的报文交互过程,同时验证下理论知识是否正确。 抓包 原文链接:https:mp。weixin。qq。comsyh912ZVbnRjmmPKL4hrxA 作者:Fox