2.2 ARP协议的介绍
下面来学习ARP协议的相关知识。
1.ARP概述
在局域网中,交换机通过MAC地址进行通信,要获得目的主机的MAC地址就需要使用ARP协议将目的IP地址解析成目的MAC地址。所以,ARP(Address Resolution Protocol,地址解析协议)的基本功能是负责将一个已知的P地址解析成MAC地址,以便在交换机上通过MAC 地址进行通信。
如图所示,假设PC1发送数据给PC2需要知道PC2的MAC地址,可是PC1是如何知道 PC2的MAC地址呢?它不可能把全世界的MAC地址全部记录下来,所以当PC1访问PC2之前就要询问PC2的P地址所对应的MAC地址是什么,这时就需要通过ARP请求广播实现。
(1)如图所示,主机PC1想发送数据给主机PC2,它检查自己的ARP 缓存表,ARP缓存表是主机存储在内存中的一个IP地址和MAC地址一一对应的表。在Windows操作系统中可以使用arp-a命令来显示ARP缓存表。
Windows10系统中ARP缓存表的格式如下。
如果要查找的MAC地址不在表中,ARP会发送一个广播,从而找到目的地的MAC 地址。
经查看PC1的ARP缓存表中没有PC2的MAC地址,这时PC1会初始化ARP请求过程(发送一
个ARP请求广播)用于发现目的地的MAC 地址。
(2)主机PC1发送ARP请求信息,ARP请求是目的地址为MAC广播地址(FFFF-FF-FF-FF-FF)
的MAC地址广播帧,从而保证所有的设备都能够接收到该请求,在ARP请求信息中包括PC1的P
地址和 MAC 地址。
(3)交换机收到广播地址后,发现为MAC地址广播,所以将数据帧从除了接收口之外的所有接
口转发出去。各主机接收到数据帧后,进行IP地址的比较,如果目标P地址与自己的IP地址不同,
则会丢弃这个数据包,而只有PC2这台主机会在自己的ARP表中缓存PC1的IP地址和MAC 地址的
对应关系,同时发送一个ARP应答,来告诉PC1自己的MAC地址(这个数据帧是单播)。
(4)PC1在接收到这个回应的数据帧后,在自己的ARP表中添加PC2的IP地址和MAC 地址的对
应关系。在这个过程中,交换机已经学习到了PC1和PC2的MAC地址,之后传输数据时,PC1和PC2之间使用单播方式。
其实,路由器像其他网络设备一样收发数据,也保存着一张将P地址映射到MAC 地址的ARP
缓存表。路由器连接不同的网络,而通常的网络只具有本网络内部的IP地址到MAC地址的映射信息,对于其他网络的信息知之甚少。在路由器上会建立与之相连接的所有网络的ARP表,显示将不同网络上的IP地址映射为MAC地址的对应情况。
2.Windows10操作系统主机ARP命令的使用
1)清除ARP缓存
使用arp-a命令可以查看ARP缓存表,而要清除ARP缓存需要使用arp-d命令,具体操作如
下所示。
在清除ARP缓存后,再显示ARP缓存会提示没有ARP条目。
2)ARP 绑定
有些ARP病毒会自动向外发布ARP应答信息,而ARP应答中的IP地址是其他主机的IP地址,MAC地址是假的。当其他主机收到ARP应答后更新ARP表,最终导致网络中主机无法正常通信。
ARP绑定是将IP地址和相应主机的MAC地址进行绑定,是防止ARP攻击的有效方法,进行 ARP
绑定后,主机将不会处理收到的已绑定IP地址的ARP应答。
使用arp-sip-addressmac-address命令对P地址和MAC地址进行绑定,该操作为临时性的,
重启系统后,绑定失效。
在Windows10客户端主机上运行arp-s,若提示错误信息“ARP 项添加失败:拒绝访问”,如图所示,可以通过以下方法解决,
首先运行命令netsh interface ipv4 show neighbors 查看网卡接口序号,如图所示。
然后运行命令netsh interface ipv4 set neighbors 510.0.0.17824-e9-b3-10-e5-41绑定IP-MAC,其中的“5”是网卡接口序号,该操作可实现永久性绑定。当再次运行arp-a,发现类型已经是“静态”,如图所示。
静态绑定的ARP条目默认将一直存在,即使系统重启也会存在,但可以使用命令“arp-d”清除;动态学习到的ARP条目有老化时间(默认为120s),在老化时间规定的时间内,没有收到任何该MAC地址主机的数据时就删除该条目。
可以使用命令arp-d来删除所有ARP映射关系(包括静态绑定的ARP条目),也可以用arp-d[IP]来删除特定条目。
3.Cisco设备的ARP命令
1)查看ARP缓存表
使用showarp命令显示ARP缓存表,具体操作如下所示。
其中,Age表示ARP条目存在的时间,“-”表示始终存在。
2)清除ARP 表
使用cleararp-cache命令清除ARP缓存表。
3) ARP 绑定
使用arpip-addressmac-addressarpa命令绑定ARP条目,具体操作如下所示。
4.ARP 原理演示
如图所示,这是一个对等网的环境,PC1和PC2第一次通信,因此在通信双方的ARP缓存中不会有彼此的IP-MAC地址的映射。
具体实验步骤如下。
(1)用arp-a命令查看PC1和PC2的ARP缓存,具体操作如下所示,
(2)在PC1上pingPC2的P地址,之后用arp-命令查看ARP缓存信息,具体操作如下所示。
在PC1的ARP缓存中显示了PC2的IP-MAC地址的对应关系,这是由于在ping命令发送数据之前,PC1先通过ARP请求获得了PC2的MAC地址。
3. ICMP 协议
作为网络管理员,必须知道网络设备之间的连接状况,因此就需要有一种机制来侦测或通知网络设备之间可能发生的各种各样的情况,这就是ICMP协议的作用。ICMP协议(Internet Control MessageProtocol)的全称是“Internet控制消息协议”,主要用于在IP网络中发送控制消息,提供可能发生在通信环境中的各种问题的反馈。通过这些反馈信息管理员就可以对所发生的问题做出判断,然后采取适当的措施去解决。
3.1 ICMP的主要功能介绍
ICMP 是一个“错误侦测与回馈机制”,通过IP数据包封装,用来发送错误和控制消息,其目的是使管理员能够掌握网络的连通状况,例如,在图中,当路由器收到一个不能被送到最终目的
地的数据包时,路由器会向源主机发送一个ICMP主机不可达的消息。
ICMP协议属于网络层协议(也有高于网络层协议的说法),因为传输ICMP信息时,要先封装网
络层的IP报头,再交给数据链路层,即ICMP报文对应IP层的数据,如图所示。
3.2 ICMP的基本使用
在网络中。ICMP协议的使用是靠各种命令来实现的。下面以ping命令为例,介绍ping命令的使用及返回的信息。
ping命令的基本格式如下所示。
其中的[]中的参数为可选参数。
1.ping命令的返回信息
在检查网络连通性时,ping命令是用得最多的。当我们ping一台主机时,本地计算机发出的就
是一个典型的ICMP数据包,用来测试两台主机是否能够顺利连通。ping命令能够检测两台设备间
的双向连通性,即数据包能够到达对端,并能够返回,如图所示。
1)连通的应答
如图所示,从返回的信息可知,从源主机向目标主机共发送了4个32字节的包,而目标主机回应了4个32字节的包,包没有丢失,源主机和目标主机之间的连接正常,除此以外,可以根据“时间”来判断当前的联机速度,数值越低,速度越快,在最后两行还有一个总结,如果发现丢包很严重,则可能是线路不好造成的丢包,那就要检查线路或更换网线了;最后一行是“往返行程”时间的最小值,平均值、最大值,它们的单位都是ms(毫秒)。
2)不能建立连接的应答
如果两台主机之间不能建立连接,那么ICMP也会返回相应的信息,如图所示。
如图所示,ICMP返回信息为“无法访问目标主机”,说明两台主机之间无法建立连接,可能
是因为没有正确配置网关等参数。由于找不到去往目标主机的“路”,因此显示“无法访问目标主机”。
3)应答为未知主机名
由于网络中可能存在的问题很多,因此返回的ICMP信息也很多。如图所示,ICMP返回信息为“找不到主机”说明DNS无法进行解析。
4)连接超时的应答
如图所示,返回信息为“请求超时”,说明在规定的时间内没有收到返回的应答消息。
如果目标计算机启用了防火墙的相关设置,即使网络正常可能也会返回“请求超时”信息。关于防火墙的知识将在后续课程中介绍。
在路由器上也广泛使用ICMP协议来检查设备之间的连接及运行情况。如果没有ICMP 协议,那看到的就只是一些单纯的设备的堆叠,至于它们的工作情况则一无所知。所以ICMP协议对于管理网络设备,监控网络状态等都有着非常重要的作用。
2.ping 命令的常用参数
在Windows操作系统中,默认情况下发送4个ping包,如果在ping命令后面加上参数“一t”,如图所示,系统将会一直不停地ping下去。
-a
在Windows系统上,在ping命令中加入“-a”参数,可以返回对方主机的主机名,如图所示。
-l
一般情况下,ping包的大小为32字节,有时为了检测大数据包的通过情况,可以使用参数改变ping包的大小,如图所示,ping包的大小为10000字节。