(6)ICMP:Internet控制報文協議

一、簡介

    ICMP經常被認爲是IP層的一個組成部分。它傳遞差錯報文以及其他需要注意的信息。ICMP報文通常被IP層或更高層協議(TCP或UDP)使用。一些ICMP報文把差錯報文返回給用戶進程。

    ICMP報文是在IP數據報內部被傳輸的,如下所示:


    ICMP報文的格式如下所示:


    校驗和字段覆蓋整個ICMP報文。ICMP的校驗和時必需的。ICMP報文的詳細類型介紹詳見書中P51。要說明的是,下面各種情況下不會產生ICMP差錯報文:

    (1)ICMP差錯報文;

    (2)目的地址是廣播地址或多播地址的IP數據報;

    (3)作爲鏈路層廣播的數據報;

    (4)不是IP分片的第一片;

    (5)源地址不是單個主機的數據報。

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

二、ICMP地址掩碼請求和應答

    ICMP地址掩碼請求用於無盤系統在引導過程中獲取自己的子網掩碼。系統廣播它的ICMP請求報文(這一過程與無盤系統在引導過程中用RARP獲取IP地址是類似的)。無盤
系統獲取子網掩碼的另一個方法是BOOTP協議。

    ICMP地址掩碼請求和應答報文格式如下所示:


    ICMP報文中的標識符和序列號字段有發送端指定,在應答中返回,這樣發送端就可以把應答和請求進行匹配。

三、ICMP時間戳請求和應答

    ICMP時間戳請求允許系統向另一個系統查詢當前的時間。返回的建議值是自午夜開始計算的毫秒數,協調的統一時間UTC。提供了毫秒級的分辨率。

    ICMP時間戳請求和應答報文格式如下所示:


    請求端填寫發起時間戳,然後發送報文。應答系統收到請求報文時填寫接收時間戳,在發送應答時填寫發送時間戳。但是,實際上,大多數的實現把後面兩個字段都設成相同的值。

四、ICMP端口不可達差錯

    ICMP差錯報文,即端口不可達報文,它是ICMP目的不可到達報文中的一種,以此來看一看ICMP差錯報文中所附加的信息。

    “UDP端口不可達”返回的ICMP報文格式如下所示:


    ICMP的一個規則是, ICMP差錯報文必須包括生成該差錯報文的數據報IP首部(包含任何選項),還必須至少包括跟在該IP首部後面的前8個字節(包含源端口和目的端口)。在我們的例子中,跟在IP首部後面的前8個字節包含UDP的首部。

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