ICMP
IP是盡力傳輸?shù)木W(wǎng)絡協(xié)議,提供的數(shù)據(jù)傳輸服務是不可靠的、無連接的,不能保證數(shù)據(jù)包能成功到達目的地。那么問題來了:如何確定數(shù)據(jù)包成功到達目的地?
這需要一個網(wǎng)絡層協(xié)議,提供錯誤檢測功能和報告機制功能,于是出現(xiàn)了ICMP(互聯(lián)網(wǎng)控制消息協(xié)議)。ICMP 的主要功能是,確認 IP 包是否成功送達目的地址,通知發(fā)送過程中 IP 包被丟棄的原因。有了這些功能,就可以檢查網(wǎng)絡是否正常、網(wǎng)絡配置是否正確、設備是否異常等信息,方便進行網(wǎng)絡問題診斷。
舉個栗子:如果在傳輸過程中,發(fā)生了某個錯誤,設備便會向源設備返回一條 ICMP 消息,告訴它發(fā)生的錯誤類型。
ICMP 消息是通過 IP 進行傳輸,但它的目的并不是讓 IP 成為一種可靠的協(xié)議,而是對傳輸中發(fā)生的問題進行反饋。ICMP 消息的傳輸同樣得不到可靠性保證,也有可能在傳輸過程中丟失。因此 ICMP 不是傳輸層的補充,應該把它當做網(wǎng)絡層協(xié)議。
ICMP 消息封裝
ICMP 消息使用 IP 來封裝,封裝格式如下圖。
其中type(類型)字段表示 ICMP 消息的類型,code(代碼)字段表示 ICMP 消息的具體含義。例如:type 值為 3 表示目的不可達消息( Destination Unreachable Message ),若 code 值為 0 表示目的網(wǎng)絡不可達( Network Unreachable )。常見的 ICMP 消息類型如下圖。
從功能上,ICMP 的消息可分為兩類:一類是通知出錯原因的錯誤消息,另一類是用于診斷的查詢消息。
常見的 ICMP 消息類型
回送請求消息( Echo Request ):是由源設備(主機或路由器等)向一個指定的目的設備發(fā)出的請求。這種消息用來測試目的地是否可達。
回送響應消息( Echo Reply ):對 Echo Request 的響應。目的設備發(fā)送 Echo Reply 來響應收到的 Echo Request 。最常用的 ping 命令就是使用 Echo Request 和 Echo Reply 來實現(xiàn)的。
目的不可達( Destination Unreachable ):路由器無法將 IP 包發(fā)送給目的地址時,會給源設備返回一個 Destination Unreachable 消息,并在消息中顯示不可達的具體原因。
實際情況下,經(jīng)常會遇到的錯誤代碼是 1 ,表示主機不可達,它是指路由表中沒有目的設備的信息,或目的設備沒有連接到網(wǎng)絡。
參數(shù)問題( Parameter Problem ):路由器發(fā)現(xiàn) IP 包頭出現(xiàn)錯誤或非法值后,向源設備發(fā)送一個 Parameter Problem 消息。這個消息包含有問題的 IP 頭,或錯誤字段的提示信息。
重定向( Redirect ):如果路由器發(fā)現(xiàn)一條更優(yōu)的路徑發(fā)送數(shù)據(jù),那么它就會返回一個 Redirect 消息給主機。這個消息包含了最合適的路由信息和源數(shù)據(jù)。
實際情況下,這種 Redirect 消息會引發(fā)路由問題,所以不進行這種設置。比如:路由器的路由表不準確時,ICMP 有可能就無法正常工作。
超時( Time Exceeded ):IP 包中有一個字段是 TTL(生存周期),它的值每經(jīng)過一次路由器就減 1 ,直到減到 0 時 IP 包會被丟棄。這時,路由器會發(fā)送一個 Time Exceeded 消息給源設備,并通知 IP 包已被丟棄。
設置 TTL 的主要目的,是當路由發(fā)生環(huán)路時,避免 IP 包無休止的在網(wǎng)絡上轉發(fā)。還可以用 TTL 控制 IP 包的可達范圍,比如設置一個較小的 TTL 值。
時間戳請求/時間戳響應( Timestamp Request / Timestamp Reply ):時間戳可以記錄 ICMP 消息一次往返所需的時間。源設備發(fā)送一個帶有發(fā)送時間的 Timestamp Request 消息,目的設備收到后,發(fā)送一個帶有原設備發(fā)送時間、目的設備接收時間以及目的設備發(fā)送時間的 Timestamp Reply 消息。源設備收到 Timestamp Reply 時,并同時記錄到達時間。這些時間戳可以估計網(wǎng)絡上的傳輸時間。
ICMP 的應用
ICMP 被廣泛應用于網(wǎng)絡測試,最常用的ping和tracert網(wǎng)絡測試工具,都是使用 ICMP 協(xié)議實現(xiàn)的。
ping
ping 是 ICMP 最著名的一個應用,通過 ping 可以測試網(wǎng)絡的可達性,即網(wǎng)絡上的報文能否成功到達目的地。使用 ping 命令時,源設備向目的設備發(fā)送 Echo request 消息,目的地址是目的設備的 IP 地址。目的設備收到 Echo request 消息后,向源設備回應一個 Echo reply 消息,可知目的設備是可達的。也可以通過 ping 命令來判斷目標主機是否啟用。
如果中間某個路由器沒有到達目的網(wǎng)絡的路由,便會向源設備回應一個 Destination Unreachable 消息,告知目的設備不可達。
如果源主機在一定時間內(nèi)無法收到回應報文,就認為目的設備不可達,并顯示超時。
需要注意的是 ping 過程是雙向的消息通信,只有雙向都成功傳輸時,才能說明通信是正常的。另外主機也可能因為防火墻攔截,導致 ping 不通。
tracert
ping 工具只能測試目的設備的連通性,但是看不到數(shù)據(jù)包的傳輸路徑。所以在網(wǎng)絡不通的情況下,無法知道網(wǎng)絡問題發(fā)生在哪個位置。tracert 工具可以查看數(shù)據(jù)包的整條傳輸路徑,包括途中經(jīng)過的中間設備。
IP 頭部的TTL字段是為避免數(shù)據(jù)包循環(huán)轉發(fā)而設計的。每經(jīng)過一個路由器,數(shù)據(jù)包頭中的 TTL 值減 1 。如果 TTL 值為 0 則丟棄報文,并向源設備回應一個 Time Exceeded 消息,告知錯誤類型。tracert 就是基于 TTL 字段和 ICMP 協(xié)議實現(xiàn)的。在 Windows 中命令是tracert,在 Unix 、MacOS 中命令是traceroute。
使用 tracert 命令時,源設備的 tracert逐跳發(fā)送數(shù)據(jù)包,并等待每一個響應報文。發(fā)送第一個數(shù)據(jù)包時,TTL 值設為 1 。第一個路由器收到數(shù)據(jù)包后 TTL 值減 1 ,隨即丟棄數(shù)據(jù)包,并返回一個 Time Exceeded 消息。源設備的 tracert 收到響應報文后,取出源 IP 地址,即路徑上的第一個路由器地址。然后 tracert 發(fā)送一個 TTL 值為 2 的數(shù)據(jù)包。第一個路由器將 TTL 值減 1 ,并轉發(fā)數(shù)據(jù)包。第二個路由器再將 TTL 值減 1 ,丟棄數(shù)據(jù)包并返回一個 Time Exceeded 消息。tracert 收到響應報文后,取出源 IP 地址,即路徑上的第二個路由器地址。類似步驟,tracert 逐跳獲得每一個路由器的地址,并探測到目的設備的可達性。
tracert 過程也是雙向的消息通信,只有雙向都成功傳輸時,才能正確探測路徑。另外主機安裝了防火墻,也可能造成路徑探測失敗。
網(wǎng)絡實戰(zhàn)
ping
在 Windows 電腦上使用ping命令,并查看返回信息。
同步抓包進行驗證。
還可以直接使用 ping 命令,查看 ping 命令的使用方法。
tracert
在 Windows 電腦上使用tracert命令,并查看返回信息。
同步抓包進行驗證。
也可以直接使用 tracert 命令,查看 tracert 命令的使用方法。
-
網(wǎng)絡協(xié)議
+關注
關注
3文章
273瀏覽量
22001 -
ICMP
+關注
關注
0文章
52瀏覽量
15212 -
Ping
+關注
關注
0文章
69瀏覽量
16350
原文標題:24 張圖搞定 ICMP :最常用的網(wǎng)絡命令 ping 和 tracert
文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
[原創(chuàng)]網(wǎng)管一定要知道----網(wǎng)絡管理中的常用命令
四個ping命令搞定網(wǎng)絡故障
必須學的幾個網(wǎng)絡測試命令
【我是電子發(fā)燒友】常用網(wǎng)絡命令匯總
巧用Ping和Traceroute命令排除網(wǎng)絡故障
icmp和ping的區(qū)別

ping命令的使用方法及功能

ICMP協(xié)議Ping命令的應用是什么
ping命令的使用大全(Windows下ping命令的使用)
ping命令的作用和原理是什么?
雙絞線的兩種接法,網(wǎng)絡測試最常用的PING命令
如何利用Python實現(xiàn)快速Ping一個IP網(wǎng)段地址?

評論