深入分析ARP协议的理论与实践

时间:2020-09-29 15:02:05 计算机毕业论文 我要投稿

深入分析ARP协议的理论与实践

  摘 要:充分认识ARP的作用与工作过程有助于我们认识网络、理解TCP/IP体系的通信原理,从而指导我们分析网络中故障发生的原因以及采用有效的方法排查故障。
  关键词:网段;ARP协议;RARP协议;
  
  充分认识ARP的作用与工作过程有助于我们认识网络、理解TCP/IP体系的通信原理,从而指导我们分析网络中故障发生的原因以及采用有效的方法排查故障。首先,子网掩码,网关与ARP协议的概念初学者往往难以一下子掌握。因此很有必要通过实验来帮助学员更加深入直观地了解子网掩码,网关与ARP协议的基本概念与工作原理。
  
  1 子网掩码(Subnet Mask)
  
  子网掩码的主要功能是告知网络设备,一个特定的IP地址的哪一部分是包含网络地址与子网地址,哪一部分是主机地址。网络的路由设备只要识别出目的地址的网络号与子网号即可作出路由寻址决策,IP地址的主机部分不参与路由器的路由寻址操作,只用于在网段中唯一标识一个网络设备的接口。
  子网掩码使用与IP相同的编址格式,子网掩码为1的部分对应于IP地址的网络与子网部分,子网掩码为0的部分对应于IP地址的主机部分。将子网掩码和IP地址作“与”操作后,IP地址的主机部分将被丢弃,剩余的是网络地址和子网地址。
  
  2 网关(Gateway)
  
  在Internet中的网关一般是指用于连接两个或者两个以上网段的网络设备,通常使用路由器(Router)作为网关。
  在TCP/IP网络体系中,网关的基本作用是根据目的IP地址的网络号与子网号,选择最佳的出口对IP分组进行转发,实现跨网段的数据通信。
  
  3 ARP协议(Address Resolution Protocol)
  
  在以太网(Ethernet)中,一个网络设备要和另一个网络设备进行直接通信,除了知道目标设备的网络层逻辑地址(如IP地址)外,还要知道目标设备的第二层物理地址(MAC地址)。ARP协议的基本功能就是通过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。
  当一个网络设备需要和另一个网络设备通信时,它首先把目标设备的IP地址与自己的子网掩码进行“与”操作,以判断目标设备与自己是否位于同一网段内。如果目标设备在同一网段内,并且源设备没有获得与目标IP地址相对应的MAC地址信息,则源设备以第二层广播的形式(目标MAC地址为全1)发送ARP请求报文,在ARP请求报文中包含了源设备与目标设备的IP地址。同一网段中的所有其他设备都可以收到并分析这个ARP请求报文,如果某设备发现报文中的目标IP地址与自己的IP地址相同,则它向源设备发回ARP响应报文,通过该报文使源设备获得目标设备的'MAC地址信息。
  如果目标设备与源设备不在同一网段,则源设备首先把IP分组发向自己的缺省网关(Default Gateway),由缺省网关对该分组进行转发。如果源设备没有关于缺省网关的MAC信息,则它同样通过ARP协议获取缺省网关的MAC地址信息。
  为了减少广播量,网络设备通过ARP表在缓存中保存IP与MAC地址的映射信息。在一次ARP的请求与响应过程中,通信双方都把对方的MAC地址与IP地址的对应关系保存在各自的ARP表中,以在后续的通信中使用。ARP表使用老化机制,删除在一段时间内没有使用过的IP与MAC地址的映射关系。
  
  4 实验设计
  
  我们通过设计一个简单的实验来帮助学员更深入直观地理解上述三个知识点所涉及的基本概念与原理。在实验中,我们利用ping命令来检验主机间能否进行正常的双向通信。在“ping”的过程中,源主机向目标主机发送ICMP的Echo Request报文,目标主机收到后,向源主机发回ICMP的Echo Reply报文,从而可以验证源与目标主机能否进行正确的双向通信。
  A与B为实验用的PC机,使用Windows2000 Professional作操作系统。
  实验方案:
  步骤1:
  设置两台主机的IP地址与子网掩码:
  A: 192.168.1.130 255.255.255.0
  B: 192.168.1.125 255.255.255.0
  两台主机均不设置缺省网关。
  用arp -d命令清除两台主机上的ARP表,然后在A与B上分别用ping命令与对方通信,在A与B上分别显示,
  A: Reply from 192.168.1.125: bytes=32 time<10ms TTL=128
  B: Reply from 192.168.1.130: bytes=32 time<10ms TTL=128
  用arp -a命令可以在两台PC上分别看到对方的MAC地址。
  分析:由于主机将各自通信目标的IP地址与自己的子网掩码相“与”后,发现目标主机与自己均位于同一网段(192.168.1.0),因此通过ARP协议获得对方的MAC地址,从而实现在同一网段内网络设备间的双向通信。

深入分析ARP协议的理论与实践

  步骤2:
  将A的子网掩码改为:255.255.255.128,其他设置保持不变。
  操作1:用arp -d命令清除两台主机上的ARP表,然后在A上ping B,在A上显示结果为:Destination host unreachable
  用arp -a命令在两台PC上均不能看到对方的MAC地址。
  分析1:A将目标设备的IP地址(192.168.1.125)和自己的子网掩码(255.255.255.128)相“与”得192.168.1.0,和自己不在同一网段(A所在网段为:192.168.1.128),则A必须将该IP分组首先发向缺省网关。由于A的缺省网关没有配置,无法对分组进行正确发送,因此显示“目标主机不可到达”。
  操作2:接着在B上ping A,在B上显示结果为:Request timed out 此时用arp-a命令可以在两台PC上分别看到对方的MAC地址。
  分析2:B将目标设备的IP地址(192.168.1.130)和自己的子网掩码(255.255.255.0)相“与”,发现目标主机与自己均位于同一网段(192.168.1.0),因此,B通过ARP协议获得A的MAC地址,并可以正确地向A发送Echo Request报文。但由于A不能向B正确地发回Echo Reply报文(原因见分析1),故B上显示ping的结果为“请求超时”。在该实验操作中,通过观察A与B的ARP表的变化,可以验证:在一次ARP的请求与响应过程中,通信双方就可以获知对方的MAC地址与IP地址的对应关系,并保存在各自的ARP表中。
  步骤3: