[TCP IP詳解:學習筆記]ICMP:Internet控制報文協議

來源:互聯網
上載者:User

ICMP:Internet控制報文協議

 

       ICMP報文通常被IP層或更高層協議(TCP或UDP)使用,用於傳遞差錯報文以及其他需要注意的資訊。ICMP報文是在IP資料報內部被傳輸的,1所示。

 

圖1 ICMP封裝在IP資料報內部

 

       ICMP的正式規範參見RFC 792。ICMP報文格式2所示。類型欄位可以有15個不同的值,以描述特定類型的ICMP報文。某些ICMP報文還使用代碼欄位的值進一步描述不同的條件。校正和欄位計算覆蓋整個ICMP報文。

 

圖2 ICMP報文格式

 

       ICMP報文的各種類型3所示,不同類型由報文中的類型欄位和代碼欄位共同決定。

      

       當發送一份ICMP差錯報文時,報文始終包含IP首部和產生ICMP差錯報文的IP資料報中資料部分的前8個位元組。這樣,接收ICMP差錯報文的模組就會把它與某個特定的協議(根據IP資料報首部中的協議欄位來判斷)和使用者進程(根據包含在IP資料報前8個位元組中的TCP或UDP報文首部中的TCP或UDP連接埠號碼來判斷)聯絡起來。

 

       下面各種情況都不會產生ICMP差錯報文:

  1. ICMP差錯報文(但是,ICMP查詢報文可能產生ICMP差錯報文);
  2. 目的地址是廣播位址或多播地址(D類地址)的IP資料報;
  3. 作為鏈路層廣播的資料報;
  4. 不是IP分區的第一片;
  5. 源地址不是單個主機的資料報。也就是說,源地址不能為零地址、迴路位址、廣播位址或多播地址。

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

 

       ICMP連接埠不可到達差錯

       ICMP差錯報文(4所示),即連接埠不可到達報文,它是ICMP目的不可到達報文中的一種,以此來看一看ICMP差錯報文中所附加的資訊,使用UDP來查看它。

       UDP的規則之一是,如果收到一份UDP資料報而目的連接埠與某個正在使用的進程不相符,那麼UDP返回一個ICMP不可達報文。

(BSD系統不把從socket接收到的ICMP報文中的UDP資料通知給使用者進程,除非該進程已經發送一個connect命令給該socket。)

 

圖3 ICMP報文類型

 

 

圖4 ICMP不可達報文格式

 

       4.4BSD中對每個可能的ICMP報文的處理方法5所示。

 

圖5  4.4BSD系統對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.