TcpIp詳解--ICMP:Internet控製報文協議

TcpIp詳解--ICMP:Internet控製報文協議

1.概述
ICMP報文是在ip數据報內部被傳輸的,如下圖(圖6-1),它被認為是IP層的一個組成部分,用于傳遞差錯報文及其它需要注意的信息,ICMP報文通常被IP層或更高層協義(TCP或UDP)使用.

ICMP報文的格式如下圖(圖6-2)

類型字段:有15個不同的值.表示報文的類型
代碼字段:表示不同的條件,与類型字段共同确定報文的類型.
檢驗和字段:算法与ip首部檢驗和算法相同


2.ICMP報文的類型

為了防止對廣播分組響應所帶來的廣播風暴,下面几种情況下不會產生icmp差錯報文:
(1)icmp差錯報文
(2)目的地址是廣播地址或多播地址(即D類地址)的ip數据報
(3)作為連路層廣播的數据報
(4)不是ip分片的第一片
(5)源地址不是單個主机的數据報,也就是說,源地址不能為零地址,環回地址,廣播地址或多播地址.

3.ICMP地址掩碼請求与應答
ICMP地址掩碼請求用于無盤系統在啟動過程中獲取自已的子网掩碼,ICMP請求報文采用廣播的形式.
注:無盤系統獲取子网掩碼的另一個方法是bootp協議.
icmp地址掩碼請求和應答報文的格式如下(圖6-4),其中標識符和序列號字段由發送端任意選擇設定,這些值在應答中將被返回,從而發送端可以將應答与請求匹配.

4.icmp時間戳請求与應答
icmp時間戳請求用於查詢另一個系統當前的時間.返回的時間是自午夜開始計算的毫秒數,協調的統一時間(utc).
icmp時間戳請求和應答報文的格式如下圖(圖6-6).

請求端填寫發起時間戳,然后發送報文,應答系統收到 請求報文時填 寫接收時間戳,在發送應答時填寫發送時間戳.但實際上,大多數實現把后面兩個字段都設成相同的值(原因是可以讓發送方分別計算發送請求的時間和發送應答的時間).


5.ICMP端口不可達差錯
ICMP不可達報文的一般格式如下(圖6-10),但也有例外,如當代碼為4時,路徑mtu發現机制允許路由器把外出接口的mtu填在第二個32位字的低16位中.另外,icmp也充許系統返回多于8個字節的產生差錯的ip數据報中的數据.

下面以發送一份UDP數据報為例,如果目的端口与某個正在使用的進程不相符,那么udp返回一個icmp不可達報文.該報文的格式將如下圖所示(圖6-9):

 

 

你可能感兴趣的:(算法,tcp,internet,路由器)