IP 是盡力傳輸的網絡協議,提供的數據傳輸服務是不可靠的、無連接的,不能保證數據包能成功到達目的地。那麼問題來了:如何确定數據包成功到達目的地?
這需要一個網絡層協議,提供錯誤檢測功能和報告機制功能,于是出現了 ICMP(互聯網控制消息協議)。ICMP 的主要功能是,确認 IP 包是否成功送達目的地址,通知發送過程中 IP 包被丢棄的原因。有了這些功能,就可以檢查網絡是否正常、網絡配置是否正确、設備是否異常等信息,方便進行網絡問題診斷。
舉個栗子:如果在傳輸過程中,發生了某個錯誤,設備便會向源設備返回一條 ICMP 消息,告訴它發生的錯誤類型。
ICMP 消息是通過 IP 進行傳輸,但它的目的并不是讓 IP 成為一種可靠的協議,而是對傳輸中發生的問題進行反饋。ICMP 消息的傳輸同樣得不到可靠性保證,也有可能在傳輸過程中丢失。因此 ICMP 不是傳輸層的補充,應該把它當做網絡層協議。
ICMP 消息封裝ICMP 消息使用 IP 來封裝,封裝格式如下圖。
其中 type(類型)字段表示 ICMP 消息的類型,code(代碼)字段表示 ICMP 消息的具體含義。例如:type 值為 3 表示目的不可達消息( Destination Unreachable Message ),若 code 值為 0 表示目的網絡不可達( Network Unreachable )。常見的 ICMP 消息類型如下圖。
從功能上,ICMP 的消息可分為兩類:一類是通知出錯原因的錯誤消息,另一類是用于診斷的查詢消息。
ICMP 被廣泛應用于網絡測試,最常用的 ping 和 tracert 網絡測試工具,都是使用 ICMP 協議實現的。
pingping 是 ICMP 最著名的一個應用,通過 ping 可以測試網絡的可達性,即網絡上的報文能否成功到達目的地。使用 ping 命令時,源設備向目的設備發送 Echo request 消息,目的地址是目的設備的 IP 地址。目的設備收到 Echo request 消息後,向源設備回應一個 Echo reply 消息,可知目的設備是可達的。也可以通過 ping 命令來判斷目标主機是否啟用。
如果中間某個路由器沒有到達目的網絡的路由,便會向源設備回應一個 Destination Unreachable 消息,告知目的設備不可達。
如果源主機在一定時間内無法收到回應報文,就認為目的設備不可達,并顯示超時。
需要注意的是 ping 過程是雙向的消息通信,隻有雙向都成功傳輸時,才能說明通信是正常的。另外主機也可能因為防火牆攔截,導緻 ping 不通。
tracertping 工具隻能測試目的設備的連通性,但是看不到數據包的傳輸路徑。所以在網絡不通的情況下,無法知道網絡問題發生在哪個位置。tracert 工具可以查看數據包的整條傳輸路徑,包括途中經過的中間設備。
IP 頭部的 TTL 字段是為避免數據包循環轉發而設計的。每經過一個路由器,數據包頭中的 TTL 值減 1 。如果 TTL 值為 0 則丢棄報文,并向源設備回應一個 Time Exceeded 消息,告知錯誤類型。tracert 就是基于 TTL 字段和 ICMP 協議實現的。在 Windows 中命令是 tracert ,在 Unix 、MacOS 中命令是 traceroute 。
使用 tracert 命令時,源設備的 tracert 逐跳發送數據包,并等待每一個響應報文。發送第一個數據包時,TTL 值設為 1 。第一個路由器收到數據包後 TTL 值減 1 ,随即丢棄數據包,并返回一個 Time Exceeded 消息。源設備的 tracert 收到響應報文後,取出源 IP 地址,即路徑上的第一個路由器地址。然後 tracert 發送一個 TTL 值為 2 的數據包。第一個路由器将 TTL 值減 1 ,并轉發數據包。第二個路由器再将 TTL 值減 1 ,丢棄數據包并返回一個 Time Exceeded 消息。tracert 收到響應報文後,取出源 IP 地址,即路徑上的第二個路由器地址。類似步驟,tracert 逐跳獲得每一個路由器的地址,并探測到目的設備的可達性。
tracert 過程也是雙向的消息通信,隻有雙向都成功傳輸時,才能正确探測路徑。另外主機安裝了防火牆,也可能造成路徑探測失敗。
網絡實戰ping在 Windows 電腦上使用 ping 命令,并查看返回信息。
同步抓包進行驗證。
還可以直接使用 ping 命令,查看 ping 命令的使用方法。
在 Windows 電腦上使用 tracert 命令,并查看返回信息。
同步抓包進行驗證。
也可以直接使用 tracert 命令,查看 tracert 命令的使用方法。
飲水思源:
TCP/IP詳解 卷1:協議 - Kevin R.Fall
網絡基礎 - 田果
圖解TCP/IP - 竹下隆史
路由交換技術 - 杭州華三通信技術有限公司
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!