ICMP協(xié)議消息的流程和格式
我們對(duì)ICMP協(xié)議已經(jīng)有了一個(gè)了解,在網(wǎng)絡(luò)協(xié)議中,這個(gè)協(xié)議有著至關(guān)重要的作用。那么在系統(tǒng)中,是如何實(shí)現(xiàn)ICMP協(xié)議消息的傳輸呢?就此話題我們來細(xì)致地分析一下。在被稱為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協(xié)議消息在以下幾種情況下發(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協(xié)議消息不會(huì)單獨(dú)成包發(fā)送,而且ICMP信息只在處理數(shù)據(jù)報(bào)偏移量為0時(shí)發(fā)送。
消息格式
ICMP協(xié)議消息以基本IP頭發(fā)送。數(shù)據(jù)的***個(gè)字節(jié)是ICMP類型域;此域的值決定了了其余數(shù)據(jù)的格式。任何標(biāo)記為“未使用”的域都是為以后的擴(kuò)展保留的,在傳送過程中必須全部是0。除非在個(gè)別的格式之下,包頭域如下格式:
版本:4
IHL:Internet頭長(zhǎng)度大小以32位字為單位。
服務(wù)類型:0
總長(zhǎng)度:包頭長(zhǎng)度和數(shù)據(jù)長(zhǎng)度。
段中所用標(biāo)識(shí),段偏移量:在段是使用。
生存周期:以秒計(jì),此域在每臺(tái)機(jī)器處理數(shù)據(jù)報(bào)時(shí)減少,此值必須大于要傳送它的網(wǎng)關(guān)所消耗的時(shí)間。
協(xié)議:ICMP = 1#p#
包頭校驗(yàn)碼:16位數(shù)據(jù)反碼和再取反而得。為計(jì)算校驗(yàn)碼,此域應(yīng)該為0。在將來可以會(huì)取代這一域。
源地址:創(chuàng)建ICMP協(xié)議消息的網(wǎng)關(guān)或主機(jī)地址,除非說明,它可以是任何網(wǎng)關(guān)地址。
目的地址:信息要發(fā)送到的網(wǎng)關(guān)或主機(jī)地址。
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)碼取代。