APP下载

计算机网络ARP协议的解析与仿真实现

2016-09-18兴,周军,史伟,杜

实验科学与技术 2016年4期
关键词:宿主机模拟机IP地址

张 兴,周 军,史 伟,杜 颖

(辽宁工业大学 电子与信息工程学院,辽宁 锦州 121001)



计算机网络ARP协议的解析与仿真实现

张兴,周军,史伟,杜颖

(辽宁工业大学电子与信息工程学院,辽宁锦州121001)

在运用虚拟机技术模拟由路由器、交换机和多台计算机共同组成的复杂网络的基础上,实现了仅用一台普通PC机搭建ARP原理模拟机的目标。通过ARP原理模拟机解决了IP地址冲突等常见问题。总结了计算机网络应用程序间通讯所要遵循的基本原则,并将ARP原理模拟机进一步推广到计算机网络参考模型的其他层次当中。

计算机网络;ARP协议;模拟机;虚拟机;网络参考模型

地址解析协议(addressresolutionprotocol,ARP)是计算机网络中最重要的协议之一,处于OSI参考模型的网络层,且处于IP协议之下,如图1所示[1-2];因此,ARP包并不像ICMP包那样要封装在IP数据报中,而是介于IP数据报和数据链路帧之间,起到承上启下的作用。众所周知,数据链路层使用物理地址通讯,网络层要靠网络层地址通讯,而我们往往只知道目的IP地址,这就需要ARP协议将IP地址转换成本网络所使用的物理地址后,双方才能完成底层数据帧的发送与接收[3-5]。

ARP在计算机网络中的地位举足轻重,在路由器与路由器之间、路由器与主机之间无不采用物理地址进行通讯;因此,弄清ARP原理,并利用其解决实际问题是非常必要的[6-8]。但当前的大学计算机网络课程对ARP原理的验证重视不够,采用的实验方法复杂,所需的网络设备价格昂贵,实验环境难以搭建[9-10]。本文通过采用一台普通的PC机及相关软件完成了ARP原理模拟机的搭建,以低成本、易操作性满足了用户的需求,在技术上和经济上是完全可行的。通过搭建ARP原理模拟机,学生在宿舍就可以完成ARP原理的验证,并且还能解决一些实际问题。

图1 ARP协议的位置

1 搭建ARP原理模拟机

ARP原理模拟机的搭建是非常容易的。首先,选择一台普通的PC机,内存最好在512M以上。操作系统可选择WindowsServer的一个版本,并在操作系统上安装虚拟机软件(本文使用的是VMware)。然后,利用虚拟机软件安装或克隆多个虚拟机,从而由宿主机和虚拟机构成了ARP原理模拟机,网络拓扑图如图2所示。虚拟机的网卡连接方式可选择“Bridged”或“Host-only”,桥接时一个网卡要绑定双IP,但在宿主机网卡未联网线时,只能选择“Host-only”方式。在采用“Host-only”方式时,如果同时打开两个虚拟机,且这两个虚拟机的IP属于不同网段,则虚拟机网卡的连接方式应选择“Custom:Specificvirtualnetwork”,使两个虚拟机上的网卡分别对应宿主机上不同的“Host-only”网卡。最后,分别在宿主机和虚拟机上安装操作系统自带的Microsoft“网络监视器”,启动后选择本地网卡捕获数据帧进行分析。

图2 ARP原理模拟机的网络拓扑图

2 利用ARP原理模拟机验证ARP原理

在ARP原理模拟机搭建起来后,我们要用其验证ARP原理。首先,分别用ipconfig/all命令检查两机的IP地址、MAC地址和网关的绑定是否正确;然后在两机上分别执行arp-a命令,结果显示“NoARPEntriesFound”,证明此时两机的ARP缓存是空的。在虚拟机1上ping宿主机,结果显示“Replyfrom192.168.0.1:bytes=32time<1msTTL=128”,证明已经ping通;再执行arp-a命令,结果如表1所示。

表1 虚拟机1上ARP缓存状况

虚拟机1已经得到宿主机的IP地址与MAC地址的映射。通过查看两机的Microsoft网络监视器捕获的数据包的顺序(如表2所示),发现ARP包在前,ICMP包在后,说明在同一网络中只有在获悉对方的物理地址后才能进行通信。

表2中目标MAC地址为*BROADCAST,说明ARP请求包是以广播方式发送的,本网络的所有主机都会接收到;而表2中的第2行说明只有其IP与ARP请求包中的目的IP相同的主机才发送响应包,而且ARP的响应包是以单播方式发送的,响应时直接将ARP请求包中的源主机的MAC地址转变为ARP响应包的目的地址。

表2 宿主机上捕获的数据包情况

几分钟后,再在两机上分别执行arp-a命令,前面的映射从ARP缓存中消失,说明ARP为其缓存中每一项映射设置了计时器。设置的目的,主要是考虑用户IP或MAC地址可以灵活地变化;另外,从捕获的数据包情况分析,ARP请求包并非定期发送,而是按需发送;而一个ARP包只解析一个网络地址,这样有利于简化ARP包的格式。

从ICMPEchoReplyPacket中可以看出ICMP包作为IP数据包的数据存在,而IP数据包又作为Ethernet帧的数据存在。Microsoft网络监视器使用摘要窗格、细节窗格和十六进制窗格,按照从参考模型的低层到高层的顺序,把各层协议数据单元(protocoldataunit,PDU)的格式表现得淋漓尽致。因此,将这种方法扩展到整个计算机网络,就可以解决计算机网络大部分协议的原理和PDU的格式问题,使学生对计算机网络抽象理论的理解变得形象化、具体化。

3 利用ARP原理模拟机解决实际问题

在验证了ARP原理后,我们使用ARP原理模拟机来解决一些常见的实际问题。

1)当接收到一个ARP请求包(广播包)时,是只有与目的IP地址相同的主机还是所有接收到此ARP请求包的主机,将源主机的IP地址与物理地址的映射保存在本机的ARP缓存中?

2)在跨网段通信时,当另一网段的主机未开机(也许不存在)或目的网络不存在时,ARP缓存的结果如何?

3)IP地址冲突的原因是什么?与ARP有关吗?

对于第一个问题,操作的时候我们需要打开虚拟机1和虚拟机2,并使用ipconfig/all命令检查地址的绑定情况;然后在各机上执行arp-a命令,确保结果均是“NoARPEntriesFound”,即保证ARP缓存为空。在虚拟机1上ping宿主机,结果显示ping通;再在各机上执行arp-a命令,结果显示虚拟机1上有宿主机的IP与MAC的映射,宿主机上也有虚拟机1的IP与MAC的映射,而虚拟机2的ARP缓存仍为空。查看虚拟机2上捕获的数据包情况,发现的确收到了虚拟机1的ARP请求包。因此问题1的结论是:当收到一个ARP请求包时,只有与目的IP地址相同的主机将源主机的IP地址与物理地址映射保存在本机的ARP缓存中。这么做也是非常有道理的。即使其他主机在其缓存中保存此映射,此时也许他们不想与源主机通讯;而当他们想与源主机通讯时,此映射又过期了。不保存的做法也节省了其他主机的资源。

对于第二个问题,操作的时候我们需要打开虚拟机1和虚拟机3,并在宿主机上启动“路由和远程访问服务”,将宿主机设为“仅路由器”方式。重复解决第1个问题时的操作,确保地址绑定正确,并且ARP缓存都为空。我们先验证正常情况下跨网段通信时ARP包的情况。在虚拟机1上ping虚拟机3,得到“Replyfrom192.168.1.2:bytes=32time<1msTTL=127”,证明已经ping通,并且经过一个路由器后,IP包的TTL值减1。分别执行arp-a命令后虚拟机1和虚拟机3都得到了其网关的IP地址与MAC地址的映射。这里要注意,虚拟机1和虚拟机3并不需要知晓对方的MAC地址,MAC地址只在同一网段有效。通过查看所捕获的数据包,发现首先由虚拟机1发送帧给路由器(此处为宿主机),然后由路由器将帧修改后发给虚拟机3。接下来,将虚拟机3关机。在虚拟机1上ping192.168.1.2,得到“Requesttimedout”。执行arp-a命令后,发现在虚拟机1上已有其网关的IP地址与MAC地址的映射。在虚拟机1上随便ping一个不存在的网络中的IP,比如ping192.168.1.3,得到“Replyfrom192.168.0.1:Destinationhostunreachable”。通过arp-a命令也得到其网关的IP地址与MAC地址的映射。因此,第二个问题的结论是:在跨网段通信时,当另一网络的主机未开机(或不存在)或目的网络不存在时,ARP的缓存均会保存其网关的IP地址与MAC地址的映射。

根据前两个问题的分析,我们得出结论:在计算机网络中,应用程序(进程)之间的通信要遵循一定的原则。

1)若通信时的目的地址为域名,则先通过DNS将域名解析成IP地址。

2)通过将本机IP、目的IP分别与本机MASK作按位与运算来检测源目主机是否在同一网络。若结果(网络地址)相同,则证明两主机属于同一网络,采用直接交付;否则,将IP包交给本网络的网关(路由器),属于间接交付。

3)在交付时,首先查看本机ARP缓存是否存在目的IP(间接交付时为网关IP)与目的物理地址的映射,存在则直接封装成帧发送,否则利用ARP协议广播其请求包获取映射。

根据此原则,在第一个问题中虚拟机1将帧直接交付给了虚拟机2,而在第二个问题中虚拟机1采用的是间接交付,先将帧交付给它的网关,然后由它的网关查询路由表后,将IP包重新封装成帧交付到目的地。因此,即使IP包未成功交付给目的地,源主机也会得到其网关的IP地址与MAC地址的映射。

对于第三个问题,操作的时候我们需要打开虚拟机1和虚拟机2。利用ipconfig和arp命令确保地址绑定正确且ARP缓存为空。修改虚拟机1的IP地址,让它与宿主机的IP相同;点击“确定”后,虚拟机1的网络连通图标带上一个红色问号,并提示“刚配置的静态IP地址已在网络上使用。请重新配置一个不同的IP地址。”用ipconfig命令检测后发现虚拟机1的IP与MASK均变成无效的地址0.0.0.0;同时在宿主机上出现提示“Windows- 系统错误。IP地址与网络上的其他系统有

冲突。”用ipconfig命令检测后,发现宿主机IP地址未改变,使用时功能正常。查看宿主机、虚拟机1和虚拟机2上捕获的数据包,发现虚拟机1在修改IP地址成功前,为避免IP地址冲突要宣布其IP地址,方法就是广播一个ARP请求包,询问是否有使用此IP地址的主机。如果接收到ARP响应包,则说明网上已有此IP地址,发生了IP地址冲突,应更换另一IP地址使用,如图3所示;如果没收到ARP响应包,则在连续发送3个ARP请求包后,成功修改了自己的IP地址,如图4所示。因此IP地址冲突的根本原因就是一个IP地址不能对应两个MAC地址,否则无法保证目标的唯一性。

图3 IP地址冲突

图4 IP地址宣布成功

4 结束语

本文完成了仅用一台普通的PC机搭建ARP原理模拟机的任务,而且实施过程中所用到的硬件、软件都非常容易得到,搭建、应用等操作也非常容易掌握,这对于普通学生、工程技术人员和所有对计算机网络感兴趣的人理解ARP原理,并应用ARP原理解决实际问题帮助很大;另外,我们在ARP原理模拟机中使用了虚拟机技术,当宿主机与外界断开联系时,各虚拟机捕获数据帧时不会受到其他广播帧的干扰,易于我们分析结果。通过操作系统自带的网络监视器捕获数据包后,按TCP/IP参考模型自底向上的顺序进行分析,我们获得了模型中各层的PDU的格式,从而熟悉了各层的功能。我们可以将ARP原理模拟机推广到整个计算机网络当中,依照本文所使用的方法能帮助大家理解所有网络协议原理,应该说它的应用前景是非常广泛的。

[1]PLUMMERDC.AnEthernetaddressresolutionprotocol[S].[S.l.]:IETFRFC826,1982.

[2]谢希仁.计算机网络[M].6版.北京:电子工业出版社,2013:114~132.

[3]李国佳,杨绍禹,李秀芹.计算机网络课程实践教学的改革探索[J].兰州石化职业技术学院学报,2015,38(4):106-109.

[4]刘佳良.计算机网络实验教学改革的探索与实践[J].教育教学论坛,2015(01):222-223.

[5]毛志伟,叶舫,杨勇,等.面向职业化的计算机网络课程体系探索与构建[J].高教学刊,2016(4):108-109.

[6]宋广佳,季振洲,王晖.加入盲确认安全机制的地址解析协议[J].高技术通讯,2014,24(3):251-255.

[7]刘广钟,高军,刘旻等.报文分析技术在计算机网络教学中的应用[J].计算机教育,2014(1):76-80.

[8]姜文红.计算机网络原理教改探索[J].教育教学论坛,2015(10):81-82.

[9]随飞扬,王杰锋,马维骏,等.便携网络实验环境的构建与应用[J].实验科学与技术,2014,12(2):12-15.

[10]李玲,王非.基于网络的虚拟现实技术在高校实验教学中的应用[J].实验科学与技术,2014,12(3):37-39.

Principle Analysis and Simulation Realization of ARP Protocol in Computer Network

ZHANG Xing,ZHOU Jun,SHI Wei,DU Ying

(SchoolofElectronicsandInformationEngineering,LiaoningUniversityofTechnology,Jinzhou121001,China)

ThispaperrealizesthegoalthatbuildstheARPprinciplesimulatorwithonlyoneordinaryPCbasedonusingvirtualmachinetechnologytosimulatethecomplexnetworkcomposedofrouters,switches,andmanycomputers.ThroughtheARPprinciplesimulator,wecansolvemanyfactualissuessuchasIPaddresscollisionetc.ThispapersummarizesbasicrulessubjecttowhichnetworkapplicationscommunicateandextendstheARPprinciplesimulatorthroughtothewholeTCP/IPreferencemodelfurther.

computernetworkcourseconstruction;ARPprotocol;simulator;virtualmachine;networkreferencemodel

2015-02-03;修改日期: 2016-05-20

辽宁省普通高等学校本科教育教学改革研究项目(UPRP20140214,2016-291);辽宁省高等学校杰出青年学者成长计划项目(LJQ2014066)。

张兴(1975-),男,博士,副教授,主要从事网络体系结构与协议、信息安全、物联网技术与工程的研究。

TP393

Adoi:10.3969/j.issn.1672-4550.2016.04.018

猜你喜欢

宿主机模拟机IP地址
嵌入式计算机软件测试关键技术研究
铁路远动系统几种组网方式IP地址的申请和设置
IP地址切换器(IPCFG)
虚拟网络实验室在农村职校计算机网络技术教学中的应用研究
厦航第五台模拟机正式交付
应用道路模拟机进行整车强化坏路试验研究
基于SNMP的IP地址管理系统开发与应用
公安网络中IP地址智能管理的研究与思考
腹腔镜虚拟模拟机在腹腔镜技能培训中的作用分析
空客A320模拟机FD1+2可用性的讨论