- 相關(guān)推薦
深入分析ARP協(xié)議的理論與實(shí)踐
摘 要:充分認(rèn)識(shí)ARP的作用與工作過(guò)程有助于我們認(rèn)識(shí)網(wǎng)絡(luò)、理解TCP/IP體系的通信原理,從而指導(dǎo)我們分析網(wǎng)絡(luò)中故障發(fā)生的原因以及采用有效的方法排查故障。
關(guān)鍵詞:網(wǎng)段;ARP協(xié)議;RARP協(xié)議;
充分認(rèn)識(shí)ARP的作用與工作過(guò)程有助于我們認(rèn)識(shí)網(wǎng)絡(luò)、理解TCP/IP體系的通信原理,從而指導(dǎo)我們分析網(wǎng)絡(luò)中故障發(fā)生的原因以及采用有效的方法排查故障。首先,子網(wǎng)掩碼,網(wǎng)關(guān)與ARP協(xié)議的概念初學(xué)者往往難以一下子掌握。因此很有必要通過(guò)實(shí)驗(yàn)來(lái)幫助學(xué)員更加深入直觀地了解子網(wǎng)掩碼,網(wǎng)關(guān)與ARP協(xié)議的基本概念與工作原理。
1 子網(wǎng)掩碼(Subnet Mask)
子網(wǎng)掩碼的主要功能是告知網(wǎng)絡(luò)設(shè)備,一個(gè)特定的IP地址的哪一部分是包含網(wǎng)絡(luò)地址與子網(wǎng)地址,哪一部分是主機(jī)地址。網(wǎng)絡(luò)的路由設(shè)備只要識(shí)別出目的地址的網(wǎng)絡(luò)號(hào)與子網(wǎng)號(hào)即可作出路由尋址決策,IP地址的主機(jī)部分不參與路由器的路由尋址操作,只用于在網(wǎng)段中唯一標(biāo)識(shí)一個(gè)網(wǎng)絡(luò)設(shè)備的接口。
子網(wǎng)掩碼使用與IP相同的編址格式,子網(wǎng)掩碼為1的部分對(duì)應(yīng)于IP地址的網(wǎng)絡(luò)與子網(wǎng)部分,子網(wǎng)掩碼為0的部分對(duì)應(yīng)于IP地址的主機(jī)部分。將子網(wǎng)掩碼和IP地址作“與”操作后,IP地址的主機(jī)部分將被丟棄,剩余的是網(wǎng)絡(luò)地址和子網(wǎng)地址。
2 網(wǎng)關(guān)(Gateway)
在Internet中的網(wǎng)關(guān)一般是指用于連接兩個(gè)或者兩個(gè)以上網(wǎng)段的網(wǎng)絡(luò)設(shè)備,通常使用路由器(Router)作為網(wǎng)關(guān)。
在TCP/IP網(wǎng)絡(luò)體系中,網(wǎng)關(guān)的基本作用是根據(jù)目的IP地址的網(wǎng)絡(luò)號(hào)與子網(wǎng)號(hào),選擇最佳的出口對(duì)IP分組進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)跨網(wǎng)段的數(shù)據(jù)通信。
3 ARP協(xié)議(Address Resolution Protocol)
在以太網(wǎng)(Ethernet)中,一個(gè)網(wǎng)絡(luò)設(shè)備要和另一個(gè)網(wǎng)絡(luò)設(shè)備進(jìn)行直接通信,除了知道目標(biāo)設(shè)備的網(wǎng)絡(luò)層邏輯地址(如IP地址)外,還要知道目標(biāo)設(shè)備的第二層物理地址(MAC地址)。ARP協(xié)議的基本功能就是通過(guò)目標(biāo)設(shè)備的IP地址,查詢(xún)目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
當(dāng)一個(gè)網(wǎng)絡(luò)設(shè)備需要和另一個(gè)網(wǎng)絡(luò)設(shè)備通信時(shí),它首先把目標(biāo)設(shè)備的IP地址與自己的子網(wǎng)掩碼進(jìn)行“與”操作,以判斷目標(biāo)設(shè)備與自己是否位于同一網(wǎng)段內(nèi)。如果目標(biāo)設(shè)備在同一網(wǎng)段內(nèi),并且源設(shè)備沒(méi)有獲得與目標(biāo)IP地址相對(duì)應(yīng)的MAC地址信息,則源設(shè)備以第二層廣播的形式(目標(biāo)MAC地址為全1)發(fā)送ARP請(qǐng)求報(bào)文,在ARP請(qǐng)求報(bào)文中包含了源設(shè)備與目標(biāo)設(shè)備的IP地址。同一網(wǎng)段中的所有其他設(shè)備都可以收到并分析這個(gè)ARP請(qǐng)求報(bào)文,如果某設(shè)備發(fā)現(xiàn)報(bào)文中的目標(biāo)IP地址與自己的IP地址相同,則它向源設(shè)備發(fā)回ARP響應(yīng)報(bào)文,通過(guò)該報(bào)文使源設(shè)備獲得目標(biāo)設(shè)備的MAC地址信息。
如果目標(biāo)設(shè)備與源設(shè)備不在同一網(wǎng)段,則源設(shè)備首先把IP分組發(fā)向自己的缺省網(wǎng)關(guān)(Default Gateway),由缺省網(wǎng)關(guān)對(duì)該分組進(jìn)行轉(zhuǎn)發(fā)。如果源設(shè)備沒(méi)有關(guān)于缺省網(wǎng)關(guān)的MAC信息,則它同樣通過(guò)ARP協(xié)議獲取缺省網(wǎng)關(guān)的MAC地址信息。
為了減少?gòu)V播量,網(wǎng)絡(luò)設(shè)備通過(guò)ARP表在緩存中保存IP與MAC地址的映射信息。在一次ARP的請(qǐng)求與響應(yīng)過(guò)程中,通信雙方都把對(duì)方的MAC地址與IP地址的對(duì)應(yīng)關(guān)系保存在各自的ARP表中,以在后續(xù)的通信中使用。ARP表使用老化機(jī)制,刪除在一段時(shí)間內(nèi)沒(méi)有使用過(guò)的IP與MAC地址的映射關(guān)系。
4 實(shí)驗(yàn)設(shè)計(jì)
我們通過(guò)設(shè)計(jì)一個(gè)簡(jiǎn)單的實(shí)驗(yàn)來(lái)幫助學(xué)員更深入直觀地理解上述三個(gè)知識(shí)點(diǎn)所涉及的基本概念與原理。在實(shí)驗(yàn)中,我們利用ping命令來(lái)檢驗(yàn)主機(jī)間能否進(jìn)行正常的雙向通信。在“ping”的過(guò)程中,源主機(jī)向目標(biāo)主機(jī)發(fā)送ICMP的Echo Request報(bào)文,目標(biāo)主機(jī)收到后,向源主機(jī)發(fā)回ICMP的Echo Reply報(bào)文,從而可以驗(yàn)證源與目標(biāo)主機(jī)能否進(jìn)行正確的雙向通信。
A與B為實(shí)驗(yàn)用的PC機(jī),使用Windows2000 Professional作操作系統(tǒng)。
實(shí)驗(yàn)方案:
步驟1:
設(shè)置兩臺(tái)主機(jī)的IP地址與子網(wǎng)掩碼:
A: 192.168.1.130 255.255.255.0
B: 192.168.1.125 255.255.255.0
兩臺(tái)主機(jī)均不設(shè)置缺省網(wǎng)關(guān)。
用arp -d命令清除兩臺(tái)主機(jī)上的ARP表,然后在A與B上分別用ping命令與對(duì)方通信,在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命令可以在兩臺(tái)PC上分別看到對(duì)方的MAC地址。
分析:由于主機(jī)將各自通信目標(biāo)的IP地址與自己的子網(wǎng)掩碼相“與”后,發(fā)現(xiàn)目標(biāo)主機(jī)與自己均位于同一網(wǎng)段(192.168.1.0),因此通過(guò)ARP協(xié)議獲得對(duì)方的MAC地址,從而實(shí)現(xiàn)在同一網(wǎng)段內(nèi)網(wǎng)絡(luò)設(shè)備間的雙向通信。
步驟2:
將A的子網(wǎng)掩碼改為:255.255.255.128,其他設(shè)置保持不變。
操作1:用arp -d命令清除兩臺(tái)主機(jī)上的ARP表,然后在A上ping B,在A上顯示結(jié)果為:Destination host unreachable
用arp -a命令在兩臺(tái)PC上均不能看到對(duì)方的MAC地址。
分析1:A將目標(biāo)設(shè)備的IP地址(192.168.1.125)和自己的子網(wǎng)掩碼(255.255.255.128)相“與”得192.168.1.0,和自己不在同一網(wǎng)段(A所在網(wǎng)段為:192.168.1.128),則A必須將該IP分組首先發(fā)向缺省網(wǎng)關(guān)。由于A的缺省網(wǎng)關(guān)沒(méi)有配置,無(wú)法對(duì)分組進(jìn)行正確發(fā)送,因此顯示“目標(biāo)主機(jī)不可到達(dá)”。
操作2:接著在B上ping A,在B上顯示結(jié)果為:Request timed out 此時(shí)用arp-a命令可以在兩臺(tái)PC上分別看到對(duì)方的MAC地址。
分析2:B將目標(biāo)設(shè)備的IP地址(192.168.1.130)和自己的子網(wǎng)掩碼(255.255.255.0)相“與”,發(fā)現(xiàn)目標(biāo)主機(jī)與自己均位于同一網(wǎng)段(192.168.1.0),因此,B通過(guò)ARP協(xié)議獲得A的MAC地址,并可以正確地向A發(fā)送Echo Request報(bào)文。但由于A不能向B正確地發(fā)回Echo Reply報(bào)文(原因見(jiàn)分析1),故B上顯示ping的結(jié)果為“請(qǐng)求超時(shí)”。在該實(shí)驗(yàn)操作中,通過(guò)觀察A與B的ARP表的變化,可以驗(yàn)證:在一次ARP的請(qǐng)求與響應(yīng)過(guò)程中,通信雙方就可以獲知對(duì)方的MAC地址與IP地址的對(duì)應(yīng)關(guān)系,并保存在各自的ARP表中。
步驟3:
在A上設(shè)置缺省網(wǎng)關(guān),用arp -d命令清除A中的ARP表,在A上ping一臺(tái)外網(wǎng)段的主機(jī),如武漢熱線(www.wuhan.net.cn 202.103.24.116),再用arp -a可觀察到A的ARP表中只有缺省網(wǎng)關(guān)的MAC地址信息。
分析:當(dāng)源主機(jī)要和外網(wǎng)段的主機(jī)進(jìn)行通信時(shí),它并不需要獲取遠(yuǎn)程主機(jī)的MAC地址,而是把IP分組發(fā)向缺省網(wǎng)關(guān),由網(wǎng)關(guān)IP分組的完成轉(zhuǎn)發(fā)過(guò)程。如果源主機(jī)沒(méi)有缺省網(wǎng)關(guān)MAC地址的緩存記錄,則它會(huì)通過(guò)ARP協(xié)議獲取網(wǎng)關(guān)
的MAC地址,因此在A的ARP表中只觀察到網(wǎng)關(guān)的MAC地址記錄,而觀察不到遠(yuǎn)程主機(jī)的MAC地址
5 小結(jié)
。1)關(guān)于通常意義上“網(wǎng)絡(luò)地址不同不能互相通信”的說(shuō)明
深入的探討發(fā)現(xiàn),在計(jì)算機(jī)通信過(guò)程中無(wú)論是什么協(xié)議只要能順利獲得MAC地址就能正常通信,無(wú)論是否經(jīng)過(guò)路由,只要每段通信成功的經(jīng)過(guò)了數(shù)據(jù)鏈路層?梢哉f(shuō)通信本來(lái)是沒(méi)有任何限制的,只是IP從邏輯上(網(wǎng)絡(luò)層)加以了約束。
而其中網(wǎng)絡(luò)地址是其第一邏輯約束。任何一項(xiàng)針對(duì)IP的數(shù)據(jù)發(fā)送首先是經(jīng)過(guò)本地網(wǎng)絡(luò)層的抉擇:是丟棄、直接發(fā)送還是間接發(fā)送。
之所以有這樣三種選擇實(shí)際上是先一步在本地作出判斷:
、“目標(biāo)IP地址和自己在不在同一網(wǎng)絡(luò)”其判斷的依據(jù)由于不知道對(duì)方掩碼所以只能是自己的子網(wǎng)掩碼分別和目標(biāo)IP、源IP按位與來(lái)進(jìn)行比較。
②相同,否則⑦
、蹤z查本地arp列表,有相應(yīng)MAC地址記錄則⑥,否則④
、馨l(fā)送ARP request
、菔盏紸RP reply得到的目的MAC地址,執(zhí)行⑥,否則⑧
、迣⒛康腗AC地址寫(xiě)入待發(fā)幀并發(fā)送數(shù)據(jù)
、邔⒕W(wǎng)關(guān)MAC地址寫(xiě)入待發(fā)幀并發(fā)送數(shù)據(jù),通過(guò)路由轉(zhuǎn)發(fā)(間接發(fā)送)。若網(wǎng)關(guān)無(wú)法路由到達(dá)則就地丟棄并發(fā)出ICMP通知不可到達(dá)。
、嘀苯觼G棄,返回目標(biāo)不存在
其中⑦最終是否能最終到達(dá)目標(biāo)結(jié)點(diǎn)還要在每個(gè)每個(gè)網(wǎng)段網(wǎng)關(guān)執(zhí)行①~⑦
。2)關(guān)于“\\主機(jī)名”與“\\IP”的區(qū)別
運(yùn)行\(zhòng)\主機(jī)名時(shí)直接使用NetBIOS檢查緩存或廣播發(fā)出NetBIOS請(qǐng)求解析目的MAC地址,該廣播是完全物理地址意義上的廣播,如果在廣播范圍內(nèi)(物理阻隔或路由隔絕)找到主機(jī),主機(jī)單播以回應(yīng)否則報(bào)告目標(biāo)不存在。NetBIOS是絕對(duì)不會(huì)跨路由的(RFC1542標(biāo)準(zhǔn)的路由器,可設(shè)置成允許DHCP的廣播數(shù)據(jù)通過(guò),僅是一個(gè)特例)。因此不論是VLAN還是LAN只要廣播可以到達(dá)的地方就是NetBIOS的作用范圍,完全與IP是否處在同一網(wǎng)絡(luò)無(wú)關(guān)。解析出目的MAC就可以看到瀏覽服務(wù)提供的共享資源了。
\\IP則是完全不同的過(guò)程,是根據(jù)ARP原理(前面已經(jīng)有詳細(xì)講述)解析出MAC地址的,因此會(huì)受到邏輯網(wǎng)段的限制。然后再通過(guò)MAC地址訪問(wèn)目的主機(jī)的瀏覽服務(wù)。
【深入分析ARP協(xié)議的理論與實(shí)踐】相關(guān)文章:
ARP病毒的攻擊原理分析03-14
體育保健理論與實(shí)踐探索12-10
檔案館理論與實(shí)踐新探03-18
RS-485總線的理論與實(shí)踐12-04