林 寧
(泰州機電高等職業技術學校,江蘇 泰州225300)
隨著計算機網絡技術的飛速發展,網絡安全技術也越來越受到人們的重視。為了使計算機網絡的發展更加標準、系統和靈活,用于網絡通信的計算機之間就需要制定一些“公約”,只有遵循這些“公約”的計算機才能相互通信。這種“公約”就被稱為協議。其中,Internet控制報文協議(Internet Control Message Protocol,ICMP)是一種網際報文控制協議,屬于TCP/IP協議中的一種。它的功能主要是監控數據信息從源地址到目的地址傳送過程中的各種情況,類似于高速公路的監控中心,可以隨時檢測、控制數據信息在網絡傳輸中的情況,實時向源地址反饋數據信息能否到達目的地以及路由器是否可用等[1]。ICMP協議使用IP提供的技術支持和無連接服務,隨時傳輸差錯報告控制信息,但不能徹底解決由于網絡故障和其他網絡原因引起的數據傳輸問題[2]。所以,這種控制消息的設計就是要求在IP數據信息無法傳輸時提供差錯報告,讓發送方了解“為什么無法傳遞”“網絡發生了什么問題”,為后續操作做好準備,它的存在對于用戶的數據信息傳遞有十分重要的意義[3-5]。
通常大多數網絡管理員都會利用ping(Packet Internet Groper)來監測網絡的連通情況,但是ping命令是如何判斷網絡的通暢情況?ping命令將網絡的連通情況向誰反饋?網絡不通暢可能是什么原因?本文將搭建網絡拓撲結構,并在測試連通以后,通過抓取主機1 ping主機3發送和接收的數據包,進行ICMP數據包分析[6-7]。
思科仿真模擬器是一款關于計算機網絡技術的仿真學習平臺。它可以模擬網絡構建的各個實施環節,初學者通過思科仿真模擬器可以去設計、搭建網絡,排除網絡故障,實時觀察網絡的運行和連通情況,其界面友好,直接拖拽各種網絡設備和連接線就可以模擬現實生活中網絡搭建。
以三層交換機網絡拓撲結構為例,既可以闡述三層交換機、路由器是如何一步步連通的,又能抓取網絡拓撲結構主機之間互傳信息的數據包,分析ICMP協議,見第105頁圖1。本研究旨在通過實時模擬網絡環境,深入分析ICMP協議。

圖1 三層交換機拓撲結構圖
本實踐研究需要3臺計算機(PC1,PC2和PC3)、2臺交換機(SW1,SW2)、1個路由器(R1)以及若干數據連線。其中,路由器和主機PC3需要使用交叉線連接。
利用思科仿真模擬器,配置3臺主機的地址信息。將PC1的IP地址設置為192.168.10.5,子網掩碼設置為255.255.255.0,網關設置為192.168.10.1;將PC2的IP地址設置為192.168.20.5,子網掩碼設置為255.255.255.0,網關設置為192.168.20.1;將PC3的IP地址設置為192.168.30.5,子網掩碼設置為255.255.255.0,網關設置為192.168.30.1。
配置交換機SW1。為模擬實際情況,將PC1和PC2分別劃分到兩個虛擬局域網中。創建兩個虛擬局域網(Virtual Local Area Network,VLAN),即VLAN10和VLAN20,將端口f0/1接入VLAN10;端口f0/2接入VLAN20。由于f0/3連接交換機SW2,為了讓VLAN之間互不干擾,各行其道,使用干道技術,將f0/3設置為trunk口。
配置交換機SW2。與之對應,需要將交換機SW2的f0/2也設置為trunk口。此時PC1和PC2就已經可以ping通了。但若要3臺計算機都能互相ping通還需要使用“no switchport”命令,設置三層交換機SW2與路由器R1連接的f0/1接口,使其具有路由功能,并將端口f0/1的IP地址設置為192.168.3.1,子網掩碼設置為255.255.255.0。
配置路由器R1。將f0/1口IP地址設置為192.168.3.2,子網掩碼設置為255.255.255.0,用“no shutdown”命令打開路由開關;配置f0/0口IP地址設置為192.168.30.1,子網掩碼設置為255.255.255.0,與PC3連通。最后,還要設置動態路由回路,3臺計算機才能實現互通。
1)完成配置3臺主機的IP地址、子網掩碼和網關等信息。
2)配置交換機SW1的命令如下。Switch>en//進入特權模式
Switch#configure terminal//進入全局配置模式
Switch(config)#vlan 10//創建vlan10和vlan20
Switch(config-vlan)#exit
Switch(config)#vlan 20
Switch(config-vlan)#exit
Switch(config)#int f0/1//將端口f0/1和f0/2分別分配到vlan10和vlan20
Switch(config-if)#switchport access vlan 10
Switch(config-if)#exit
Switch(config)#int f0/2
Switch(config-if)#switchport access vlan 20
Switch(config-if)#exit
Switch(config)#int f0/3//利用干道技術,將端口f0/3設置為trunk口
Switch(config-if)#switchport mode trunk
3)配置三層交換機SW2的命令如下。將f0/2也設置為trunk口,命令同上。創建vlan10和vlan20(同SW1創建vlan命令),為vlan10和vlan20設置地址信息。
Switch(config)#int vlan 10//為vlan10設置地址
Switch(config-if)#ip add 192.168.10.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 20//為vlan20設置地址
Switch(config-if)#ip add 192.168.20.1 255.255.255.0
Switch(config-if)#exit
此時,三層交換機已經配置完畢,PC1和PC2已經可以ping通(見圖2),并且可以通過show VLAN命令查看VLAN劃分的情況(見圖3)。

圖2 PC1和PC2的連通性測試結果

圖3 交換機SW1的VLAN劃分情況
將交換機SW2與路由器R1連接的端口f0/1設置為路由端口,并設置IP地址為192.168.3.1,子網掩碼為255.255.255.0。
Switch(config)#int f0/1
Switch(config-if)#no switchport
Switch(config-if)#ip add 192.168.3.1 255.255.255.0
Switch(config-if)#no shutdown//打開端口
4)配置交換機R1的命令如下。分別為f0/1和f0/0配置IP地址,并打開路由開關。
Router>en
Router#configure terminal
Router(config)#int f0/1//配置路由器f0/1端口的地址信息
Router(config-if)#ip add 192.168.30.2 255.255.255.0
Router(config-if)#no shutdown//打開端口
Router(config-if)#exit
Router(config)#int f0/0//配置路由器f0/0端口的地址信息
Router(config-if)#ip add 192.168.30.1 255.255.255.0
Router(config-if)#no shutdown//打開端口
5)最后,需要為SW2和R1配置靜態路由,命令如下。為SW2配置靜態路由,格式為“目的地址,子網掩碼和源地址”。
Switch(config)#ip route 192.168.30.0 255.255.255.0 192.168.3.2
為R1配置靜態路由如下。
Router(config)#ip route 192.168.10.0 255.255.255.0 192.168.3.1
Router(config)#ip route 192.168.20.0 255.255.255.0 192.168.3.1
由此,3臺計算機全部ping通。其中,用主機PC1(192.168.10.5)ping主機PC3(192.168.30.5)是可以ping通的,測試結果見圖4。

圖4 PC1和PC3的連通性測試結果
如若不通,可返回步驟檢查3臺計算機的IP配置等問題。
網絡測試連通后,進入模擬狀態,設置分析協議類型EDit Filters,選擇ICMP協議,啟動ping命令,可以動態地觀察數據信息傳送的每一步。抓取主機PC1向主機PC3發送或接收的數據包進行分析,見圖5。

圖5 抓取PC1 ping PC3的數據包
在抓取的數據包中,ICMP協議字段類型(TYPE)為8,代碼(CODE)為0,這表示是ping命令發出的請求報文,見第107頁圖6左。而圖6右的類型(TYPE)為0,代碼(CODE)為0,表示這是ICMP的應答報文。Checksum(總和檢驗碼,校驗總和)表示校驗整個ICMP報文。

圖6 ICMP請求報文與ICMP應答報文
ping命令基于ICMP協議,ICMP報文主要有ICMP差錯報告報文、控制報文和請求應答報文3類。當收到ICMP的請求報文就必須發出應答報文。通常情況下,導致ping命令不可達主要有3類原因,分別是網絡設備故障、目的地址不存在、網絡擁堵或者網絡傳輸超時未響應。
ICMP協議提供了如網絡擁堵、網絡設備、線路故障及請求超時等主機、路由不可達的差錯報告信息。當數據信息不可達時,它向源地址提供差錯報告信息,并不向沿途的路由設備提供匯報。此外,它并不能提供自身的錯誤信息。如果一個數據包在傳送中被分成若干個小數據包,那么它也是只匯報關于第一個數據包的錯誤信息。
1)目 標 超 時:“Request timed out.”。主 機 向192.168.30.5發送了4個數據包,但是都丟失了,這代表ping命令返回超時,沒有收到目標主機的應答,可能網絡中主機不存在或對方禁止ping命令應答等其他網絡故障,見圖7。

圖7 目標超時
2)正常通信:“Reply from 192.168.30.5:bytes=32 time=15ms TTL=126.”。返回結果表示與目的主機可以正常通信,目的主機給予了應答,而且從應答的時間看網絡狀態良好,也沒有丟包現象,見圖8。
3)請求超時:“Reply from 183.60.15.153:請求超時.”。發出的請求超時且沒有得到回復或者響應,可能出現線路故障或目的主機禁止響應ping命令等,多次嘗試但依然沒有建立有效連接,見圖9。
4)中間設備應答但目的主機不可達:“Destination host unreachable.”。從源主機網關192.168.10.1收到的回復可以看出其沒能到達目的主機。可能是目的主機不存在或者通信線路受阻,見圖10。
5)其他ping命令返回結果。
unknown host:未知主機,該目的主機名DNS解析不了。這種情況下,一般要檢查網卡網關的設置以及域名服務器的配置是否正確。
ping 127.0.0.1:127.0.0.1是本地回測地址,正常情況下,回測地址都能ping通,如果不能ping通,則說明本地主機網絡系統不能正常運行。
no answer:無應答,如果出現這種錯誤信息,則說明對方主機沒有正常工作或本地主機和對方主機的網絡配置不正確,此外,也考慮通信線路存在故障的問題。
bad IP address:無法解析IP地址,也可能是IP地址不存在。
no rout to host:目的主機不可達,考慮網關地址的配置或路由配置不正確或者目的主機的防火墻沒有關、沒有開機和網卡工作不正常。
基于思科仿真模擬平臺,結合三層交換機的網絡拓撲結構實例分析ICMP的差錯報告信息。搭建網絡拓撲結構,3臺計算機均測試通暢以后,通過抓取主機PC1向PC3發送的數據包,動態、實時地監測其在傳送過程中的每一站,并對ICMP數據協議進行分析,得到常見的幾種ping不通的情況,分析可能出現故障的原因,對學者研究ping命令的ICMP有很大的幫助。