CSDN lidp ? ?[http://blog.csdn.net/perfectpdl](http://blog.csdn.net/perfectpdl)
前面文章了解了ip路由是怎樣安排路由器轉發數據報來提供可靠的無連接數據報交付服務,數據報從一個路由器傳到另一個路由器,直到數據報到達某個能直接交付到最終目的的路由器,但問題是如果路由器不能選擇路由或交付數據報,或者他檢測到影響他發送的異常條件,則需要通知最初的源站采取措施避免或糾正問題,ICMP協議應運而生。
當目的機器臨時或永久斷鏈,壽命計數器超時或者中間路由器堵塞得無法處理傳入的通信量時,ip都無法交付數據報,為了讓互聯網中的路由器報告錯誤或提供有關意外情況的信息,設計人員在TCP/IP中加入了網際控制報文協議ICMP,是IP的一部分,并且在每個IP實現中都必須包含他。
ICMP報文是放在IP數據報的數據部分中通過互聯網傳遞的,icmp報文的最終處理著不是應用程序,而是該機器上處理他的網際協議的軟件模塊,即ICMP協議提供了兩臺機器上TCP/IP 協議軟件間通信的方法。
需要注意的是,當數據報產生差錯時,ICMP只能向數據報的最初源站回報差錯情況。
總結:
icmp 協議為路由器和主機提供了正常情況以外的通信,他是ip的一個完整的必要組成部分,icmp包框降低傳輸速率的源站抑制,請求主機改變選路表的重定向報文以及主機可用來決定目的站是否可達的回送請求/應答報文(Ping),ICMP報文是在ip數據報的數據段中傳輸的,并且在報文開頭有三個固定長度的字段:ICMP類型(type)字段,代碼(code)字段及ICMP校驗和字段。