通過簡單的實(shí)驗(yàn)深入透析子網(wǎng)掩碼,網(wǎng)關(guān)與ARP協(xié)議的作用
子網(wǎng)掩碼,網(wǎng)關(guān)與ARP協(xié)議的概念和工作原理是學(xué)習(xí)網(wǎng)絡(luò)知識的初學(xué)者首先遇到的幾個重要的知識點(diǎn),其中子網(wǎng)掩碼與ARP協(xié)議的作用和基本工作原理更是思科網(wǎng)絡(luò)技術(shù)學(xué)院教程Semester 1中的重點(diǎn)與難點(diǎn),初學(xué)者往往難以一下子掌握這些抽象復(fù)雜的機(jī)理。因此很有必要通過實(shí)驗(yàn)來幫助學(xué)員更加深入直觀地了解子網(wǎng)掩碼,網(wǎng)關(guān)與ARP協(xié)議的基本概念與工作原理。
在對實(shí)驗(yàn)進(jìn)行講解之前,首先對子網(wǎng)掩碼,網(wǎng)關(guān)與ARP協(xié)議的基本知識進(jìn)行概述。
子網(wǎng)掩碼(Subnet Mask)
子網(wǎng)掩碼的主要功能是告知網(wǎng)絡(luò)設(shè)備,一個特定的IP地址的哪一部分是包含網(wǎng)絡(luò)地址與子網(wǎng)地址,哪一部分是主機(jī)地址。網(wǎng)絡(luò)的路由設(shè)備只要識別出目的地址的網(wǎng)絡(luò)號與子網(wǎng)號即可作出路由尋址決策,IP地址的主機(jī)部分不參與路由器的路由尋址操作,只用于在網(wǎng)段中唯一標(biāo)識一個網(wǎng)絡(luò)設(shè)備的接口。本來,如果網(wǎng)絡(luò)系統(tǒng)中只使用A、B、C這三種主類地址,而不對這三種主類地址作子網(wǎng)劃分或者進(jìn)行主類地址的匯總,則網(wǎng)絡(luò)設(shè)備根據(jù)IP地址的第一個字節(jié)的數(shù)值范圍即可判斷它屬于A、B、C中的哪一個主類網(wǎng),進(jìn)而可確定該IP地址的網(wǎng)絡(luò)部分和主機(jī)部分,不需要子網(wǎng)掩碼的輔助。
但為了使系統(tǒng)在對A、B、C這三種主類網(wǎng)進(jìn)行了子網(wǎng)的劃分,或者采用無類別的域間選路技術(shù)(Classless Inter-Domain Routing,CIDR)對網(wǎng)段進(jìn)行匯總的情況下,也能對IP地址的網(wǎng)絡(luò)及子網(wǎng)部分與主機(jī)部分作正確的區(qū)分,就必須依賴于子網(wǎng)掩碼的幫助。
子網(wǎng)掩碼使用與IP相同的編址格式,子網(wǎng)掩碼為1的部分對應(yīng)于IP地址的網(wǎng)絡(luò)與子網(wǎng)部分,子網(wǎng)掩碼為0的部分對應(yīng)于IP地址的主機(jī)部分。將子網(wǎng)掩碼和IP地址作“與”操作后,IP地址的主機(jī)部分將被丟棄,剩余的是網(wǎng)絡(luò)地址和子網(wǎng)地址。例如,一個IP分組的目的IP地址為:10.2.2.1,若子網(wǎng)掩碼為:255.255.255.0,與之作“與”運(yùn)算得:10.2.2.0,則網(wǎng)絡(luò)設(shè)備認(rèn)為該IP地址的網(wǎng)絡(luò)號與子網(wǎng)號為:10.2.2.0。
網(wǎng)關(guān)(Gateway)
在Internet中的網(wǎng)關(guān)一般是指用于連接兩個或者兩個以上網(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ò)號與子網(wǎng)號,選擇最佳的出口對IP分組進(jìn)行轉(zhuǎn)發(fā),實(shí)現(xiàn)跨網(wǎng)段的數(shù)據(jù)通信。在Semester 1中只需要對網(wǎng)關(guān)的基本作用有所了解,在Semester 2中還將對路由器的工作機(jī)理和配置過程作詳細(xì)的論述。
ARP協(xié)議(Address Resolution Protocol)
在以太網(wǎng)(Ethernet)中,一個網(wǎng)絡(luò)設(shè)備要和另一個網(wǎng)絡(luò)設(shè)備進(jìn)行直接通信,除了知道目標(biāo)設(shè)備的網(wǎng)絡(luò)層邏輯地址(如IP地址)外,還要知道目標(biāo)設(shè)備的第二層物理地址(MAC地址)。ARP協(xié)議的基本功能就是通過目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址,以保證通信的順利進(jìn)行。
當(dāng)一個網(wǎng)絡(luò)設(shè)備需要和另一個網(wǎng)絡(luò)設(shè)備通信時,它首先把目標(biāo)設(shè)備的IP地址與自己的子網(wǎng)掩碼進(jìn)行“與”操作,以判斷目標(biāo)設(shè)備與自己是否位于同一網(wǎng)段內(nèi)。如果目標(biāo)設(shè)備在同一網(wǎng)段內(nèi),并且源設(shè)備沒有獲得與目標(biāo)IP地址相對應(yīng)的MAC地址信息,則源設(shè)備以第二層廣播的形式(目標(biāo)MAC地址為全1)發(fā)送ARP請求報(bào)文,在ARP請求報(bào)文中包含了源設(shè)備與目標(biāo)設(shè)備的IP地址。同一網(wǎng)段中的所有其他設(shè)備都可以收到并分析這個ARP請求報(bào)文,如果某設(shè)備發(fā)現(xiàn)報(bào)文中的目標(biāo)IP地址與自己的IP地址相同,則它向源設(shè)備發(fā)回ARP響應(yīng)報(bào)文,通過該報(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)對該分組進(jìn)行轉(zhuǎn)發(fā)。如果源設(shè)備沒有關(guān)于缺省網(wǎng)關(guān)的MAC信息,則它同樣通過ARP協(xié)議獲取缺省網(wǎng)關(guān)的MAC地址信息。
為了減少廣播量,網(wǎng)絡(luò)設(shè)備通過ARP表在緩存中保存IP與MAC地址的映射信息。在一次ARP的請求與響應(yīng)過程中,通信雙方都把對方的MAC地址與IP地址的對應(yīng)關(guān)系保存在各自的ARP表中,以在后續(xù)的通信中使用。ARP表使用老化機(jī)制,刪除在一段時間內(nèi)沒有使用過的IP與MAC地址的映射關(guān)系。
實(shí)驗(yàn)設(shè)計(jì)
我們通過設(shè)計(jì)一個簡單的實(shí)驗(yàn)來幫助學(xué)員更深入直觀地理解上述三個知識點(diǎn)所涉及的基本概念與原理。在實(shí)驗(yàn)中,我們利用ping命令來檢驗(yàn)主機(jī)間能否進(jìn)行正常的雙向通信。在“ping”的過程中,源主機(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è)置兩臺主機(jī)的IP地址與子網(wǎng)掩碼:
A: 10.2.2.2 255.255.254.0
B: 10.2.3.3 255.255.254.0
兩臺主機(jī)均不設(shè)置缺省網(wǎng)關(guān)。
用arp -d命令清除兩臺主機(jī)上的ARP表,然后在A與B上分別用ping命令與對方通信,在A與B上分別顯示,
A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=128
用arp -a命令可以在兩臺PC上分別看到對方的MAC地址。
分析:由于主機(jī)將各自通信目標(biāo)的IP地址與自己的子網(wǎng)掩碼相“與”后,發(fā)現(xiàn)目標(biāo)主機(jī)與自己均位于同一網(wǎng)段(10.2.2.0),因此通過ARP協(xié)議獲得對方的MAC地址,從而實(shí)現(xiàn)在同一網(wǎng)段內(nèi)網(wǎng)絡(luò)設(shè)備間的雙向通信。
步驟2:
將A的子網(wǎng)掩碼改為:255.255.255.0,其他設(shè)置保持不變。
操作1:用arp -d命令清除兩臺主機(jī)上的ARP表,然后在A上ping B,在A上顯示結(jié)果為:Destination host unreachable
用arp -a命令在兩臺PC上均不能看到對方的MAC地址。
分析1:A將目標(biāo)設(shè)備的IP地址(10.2.3.3)和自己的子網(wǎng)掩碼(255.255.255.0)相“與”得10.2.3.0,和自己不在同一網(wǎng)段(A所在網(wǎng)段為:10.2.2.0),則A必須將該IP分組首先發(fā)向缺省網(wǎng)關(guān)。由于A的缺省網(wǎng)關(guān)沒有配置,無法對分組進(jìn)行正確發(fā)送,因此顯示“目標(biāo)主機(jī)不可到達(dá)”。
操作2:接著在B上ping A,在B上顯示結(jié)果為:Request timed out 此時用arp -a命令可以在兩臺PC上分別看到對方的MAC地址。
分析2:B將目標(biāo)設(shè)備的IP地址(10.2.2.2)和自己的子網(wǎng)掩碼(255.255.254.0)相“與”,發(fā)現(xiàn)目標(biāo)主機(jī)與自己均位于同一網(wǎng)段(10.2.2.0),因此,B通過ARP協(xié)議獲得A的MAC地址,并可以正確地向A發(fā)送Echo Request報(bào)文。但由于A不能向B正確地發(fā)回Echo Reply報(bào)文(原因見分析1),故B上顯示ping的結(jié)果為“請求超時”。在該實(shí)驗(yàn)操作中,通過觀察A與B的ARP表的變化,可以驗(yàn)證:在一次ARP的請求與響應(yīng)過程中,通信雙方就可以獲知對方的MAC地址與IP地址的對應(yīng)關(guān)系,并保存在各自的ARP表中。
步驟3:
在前面實(shí)驗(yàn)的基礎(chǔ)上,把A的缺省網(wǎng)關(guān)設(shè)為:10.2.2.1,網(wǎng)關(guān)的子網(wǎng)掩碼為:255.255.0.0。
在A與B上分別用ping命令與對方通信,各自的顯示結(jié)果為:
A: Reply from 10.2.3.3: bytes=32 time<10ms TTL=128
B: Reply from 10.2.2.2: bytes=32 time<10ms TTL=127
在A與B上分別用tracert命令追蹤數(shù)據(jù)的傳輸路徑,結(jié)果分別為:
A: tracert 10.2.3.3
Tracing route to 10.2.3.3 over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 10.2.2.1
2 <10 ms <10 ms <10 ms 10.2.3.3
Trace complete.
B: tracert 10.2.2.2
Tracing route to 10.2.2.2 over a maximum of 30 hops:
1 <10 ms <10 ms <10 ms 10.2.2.2
Trace complete.
分析:如步驟2中的分析,由于A認(rèn)為B與其不在同一個網(wǎng)段,故從A發(fā)向B的報(bào)文需要經(jīng)過網(wǎng)關(guān)轉(zhuǎn)發(fā);而B認(rèn)為A與其在同一個網(wǎng)段,故B不需要經(jīng)過網(wǎng)關(guān)直接向A發(fā)送報(bào)文,從而可以觀察到A與B雙向通信時傳輸路徑的不對稱性。由于ping命令結(jié)果顯示的是從目標(biāo)主機(jī)返回的Echo Reply報(bào)文的TTL的值,而B收到從A返回的Echo Reply報(bào)文經(jīng)過了網(wǎng)關(guān)的轉(zhuǎn)發(fā),所以在B中顯示該IP報(bào)文的TTL值降為了127(從A發(fā)出的IP分組的TTL的初始值為128,每經(jīng)過一個網(wǎng)關(guān),TTL值減1)。
步驟4:
用arp -d命令清除A中的ARP表,在A上ping一臺外網(wǎng)段的主機(jī),如中大的WWW Server(202.116.64.8),再用arp -a可觀察到A的ARP表中只有缺省網(wǎng)關(guān)的MAC地址信息。
分析:當(dāng)源主機(jī)要和外網(wǎng)段的主機(jī)進(jìn)行通信時,它并不需要獲取遠(yuǎn)程主機(jī)的MAC地址,而是把IP分組發(fā)向缺省網(wǎng)關(guān),由網(wǎng)關(guān)IP分組的完成轉(zhuǎn)發(fā)過程。如果源主機(jī)沒有缺省網(wǎng)關(guān)MAC地址的緩存記錄,則它會通過ARP協(xié)議獲取網(wǎng)關(guān)的MAC地址,因此在A的ARP表中只觀察到網(wǎng)關(guān)的MAC地址記錄,而觀察不到遠(yuǎn)程主機(jī)的MAC地址。