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