實驗名稱:利用Wireshark軟件進行ICMP抓包實驗
實驗?zāi)康模?.掌握Wireshark的基本使用方法。
2.通過對Wireshark抓取的ICMP協(xié)議數(shù)據(jù)包分析,掌握ICMP的幀格式及運行原理。 3.熟悉IP首部各字段的含義及以太網(wǎng)封裝格式。
實驗環(huán)境:1.硬件環(huán)境
a)網(wǎng)卡信息Description:Realtek RTL8139 Family Fast Ethernet Adapter Link speed:100MBits/s Media supported:802.3(Ethernet) Media in use: 802.3(Ethernet) Maximum Packet Size 1514 其它詳細(xì)信息見附圖1.
b)網(wǎng)絡(luò)組成實驗電腦通過ADSL MODEM 接入互聯(lián)網(wǎng)中聯(lián)通ADSL服務(wù)器,ADSL MODEM和ADSL服務(wù)器間通過PPP over Ethernet(PPPoE)協(xié)議轉(zhuǎn)播以太網(wǎng)絡(luò)中PPP幀信息。電腦通過ADSL方式上網(wǎng)是通過以太網(wǎng)卡(Ethernet)與互聯(lián)網(wǎng)相連的。使用的還是普通的TCP/IP方式,并沒有付加新的協(xié)議,對我們的抓包實驗是透明的。
2. 軟件環(huán)境
a)操作系統(tǒng)Microsoft Windows XP Professional 版本 2002 Service Pack 3
b)Wireshark 軟件通過系統(tǒng)命令systeminfo查看處理器類型為X86-based PC,為32位機,因此選擇32位的Wireshark軟件(Version:Version 1.2.3 for win32)。
一、概述:
1. ICMP允許主機或路由報告差錯情況和提供有關(guān)異常情況。ICMP是因特網(wǎng)的標(biāo)準(zhǔn)協(xié)議,但ICMP不是高層協(xié)議,而是IP層的協(xié)議。通常ICMP報文被IP層或更高層協(xié)議(TCP或UDP)使用。一些ICMP報文把差錯報文返回給用戶進程。
2. ICMP報文作為IP層數(shù)據(jù)報的數(shù)據(jù),加上數(shù)據(jù)報的首部,組成數(shù)據(jù)報發(fā)送出去。
3. ICMP報文的種類有兩種,即ICMP差錯報告報文和ICMP詢問報文。
二、ICMP報文的格式

1. 類型:占8位
2. 代碼:占8位
3. 檢驗和:占16位
說明:ICMP所有報文的前4個字節(jié)都是一樣的,但是剩下的其他字節(jié)則互不相同。
4. 其它字段都ICMP報文類型不同而不同。
1》 ICMP報文的前4個字節(jié)是統(tǒng)一的格式,共有三個字段:即類型,代碼和檢驗和。
2》 8位類型和8位代碼字段一起決定了ICMP報文的類型。
類型8,代碼0:表示回顯請求(ping請求)。
類型0,代碼0:表示回顯應(yīng)答(ping應(yīng)答)
類型11,代碼0:超時
3》16位的檢驗和字段:包括數(shù)據(jù)在內(nèi)的整個ICMP數(shù)據(jù)包的檢驗和;其計算方法和IP頭部檢驗和的計算方法一樣的。
ICMP報文具體分為查詢報文和差錯報文(對ICMP差錯報文有時需要做特殊處理,因此要對其進行區(qū)分。如:對ICMP差錯報文進行響應(yīng)時,永遠(yuǎn)不會生成另一份ICMP差錯報文,否則會出現(xiàn)死循環(huán))
三、ICMP差錯報文(56字節(jié))
1. ICMP差錯報告報文共有5種
1》 終點不可達:終點不可達分為:網(wǎng)絡(luò)不可達,主機不可達,協(xié)議不可達,端口不可達,需要分片但DF比特已置為1,以及源路由失敗等六種情況,其代碼字段分別置為0至5。當(dāng)出現(xiàn)以上六種情況時就向源站發(fā)送終點不可達報文。
說明:
端口不可達:UDP的規(guī)則之一是:如果收到UDP數(shù)據(jù)報而且目的端口與某個正在使用的進程不相符,那么UDP返回一個ICMP不可達報文。
2》 源站抑制:當(dāng)路由器或主機由于擁塞而丟棄數(shù)據(jù)報時,就向源站發(fā)送源站抑制報文,使源站知道應(yīng)當(dāng)將數(shù)據(jù)報的發(fā)送速率放慢。
3》 時間超過:當(dāng)路由器收到生存時間為零的數(shù)據(jù)報時,除丟棄該數(shù)據(jù)報外,還要向源站發(fā)送時間超過報文。當(dāng)目的站在預(yù)先規(guī)定的時間內(nèi)不能收到一個數(shù)據(jù)報的全部數(shù)據(jù)報片時,就將已收到的數(shù)據(jù)報片都丟棄,并向源站發(fā)送時間超過報文。
4》 參數(shù)問題:當(dāng)路由器或目的主機收到的數(shù)據(jù)報的首部中的字段的值不正確時,就丟棄該數(shù)據(jù)報,并向源站發(fā)送參數(shù)問題報文。
5》 改變路由(重定向)路由器將改變路由報文發(fā)送給主機,讓主機知道下次應(yīng)將數(shù)據(jù)報發(fā)送給另外的路由器。
說明:
以下幾種情況都不會導(dǎo)致產(chǎn)生ICMP差錯報文
1》ICMP差錯報文(但是,ICMP查詢報文可能會產(chǎn)生ICMP差錯報文)
2》目的地址是廣播地址或多播地址的IP數(shù)據(jù)報
3》作為鏈路層廣播的數(shù)據(jù)報
4》不是IP分片的第一片
5》源地址不是單個主機的數(shù)據(jù)報。即源地址不能為零地址、環(huán)回地址、廣播地址或多播地址。
這些規(guī)則是為了防止過去允許ICMP差錯報文對廣播分組響應(yīng)所帶來的廣播風(fēng)暴。
2.所有的ICMP差錯報告報文中的數(shù)據(jù)字段都具有同樣的格式。將收到的需要進行差錯報告IP數(shù)據(jù)報的首部和數(shù)據(jù)字段的前8個字節(jié)提取出來,作為ICMP報文的數(shù)據(jù)字段。再加上響應(yīng)的ICMP差錯報告報文的前8個字節(jié),就構(gòu)成了ICMP差錯報告報文。提取收到的數(shù)據(jù)報的數(shù)據(jù)字段的前8個字節(jié)是為了得到運輸層的端口號(對于TCP和UDP)以及運輸層報文的發(fā)送序號(對于TCP)。
注:一下情況不發(fā)送ICMP差錯報告報文
三、ICMP詢問報文(40字節(jié))
1.ICMP詢問報文有四種回送請求和回答,時間戳請求和回答,掩碼地址請求和回答,以及路由器詢問和通過。
1》ICMP回送請求報文是由主機或路由器向一個特定的目的主機發(fā)出的詢問。收到此報文的機器必須給源主機發(fā)送ICMP回送應(yīng)答報文。這種詢問報文用來測試目的站是否可達以及了解其有關(guān)狀態(tài)。
2》ICMP時間戳請求允許系統(tǒng)向另一個系統(tǒng)查詢當(dāng)前的時間。該ICMP報文的好處是它提供了毫秒級的分辨率,而利用其他方法從別的主機獲取的時間只能提供秒級的分辨率。請求端填寫發(fā)起時間,然后發(fā)送報文。應(yīng)答系統(tǒng)收到請求報文時填寫接收時間戳,在發(fā)送應(yīng)答時填寫發(fā)送時間戳。大多數(shù)的實現(xiàn)是把后面兩個字段都設(shè)成相同的值。
3》主機使用ICMP地址掩碼請求報文可向子網(wǎng)掩碼服務(wù)器得到某個接口的地址掩碼。系統(tǒng)廣播它的ICMP請求報文。ICMP報文中的標(biāo)識符和序列號字段由發(fā)送端任意選擇設(shè)定,這些值在應(yīng)答中將被返回,這樣,發(fā)送端就可以把應(yīng)答與請求進行匹配。
4》主機使用ICMP路由器詢問和通過報文可了解連接在本網(wǎng)絡(luò)上的路由器是否正常工作。主機將路由器詢問報文進行廣播(或多播)。收到詢問報文的一個或幾個路由器就使用路由器通過報文廣播其路由選擇信息
四、Ping程序
1.概述
1》Ping程序是為了測試另一臺主機是否可達。該程序發(fā)送一份ICMP回顯請求報文給主機,并等待返回ICMP回顯應(yīng)答。
2》Ping程序還能測出到這臺主機的往返時間,以表明該主機離我們有多遠(yuǎn)。
2.我們將發(fā)送回顯請求的ping程序為客戶,而稱被ping的主機為服務(wù)器。
3.ICMP回顯請求和回顯應(yīng)答報文格式:
1》Unix系統(tǒng)在實現(xiàn)ping程序時把ICMP報文中的標(biāo)識符字段置成發(fā)送進程的ID號。這樣即使在同一臺主機上同時運行了多個ping程序?qū)嵗?,ping程序也可以識別出返回的信息。
2》序列號從0開始,每發(fā)送一次新的回顯請求就加1。ping程序打印出返回的每個分組的序列號,允許我們查看是否有分組丟失,失序或重復(fù)。。
3》ping程序通過在ICMP報文中存放發(fā)送請求的時間值來計算往返時間。當(dāng)應(yīng)答返回時,用當(dāng)前時間減去存放在ICMP報文中的時間值,即是往返時間。
4》當(dāng)返回ICMP回顯應(yīng)答時,要打印出序列號和TTL,并計算往返時間。TTL位于IP首部的生存時間字段。ping程序通過在ICMP報文數(shù)據(jù)段中存放發(fā)送請求的時間值來計算往返時間。當(dāng)應(yīng)答返回時,用當(dāng)前時間減去存放在ICMP報文中的時間值,即是往返時間。
其他:
基本原理:
ICMP稱為internet控制協(xié)議,主要用于傳遞IP網(wǎng)絡(luò)中的差錯及其他需要注意的控制信息。RFC 792中描述了ICMP協(xié)議:”ICMP是IP不可缺少的部分,所有的IP軟件必須實現(xiàn)ICMP協(xié)議?!?/p>
ICMP報文在以下幾種情況下發(fā)送(RFC 792中提到)
ü 當(dāng)數(shù)據(jù)報不能到達目的地
ü 當(dāng)網(wǎng)關(guān)已經(jīng)失去緩存功能
ü 當(dāng)網(wǎng)關(guān)能夠引導(dǎo)主機在更短路由上發(fā)送
類型:表示ICMP報文類型
代碼:同類型字段相結(jié)合定義詳細(xì)的ICMP報文
數(shù)據(jù):根據(jù)不通類型和代碼,數(shù)據(jù)域填充相應(yīng)的內(nèi)容
類型代碼描述
00回顯應(yīng)帶(Ping應(yīng)答)
3
目的不可達
0網(wǎng)絡(luò)不可達
1主機不可達
2協(xié)議不可達
3端口不可達
4需要進行分片但設(shè)置了不分片比特
5源站選路失敗
6目的網(wǎng)絡(luò)不認(rèn)識
7目的主機不認(rèn)識
8源主機被隔離(作廢不用了)
9目的網(wǎng)絡(luò)被強制禁止
10目的主機被強制禁止
11由于服務(wù)類型TOS,網(wǎng)絡(luò)不可達
12由于服務(wù)類型TOS,主機不可達
13由于過濾,通信被強制禁止
14主機越權(quán)
40源端被關(guān)閉(基于流控制)
5重定向
0對網(wǎng)絡(luò)重定向
1對主機重定向
2對服務(wù)類型和網(wǎng)絡(luò)重定向
3對服務(wù)類型和主機重定向
80請求回顯(即ping請求)
90路由器通告
100路由器請求
11超時
0傳輸起見TTL為0
1在數(shù)據(jù)報文組裝期間TTL為0
12參數(shù)問題
0壞的IP首部(包括各種差錯)
1缺少必須的選項
130時間戳請求
140時間戳應(yīng)答
150信息請求
160信息應(yīng)答
170地址掩碼請求
180地址掩碼應(yīng)答
ICMP協(xié)議分析報告
評論