林 寧
(泰州機電高等職業(yè)技術(shù)學(xué)校,江蘇 泰州225300)
隨著計算機網(wǎng)絡(luò)技術(shù)的飛速發(fā)展,網(wǎng)絡(luò)安全技術(shù)也越來越受到人們的重視。為了使計算機網(wǎng)絡(luò)的發(fā)展更加標(biāo)準、系統(tǒng)和靈活,用于網(wǎng)絡(luò)通信的計算機之間就需要制定一些“公約”,只有遵循這些“公約”的計算機才能相互通信。這種“公約”就被稱為協(xié)議。其中,Internet控制報文協(xié)議(Internet Control Message Protocol,ICMP)是一種網(wǎng)際報文控制協(xié)議,屬于TCP/IP協(xié)議中的一種。它的功能主要是監(jiān)控數(shù)據(jù)信息從源地址到目的地址傳送過程中的各種情況,類似于高速公路的監(jiān)控中心,可以隨時檢測、控制數(shù)據(jù)信息在網(wǎng)絡(luò)傳輸中的情況,實時向源地址反饋數(shù)據(jù)信息能否到達目的地以及路由器是否可用等[1]。ICMP協(xié)議使用IP提供的技術(shù)支持和無連接服務(wù),隨時傳輸差錯報告控制信息,但不能徹底解決由于網(wǎng)絡(luò)故障和其他網(wǎng)絡(luò)原因引起的數(shù)據(jù)傳輸問題[2]。所以,這種控制消息的設(shè)計就是要求在IP數(shù)據(jù)信息無法傳輸時提供差錯報告,讓發(fā)送方了解“為什么無法傳遞”“網(wǎng)絡(luò)發(fā)生了什么問題”,為后續(xù)操作做好準備,它的存在對于用戶的數(shù)據(jù)信息傳遞有十分重要的意義[3-5]。
通常大多數(shù)網(wǎng)絡(luò)管理員都會利用ping(Packet Internet Groper)來監(jiān)測網(wǎng)絡(luò)的連通情況,但是ping命令是如何判斷網(wǎng)絡(luò)的通暢情況?ping命令將網(wǎng)絡(luò)的連通情況向誰反饋?網(wǎng)絡(luò)不通暢可能是什么原因?本文將搭建網(wǎng)絡(luò)拓撲結(jié)構(gòu),并在測試連通以后,通過抓取主機1 ping主機3發(fā)送和接收的數(shù)據(jù)包,進行ICMP數(shù)據(jù)包分析[6-7]。
思科仿真模擬器是一款關(guān)于計算機網(wǎng)絡(luò)技術(shù)的仿真學(xué)習(xí)平臺。它可以模擬網(wǎng)絡(luò)構(gòu)建的各個實施環(huán)節(jié),初學(xué)者通過思科仿真模擬器可以去設(shè)計、搭建網(wǎng)絡(luò),排除網(wǎng)絡(luò)故障,實時觀察網(wǎng)絡(luò)的運行和連通情況,其界面友好,直接拖拽各種網(wǎng)絡(luò)設(shè)備和連接線就可以模擬現(xiàn)實生活中網(wǎng)絡(luò)搭建。
以三層交換機網(wǎng)絡(luò)拓撲結(jié)構(gòu)為例,既可以闡述三層交換機、路由器是如何一步步連通的,又能抓取網(wǎng)絡(luò)拓撲結(jié)構(gòu)主機之間互傳信息的數(shù)據(jù)包,分析ICMP協(xié)議,見第105頁圖1。本研究旨在通過實時模擬網(wǎng)絡(luò)環(huán)境,深入分析ICMP協(xié)議。
圖1 三層交換機拓撲結(jié)構(gòu)圖
本實踐研究需要3臺計算機(PC1,PC2和PC3)、2臺交換機(SW1,SW2)、1個路由器(R1)以及若干數(shù)據(jù)連線。其中,路由器和主機PC3需要使用交叉線連接。
利用思科仿真模擬器,配置3臺主機的地址信息。將PC1的IP地址設(shè)置為192.168.10.5,子網(wǎng)掩碼設(shè)置為255.255.255.0,網(wǎng)關(guān)設(shè)置為192.168.10.1;將PC2的IP地址設(shè)置為192.168.20.5,子網(wǎng)掩碼設(shè)置為255.255.255.0,網(wǎng)關(guān)設(shè)置為192.168.20.1;將PC3的IP地址設(shè)置為192.168.30.5,子網(wǎng)掩碼設(shè)置為255.255.255.0,網(wǎng)關(guān)設(shè)置為192.168.30.1。
配置交換機SW1。為模擬實際情況,將PC1和PC2分別劃分到兩個虛擬局域網(wǎng)中。創(chuàng)建兩個虛擬局域網(wǎng)(Virtual Local Area Network,VLAN),即VLAN10和VLAN20,將端口f0/1接入VLAN10;端口f0/2接入VLAN20。由于f0/3連接交換機SW2,為了讓VLAN之間互不干擾,各行其道,使用干道技術(shù),將f0/3設(shè)置為trunk口。
配置交換機SW2。與之對應(yīng),需要將交換機SW2的f0/2也設(shè)置為trunk口。此時PC1和PC2就已經(jīng)可以ping通了。但若要3臺計算機都能互相ping通還需要使用“no switchport”命令,設(shè)置三層交換機SW2與路由器R1連接的f0/1接口,使其具有路由功能,并將端口f0/1的IP地址設(shè)置為192.168.3.1,子網(wǎng)掩碼設(shè)置為255.255.255.0。
配置路由器R1。將f0/1口IP地址設(shè)置為192.168.3.2,子網(wǎng)掩碼設(shè)置為255.255.255.0,用“no shutdown”命令打開路由開關(guān);配置f0/0口IP地址設(shè)置為192.168.30.1,子網(wǎng)掩碼設(shè)置為255.255.255.0,與PC3連通。最后,還要設(shè)置動態(tài)路由回路,3臺計算機才能實現(xiàn)互通。
1)完成配置3臺主機的IP地址、子網(wǎng)掩碼和網(wǎng)關(guān)等信息。
2)配置交換機SW1的命令如下。Switch>en//進入特權(quán)模式
Switch#configure terminal//進入全局配置模式
Switch(config)#vlan 10//創(chuàng)建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//利用干道技術(shù),將端口f0/3設(shè)置為trunk口
Switch(config-if)#switchport mode trunk
3)配置三層交換機SW2的命令如下。將f0/2也設(shè)置為trunk口,命令同上。創(chuàng)建vlan10和vlan20(同SW1創(chuàng)建vlan命令),為vlan10和vlan20設(shè)置地址信息。
Switch(config)#int vlan 10//為vlan10設(shè)置地址
Switch(config-if)#ip add 192.168.10.1 255.255.255.0
Switch(config-if)#exit
Switch(config)#int vlan 20//為vlan20設(shè)置地址
Switch(config-if)#ip add 192.168.20.1 255.255.255.0
Switch(config-if)#exit
此時,三層交換機已經(jīng)配置完畢,PC1和PC2已經(jīng)可以ping通(見圖2),并且可以通過show VLAN命令查看VLAN劃分的情況(見圖3)。
圖2 PC1和PC2的連通性測試結(jié)果
圖3 交換機SW1的VLAN劃分情況
將交換機SW2與路由器R1連接的端口f0/1設(shè)置為路由端口,并設(shè)置IP地址為192.168.3.1,子網(wǎng)掩碼為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地址,并打開路由開關(guān)。
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配置靜態(tài)路由,命令如下。為SW2配置靜態(tài)路由,格式為“目的地址,子網(wǎng)掩碼和源地址”。
Switch(config)#ip route 192.168.30.0 255.255.255.0 192.168.3.2
為R1配置靜態(tài)路由如下。
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通的,測試結(jié)果見圖4。
圖4 PC1和PC3的連通性測試結(jié)果
如若不通,可返回步驟檢查3臺計算機的IP配置等問題。
網(wǎng)絡(luò)測試連通后,進入模擬狀態(tài),設(shè)置分析協(xié)議類型EDit Filters,選擇ICMP協(xié)議,啟動ping命令,可以動態(tài)地觀察數(shù)據(jù)信息傳送的每一步。抓取主機PC1向主機PC3發(fā)送或接收的數(shù)據(jù)包進行分析,見圖5。
圖5 抓取PC1 ping PC3的數(shù)據(jù)包
在抓取的數(shù)據(jù)包中,ICMP協(xié)議字段類型(TYPE)為8,代碼(CODE)為0,這表示是ping命令發(fā)出的請求報文,見第107頁圖6左。而圖6右的類型(TYPE)為0,代碼(CODE)為0,表示這是ICMP的應(yīng)答報文。Checksum(總和檢驗碼,校驗總和)表示校驗整個ICMP報文。
圖6 ICMP請求報文與ICMP應(yīng)答報文
ping命令基于ICMP協(xié)議,ICMP報文主要有ICMP差錯報告報文、控制報文和請求應(yīng)答報文3類。當(dāng)收到ICMP的請求報文就必須發(fā)出應(yīng)答報文。通常情況下,導(dǎo)致ping命令不可達主要有3類原因,分別是網(wǎng)絡(luò)設(shè)備故障、目的地址不存在、網(wǎng)絡(luò)擁堵或者網(wǎng)絡(luò)傳輸超時未響應(yīng)。
ICMP協(xié)議提供了如網(wǎng)絡(luò)擁堵、網(wǎng)絡(luò)設(shè)備、線路故障及請求超時等主機、路由不可達的差錯報告信息。當(dāng)數(shù)據(jù)信息不可達時,它向源地址提供差錯報告信息,并不向沿途的路由設(shè)備提供匯報。此外,它并不能提供自身的錯誤信息。如果一個數(shù)據(jù)包在傳送中被分成若干個小數(shù)據(jù)包,那么它也是只匯報關(guān)于第一個數(shù)據(jù)包的錯誤信息。
1)目 標(biāo) 超 時:“Request timed out.”。主 機 向192.168.30.5發(fā)送了4個數(shù)據(jù)包,但是都丟失了,這代表ping命令返回超時,沒有收到目標(biāo)主機的應(yīng)答,可能網(wǎng)絡(luò)中主機不存在或?qū)Ψ浇筽ing命令應(yīng)答等其他網(wǎng)絡(luò)故障,見圖7。
圖7 目標(biāo)超時
2)正常通信:“Reply from 192.168.30.5:bytes=32 time=15ms TTL=126.”。返回結(jié)果表示與目的主機可以正常通信,目的主機給予了應(yīng)答,而且從應(yīng)答的時間看網(wǎng)絡(luò)狀態(tài)良好,也沒有丟包現(xiàn)象,見圖8。
3)請求超時:“Reply from 183.60.15.153:請求超時.”。發(fā)出的請求超時且沒有得到回復(fù)或者響應(yīng),可能出現(xiàn)線路故障或目的主機禁止響應(yīng)ping命令等,多次嘗試但依然沒有建立有效連接,見圖9。
4)中間設(shè)備應(yīng)答但目的主機不可達:“Destination host unreachable.”。從源主機網(wǎng)關(guān)192.168.10.1收到的回復(fù)可以看出其沒能到達目的主機??赡苁悄康闹鳈C不存在或者通信線路受阻,見圖10。
5)其他ping命令返回結(jié)果。
unknown host:未知主機,該目的主機名DNS解析不了。這種情況下,一般要檢查網(wǎng)卡網(wǎng)關(guān)的設(shè)置以及域名服務(wù)器的配置是否正確。
ping 127.0.0.1:127.0.0.1是本地回測地址,正常情況下,回測地址都能ping通,如果不能ping通,則說明本地主機網(wǎng)絡(luò)系統(tǒng)不能正常運行。
no answer:無應(yīng)答,如果出現(xiàn)這種錯誤信息,則說明對方主機沒有正常工作或本地主機和對方主機的網(wǎng)絡(luò)配置不正確,此外,也考慮通信線路存在故障的問題。
bad IP address:無法解析IP地址,也可能是IP地址不存在。
no rout to host:目的主機不可達,考慮網(wǎng)關(guān)地址的配置或路由配置不正確或者目的主機的防火墻沒有關(guān)、沒有開機和網(wǎng)卡工作不正常。
基于思科仿真模擬平臺,結(jié)合三層交換機的網(wǎng)絡(luò)拓撲結(jié)構(gòu)實例分析ICMP的差錯報告信息。搭建網(wǎng)絡(luò)拓撲結(jié)構(gòu),3臺計算機均測試通暢以后,通過抓取主機PC1向PC3發(fā)送的數(shù)據(jù)包,動態(tài)、實時地監(jiān)測其在傳送過程中的每一站,并對ICMP數(shù)據(jù)協(xié)議進行分析,得到常見的幾種ping不通的情況,分析可能出現(xiàn)故障的原因,對學(xué)者研究ping命令的ICMP有很大的幫助。