提起ICMP,一些人可能會感到陌生,實際上,ICMP與我們息息相關。在網絡體系結構的各層次中,都需要控制,而不同的層次有不同的分工和控制內容,IP層的控制功能是最復雜的,主要負責差錯控制、擁塞控制等,任何控制都是建立在信息的基礎之上的,在基于IP數據報的網絡體系中,網關必須自己處理數據報的傳輸工作,而IP協(xié)議自身沒有內在機制來獲取差錯信息并處理。為了處理這些錯誤,TCP/IP設計了ICMP協(xié)議,當某個網關發(fā)現傳輸錯誤時,立即向信源主機發(fā)送ICMP報文,報告出錯信息,讓信源主機采取相應處理措施,它是一種差錯和控制報文協(xié)議,不僅用于傳輸差錯報文,還傳輸控制報文。
ICMP協(xié)議是什么?可能很多互聯網人士都不沒聽說過,其實ICMP協(xié)議和我們的網絡生活密切相關,只是我們從未察覺而已。只要有網絡、路由器、IP等配置的地方,會有ICMP協(xié)議的存在,下面小編為大家介紹一下ICMP協(xié)議。
ICMP協(xié)議是一種面向無連接的協(xié)議,用于傳輸出錯報告控制信息。它是一個非常重要的協(xié)議,它對于網絡安全具有極其重要的意義。
它是TCP/IP協(xié)議族的一個子協(xié)議,屬于網絡層協(xié)議,主要用于在主機與路由器之間傳遞控制信息,包括報告錯誤、交換受限控制和狀態(tài)信息等。當遇到IP數據無法訪問目標、IP路由器無法按當前的傳輸速率轉發(fā)數據包等情況時,會自動發(fā)送ICMP消息。ICMP報文在IP幀結構的首部協(xié)議類型字段(Protocol 8bit)的值=1.
如下圖所示,ICMP包有一個8字節(jié)長的包頭,其中前4個字節(jié)是固定的格式,包含8位類型字段,8位代碼字段和16位的校驗和;后4個字節(jié)根據ICMP包的類型而取不同的值。
ICMP提供一致易懂的出錯報告信息。發(fā)送的出錯報文返回到發(fā)送原數據的設備,因為只有發(fā)送設備才是出錯報文的邏輯接受者。發(fā)送設備隨后可根據ICMP報文確定發(fā)生錯誤的類型,并確定如何才能更好地重發(fā)失敗的數據包。但是ICMP唯一的功能是報告問題而不是糾正錯誤,糾正錯誤的任務由發(fā)送方完成。
我們在網絡中經常會使用到ICMP協(xié)議,比如我們經常使用的用于檢查網絡通不通的Ping命令(Linux和Windows中均有),這個“Ping”的過程實際上就是ICMP協(xié)議工作的過程。還有其他的網絡命令如跟蹤路由的Tracert命令也是基于ICMP協(xié)議的。