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