ICMP報文分析

來源:互聯網
上載者:User

標籤:style   http   使用   資料   art   問題   

一.概述:

1.   ICMP同意主機或路由報告差錯情況和提供有關異常情況。ICMP是網際網路的標準協議,但ICMP不是高層協議,而是IP層的協議。通常ICMP報文被IP層或更高層協議(TCP或UDP)使用。一些ICMP報文把差錯報文返回給使用者進程。

2.   ICMP報文作為IP層資料報的資料,加上資料報的首部,組成資料報發送出去。

3.   ICMP報文的種類有兩種,即ICMP差錯報告報文和ICMP詢問報文。

二.ICMP報文的格式

1.   類型:佔8位

2.   代碼:佔8位

3.   檢驗和:佔16位

說明:ICMP全部報文的前4個位元組都是一樣的,可是剩下的其它位元組則互不同樣。

4.   其它欄位都ICMP報文類型不同而不同。

1>  ICMP報文的前4個位元組是統一的格式,共同擁有三個欄位:即類型,代碼和檢驗和。

2>  8位類型和8位代碼欄位一起決定了ICMP報文的類型。

類型8,代碼0:表示回應要求(ping請求)。

類型0,代碼0:表示回顯應答(ping應答)

類型11,代碼0:逾時

3>16位的檢驗和欄位:包含資料在內的整個ICMP資料包的檢驗和;其計算方法和IP頭部檢驗和的計算方法一樣的。

ICMP報文詳細分為查詢報文和差錯報文(對ICMP差錯報文有時須要做特殊處理,因此要對其進行區分。如:對ICMP差錯報文進行響應時,永遠不會產生還有一份ICMP差錯報文,否則會出現死迴圈)

三.ICMP差錯報文(56位元組)

1.   ICMP差錯報告報文共同擁有5種

1>  終點不可達:終點不可達分為:網路不可達,主機不可達,協議不可達,port不可達,須要分區但DF位元已置為1,以及源路由失敗等六種情況,其代碼欄位分別置為0至5。當出現以上六種情況時就向來源站點發送終點不可達報文。

說明:

port不可達:UDP的規則之中的一個是:假設收到UDP資料報並且目的port與某個正在使用的進程不相符,那麼UDP返回一個ICMP不可達報文。

2>  來源站點抑制:當路由器或主機因為擁塞而丟棄資料報時,就向來源站點發送來源站點抑制報文,使來源站點知道應當將資料報的發送速率放慢。

3>  時間超過:當路由器收到存留時間為零的資料報時,除丟棄該資料報外,還要向來源站點發送時間超過報文。當目的站在預先規定的時間內不能收到一個資料報的全部資料報片時,就將已收到的資料報片都丟棄,並向來源站點發送時間超過報文。

4>  參數問題:當路由器或目的主機收到的資料報的首部中的欄位的值不對時,就丟棄該資料報,並向來源站點發送參數問題報文。

5>  改變路由(重新導向)路由器將改變路由報文發送給主機,讓主機知道下次應將資料報發送給另外的路由器。

說明:

下面幾種情況都不會導致產生ICMP差錯報文

1>ICMP差錯報文(可是,ICMP查詢報文可能會產生ICMP差錯報文)

2>目的地址是廣播位址或多播地址的IP資料報

3>作為鏈路層廣播的資料報

4>不是IP分區的第一片

5>源地址不是單個主機的資料報。即源地址不能為零地址、迴路位址、廣播位址或多播地址。

這些規則是為了防止過去同意ICMP差錯報文對廣播分組響應所帶來的廣播風暴。

2.全部的ICMP差錯報告報文中的資料欄位都具有同樣的格式。將收到的須要進行差錯報告IP資料報的首部和資料欄位的前8個位元組提取出來,作為ICMP報文的資料欄位。再加上響應的ICMP差錯報告報文的前8個位元組,就構成了ICMP差錯報告報文。提取收到的資料報的資料欄位的前8個位元組是為了得到運輸層的port號(對於TCP和UDP)以及運輸層報文的發送序號(對於TCP)。


註:一下情況不發送ICMP差錯報告報文

三.ICMP詢問報文(40位元組)

1.ICMP詢問報文有四種回送請求和回答,時間戳記請求和回答,掩碼地址請求和回答,以及路由器詢問和通過。

1>ICMP回送請求報文是由主機或路由器向一個特定的目的主機發出的詢問。收到此報文的機器必須給源主機發送ICMP回送應答報文。這樣的詢問報文用來測試目的站是否可達以及瞭解其有關狀態。

2>ICMP時間戳記請求同意系統向還有一個系統查詢當前的時間。該ICMP報文的優點是它提供了毫秒級的解析度,而利用其它方法從別的主機擷取的時間僅僅能提供秒級的解析度。請求端填寫發起時間,然後發送報文。應答系統收到請求報文時填寫接收時間戳記,在發送應答時填寫發送時間戳記。大多數的實現是把後面兩個欄位都設成同樣的值。

3>主機使用ICMP位址遮罩請求報文可向子網路遮罩server得到某個介面的位址遮罩。系統廣播它的ICMP請求報文。ICMP報文中的標識符和序號欄位由發送端隨意選擇設定,這些值在應答中將被返回,這樣,發送端就能夠把應答與請求進行匹配。

4>主機使用ICMP路由器詢問和通過報文可瞭解串連在本網路上的路由器是否正常工作。主機將路由器詢問報文進行廣播(或多播)。收到詢問報文的一個或幾個路由器就使用路由器通過報文廣播其路由選擇資訊

四.Ping程式

1.概述

1>Ping程式是為了測試還有一台主機是否可達。該程式發送一份ICMP回應要求報文給主機,並等待返回ICMP回顯應答。

2>Ping程式還能測出到這台主機的往返時間,以表明該主機離我們有多遠。

2.我們將發送回應要求的ping程式為客戶,而稱被ping的主機為server。

3.ICMP回應要求和回顯應答報文格式:


1>Unix系統在實現ping程式時把ICMP報文中的標識符欄位置成發送進程的ID號。這樣即使在同一台主機上同一時候執行了多個ping程式執行個體,ping程式也能夠識別出返回的資訊。

2>序號從0開始,每發送一次新的回應要求就加1。ping程式列印出返回的每一個分組的序號,同意我們查看是否有分組丟失,失序或反覆。.

3>ping程式通過在ICMP報文中存放發送請求的時間值來計算往返時間。當應答返回時,用目前時間減去存放在ICMP報文中的時間值,即是往返時間。

4>當返回ICMP回顯應答時,要列印出序號和TTL,並計算往返時間。TTL位於IP首部的存留時間欄位。ping程式通過在ICMP報文資料區段中存放發送請求的時間值來計算往返時間。當應答返回時,用目前時間減去存放在ICMP報文中的時間值,即是往返時間。


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.