Internet控制信息協(xié)議(ICMP)
介紹 在被稱為Catenet的系統(tǒng)中,IP協(xié)議被用作主機(jī)到主機(jī)的數(shù)據(jù)報(bào)服務(wù)。網(wǎng)絡(luò)連接設(shè)備稱為網(wǎng)關(guān)。這些網(wǎng)關(guān)通過網(wǎng)關(guān)到網(wǎng)關(guān)協(xié)議(GGP)相互交換用于控制的信息。通常,網(wǎng)關(guān)或目的主機(jī)將和源主機(jī)通信,例如,為報(bào)告在數(shù)據(jù)報(bào)過程中的錯(cuò)誤。為了這個(gè)目的才使用了ICMP,它使用IP做于底層支持,好象它是一個(gè)高層協(xié)議,而實(shí)際上它是IP的一部分,必須由其它IP模塊實(shí)現(xiàn)。 ICMP消息在以下幾種情況下發(fā)送:當(dāng)數(shù)據(jù)報(bào)不能到達(dá)目的地時(shí),當(dāng)網(wǎng)關(guān)的已經(jīng)失去緩存功能,當(dāng)網(wǎng)關(guān)能夠引導(dǎo)主機(jī)在更短路由上發(fā)送。 IP并非設(shè)計(jì)為設(shè)計(jì)為絕對(duì)可靠,這個(gè)協(xié)議的目的是為了當(dāng)網(wǎng)絡(luò)出現(xiàn)問題的時(shí)候返回控制信息,而不是使IP協(xié)議變得絕對(duì)可靠,并不保證數(shù)據(jù)報(bào)或控制信息能夠返回。一些數(shù)據(jù)報(bào)仍將在沒有任何報(bào)告的情況下丟失。上層協(xié)議必須使用自己的差錯(cuò)控制程序來判斷通信是否正確。 ICMP信息通常報(bào)告在處理數(shù)據(jù)報(bào)過程中的錯(cuò)誤。若要避免信息無限制地返回,對(duì)于ICMP消息不會(huì)單獨(dú)成包發(fā)送,而且ICMP信息只在處理數(shù)據(jù)報(bào)偏移量為0時(shí)發(fā)送。 消息格式
ICMP消息以基本IP頭發(fā)送。數(shù)據(jù)的第一個(gè)字節(jié)是ICMP類型域;此域的值決定了了其余數(shù)據(jù)的格式。任何標(biāo)記為“未使用”的域都是為以后的擴(kuò)展保留的,在傳送過程中必須全部是0。除非在個(gè)別的格式之下,包頭域如下格式: 版本:4 IHL:Internet頭長度大小以32位字為單位。 服務(wù)類型:0 總長度:包頭長度和數(shù)據(jù)長度。 段中所用標(biāo)識(shí),段偏移量:在段是使用。 生存周期:以秒計(jì),此域在每臺(tái)機(jī)器處理數(shù)據(jù)報(bào)時(shí)減少,此值必須大于要傳送它的網(wǎng)關(guān)所消耗的時(shí)間。 協(xié)議:ICMP = 1 包頭校驗(yàn)碼:16位數(shù)據(jù)反碼和再取反而得。為計(jì)算校驗(yàn)碼,此域應(yīng)該為0。在將來可以會(huì)取代這一域。 源地址:創(chuàng)建ICMP信息的網(wǎng)關(guān)或主機(jī)地址,除非說明,它可以是任何網(wǎng)關(guān)地址。 目的地址:信息要發(fā)送到的網(wǎng)關(guān)或主機(jī)地址。 未達(dá)目的地信息 圖1 IP域:目的地址,發(fā)送原始數(shù)據(jù)報(bào)數(shù)據(jù)的網(wǎng)絡(luò)地址 ICMP域: 類型:3 代碼: 0 = 網(wǎng)絡(luò)不可達(dá); 1 = 主機(jī)不可達(dá); 2 = 協(xié)議不可用; 3 = 端口不可達(dá); 4 = 需要段和DF設(shè)置; 5 = 源路由失敗; 校驗(yàn)碼:16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 Internet包頭+源數(shù)據(jù)報(bào): Internet包頭加上源數(shù)據(jù)的頭64位而得。此數(shù)據(jù)用于主機(jī)匹配信息到相應(yīng)的進(jìn)程。如果高層協(xié)議使用端口號(hào),應(yīng)該假設(shè)其在源數(shù)據(jù)的頭64個(gè)字節(jié)之中。 說明: 相應(yīng)于網(wǎng)關(guān)的路由表,如果在目的域中指定的網(wǎng)絡(luò)不可達(dá),如網(wǎng)絡(luò)距離為無限遠(yuǎn),網(wǎng)關(guān)會(huì)向發(fā)送源數(shù)據(jù)的主機(jī)發(fā)送目的不可達(dá)消息。而且,在一些網(wǎng)絡(luò)中,網(wǎng)關(guān)有能力決定目的主機(jī)是否可達(dá)。如果目的地不可達(dá),它將向發(fā)送源數(shù)據(jù)的主機(jī)發(fā)送不可達(dá)信息。 在目的主機(jī),如果IP模塊因?yàn)橹付ǖ膮f(xié)議模塊和進(jìn)程端口不可用而不能提交數(shù)據(jù)報(bào),目的主機(jī)將向發(fā)送源數(shù)據(jù)的主機(jī)發(fā)送不可達(dá)信息。 另外一種情況是當(dāng)數(shù)據(jù)報(bào)必須被分段傳送,而“不可分段”位打開,在這種情況下,網(wǎng)關(guān)必須拋棄此數(shù)據(jù)報(bào),并向向發(fā)送源數(shù)據(jù)的主機(jī)發(fā)送不可達(dá)信息。 代碼0,1,4和5由網(wǎng)關(guān)發(fā)送,而代碼2和3由主機(jī)發(fā)送。 超時(shí)信息
圖2 IP域: 目的地址:從源數(shù)據(jù)報(bào)數(shù)據(jù)中得到。 ICMP域: 類型:11 代碼: 0 = 傳送超時(shí); 1 = 分段級(jí)裝超時(shí)。 校驗(yàn)碼:16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 Internet包頭+64位源數(shù)據(jù)報(bào)數(shù)據(jù):Internet包頭加上源數(shù)據(jù)的頭64位而得。此數(shù)據(jù)用于主機(jī)匹配信息到相應(yīng)的進(jìn)程。如果高層協(xié)議使用端口號(hào),應(yīng)該假設(shè)其在源數(shù)據(jù)的頭64個(gè)字節(jié)之中。 說明: 如果網(wǎng)關(guān)在處理數(shù)據(jù)報(bào)時(shí)發(fā)現(xiàn)生存周期域?yàn)榱?,此?shù)據(jù)報(bào)必須拋棄。網(wǎng)關(guān)同時(shí)必須通過超時(shí)信息通知源主機(jī)。 如果主機(jī)在組裝分段的數(shù)據(jù)報(bào)時(shí)因?yàn)閬G失段未能在規(guī)定時(shí)間內(nèi)組裝數(shù)據(jù),此數(shù)據(jù)報(bào)必須拋棄。網(wǎng)關(guān)發(fā)送超時(shí)信息。 如果段零不可用則不用發(fā)送超時(shí)信息。 代碼0由網(wǎng)關(guān)發(fā)送,代碼1由主機(jī)發(fā)送。 參數(shù)問題消息 圖3 IP域: 目的地址:從源數(shù)據(jù)中得到。 ICMP域: 類型:12 代碼: 0 = 指針指向錯(cuò)誤。 校驗(yàn)碼: 16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 指針 如果code = 0,指向有問題的字節(jié)。 Internet包頭+64位源數(shù)據(jù)報(bào)數(shù)據(jù):Internet包頭+64位源數(shù)據(jù)報(bào)數(shù)據(jù):Internet包頭加上源數(shù)據(jù)的頭64位而得。此數(shù)據(jù)用于主機(jī)匹配信息到相應(yīng)的進(jìn)程。如果高層協(xié)議使用端口號(hào),應(yīng)該假設(shè)其在源數(shù)據(jù)的頭64個(gè)字節(jié)之中。 說明: 如果網(wǎng)并或主機(jī)在處理數(shù)據(jù)報(bào)時(shí)發(fā)現(xiàn)包頭參數(shù)有錯(cuò)誤以至不能完成工作,它必須拋棄此數(shù)據(jù)報(bào)。一個(gè)潛在的原因可以是變量的錯(cuò)誤。網(wǎng)關(guān)或主機(jī)將通過參數(shù)問題消息通知源主機(jī),此消息只有在消息被拋棄時(shí)才被發(fā)送。指針指向發(fā)現(xiàn)錯(cuò)誤的數(shù)據(jù)報(bào)包頭字節(jié)。 代碼: 從主機(jī)或網(wǎng)關(guān)接收0。 源擁塞消息
圖4 IP域: 目的地址:源數(shù)據(jù)報(bào)數(shù)據(jù)的地址和源網(wǎng)絡(luò)。 ICMP域: 類型:4 代碼: 0 校驗(yàn)碼: 16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 Internet包頭+64位源數(shù)據(jù)報(bào)數(shù)據(jù): Internet包頭+64位源數(shù)據(jù)報(bào)數(shù)據(jù):Internet包頭加上源數(shù)據(jù)的頭64位而得。此數(shù)據(jù)用于主機(jī)匹配信息到相應(yīng)的進(jìn)程。如果高層協(xié)議使用端口號(hào),應(yīng)該假設(shè)其在源數(shù)據(jù)的頭64個(gè)字節(jié)之中。 說明: 如果沒有緩沖容納,網(wǎng)關(guān)會(huì)拋棄數(shù)據(jù)報(bào),如果網(wǎng)關(guān)這樣做了,它會(huì)發(fā)送源擁塞消息給發(fā)送主機(jī)。如果接收的數(shù)據(jù)報(bào)太多無法處理,目的主機(jī)也會(huì)發(fā)送相應(yīng)的消息給發(fā)送主機(jī)。此消息要求發(fā)送發(fā)減少發(fā)送速率,網(wǎng)關(guān)會(huì)給每個(gè)拋棄的消息返回源擁塞消息,在接到此消息后,發(fā)送主機(jī)應(yīng)該減少發(fā)送速率,直到不再接收到網(wǎng)關(guān)發(fā)送的源擁塞消息為止。在此之后,源主機(jī)可以再增加發(fā)送速率,直到接收到目的主機(jī)的源擁塞消息為止。 網(wǎng)關(guān)或主機(jī)不會(huì)等到已經(jīng)超過限度后再發(fā)送此消息,而是接近自己的處理極限時(shí)就發(fā)送此消息,這意味著,引發(fā)源擁塞消息的數(shù)據(jù)報(bào)仍然可以處理。代碼: 從主機(jī)或網(wǎng)關(guān)接收0。 重定向消息 圖5 IP域: 目的地址:源數(shù)據(jù)報(bào)數(shù)據(jù)的地址和源網(wǎng)絡(luò)。 ICMP域: 類型: 5 代碼: 0 = 重定向網(wǎng)絡(luò)的數(shù)據(jù)報(bào); 1 = 重定向主機(jī)的數(shù)據(jù)報(bào); 2 = 重定向網(wǎng)絡(luò)和服務(wù)類型的數(shù)據(jù)報(bào); 3 = 重定向網(wǎng)絡(luò)和主機(jī)類型的數(shù)據(jù)報(bào)。 校驗(yàn)碼: 16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 網(wǎng)關(guān)Internet地址: 應(yīng)該發(fā)送網(wǎng)關(guān)地址(其在源數(shù)據(jù)報(bào)數(shù)據(jù)的internet目的網(wǎng)絡(luò)域中指定)。 Internet包頭+64位源數(shù)據(jù)報(bào)數(shù)據(jù): Internet包頭+64位源數(shù)據(jù)報(bào)數(shù)據(jù):Internet包頭加上源數(shù)據(jù)的頭64位而得。此數(shù)據(jù)用于主機(jī)匹配信息到相應(yīng)的進(jìn)程。如果高層協(xié)議使用端口號(hào),應(yīng)該假設(shè)其在源數(shù)據(jù)的頭64個(gè)字節(jié)之中。 說明: 網(wǎng)關(guān)在下面情況下發(fā)送重定向消息。網(wǎng)關(guān)(G1)從網(wǎng)關(guān)相連的網(wǎng)絡(luò)上接收到數(shù)據(jù)報(bào),它檢查路由表獲得下一個(gè)網(wǎng)關(guān)(G2)的地址(X)。如果G2和指定的接收主機(jī)在同一網(wǎng)絡(luò)上,重定向消息發(fā)出,此消息建議發(fā)送主機(jī)直接將數(shù)據(jù)報(bào)發(fā)向網(wǎng)關(guān)G2,因?yàn)檫@更近,同時(shí)網(wǎng)關(guān)G1向前繼續(xù)發(fā)送此數(shù)據(jù)報(bào)。 因?yàn)樵跀?shù)據(jù)報(bào)中的IP源路由和目的地址域是可選的,所以即使有更好的路由有時(shí)也無法發(fā)現(xiàn)。代碼:網(wǎng)關(guān)發(fā)送0,1,2和3。 回送或回送響應(yīng)消息
![]() 圖6 IP域: 地址: 回送消息的源地址是回送響應(yīng)消息的目的地址。若要形成一個(gè)回送響應(yīng)消息,應(yīng)該將源和目的地址交換,將類型代碼更改為0,重新計(jì)算機(jī)校驗(yàn)碼。 IP域: 類型: 8代表回送消息; 0代表回送響應(yīng)消息。 代碼:0 校驗(yàn)碼: 16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 標(biāo)識(shí)符:如果代碼=0,幫助匹配回送和回送響應(yīng)的代碼可以為0。 序列碼:如果代碼=0,幫助匹配回送和回送響應(yīng)的序列碼可以為0。 說明: 回送消息中接收到的消息應(yīng)該在回送響應(yīng)消息中返回。標(biāo)識(shí)符和序列碼由回送發(fā)送者使用幫助匹配回送請(qǐng)求的響應(yīng)。代碼: 從主機(jī)或網(wǎng)關(guān)接收0。 時(shí)間戳和時(shí)間戳響應(yīng)消息 ![]() 圖7 IP域: 地址: 時(shí)間戳消息的源地址是時(shí)間戳響應(yīng)消息的目的地址。若要形成一個(gè)時(shí)間戳響應(yīng)消息,應(yīng)該將源和目的地址交換,將類型代碼更改為14,重新計(jì)算機(jī)校驗(yàn)碼。 IP域: 類型: 13代表時(shí)間戳消息; 14代表時(shí)間戳響應(yīng)消息。 代碼:0 校驗(yàn)碼: 16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 標(biāo)識(shí)符:如果代碼=0,幫助匹配時(shí)間戳和時(shí)間戳響應(yīng)的代碼可以為0。 序列碼:如果代碼=0,幫助匹配時(shí)間戳和時(shí)間戳響應(yīng)的代碼可以為0。 說明: 接收到的時(shí)間戳附加在響應(yīng)里返回,時(shí)間是以百萬分之一稱為單位計(jì)算,并以標(biāo)準(zhǔn)時(shí)午夜開始計(jì)時(shí)。原時(shí)間戳是發(fā)送方發(fā)送前的時(shí)間。接收時(shí)間戳是回送者接收到的時(shí)間,傳送時(shí)間是回送者發(fā)送的時(shí)間。 如果時(shí)間以百萬分之一秒計(jì)無效,或者不能以標(biāo)準(zhǔn)時(shí)提供,可以在時(shí)間戳的高字節(jié)填充入數(shù)據(jù)以表示這不是標(biāo)準(zhǔn)數(shù)據(jù)。標(biāo)識(shí)符和序列碼由發(fā)送者匹配請(qǐng)求的響應(yīng)。代碼: 從主機(jī)或網(wǎng)關(guān)接收0。 信息請(qǐng)求或信息響應(yīng)消息
![]() 圖8 IP域: 地址: 信息請(qǐng)求消息的源地址是信息響應(yīng)消息的目的地址。若要形成一個(gè)信息響應(yīng)消息,應(yīng)該將源和目的地址交換,將類型代碼更改為16,重新計(jì)算機(jī)校驗(yàn)碼。 IP域: 類型: 15代表信息請(qǐng)求消息; 16 代表信息響應(yīng)消息。 代碼: 0 校驗(yàn)碼: 16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計(jì)算校驗(yàn)碼,校驗(yàn)碼域應(yīng)該為零。這些零在以后會(huì)被校驗(yàn)碼取代。 標(biāo)識(shí)符:如果代碼=0,幫助匹配信息請(qǐng)求和信息響應(yīng)的代碼可以為0。 序列碼:如果代碼=0,幫助匹配信息請(qǐng)求和信息響應(yīng)的代碼可以為0。 說明: 此消息可以在IP包頭中以源網(wǎng)絡(luò)地址發(fā)送,但同時(shí)目的地址域?yàn)?(這表示此網(wǎng)絡(luò)內(nèi))。響應(yīng)IP模塊應(yīng)該發(fā)送完全指定地址的響應(yīng)。發(fā)送此消息是主機(jī)尋找到自己所在網(wǎng)絡(luò)號(hào)碼的一種方法。標(biāo)識(shí)符和序列碼由發(fā)送者匹配請(qǐng)求的響應(yīng)。代碼: 從主機(jī)或網(wǎng)關(guān)接收0。
消息類型總結(jié) 0 回送響應(yīng) 3 目的不可達(dá) 4 源擁塞 5 重定向 8 回送 11 超時(shí) 12 參數(shù)問題 13 時(shí)間戳 14 時(shí)間戳響應(yīng) 15 信息請(qǐng)求 16 信息響應(yīng)
|
聯(lián)系客服