TCP/IP學習筆記(九)——ICMP:Internet控制報文協議

1、引言

ICMP經常被認爲是IP層的一個組成部分。它傳遞差錯報文以及其他需要注意的信息。ICMP報文通常被IP層或更高層協議(TCP或UDP)使用。一些ICMP報文把差錯報文返回給用戶進程。
ICMP報文是在IP數據報內部被傳輸的,如圖所示。
這裏寫圖片描述
ICMP報文的格式如下圖所示。所有報文的前4個字節都是一樣的,但是剩下的其他字節則互不相同。類型字段可以有15個不同的值,以描述特定類型的ICMP報文。某些ICMP報文還使用代碼字段的值來進一步描述不同的條件。


2、ICMP報文的類型

各種類型的ICMP報文如下圖所示,不同類型由報文中的類型字段和代碼字段來共同決定。
這裏寫圖片描述
圖中的最後兩列表明ICMP報文是一份查詢報文還是一份差錯報文。因爲對ICMP差錯報文有時需要作特殊處理,因此我們需要對它們進行區分。例如,在對ICMP差錯報文進行響應時,永遠不會生成另一份ICMP差錯報文(如果沒有這個限制規則,可能會遇到一個差錯產生另一個差錯的情況,而差錯再產生差錯,這樣會無休止地循環下去)。
當發送一份ICMP差錯報文時,報文始終包含IP的首部和產生ICMP差錯報文的IP數據報的前8個字節。這樣,接收ICMP差錯報文的模塊就會把它與某個特定的協議(根據IP數據報首部中的協議字段來判斷)和用戶進程(根據包含在IP數據報前8個字節中的TCP或UDP報文首部中的TCP或UDP端口號來判斷)聯繫起來。、


3、ICMP地址掩碼請求與應答

ICMP地址掩碼請求用於無盤系統在引導過程中獲取自己的子網掩碼。系統廣播的ICMP請求報文(這一過程與無盤系統在引導過程中用RARP獲取IP地址是類似的)。ICMP地址掩碼請求和應答報文的格式如圖所示。ICMP報文中的標識符和序列號字段由發送端任意選擇設定,這些值在應答中將被返回。這樣,發送端就可以把應答與請求進行匹配。
這裏寫圖片描述

4、ICMP時間戳請求與應答

ICMP時間戳請求允許系統向另一個系統查詢當前的時間。返回的建議值是自午夜開始計算的毫秒數,協調的統一時間( Coordinated Universal Time, UTC)(早期的參考手冊認爲UTC是格林尼治時間)。這種ICMP報文的好處是它提供了毫秒級的分辨率,而利用其他方法從別的主機獲取的時間(如某些Unix系統提供的rdate命令)只能提供秒級的分辨率。由於返回的時間是從午夜開始計算的,因此調用者必須通過其他方法獲知當時的日期,這是它的一個缺陷。ICMP時間戳請求和應答報文格式如圖所示。
這裏寫圖片描述

發佈了33 篇原創文章 · 獲贊 11 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章