摘要:子網掩碼在網絡通信中具有非常重要的作用。通過分析網絡測試中常用的Ping命令所反饋的不同結果與子網掩碼的關系,判斷網絡故障原因,進行網絡定位,幫助用戶深入理解子網掩碼。對常見網絡故障的分析、排除具有重要意義。
關鍵詞:ping;子網掩碼;網絡故障
中圖分類號:TP393文獻標識碼:A文章編號:1009-3044(2008)27-1895-02
A Diagnosis Method of Network Failure Based on Command of Ping
FENG Jian-chuan,ZHOU Guo-xiang
(Department of Information Technology,Bengbu Naval Petty Officer Academy,Bengbu 233012,China)
Abstract: Subnet Mask plays an important role in network communication.Through the analysis of several feedback results made of command of ping which is usually used in network test,users can estimate the reason,confirm the position of network failure and comprehend Subnet Mask thoroughly.The work of this paper makes an important value to the analysis,elimination of familiar network failure.
Key words: ping;subnet mask;network failure
子網掩碼是網絡參數配置中相當重要的一環,無論是網絡規劃人員或網絡管理人員,唯有正確配置子網掩碼才能保證網絡的正常連通。然而,子網掩碼與IP地址的關系,它在網絡互連中所起的真正作用,網絡方面的書籍雖有涉及,但普遍不夠深入,不為一般人所理解。本文試從網絡管理常用的Ping命令入手,通過分析Ping命令的實現過程及反饋結果來深入理解子網掩碼。
1 子網掩碼
與IP地址相同,子網掩碼也是32位二進制數組成。子網掩碼可分為兩部分,左邊部分是網絡位,用二進制數字“1”表示,右邊部分是主機位,用二進制數字“0”表示。子網掩碼可用于屏蔽IP地址的主機位以區別網絡號和主機號,并揭示該IP地址是在本地網上,還是在遠程網上。具體的實現過程是這樣的:將IP地址與子網掩碼進行邏輯“與”運算后即可得到IP地址所處網段的網絡號,通過比較源IP地址所處網段的網絡號和目的IP地址所處網段的網絡號是否相同,從而判斷目的IP所表示的主機是在本地網絡還是遠程網絡。當兩者相同時,目的IP在本地網絡上,當它們不同時,目的IP在遠程網絡上。

如圖1,現有兩臺主機A、B,它們之間通過交叉線互聯(為了簡化,在這里我們并沒有使用交換機和路由器,但這并不影響我們理解IP地址和子網掩碼)。IP地址分別如圖所示,它們的子網掩碼均為255.255.255.0,網關和DNS均沒有配置。分別將A、B主機的IP地址與它們自身所配置的子網掩碼進行“與”運算后,即可得到各自所處網段的網絡號,均為26.62.169.0 ,由此可知兩臺主機處于同一個局域網內,即均在本地網絡上。
2 Ping的實現過程
如圖1,當主機A上的用戶Ping主機B的IP地址時,整個過程是這樣的:
1) 因特網報文控制協議(ICMP)構建一個固定格式的回應請求數據包。
2) ICMP協議將這個數據包交給因特網協議(IP),IP協議會創建一個數據包。此時的數據包將包括源IP協議、目的IP地址和值為01h的協議字段。當數據包到達目的地時,協議字段將告訴接收方主機,它應該將此數據包交給ICMP處理。
3) 一旦回應請求數據包被創建,IP協議將判斷目的IP地址是處在本地網絡中,還是在遠程網絡上(用第1節介紹的子網掩碼與IP地址邏輯“與”運算)。
4) IP協議斷定這是一個本地請求,直接將此數據包發往目的IP。如果目的IP在遠程網絡上,那么數據包就會被送往默認網關,這樣數據包才會被路由到遠程網絡。
5) 主機A需要知道主機B網卡的物理地址(MAC地址),這樣數據包才能下傳給數據鏈路層從而生成幀,然后發給主機B網卡。在本地局域網上,主機之間只能通過物理地址來進行通信。
6) 檢查ARP緩存,查看主機B的IP地址是否已解析為物理地址。
如果已被解析,數據包將被釋放,傳送到數據鏈路層生成幀(目的方的物理地址也將同數據包一起下傳至數據鏈路層)。
如果這個物理地址在主機A的ARP緩存中尚未被解析,一個ARP廣播將被發送至此本地網絡,以搜索26.62.169.110(主機B的IP地址)的物理地址。主機B會響應這個請求并提供自身網卡的物理地址,于是主機A將緩存這個地址,同時主機B也會緩存主機A的物理地址到它自身的ARP緩存中。
7) 將數據包和目的方的物理地址交給數據鏈路層,生成幀。此幀中含有目的方和源方的物理地址及以太網類型字段(用于描述交付此數據包到數據鏈路層的網絡層協議)。
8) 一旦幀封裝完成,它就被下傳給物理層,以一次一位的方式發往物理媒體(本例中是交叉線)。
9) 主機B的網卡收到這個數據幀后,首先檢查它的目的方物理地址,并和本機的物理地址對比,如符合,則接收,否則丟棄。
10) 接收后檢查該數據幀,將IP數據包從幀中提取出來,交給本機的IP層協議。IP協議檢查數據包中的目的方IP地址與本機IP地址對比,如符合則接收,否則丟棄。
11) IP協議檢查后,將有用的信息提取后交給ICMP協議,后者處理后,馬上構建一個ICMP應答包,發送給主機A,其過程和主機A發送ICMP請求包到主機B一模一樣。
3 Ping命令響應結果與子網掩碼之間的關系
應用Ping命令后會得到三種響應結果:應答(Reply)、遠程主機不可達(Destination host unreachable)和超時(Request timed out),如圖2、3、4所示。三種不同情況是與IP地址和子網掩碼的配置密切相關的。

為論述方便,我們分別將主機A的IP地址和子網掩碼表示為IPA、MA,將主機B的IP地址和子網掩碼表示為IPB、MB,邏輯“與”運算用“AND”表示,在主機A上Ping主機B。
1) IPA AND MA=IPB AND MA且IPA AND MB=IPB AND MB
即使主機A、B各自配置的默認網關不同,由于它們都在本地網絡上,此時數據包不會被發送至默認網關,數據包將直接由A發送至B。主機B收到數據包后,構建一個ICMP應答包,發送給主機A,故此時將顯示圖2應答(Reply),表明網絡物理連接正常。
2) IPA AND MA≠IPB AND MA但IPA AND MB=IPB AND MB
例如,IPA為26.62.169.87, MA為255.255.255.224, IPB為26.62.169.110, MB為255.255.255.0。此時在A看來A與B不在同一網絡上,則數據包將首先被送至A主機所配置的默認網關,由于本例中網關未配置,數據包無法發出,故此時將顯示圖3遠程主機不可達(Destination host unreachable)。
3) IPA AND MA=IPB AND MA但IPA AND MB≠IPB AND MB
例如,IPA為26.62.185.87, MA為255.255.0.0, IPB為26.62.169.110, MB為255.255.255.0。此時在A看來A與B在同一網絡上,數據包將直接由A發送至B。主機B收到數據包后,構建一個ICMP應答包。由于IPA AND MB≠IPB AND MB,故主機B認為A與B不在同一網絡上,因此ICMP應答包將被發送至主機B配置的默認網關。由于本例中網關未配置,故數據包無法發出,主機A已將回應請求數據包成功發出,但無法收到ICMP應答包,當超過Ping命令默認設定的超時時限后,將會顯示圖4超時(Request timed out)。
4) IPA AND MA≠IPB AND MA且IPA AND MB≠IPB AND MB
此時與 2)類似,將顯示圖3,不再贅述。
由此可見,通過Ping命令得到的三種不同結果是與主機A和B各自的IP地址及子網掩碼相關聯的。我們據此就可以判斷出IP地址和子網掩碼在配置上存在哪些問題,從而有助于故障的定位。
4 結束語
網絡的穩定、高效運行需要在網絡建設前期就進行合理的規劃,子網掩碼在網絡通信中具有非常重要的作用。基礎鏈路級的故障,排除設備本身的物理損壞外,大多是由子網掩碼的錯誤配置引起的。根據Ping命令反饋的不同結果,分析網絡故障原因,進行網絡定位,此法對提高網管人員故障判斷能力大有裨益。
參考文獻:
[1] Douglas E.Comer.Internetworking with TCP/IP,Volume 1 Principles,Protocols,and Architecture(Fifth Edition)[M].人民郵電出版社,2006.
[2] Todd L.Cisco Certified Network Associate Study Guide Fifth Edition[M],2005:216-221.