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