ICMP協議結構全解
很多網絡協議中,都有不穩定的因素。這里我們所說的不穩定因素,就是其中包括一些不可靠的協議。但是,我們通常會使用其他協議來進行彌補。這里我們就講述一下ICMP協議進行IP協議的差錯控制。下面我們來詳細說明一下。
ICMP協議概述
IP協議是一種不可靠的協議,無法進行差錯控制。但IP協議可以借助其他協議來實現這一功能,如ICMP。
ICMP(Internet Control Messages Protocol, 網間控制報文協議)允許主機或路由器報告差錯情況和提供有關異常情況的報告。
一般來說,ICMP報文提供針對網絡層的錯誤診斷、擁塞控制、路徑控制和查詢服務四項大的功能。如,當一個分組無法到達目的站點或TTL超時后,路由器就會丟棄此分組,并向源站點返回一個目的站點不可到達的ICMP報文。
ICMP報文類型
1 ICMP報文類型
ICMP報文大體可以分為兩種類型,即ICMP差錯報文和ICMP協議詢問報文。但細分又可分為很多類型,如表1所示。
表1 ICMP報文類型
#p#
2 ICMP回射請求和應答報文頭部格式
ICMP報文被封裝在IP數據報內部傳輸。如圖1所示,是ICMP協議回射請求和應答報文頭部格式。
圖1 ICMP回射請求和應答報文頭部格式
各種ICMP報文的前32bits都一樣,它們是:
8bits類型和8bits代碼字段:一起決定了ICMP報文的類型。常見的有:
類型8、代碼0:回射請求。
類型0、代碼0:回射應答。
類型11、代碼0:超時。
16bits校驗和字段:包括數據在內的整個ICMP協議數據包的校驗和,其計算方法和IP頭部校驗和的計算方法是一樣的。
對于ICMP回射請求和應答報文來說,接下來是16bits標識符字段:用于標識本ICMP進程。
最后是16bits序列號字段:用于判斷回射應答數據報。
3 ICMP目標不可達報文
如圖2所示,是ICMP目標不可達報文頭部格式。
圖2 ICMP目標不可達報文頭部格式
其中代碼字段的不同值又代表不同的含義,如,0代表網絡不可達、1代表主機不可達等,見表1。
4 ICMP超時報文頭部格式
如圖3所示,是ICMP超時報文頭部格式。
圖3 ICMP超時報文頭部格式
其中:
類型11+代碼0:表示傳輸期間生存時間為0。
類型11+代碼1:表示數據報組裝期間生存時間為0。
由于篇幅有限,這里不再分析其他類型ICMP協議數據包的格式。