【介紹】
在被稱為Catenet的系統中,IP協議被用作主機到主機的資料報服務。網路連接裝置稱為網關。這些網關通過網關到網關協議(GGP)相互交換用於控制的資訊。通常,網關或目的主機將和源主機通訊,例如,為報告在資料報過程中的錯誤。為了這個目的才使用了ICMP,它使用IP做為底層支援,好象它是一個高層協議,而實際上它是IP的一部分,每一種IP模組必須實現ICMP。
ICMP訊息在以下幾種情況下發送:當資料報不能到達目的地時,當網關的已經失去緩衝功能,當網關能夠引導主機在更短路由上發送。
IP並非設計為絕對可靠,這個協議的目的是為了當網路出現問題的時候返回控制資訊,而不是使IP協議變得絕對可靠,並不保證資料報或控制資訊能夠返回。一些資料報仍將在沒有任何報告的情況下丟失。上層協議必須使用自己的差錯控製程序來判斷通訊是否正確。
ICMP資訊通常報告在處理資料報過程中的錯誤。若要避免資訊無限制地返回,對於ICMP訊息不會單獨成包發送,而且ICMP資訊只在處理資料報位移量為0時發送。
【訊息格式】
ICMP訊息以基本IP頭髮送。資料的第一個位元組是ICMP類型域;此域的值決定了了其餘資料的格式。任何標記為"未使用"的域都是為以後的擴充保留的,在傳送過程中必須全部是0。除非在個別的格式之下,包頭域如下格式:
.版本:4
.IHL:Internet頭長度大小以32位字為單位。
.服務類型:0
.總長度:包頭長度和資料長度。
.標識符(Identification)、標誌(Flags)、段位移量:在分段時使用。
.生存周期:以秒計,此域在每台機器處理資料報時減少,此值必須大於要傳送它的網關所消耗的時間。
.協議:ICMP = 1
.包頭校正碼:16位元據反碼和再取反而得。為計算校正碼,此域應該為0。在將來可以會取代這一域。
.源地址:建立ICMP資訊的網關或主機地址,除非說明,它可以是任何網關地址。
.目的地址:資訊要發送到的網關或主機地址。
【目的不可達資訊】
圖1
IP域:目的地址,發送未經處理資料報資料的網路地址
ICMP域:
.類型:3
.代碼:
0 = 網路不可達;
1 = 主機不可達;
2 = 協議不可用;
3 = 連接埠不可達;
4 = 需要段和DF設定;
5 = 源路由失敗;
.校正碼:16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.Internet包頭+來源資料報:
Internet包頭加上來源資料的頭64位而得。此資料用於主機匹配資訊到相應的進程。如果高層協議使用連接埠號碼,應該假設其在來源資料的頭64個位元組之中。
.說明:
相應於網關的路由表,如果在目的域中指定的網路不可達,如網路距離為無限遠,網關會向發送來源資料的主機發送目的不可達訊息。而且,在一些網路中,網關有能力決定目的主機是否可達。如果目的地不可達,它將向發送來源資料的主機發送不可達資訊。
在目的主機,如果IP模組因為指定的協議模組和進程連接埠不可用而不能提交資料報,目的主機將向發送來源資料的主機發送不可達資訊。
另外一種情況是當資料報必須被分段傳送,而"不可分段"位開啟,在這種情況下,網關必須拋棄此資料報,並向發送來源資料的主機發送不可達資訊。
代碼0,1,4和5由網關發送,而代碼2和3由主機發送。
【逾時資訊】
圖2
IP域:
目的地址:從來源資料報資料中得到。
ICMP域:
.類型:11
.代碼:
0 = 傳送逾時;
1 = 分段級裝逾時。
.校正碼:16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.Internet包頭+64位來源資料報資料:Internet包頭加上來源資料的頭64位而得。此資料用於主機匹配資訊到相應的進程。如果高層協議使用連接埠號碼,應該假設其在來源資料的頭64個位元組之中。
.說明:
如果網關在處理資料報時發現生存周期域為零,此資料報必須拋棄。網關同時必須通過逾時語音總機源主機。
如果主機在組裝分段的資料報時因為丟失段未能在規定時間內組裝資料,此資料報必須拋棄。網關發送逾時資訊。
如果段零不可用則不用發送逾時資訊。
代碼0由網關發送,代碼1由主機發送。
【參數問題訊息】
圖3
IP域:
目的地址:從來源資料中得到。
ICMP域:
.類型:12
.代碼:
0 = 指標指向錯誤。
.校正碼: 16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.指標:
如果code = 0,指向有問題的位元組。
.Internet包頭+64位來源資料報資料:Internet包頭+64位來源資料報資料:Internet包頭加上來源資料的頭64位而得。此資料用於主機匹配資訊到相應的進程。如果高層協議使用連接埠號碼,應該假設其在來源資料的頭64個位元組之中。
.說明:
如果網關或主機在處理資料報時發現包頭參數有錯誤以至不能完成工作,它必須拋棄此資料報。一個潛在的原因可以是變數的錯誤。網關或主機將通過參數問題訊息通知源主機,此訊息只有在訊息被拋棄時才被發送。
指標指向發現錯誤的資料報包頭位元組(可能是選項的中間)。例如,1表示服務類型有錯誤,如果有選項的話,20表示第一個選項的類型有錯誤。
代碼0可能從主機或網關接收到。
【源擁塞訊息】
圖4
IP域:
目的地址:來源資料報資料的地址和源網路。
ICMP域:
.類型:4
.代碼: 0
.校正碼: 16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.Internet包頭+64位來源資料報資料: Internet包頭+64位來源資料報資料:Internet包頭加上來源資料的頭64位而得。此資料用於主機匹配資訊到相應的進程。如果高層協議使用連接埠號碼,應該假設其在來源資料的頭64個位元組之中。
.說明:
如果沒有緩衝容納,網關會拋棄資料報,如果網關這樣做了,它會發送源擁塞訊息給發送主機。如果接收的資料報太多無法處理,目的主機也會發送相應的訊息給發送主機。此訊息要求發送發減少發送速率,網關會給每個拋棄的訊息返回源擁塞訊息,在接到此訊息後,發送主機應該減少發送速率,直到不再接收到網關發送的源擁塞訊息為止。在此之後,源主機可以再增加發送速率,直到接收到目的主機的源擁塞訊息為止。
網關或主機不會等到已經超過限度後再發送此訊息,而是接近自己的處理極限時就發送此訊息,這意味著,引發源擁塞訊息的資料報仍然可以處理。
代碼0可能會從主機或網關接收到。
【重新導向訊息】
圖5
IP域:
目的地址:來源資料報資料的地址和源網路。
ICMP域:
.類型: 5
.代碼:
0 = 重新導向網路的資料報;
1 = 重新導向主機的資料報;
2 = 重新導向網路和服務類型的資料報;
3 = 重新導向網路和主控件類型的資料報。
.校正碼:
16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.網關Internet地址:
應該發送網關地址(其在來源資料報資料的internet目的網路域中指定)。
.Internet包頭+64位來源資料報資料:
Internet包頭加上來源資料的頭64位而得。此資料用於主機匹配資訊到相應的進程。如果高層協議使用連接埠號碼,應該假設其在來源資料的頭64個位元組之中。
.說明:
網關在下面情況下發送重新導向訊息。網關(G1)從網關相連的網路上接收到資料報,它檢查路由表獲得下一個網關(G2)的地址(X)。如果G2和指定的接收主機在同一網路上,重新導向訊息發出,此訊息建議發送主機直接將資料報發向網關G2,因為這更近,同時網關G1向前繼續發送此資料報。
因為在資料報中的IP源路由和目的地址域是可選的,所以即使有更好的路由有時也無法發現。
代碼0,1,2和3可能會從網關發送。
【回送或回送響應訊息】
圖6
IP域:
地址:
回送訊息的源地址是回送響應訊息的目的地址。若要形成一個回送響應訊息,應該將源和目的地址交換,將類型代碼更改為0,重新電腦校正碼。
ICMP域:
.類型:
8代表回送訊息;
0代表回送響應訊息。
代碼:0
.校正碼:
16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.標識符:如果代碼=0,協助匹配回送和回送響應的代碼可以為0。
.序列碼:如果代碼=0,協助匹配回送和回送響應的序列碼可以為0。
.說明:
回送訊息中接收到的訊息應該在回送響應訊息中返回。標識符和序列碼由回送寄件者使用協助匹配回送請求的響應。
代碼0可能會從主機或網關接收到。
【時間戳記和時間戳記響應訊息】
圖7
IP域:
地址:
時間戳記訊息的源地址是時間戳記響應訊息的目的地址。若要形成一個時間戳記響應訊息,應該將源和目的地址交換,將類型代碼更改為14,重新電腦校正碼。
ICMP域:
.類型:
13代表時間戳記訊息;
14代表時間戳記響應訊息。
.代碼:0
.校正碼:
16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.標識符:如果代碼=0,協助匹配時間戳記和時間戳記響應的代碼可以為0。
.序列碼:如果代碼=0,協助匹配時間戳記和時間戳記響應的代碼可以為0。
.說明:
接收到的時間戳記附加在響應裡返回,時間是以百萬分之一稱為單位計算,並以標準時午夜開始計時。原時間戳記是發送方發送前的時間。接收時間戳記是回送者接收到的時間,傳送時間是回送者發送的時間。
如果時間以百萬分之一秒計無效,或者不能以標準時提供,可以在時間戳記的高位元組填充入資料以表示這不是標準資料。標識符和序列碼由寄件者匹配請求的響應。
代碼0可能會從主機或網關接收到。
資訊請求或資訊響應訊息
圖8
IP域:
地址:
資訊請求訊息的源地址是資訊響應訊息的目的地址。若要形成一個資訊響應訊息,應該將源和目的地址交換,將類型代碼更改為16,重新電腦校正碼。
ICMP域:
.類型:
15代表資訊請求訊息;
16 代表資訊響應訊息。
.代碼: 0
.校正碼:
16位元據(從ICMP類型開始)的反碼和再取反而得。為計算校正碼,校正碼域應該為零。這些零在以後會被校正碼取代。
.標識符:如果代碼=0,協助匹配資訊請求和資訊響應的代碼可以為0。
.序列碼:如果代碼=0,協助匹配資訊請求和資訊響應的代碼可以為0。
.說明:
此訊息可以在IP包頭中以源網路地址發送,但同時目的地址域為0(這表示此網路內)。響應IP模組應該發送完全指定地址的響應。發送此訊息是主機尋找到自己所在網路編號的一種方法。標識符和序列碼由寄件者匹配請求的響應。
代碼0可能會從主機或網關接收到。
【訊息類型總結】
l 0 回送響應
l 3 目的不可達
l 4 源擁塞
l 5 重新導向
l 8 回送
l 11 逾時
l 12 參數問題
l 13 時間戳記
l 14 時間戳記響應
l 15 資訊請求
l 16 資訊響應