----通過簡單的實驗深入透析子網掩碼,閘道器與arp協議的作用
劉郁恆 中山大學電子與通訊工程系博士,中山大學思科網路技術學院資深講師
子網掩碼,閘道器與arp協議的概念和工作原理是學習網路知識的初學者首先遇到的幾個重要的知識點,其中子網掩碼與arp協議的作用和基本工作原理更是思科網路技術學院教程semester 1中的重點與難點,初學者
往往難以一下子掌握這些抽象複雜的機理。因此很有必要通過實驗來幫助學員更加深入直觀地了解子網掩碼,閘道器與arp協議的基本概念與工作原理。
在對實驗進行講解之前,首先對子網掩碼,閘道器與arp協議的基本知識進行概述。
子網掩碼(subnet mask)
子網掩碼的主要功能是告知網路裝置,乙個特定的ip位址的哪一部分是包含網路位址與子網位址,哪一部分是主機位址。網路的路由裝置只要識別出目的位址的網路號與子網號即可作出路由定址決策,ip位址的主機部分不參與路由器的路由定址操作,只用於在網段中唯一標識乙個網路裝置的介面。本來,如果網路系統中只使用a、b、c這三種主類位址,而不對這三種主類位址作子網劃分或者進行主類位址的彙總,則網路裝置根據ip位址的第乙個位元組的數值範圍即可判斷它屬於a、b、c中的哪乙個主類網,進而可確定該ip位址的網路部分和主機部分,不需要子網掩碼的輔助。
但為了使系統在對a、b、c這三種主類網進行了子網的劃分,或者採用無類別的域間選路技術(classless inter-domain routing,cidr)對網段進行彙總的情況下,也能對ip位址的網路及子網部分與主機部分作正確的區分,就必須依賴於子網掩碼的幫助。
子網掩碼使用與ip相同的編址格式,子網掩碼為1的部分對應於ip位址的網路與子網部分,子網掩碼為0的部分對應於ip位址的主機部分。將子網掩碼和ip位址作「與」操作後,ip位址的主機部分將被丟棄,剩餘的是網路位址和子網位址。例如,乙個ip分組的目的ip位址為:10.2.2.1,若子網掩碼為:255.255.255.0,與之作「與」運算得:10.2.2.0,則網路裝置認為該ip位址的網路號與子網號為:10.2.2.0。
閘道器(gateway)
在internet中的閘道器一般是指用於連線兩個或者兩個以上網段的網路裝置,通常使用路由器(router)作為閘道器。在tcp/ip網路體系中,閘道器的基本作用是根據目的ip位址的網路號與子網號,選擇最佳的出口對ip分組進行**,實現跨網段的資料通訊。在semester 1中只需要對閘道器的基本作用有所了解,在semester 2中還將對路由器的工作機理和配置過程作詳細的論述。
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位址的對映關係。
實驗設計
我們通過設計乙個簡單的實驗來幫助學員更深入直觀地理解上述三個知識點所涉及的基本概念與原理。在實驗中,我們利用ping命令來檢驗主機間能否進行正常的雙向通訊。在「ping」的過程中,源主機向目標主機傳送icmp的echo request報文,目標主機收到後,向源主機發回icmp的echo reply報文,從而可以驗證源與目標主機能否進行正確的雙向通訊。
實驗的拓撲結構:如圖(1)所示。
a與b為實驗用的pc機,使用windows2000 professional作作業系統。
實驗方案:
步驟1:
a: 10.2.2.2 255.255.254.0
b: 10.2.3.3 255.255.254.0
兩台主機均不設定預設閘道器。
用arp -d命令清除兩台主機上的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位址。
分析:由於主機將各自通訊目標的ip位址與自己的子網掩碼相「與」後,發現目標主機與自己均位於同一網段(10.2.2.0),因此通過arp協議獲得對方的mac位址,從而實現在同一網段內網路裝置間的雙向通訊。
步驟2:
將a的子網掩碼改為:255.255.255.0,其他設定保持不變。
操作1:用arp -d命令清除兩台主機上的arp表,然後在a上ping b,在a上顯示結果為:destination host unreachable
用arp -a命令在兩台pc上均不能看到對方的mac位址。
分析1:a將目標裝置的ip位址(10.2.3.3)和自己的子網掩碼(255.255.255.0)相「與」得10.2.3.0,和自己不在同一網段(a所在網段為:10.2.2.0),則a必須將該ip分組首先發向預設閘道器。由於a的預設閘道器沒有配置,無法對分組進行正確傳送,因此顯示「目標主機不可到達」。
操作2:接著在b上ping a,在b上顯示結果為:request timed out
此時用arp -a命令可以在兩台pc上分別看到對方的mac位址。
分析2:b將目標裝置的ip位址(10.2.2.2)和自己的子網掩碼(255.255.254.0)相「與」,發現目標主機與自己均位於同一網段(10.2.2.0),因此,b通過arp協議獲得a的mac位址,並可以正確地向a傳送echo request報文。但由於a不能向b正確地發回echo reply報文(原因見分析1),故b上顯示ping的結果為「請求超時」。在該實驗操作中,通過觀察a與b的arp表的變化,可以驗證:在一次arp的請求與響應過程中,通訊雙方就可以獲知對方的mac位址與ip位址的對應關係,並儲存在各自的arp表中。
步驟3:
在前面實驗的基礎上,把a的預設閘道器設為:10.2.2.1,閘道器的子網掩碼為:255.255.0.0。
在a與b上分別用ping命令與對方通訊,各自的顯示結果為:
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命令追蹤資料的傳輸路徑,結果分別為:
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認為b與其不在同乙個網段,故從a發向b的報文需要經過閘道器**;而b認為a與其在同乙個網段,故b不需要經過閘道器直接向a傳送報文,從而可以觀察到a與b雙向通訊時傳輸路徑的不對稱性。由於ping命令結果顯示的是從目標主機返回的echo reply報文的ttl的值,而b收到從a返回的echo reply報文經過了閘道器的**,所以在b中顯示該ip報文的ttl值降為了127(從a發出的ip分組的ttl的初始值為128,每經過乙個閘道器,ttl值減1)。
步驟4:
用arp -d命令清除a中的arp表,在a上ping一台外網段的主機,如中大的www server(202.116.64.8),再用arp -a可觀察到a的arp表中只有預設閘道器的mac位址資訊。
分析:當源主機要和外網段的主機進行通訊時,它並不需要獲取遠端主機的mac位址,而是把ip分組發向預設閘道器,由閘道器ip分組的完成**過程。如果源主機沒有預設閘道器mac位址的快取記錄,則它會通過arp協議獲取閘道器的mac位址,因此在a的arp表中只觀察到閘道器的mac位址記錄,而觀察不到遠端主機的mac位址。
理解子網掩碼 閘道器與ARP協議的作用
首先對子網掩碼,閘道器與arp協議的基本知識進行概述。子網掩碼 subnet mask 子網掩碼的主要功能是告知網路裝置,乙個特定的ip位址的哪一部分是包含網路位址與子網位址,哪一部分是主機位址。網路的路由裝置只要識別出目的位址的網路號與子網號即可作出路由定址決策,ip位址的主機部分不參與路由器的路...
子網掩碼與閘道器
子網掩碼 網路把主機連線起來,而網際網路是把多種不同的網路連線起來,因此網際網路是網路的網路。理解網際網路中有多個網路而非只有乙個網路對於理解子網掩碼有很大的幫助。換句話說,網際網路是由許多小型網路構成的,每個網路上都有許多主機,這樣便構成了乙個有層次的結構。ip位址在設計時就考慮到位址分配的層次特...
子網掩碼的作用 IP位址 子網掩碼 閘道器之間的關係
網路無處不在,深深影響著我們的生活。而下面幾點知識是我們在網路學習中經常遇到的,但並不是每個人都能輕易的說出他們概念。ip位址?子網掩碼?閘道器?我們經常混淆這些知識,同時面試的時候又容易被問。通俗一句話就是 ip 位址,是來標註你這台電腦的身份的,就如同我們每個人都有乙個身份證一般 子網掩碼表示所...