圖文並茂的講解 ICMP (網際控制報文)協議

ICMP 網際控制報文

爲了提高 IP 數據報交付成功的機會,在網絡層使用了網際控制報文協議來允許主機或路由器報告差錯和異常情況。ICMP 報文作爲網際層數據報的數據,加上數據報的首部,組成 IP 數據報發出去。ICMP 協議是網際層協議。

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

 

ICMP 差錯報告報文

ICMP 差錯報告報文用於目標主機或到目標主機路徑上的路由器向源主機報告差錯和異常情況。共有以下五種類型:

(1) 終點不可達。當路由器或主機不能交付數據報時就向源點發送終點不可達報文。具體可根據 ICMP 的代碼字段細分爲目的網絡不可達、目的主機不可達、目的協議不可達、目的端口不可達、目的網絡未知、目的主機未知等 13 中錯誤。

 

(2) 源點抑制。當路由器或主機由於擁塞而丟棄數據報時,就向源點發送源點抑制報文,使源點知道應當把數據報的發送速率放慢。

 

(3) 時間超過。當路由器收到生存時間TTL爲0的數據報時,除丟棄該數據報外,還要向源點發送時間超過報文。當終點在預先規定的時間內不能收到一個數據報的全部數據報片時,就把已收到的數據報片都丟棄,並向源點發送時間超過報文。

 

(4) 參數問題。當路由器或目的主機收到的數據報的首部中有的字段的值不正確時,就丟棄該數據報,並向源點發送參數問題報文。

(5) 改變路由(重定向)。路由器把改變路由報文發送給主機,讓主機知道下次應該將數據報發送給另外一個路由器(可通過更好的路由)。

 

不應發送 ICMP 差錯報文的幾種情況:

(1) 對 ICMP 差錯報告報文不再發送 ICMP 差錯報告報文。

(2) 對第一個分片的數據報片的所有後續數據報片都不發送 ICMP 差錯報告報文。

(3) 對具有組播地址的數據報不發送 ICMP 差錯報告報文。

(4) 對特殊地址(如127.0.0.0或0.0.0.0)的數據報不發送 ICMP 差錯報告報文。

 

 

ICMP 詢問報文

ICMP 詢問報文有四種類型:回送請求和回答報文、時間戳請求和回答報文、掩碼地址請求和回答報文、路由器詢問和通告報文,最常用的是前兩類。

 

ICMP 的兩個常見的應用是分組網間探測 PING 和 traceroute。其中 PING 使用了 ICMP 回送請求和回答報文,traceroute 使用了ICMP 時間超過報文。注意:PING工作在應用層,它直接使用網絡層的ICMP協議,而沒有使用傳輸層的TCP或UDP協議。traceroute工作在網絡層。

 

traceroute 原理

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章