0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

24張圖搞定ICMP :最常用的網(wǎng)絡命令ping和tracert

Linux愛好者 ? 來源:Linux愛好者 ? 2023-08-01 15:08 ? 次閱讀

462e0dc6-301f-11ee-9e74-dac502259ad0.png

ICMP

IP是盡力傳輸?shù)木W(wǎng)絡協(xié)議,提供的數(shù)據(jù)傳輸服務是不可靠的、無連接的,不能保證數(shù)據(jù)包能成功到達目的地。那么問題來了:如何確定數(shù)據(jù)包成功到達目的地?

463f5770-301f-11ee-9e74-dac502259ad0.png

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

4657d890-301f-11ee-9e74-dac502259ad0.png

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

46672192-301f-11ee-9e74-dac502259ad0.png

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

ICMP 消息封裝

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

468d0042-301f-11ee-9e74-dac502259ad0.png

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

46a02014-301f-11ee-9e74-dac502259ad0.png

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

46cdd4dc-301f-11ee-9e74-dac502259ad0.png

常見的 ICMP 消息類型

回送請求消息( Echo Request ):是由源設備(主機或路由器等)向一個指定的目的設備發(fā)出的請求。這種消息用來測試目的地是否可達。

回送響應消息( Echo Reply ):對 Echo Request 的響應。目的設備發(fā)送 Echo Reply 來響應收到的 Echo Request 。最常用的 ping 命令就是使用 Echo Request 和 Echo Reply 來實現(xiàn)的。

46ddf59c-301f-11ee-9e74-dac502259ad0.png

目的不可達( Destination Unreachable ):路由器無法將 IP 包發(fā)送給目的地址時,會給源設備返回一個 Destination Unreachable 消息,并在消息中顯示不可達的具體原因。

46fdb51c-301f-11ee-9e74-dac502259ad0.png

實際情況下,經(jīng)常會遇到的錯誤代碼是 1 ,表示主機不可達,它是指路由表中沒有目的設備的信息,或目的設備沒有連接到網(wǎng)絡。

4715aaa0-301f-11ee-9e74-dac502259ad0.png

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

472d6fdc-301f-11ee-9e74-dac502259ad0.png

重定向( Redirect ):如果路由器發(fā)現(xiàn)一條更優(yōu)的路徑發(fā)送數(shù)據(jù),那么它就會返回一個 Redirect 消息給主機。這個消息包含了最合適的路由信息和源數(shù)據(jù)。

實際情況下,這種 Redirect 消息會引發(fā)路由問題,所以不進行這種設置。比如:路由器的路由表不準確時,ICMP 有可能就無法正常工作。

4743fbee-301f-11ee-9e74-dac502259ad0.png

超時( Time Exceeded ):IP 包中有一個字段是 TTL(生存周期),它的值每經(jīng)過一次路由器就減 1 ,直到減到 0 時 IP 包會被丟棄。這時,路由器會發(fā)送一個 Time Exceeded 消息給源設備,并通知 IP 包已被丟棄。

設置 TTL 的主要目的,是當路由發(fā)生環(huán)路時,避免 IP 包無休止的在網(wǎng)絡上轉發(fā)。還可以用 TTL 控制 IP 包的可達范圍,比如設置一個較小的 TTL 值。

475bff0a-301f-11ee-9e74-dac502259ad0.png

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

476fddd6-301f-11ee-9e74-dac502259ad0.png

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 命令來判斷目標主機是否啟用。

4786602e-301f-11ee-9e74-dac502259ad0.png

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

479a7b4a-301f-11ee-9e74-dac502259ad0.png

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

47c038f8-301f-11ee-9e74-dac502259ad0.png

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

tracert

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

47cadba0-301f-11ee-9e74-dac502259ad0.png

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

47dd1cf2-301f-11ee-9e74-dac502259ad0.png

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

網(wǎng)絡實戰(zhàn)

ping

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

48026174-301f-11ee-9e74-dac502259ad0.png

同步抓包進行驗證。

4813fc0e-301f-11ee-9e74-dac502259ad0.png

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

48478eca-301f-11ee-9e74-dac502259ad0.png

tracert

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

48613de8-301f-11ee-9e74-dac502259ad0.png

同步抓包進行驗證。

4871fa2a-301f-11ee-9e74-dac502259ad0.png

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

48ed26c8-301f-11ee-9e74-dac502259ad0.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 網(wǎng)絡協(xié)議

    關注

    3

    文章

    273

    瀏覽量

    22001
  • ICMP
    +關注

    關注

    0

    文章

    52

    瀏覽量

    15212
  • Ping
    +關注

    關注

    0

    文章

    69

    瀏覽量

    16350

原文標題:24 張圖搞定 ICMP :最常用的網(wǎng)絡命令 ping 和 tracert

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 0人收藏

    評論

    相關推薦
    熱點推薦

    在家里可以常用網(wǎng)絡測試命令

           在家里可以常用網(wǎng)絡測試命令先按開始-運行 然后輸入cmd進入命令提示然后輸入以下
    發(fā)表于 06-02 18:23

    [原創(chuàng)]網(wǎng)管一定要知道----網(wǎng)絡管理中的常用命令

    網(wǎng)管一定要知道----網(wǎng)絡管理中的常用命令1.最基本,最常用的,測試物理網(wǎng)絡ping 192.168.0.8 -t ,參數(shù)-t是等待用戶
    發(fā)表于 09-07 12:09

    四個ping命令搞定網(wǎng)絡故障

    四個ping命令搞定網(wǎng)絡故障如果你的電腦不能上網(wǎng)或者突然不能上網(wǎng)了怎么辦?請專業(yè)人員來維修還是自己瞎急一通呢,下面給大家介紹如何準確地判斷電腦不能上網(wǎng)問題出在哪里?又如何能快捷地解決這
    發(fā)表于 04-13 14:24

    必須學的幾個網(wǎng)絡測試命令

    必須學的幾個網(wǎng)絡測試命令ping ping是測試網(wǎng)絡聯(lián)接狀況以及信息包發(fā)送和接收狀況非常有用的工具,是網(wǎng)
    發(fā)表于 02-25 15:09

    【我是電子發(fā)燒友】常用網(wǎng)絡命令匯總

    解決 NetBIOS 名稱問題7. 使用 netstat 用于顯示與IP、 TCP、 UDP和ICMP協(xié)議相關的統(tǒng)計數(shù)據(jù),一般用于檢驗本機各端口的網(wǎng)絡連接情況。8. 使用 tracert 跟蹤
    發(fā)表于 06-15 22:48

    巧用Ping和Traceroute命令排除網(wǎng)絡故障

    在分析Ping 和Traceroute 命令工作原理和影響因素的基礎上,詳細介紹了使用Ping 和Traceroute 命令檢查網(wǎng)絡連接性、
    發(fā)表于 08-11 08:25 ?35次下載

    icmpping的區(qū)別

    ping 程序是用來探測主機到主機之間是否可通信,如果不能ping到某臺主機,表明不能和這臺主機建立連接。ping 使用的是ICMP協(xié)議,它發(fā)送ic
    發(fā)表于 11-03 09:41 ?6w次閱讀
    <b class='flag-5'>icmp</b>和<b class='flag-5'>ping</b>的區(qū)別

    ping命令的使用方法及功能

    ping是Windows、Unix和Linux系統(tǒng)下的一個命令ping也屬于一個通信協(xié)議,是TCP/IP協(xié)議的一部分。利用“ping命令
    發(fā)表于 11-23 15:22 ?7.3w次閱讀
    <b class='flag-5'>ping</b><b class='flag-5'>命令</b>的使用方法及功能

    ICMP協(xié)議Ping命令的應用是什么

    Ping命令利用ICMP回射請求報文和回射應答報文來測試目標系統(tǒng)是否可達。ICMP回射請求和ICMP回射應答報文是配合工作的?當源主機向目標
    發(fā)表于 12-08 15:22 ?8002次閱讀

    ping命令的使用大全(Windows下ping命令的使用)

    ping命令相信大家已經(jīng)再熟悉不過了,但是能把ping的功能發(fā)揮到最大的人卻并不是很多,下面就給大家講一些ping命令的運用。
    的頭像 發(fā)表于 02-24 10:29 ?1.4w次閱讀

    ping命令的作用和原理是什么?

    在測試和部署網(wǎng)絡通信應用時,我們經(jīng)常會遇到網(wǎng)絡不通的問題。一般都會想到ping一下。那么ping命令的作用和原理到底是什么呢?
    的頭像 發(fā)表于 03-18 17:21 ?1w次閱讀

    雙絞線的兩種接法,網(wǎng)絡測試最常用PING命令

    今天和大家一起復習常用網(wǎng)絡基礎知識,包括雙絞線;光模塊;交換機;還有網(wǎng)絡測試最常用PING命令
    的頭像 發(fā)表于 03-21 10:39 ?1.2w次閱讀

    如何利用Python實現(xiàn)快速Ping一個IP網(wǎng)段地址?

    ping 命令是我們檢查網(wǎng)絡最常用命令,作為網(wǎng)絡人員,基本上每天都會用到,可以很好地幫助我們
    的頭像 發(fā)表于 06-29 15:59 ?4157次閱讀
    如何利用Python實現(xiàn)快速<b class='flag-5'>Ping</b>一個IP網(wǎng)段地址?

    你知道ping命令是如何工作的嗎?

    我們用來測試一臺機器與另一臺機器的網(wǎng)絡連通性一般會使用ping命令,那么你知道ping命令是如何工作的嗎?
    的頭像 發(fā)表于 05-31 11:40 ?1364次閱讀
    你知道<b class='flag-5'>ping</b><b class='flag-5'>命令</b>是如何工作的嗎?

    Ping命令的基本用法

    當談到網(wǎng)絡故障排除工具時,Ping(Packet Internet Groper)是其中最常用和最基本的之一。
    的頭像 發(fā)表于 10-17 13:58 ?2500次閱讀

    電子發(fā)燒友

    中國電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會員交流學習
    • 獲取您個性化的科技前沿技術信息
    • 參加活動獲取豐厚的禮品