ICMP協(xié)議消息的流程和格式
我們對ICMP協(xié)議已經(jīng)有了一個了解,在網(wǎng)絡(luò)協(xié)議中,這個協(xié)議有著至關(guān)重要的作用。那么在系統(tǒng)中,是如何實現(xiàn)ICMP協(xié)議消息的傳輸呢?就此話題我們來細致地分析一下。在被稱為Catenet的系統(tǒng)中,IP協(xié)議被用作主機到主機的數(shù)據(jù)報服務(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)或目的主機將和源主機通信,例如,為報告在數(shù)據(jù)報過程中的錯誤。為了這個目的才使用了ICMP,它使用IP做于底層支持,好象它是一個高層協(xié)議,而實際上它是IP的一部分,必須由其它IP模塊實現(xiàn)。
ICMP協(xié)議消息在以下幾種情況下發(fā)送:當數(shù)據(jù)報不能到達目的地時,當網(wǎng)關(guān)的已經(jīng)失去緩存功能,當網(wǎng)關(guān)能夠引導主機在更短路由上發(fā)送。
IP并非設(shè)計為設(shè)計為絕對可靠,這個協(xié)議的目的是為了當網(wǎng)絡(luò)出現(xiàn)問題的時候返回控制信息,而不是使IP協(xié)議變得絕對可靠,并不保證數(shù)據(jù)報或控制信息能夠返回。一些數(shù)據(jù)報仍將在沒有任何報告的情況下丟失。上層協(xié)議必須使用自己的差錯控制程序來判斷通信是否正確。
ICMP信息通常報告在處理數(shù)據(jù)報過程中的錯誤。若要避免信息無限制地返回,對于ICMP協(xié)議消息不會單獨成包發(fā)送,而且ICMP信息只在處理數(shù)據(jù)報偏移量為0時發(fā)送。
消息格式
ICMP協(xié)議消息以基本IP頭發(fā)送。數(shù)據(jù)的***個字節(jié)是ICMP類型域;此域的值決定了了其余數(shù)據(jù)的格式。任何標記為“未使用”的域都是為以后的擴展保留的,在傳送過程中必須全部是0。除非在個別的格式之下,包頭域如下格式:
版本:4
IHL:Internet頭長度大小以32位字為單位。
服務(wù)類型:0
總長度:包頭長度和數(shù)據(jù)長度。
段中所用標識,段偏移量:在段是使用。
生存周期:以秒計,此域在每臺機器處理數(shù)據(jù)報時減少,此值必須大于要傳送它的網(wǎng)關(guān)所消耗的時間。
協(xié)議:ICMP = 1#p#
包頭校驗碼:16位數(shù)據(jù)反碼和再取反而得。為計算校驗碼,此域應(yīng)該為0。在將來可以會取代這一域。
源地址:創(chuàng)建ICMP協(xié)議消息的網(wǎng)關(guān)或主機地址,除非說明,它可以是任何網(wǎng)關(guān)地址。
目的地址:信息要發(fā)送到的網(wǎng)關(guān)或主機地址。
IP域:目的地址,發(fā)送原始數(shù)據(jù)報數(shù)據(jù)的網(wǎng)絡(luò)地址
ICMP域:
類型:3
代碼:
0 = 網(wǎng)絡(luò)不可達;
1 = 主機不可達;
2 = 協(xié)議不可用;
3 = 端口不可達;
4 = 需要段和DF設(shè)置;
5 = 源路由失敗;
校驗碼:16位數(shù)據(jù)(從ICMP類型開始)的反碼和再取反而得。為計算校驗碼,校驗碼域應(yīng)該為零。這些零在以后會被校驗碼取代。