張 興,周 軍,史 偉,杜 穎
(遼寧工業(yè)大學(xué) 電子與信息工程學(xué)院,遼寧 錦州 121001)
?
計算機(jī)網(wǎng)絡(luò)ARP協(xié)議的解析與仿真實現(xiàn)
張興,周軍,史偉,杜穎
(遼寧工業(yè)大學(xué)電子與信息工程學(xué)院,遼寧錦州121001)
在運(yùn)用虛擬機(jī)技術(shù)模擬由路由器、交換機(jī)和多臺計算機(jī)共同組成的復(fù)雜網(wǎng)絡(luò)的基礎(chǔ)上,實現(xiàn)了僅用一臺普通PC機(jī)搭建ARP原理模擬機(jī)的目標(biāo)。通過ARP原理模擬機(jī)解決了IP地址沖突等常見問題??偨Y(jié)了計算機(jī)網(wǎng)絡(luò)應(yīng)用程序間通訊所要遵循的基本原則,并將ARP原理模擬機(jī)進(jìn)一步推廣到計算機(jī)網(wǎng)絡(luò)參考模型的其他層次當(dāng)中。
計算機(jī)網(wǎng)絡(luò);ARP協(xié)議;模擬機(jī);虛擬機(jī);網(wǎng)絡(luò)參考模型
地址解析協(xié)議(addressresolutionprotocol,ARP)是計算機(jī)網(wǎng)絡(luò)中最重要的協(xié)議之一,處于OSI參考模型的網(wǎng)絡(luò)層,且處于IP協(xié)議之下,如圖1所示[1-2];因此,ARP包并不像ICMP包那樣要封裝在IP數(shù)據(jù)報中,而是介于IP數(shù)據(jù)報和數(shù)據(jù)鏈路幀之間,起到承上啟下的作用。眾所周知,數(shù)據(jù)鏈路層使用物理地址通訊,網(wǎng)絡(luò)層要靠網(wǎng)絡(luò)層地址通訊,而我們往往只知道目的IP地址,這就需要ARP協(xié)議將IP地址轉(zhuǎn)換成本網(wǎng)絡(luò)所使用的物理地址后,雙方才能完成底層數(shù)據(jù)幀的發(fā)送與接收[3-5]。
ARP在計算機(jī)網(wǎng)絡(luò)中的地位舉足輕重,在路由器與路由器之間、路由器與主機(jī)之間無不采用物理地址進(jìn)行通訊;因此,弄清ARP原理,并利用其解決實際問題是非常必要的[6-8]。但當(dāng)前的大學(xué)計算機(jī)網(wǎng)絡(luò)課程對ARP原理的驗證重視不夠,采用的實驗方法復(fù)雜,所需的網(wǎng)絡(luò)設(shè)備價格昂貴,實驗環(huán)境難以搭建[9-10]。本文通過采用一臺普通的PC機(jī)及相關(guān)軟件完成了ARP原理模擬機(jī)的搭建,以低成本、易操作性滿足了用戶的需求,在技術(shù)上和經(jīng)濟(jì)上是完全可行的。通過搭建ARP原理模擬機(jī),學(xué)生在宿舍就可以完成ARP原理的驗證,并且還能解決一些實際問題。
圖1 ARP協(xié)議的位置
ARP原理模擬機(jī)的搭建是非常容易的。首先,選擇一臺普通的PC機(jī),內(nèi)存最好在512M以上。操作系統(tǒng)可選擇WindowsServer的一個版本,并在操作系統(tǒng)上安裝虛擬機(jī)軟件(本文使用的是VMware)。然后,利用虛擬機(jī)軟件安裝或克隆多個虛擬機(jī),從而由宿主機(jī)和虛擬機(jī)構(gòu)成了ARP原理模擬機(jī),網(wǎng)絡(luò)拓?fù)鋱D如圖2所示。虛擬機(jī)的網(wǎng)卡連接方式可選擇“Bridged”或“Host-only”,橋接時一個網(wǎng)卡要綁定雙IP,但在宿主機(jī)網(wǎng)卡未聯(lián)網(wǎng)線時,只能選擇“Host-only”方式。在采用“Host-only”方式時,如果同時打開兩個虛擬機(jī),且這兩個虛擬機(jī)的IP屬于不同網(wǎng)段,則虛擬機(jī)網(wǎng)卡的連接方式應(yīng)選擇“Custom:Specificvirtualnetwork”,使兩個虛擬機(jī)上的網(wǎng)卡分別對應(yīng)宿主機(jī)上不同的“Host-only”網(wǎng)卡。最后,分別在宿主機(jī)和虛擬機(jī)上安裝操作系統(tǒng)自帶的Microsoft“網(wǎng)絡(luò)監(jiān)視器”,啟動后選擇本地網(wǎng)卡捕獲數(shù)據(jù)幀進(jìn)行分析。
圖2 ARP原理模擬機(jī)的網(wǎng)絡(luò)拓?fù)鋱D
在ARP原理模擬機(jī)搭建起來后,我們要用其驗證ARP原理。首先,分別用ipconfig/all命令檢查兩機(jī)的IP地址、MAC地址和網(wǎng)關(guān)的綁定是否正確;然后在兩機(jī)上分別執(zhí)行arp-a命令,結(jié)果顯示“NoARPEntriesFound”,證明此時兩機(jī)的ARP緩存是空的。在虛擬機(jī)1上ping宿主機(jī),結(jié)果顯示“Replyfrom192.168.0.1:bytes=32time<1msTTL=128”,證明已經(jīng)ping通;再執(zhí)行arp-a命令,結(jié)果如表1所示。
表1 虛擬機(jī)1上ARP緩存狀況
虛擬機(jī)1已經(jīng)得到宿主機(jī)的IP地址與MAC地址的映射。通過查看兩機(jī)的Microsoft網(wǎng)絡(luò)監(jiān)視器捕獲的數(shù)據(jù)包的順序(如表2所示),發(fā)現(xiàn)ARP包在前,ICMP包在后,說明在同一網(wǎng)絡(luò)中只有在獲悉對方的物理地址后才能進(jìn)行通信。
表2中目標(biāo)MAC地址為*BROADCAST,說明ARP請求包是以廣播方式發(fā)送的,本網(wǎng)絡(luò)的所有主機(jī)都會接收到;而表2中的第2行說明只有其IP與ARP請求包中的目的IP相同的主機(jī)才發(fā)送響應(yīng)包,而且ARP的響應(yīng)包是以單播方式發(fā)送的,響應(yīng)時直接將ARP請求包中的源主機(jī)的MAC地址轉(zhuǎn)變?yōu)锳RP響應(yīng)包的目的地址。
表2 宿主機(jī)上捕獲的數(shù)據(jù)包情況
幾分鐘后,再在兩機(jī)上分別執(zhí)行arp-a命令,前面的映射從ARP緩存中消失,說明ARP為其緩存中每一項映射設(shè)置了計時器。設(shè)置的目的,主要是考慮用戶IP或MAC地址可以靈活地變化;另外,從捕獲的數(shù)據(jù)包情況分析,ARP請求包并非定期發(fā)送,而是按需發(fā)送;而一個ARP包只解析一個網(wǎng)絡(luò)地址,這樣有利于簡化ARP包的格式。
從ICMPEchoReplyPacket中可以看出ICMP包作為IP數(shù)據(jù)包的數(shù)據(jù)存在,而IP數(shù)據(jù)包又作為Ethernet幀的數(shù)據(jù)存在。Microsoft網(wǎng)絡(luò)監(jiān)視器使用摘要窗格、細(xì)節(jié)窗格和十六進(jìn)制窗格,按照從參考模型的低層到高層的順序,把各層協(xié)議數(shù)據(jù)單元(protocoldataunit,PDU)的格式表現(xiàn)得淋漓盡致。因此,將這種方法擴(kuò)展到整個計算機(jī)網(wǎng)絡(luò),就可以解決計算機(jī)網(wǎng)絡(luò)大部分協(xié)議的原理和PDU的格式問題,使學(xué)生對計算機(jī)網(wǎng)絡(luò)抽象理論的理解變得形象化、具體化。
在驗證了ARP原理后,我們使用ARP原理模擬機(jī)來解決一些常見的實際問題。
1)當(dāng)接收到一個ARP請求包(廣播包)時,是只有與目的IP地址相同的主機(jī)還是所有接收到此ARP請求包的主機(jī),將源主機(jī)的IP地址與物理地址的映射保存在本機(jī)的ARP緩存中?
2)在跨網(wǎng)段通信時,當(dāng)另一網(wǎng)段的主機(jī)未開機(jī)(也許不存在)或目的網(wǎng)絡(luò)不存在時,ARP緩存的結(jié)果如何?
3)IP地址沖突的原因是什么?與ARP有關(guān)嗎?
對于第一個問題,操作的時候我們需要打開虛擬機(jī)1和虛擬機(jī)2,并使用ipconfig/all命令檢查地址的綁定情況;然后在各機(jī)上執(zhí)行arp-a命令,確保結(jié)果均是“NoARPEntriesFound”,即保證ARP緩存為空。在虛擬機(jī)1上ping宿主機(jī),結(jié)果顯示ping通;再在各機(jī)上執(zhí)行arp-a命令,結(jié)果顯示虛擬機(jī)1上有宿主機(jī)的IP與MAC的映射,宿主機(jī)上也有虛擬機(jī)1的IP與MAC的映射,而虛擬機(jī)2的ARP緩存仍為空。查看虛擬機(jī)2上捕獲的數(shù)據(jù)包情況,發(fā)現(xiàn)的確收到了虛擬機(jī)1的ARP請求包。因此問題1的結(jié)論是:當(dāng)收到一個ARP請求包時,只有與目的IP地址相同的主機(jī)將源主機(jī)的IP地址與物理地址映射保存在本機(jī)的ARP緩存中。這么做也是非常有道理的。即使其他主機(jī)在其緩存中保存此映射,此時也許他們不想與源主機(jī)通訊;而當(dāng)他們想與源主機(jī)通訊時,此映射又過期了。不保存的做法也節(jié)省了其他主機(jī)的資源。
對于第二個問題,操作的時候我們需要打開虛擬機(jī)1和虛擬機(jī)3,并在宿主機(jī)上啟動“路由和遠(yuǎn)程訪問服務(wù)”,將宿主機(jī)設(shè)為“僅路由器”方式。重復(fù)解決第1個問題時的操作,確保地址綁定正確,并且ARP緩存都為空。我們先驗證正常情況下跨網(wǎng)段通信時ARP包的情況。在虛擬機(jī)1上ping虛擬機(jī)3,得到“Replyfrom192.168.1.2:bytes=32time<1msTTL=127”,證明已經(jīng)ping通,并且經(jīng)過一個路由器后,IP包的TTL值減1。分別執(zhí)行arp-a命令后虛擬機(jī)1和虛擬機(jī)3都得到了其網(wǎng)關(guān)的IP地址與MAC地址的映射。這里要注意,虛擬機(jī)1和虛擬機(jī)3并不需要知曉對方的MAC地址,MAC地址只在同一網(wǎng)段有效。通過查看所捕獲的數(shù)據(jù)包,發(fā)現(xiàn)首先由虛擬機(jī)1發(fā)送幀給路由器(此處為宿主機(jī)),然后由路由器將幀修改后發(fā)給虛擬機(jī)3。接下來,將虛擬機(jī)3關(guān)機(jī)。在虛擬機(jī)1上ping192.168.1.2,得到“Requesttimedout”。執(zhí)行arp-a命令后,發(fā)現(xiàn)在虛擬機(jī)1上已有其網(wǎng)關(guān)的IP地址與MAC地址的映射。在虛擬機(jī)1上隨便ping一個不存在的網(wǎng)絡(luò)中的IP,比如ping192.168.1.3,得到“Replyfrom192.168.0.1:Destinationhostunreachable”。通過arp-a命令也得到其網(wǎng)關(guān)的IP地址與MAC地址的映射。因此,第二個問題的結(jié)論是:在跨網(wǎng)段通信時,當(dāng)另一網(wǎng)絡(luò)的主機(jī)未開機(jī)(或不存在)或目的網(wǎng)絡(luò)不存在時,ARP的緩存均會保存其網(wǎng)關(guān)的IP地址與MAC地址的映射。
根據(jù)前兩個問題的分析,我們得出結(jié)論:在計算機(jī)網(wǎng)絡(luò)中,應(yīng)用程序(進(jìn)程)之間的通信要遵循一定的原則。
1)若通信時的目的地址為域名,則先通過DNS將域名解析成IP地址。
2)通過將本機(jī)IP、目的IP分別與本機(jī)MASK作按位與運(yùn)算來檢測源目主機(jī)是否在同一網(wǎng)絡(luò)。若結(jié)果(網(wǎng)絡(luò)地址)相同,則證明兩主機(jī)屬于同一網(wǎng)絡(luò),采用直接交付;否則,將IP包交給本網(wǎng)絡(luò)的網(wǎng)關(guān)(路由器),屬于間接交付。
3)在交付時,首先查看本機(jī)ARP緩存是否存在目的IP(間接交付時為網(wǎng)關(guān)IP)與目的物理地址的映射,存在則直接封裝成幀發(fā)送,否則利用ARP協(xié)議廣播其請求包獲取映射。
根據(jù)此原則,在第一個問題中虛擬機(jī)1將幀直接交付給了虛擬機(jī)2,而在第二個問題中虛擬機(jī)1采用的是間接交付,先將幀交付給它的網(wǎng)關(guān),然后由它的網(wǎng)關(guān)查詢路由表后,將IP包重新封裝成幀交付到目的地。因此,即使IP包未成功交付給目的地,源主機(jī)也會得到其網(wǎng)關(guān)的IP地址與MAC地址的映射。
對于第三個問題,操作的時候我們需要打開虛擬機(jī)1和虛擬機(jī)2。利用ipconfig和arp命令確保地址綁定正確且ARP緩存為空。修改虛擬機(jī)1的IP地址,讓它與宿主機(jī)的IP相同;點擊“確定”后,虛擬機(jī)1的網(wǎng)絡(luò)連通圖標(biāo)帶上一個紅色問號,并提示“剛配置的靜態(tài)IP地址已在網(wǎng)絡(luò)上使用。請重新配置一個不同的IP地址。”用ipconfig命令檢測后發(fā)現(xiàn)虛擬機(jī)1的IP與MASK均變成無效的地址0.0.0.0;同時在宿主機(jī)上出現(xiàn)提示“Windows- 系統(tǒng)錯誤。IP地址與網(wǎng)絡(luò)上的其他系統(tǒng)有
沖突?!庇胕pconfig命令檢測后,發(fā)現(xiàn)宿主機(jī)IP地址未改變,使用時功能正常。查看宿主機(jī)、虛擬機(jī)1和虛擬機(jī)2上捕獲的數(shù)據(jù)包,發(fā)現(xiàn)虛擬機(jī)1在修改IP地址成功前,為避免IP地址沖突要宣布其IP地址,方法就是廣播一個ARP請求包,詢問是否有使用此IP地址的主機(jī)。如果接收到ARP響應(yīng)包,則說明網(wǎng)上已有此IP地址,發(fā)生了IP地址沖突,應(yīng)更換另一IP地址使用,如圖3所示;如果沒收到ARP響應(yīng)包,則在連續(xù)發(fā)送3個ARP請求包后,成功修改了自己的IP地址,如圖4所示。因此IP地址沖突的根本原因就是一個IP地址不能對應(yīng)兩個MAC地址,否則無法保證目標(biāo)的唯一性。
圖3 IP地址沖突
圖4 IP地址宣布成功
本文完成了僅用一臺普通的PC機(jī)搭建ARP原理模擬機(jī)的任務(wù),而且實施過程中所用到的硬件、軟件都非常容易得到,搭建、應(yīng)用等操作也非常容易掌握,這對于普通學(xué)生、工程技術(shù)人員和所有對計算機(jī)網(wǎng)絡(luò)感興趣的人理解ARP原理,并應(yīng)用ARP原理解決實際問題幫助很大;另外,我們在ARP原理模擬機(jī)中使用了虛擬機(jī)技術(shù),當(dāng)宿主機(jī)與外界斷開聯(lián)系時,各虛擬機(jī)捕獲數(shù)據(jù)幀時不會受到其他廣播幀的干擾,易于我們分析結(jié)果。通過操作系統(tǒng)自帶的網(wǎng)絡(luò)監(jiān)視器捕獲數(shù)據(jù)包后,按TCP/IP參考模型自底向上的順序進(jìn)行分析,我們獲得了模型中各層的PDU的格式,從而熟悉了各層的功能。我們可以將ARP原理模擬機(jī)推廣到整個計算機(jī)網(wǎng)絡(luò)當(dāng)中,依照本文所使用的方法能幫助大家理解所有網(wǎng)絡(luò)協(xié)議原理,應(yīng)該說它的應(yīng)用前景是非常廣泛的。
[1]PLUMMERDC.AnEthernetaddressresolutionprotocol[S].[S.l.]:IETFRFC826,1982.
[2]謝希仁.計算機(jī)網(wǎng)絡(luò)[M].6版.北京:電子工業(yè)出版社,2013:114~132.
[3]李國佳,楊紹禹,李秀芹.計算機(jī)網(wǎng)絡(luò)課程實踐教學(xué)的改革探索[J].蘭州石化職業(yè)技術(shù)學(xué)院學(xué)報,2015,38(4):106-109.
[4]劉佳良.計算機(jī)網(wǎng)絡(luò)實驗教學(xué)改革的探索與實踐[J].教育教學(xué)論壇,2015(01):222-223.
[5]毛志偉,葉舫,楊勇,等.面向職業(yè)化的計算機(jī)網(wǎng)絡(luò)課程體系探索與構(gòu)建[J].高教學(xué)刊,2016(4):108-109.
[6]宋廣佳,季振洲,王暉.加入盲確認(rèn)安全機(jī)制的地址解析協(xié)議[J].高技術(shù)通訊,2014,24(3):251-255.
[7]劉廣鐘,高軍,劉旻等.報文分析技術(shù)在計算機(jī)網(wǎng)絡(luò)教學(xué)中的應(yīng)用[J].計算機(jī)教育,2014(1):76-80.
[8]姜文紅.計算機(jī)網(wǎng)絡(luò)原理教改探索[J].教育教學(xué)論壇,2015(10):81-82.
[9]隨飛揚(yáng),王杰鋒,馬維駿,等.便攜網(wǎng)絡(luò)實驗環(huán)境的構(gòu)建與應(yīng)用[J].實驗科學(xué)與技術(shù),2014,12(2):12-15.
[10]李玲,王非.基于網(wǎng)絡(luò)的虛擬現(xiàn)實技術(shù)在高校實驗教學(xué)中的應(yīng)用[J].實驗科學(xué)與技術(shù),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
遼寧省普通高等學(xué)校本科教育教學(xué)改革研究項目(UPRP20140214,2016-291);遼寧省高等學(xué)校杰出青年學(xué)者成長計劃項目(LJQ2014066)。
張興(1975-),男,博士,副教授,主要從事網(wǎng)絡(luò)體系結(jié)構(gòu)與協(xié)議、信息安全、物聯(lián)網(wǎng)技術(shù)與工程的研究。
TP393
Adoi:10.3969/j.issn.1672-4550.2016.04.018