ICMP提供工作原理是
ICMP提供一致易懂的出錯(cuò)報(bào)告信息。發(fā)送的出錯(cuò)報(bào)文返回到發(fā)送原數(shù)據(jù)的設(shè)備,因?yàn)橹挥邪l(fā)送設(shè)備才是出錯(cuò)報(bào)文的邏輯接受者。發(fā)送設(shè)備隨后可根據(jù)ICMP報(bào)文確定發(fā)生錯(cuò)誤的類型,并確定如何才能更好地重發(fā)失敗的數(shù)據(jù)包。但是ICMP唯一的功能是報(bào)告問(wèn)題而不是糾正錯(cuò)誤,糾正錯(cuò)誤的任務(wù)由發(fā)送方完成。
我們?cè)诰W(wǎng)絡(luò)中經(jīng)常會(huì)使用到ICMP協(xié)議,比如我們經(jīng)常使用的用于檢查網(wǎng)絡(luò)通不通的Ping命令(Linux和Windows中均有),這個(gè)“Ping”的過(guò)程實(shí)際上就是ICMP協(xié)議工作的過(guò)程。還有其他的網(wǎng)絡(luò)命令如跟蹤路由的Tracert命令也是基于ICMP協(xié)議的。
ICMP的報(bào)文格式是
ICMP報(bào)文包含在IP數(shù)據(jù)報(bào)中,屬于IP的一個(gè)用戶,IP頭部就在ICMP報(bào)文的前面,所以一個(gè)ICMP報(bào)文包括IP頭部、ICMP頭部和ICMP報(bào)文,IP頭部的Protocol值為1就說(shuō)明這是一個(gè)ICMP報(bào)文,ICMP頭部中的類型(Type)域用于說(shuō)明ICMP報(bào)文的作用及格式,此外還有一個(gè)代碼(Code)域用于詳細(xì)說(shuō)明某種ICMP報(bào)文的類型,所有數(shù)據(jù)都在ICMP頭部后面。[3]
ICMP報(bào)文格式具體由RFC 777[4],RFC 792[2]規(guī)范。