tft每日頭條

 > 生活

 > 什麼命令能發送icmp

什麼命令能發送icmp

生活 更新时间:2024-07-23 03:14:19

什麼命令能發送icmp(24張圖搞定ICMP)1

ICMP

IP 是盡力傳輸的網絡協議,提供的數據傳輸服務是不可靠的、無連接的,不能保證數據包能成功到達目的地。那麼問題來了:如何确定數據包成功到達目的地?

什麼命令能發送icmp(24張圖搞定ICMP)2

這需要一個網絡層協議,提供錯誤檢測功能和報告機制功能,于是出現了 ICMP(互聯網控制消息協議)。ICMP 的主要功能是,确認 IP 包是否成功送達目的地址通知發送過程中 IP 包被丢棄的原因。有了這些功能,就可以檢查網絡是否正常、網絡配置是否正确、設備是否異常等信息,方便進行網絡問題診斷

什麼命令能發送icmp(24張圖搞定ICMP)3

舉個栗子:如果在傳輸過程中,發生了某個錯誤,設備便會向源設備返回一條 ICMP 消息,告訴它發生的錯誤類型。

什麼命令能發送icmp(24張圖搞定ICMP)4

ICMP 消息是通過 IP 進行傳輸,但它的目的并不是讓 IP 成為一種可靠的協議,而是對傳輸中發生的問題進行反饋。ICMP 消息的傳輸同樣得不到可靠性保證,也有可能在傳輸過程中丢失。因此 ICMP 不是傳輸層的補充,應該把它當做網絡層協議

ICMP 消息封裝

ICMP 消息使用 IP 來封裝,封裝格式如下圖。

什麼命令能發送icmp(24張圖搞定ICMP)5

其中 type(類型)字段表示 ICMP 消息的類型,code(代碼)字段表示 ICMP 消息的具體含義。例如:type 值為 3 表示目的不可達消息( Destination Unreachable Message ),若 code 值為 0 表示目的網絡不可達( Network Unreachable )。常見的 ICMP 消息類型如下圖。

什麼命令能發送icmp(24張圖搞定ICMP)6

從功能上,ICMP 的消息可分為兩類:一類是通知出錯原因的錯誤消息,另一類是用于診斷的查詢消息

什麼命令能發送icmp(24張圖搞定ICMP)7

常見的 ICMP 消息類型
  • 回送請求消息( Echo request ):是由源設備(主機或路由器等)向一個指定的目的設備發出的請求。這種消息用來測試目的地是否可達。
  • 回送響應消息( Echo Reply ):對 Echo Request 的響應。目的設備發送 Echo Reply 來響應收到的 Echo Request 。最常用的 ping 命令就是使用 Echo Request 和 Echo Reply 來實現的。

什麼命令能發送icmp(24張圖搞定ICMP)8

  • 目的不可達( Destination Unreachable ):路由器無法将 IP 包發送給目的地址時,會給源設備返回一個 Destination Unreachable 消息,并在消息中顯示不可達的具體原因。
  • 實際情況下,經常會遇到的錯誤代碼是 1 ,表示主機不可達,它是指路由表中沒有目的設備的信息,或目的設備沒有連接到網絡。

什麼命令能發送icmp(24張圖搞定ICMP)9

  • 參數問題( Parameter Problem ):路由器發現 IP 包頭出現錯誤或非法值後,向源設備發送一個 Parameter Problem 消息。這個消息包含有問題的 IP 頭,或錯誤字段的提示信息。

什麼命令能發送icmp(24張圖搞定ICMP)10

  • 重定向( Redirect ):如果路由器發現一條更優的路徑發送數據,那麼它就會返回一個 Redirect 消息給主機。這個消息包含了最合适的路由信息和源數據。
  • 實際情況下,這種 Redirect 消息會引發路由問題,所以不進行這種設置。比如:路由器的路由表不準确時,ICMP 有可能就無法正常工作。

什麼命令能發送icmp(24張圖搞定ICMP)11

  • 超時( Time Exceeded ):IP 包中有一個字段是 TTL(生存周期),它的值每經過一次路由器就減 1 ,直到減到 0 時 IP 包會被丢棄。這時,路由器會發送一個 Time Exceeded 消息給源設備,并通知 IP 包已被丢棄。
  • 設置 TTL 的主要目的,是當路由發生環路時,避免 IP 包無休止的在網絡上轉發。還可以用 TTL 控制 IP 包的可達範圍,比如設置一個較小的 TTL 值。

什麼命令能發送icmp(24張圖搞定ICMP)12

  • 時間戳請求/時間戳響應( Timestamp Request / Timestamp Reply ):時間戳可以記錄 ICMP 消息一次往返所需的時間。源設備發送一個帶有發送時間的 Timestamp Request 消息,目的設備收到後,發送一個帶有原設備發送時間、目的設備接收時間以及目的設備發送時間的 Timestamp Reply 消息。源設備收到 Timestamp Reply 時,并同時記錄到達時間。這些時間戳可以估計網絡上的傳輸時間。

什麼命令能發送icmp(24張圖搞定ICMP)13

ICMP 的應用

ICMP 被廣泛應用于網絡測試,最常用的 pingtracert 網絡測試工具,都是使用 ICMP 協議實現的。

ping

ping 是 ICMP 最著名的一個應用,通過 ping 可以測試網絡的可達性,即網絡上的報文能否成功到達目的地。使用 ping 命令時,源設備向目的設備發送 Echo request 消息,目的地址是目的設備的 IP 地址。目的設備收到 Echo request 消息後,向源設備回應一個 Echo reply 消息,可知目的設備是可達的。也可以通過 ping 命令來判斷目标主機是否啟用。

什麼命令能發送icmp(24張圖搞定ICMP)14

如果中間某個路由器沒有到達目的網絡的路由,便會向源設備回應一個 Destination Unreachable 消息,告知目的設備不可達。

什麼命令能發送icmp(24張圖搞定ICMP)15

如果源主機在一定時間内無法收到回應報文,就認為目的設備不可達,并顯示超時。

什麼命令能發送icmp(24張圖搞定ICMP)16

需要注意的是 ping 過程是雙向的消息通信,隻有雙向都成功傳輸時,才能說明通信是正常的。另外主機也可能因為防火牆攔截,導緻 ping 不通。

tracert

ping 工具隻能測試目的設備的連通性,但是看不到數據包的傳輸路徑。所以在網絡不通的情況下,無法知道網絡問題發生在哪個位置。tracert 工具可以查看數據包的整條傳輸路徑,包括途中經過的中間設備

什麼命令能發送icmp(24張圖搞定ICMP)17

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 逐跳獲得每一個路由器的地址,并探測到目的設備的可達性。

什麼命令能發送icmp(24張圖搞定ICMP)18

tracert 過程也是雙向的消息通信,隻有雙向都成功傳輸時,才能正确探測路徑。另外主機安裝了防火牆,也可能造成路徑探測失敗。

網絡實戰ping

在 Windows 電腦上使用 ping 命令,并查看返回信息。

什麼命令能發送icmp(24張圖搞定ICMP)19

同步抓包進行驗證。

什麼命令能發送icmp(24張圖搞定ICMP)20

還可以直接使用 ping 命令,查看 ping 命令的使用方法

什麼命令能發送icmp(24張圖搞定ICMP)21

tracert

在 Windows 電腦上使用 tracert 命令,并查看返回信息。

什麼命令能發送icmp(24張圖搞定ICMP)22

同步抓包進行驗證。

什麼命令能發送icmp(24張圖搞定ICMP)23

也可以直接使用 tracert 命令,查看 tracert 命令的使用方法

什麼命令能發送icmp(24張圖搞定ICMP)24

飲水思源:

TCP/IP詳解 卷1:協議 - Kevin R.Fall

網絡基礎 - 田果

圖解TCP/IP - 竹下隆史

路由交換技術 - 杭州華三通信技術有限公司

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved