0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

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

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

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

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

ICMP

IP是盡力傳輸?shù)?a href="http://wenjunhu.com/v/tag/1722/" target="_blank">網(wǎng)絡(luò)協(xié)議,提供的數(shù)據(jù)傳輸服務(wù)是不可靠的、無連接的,不能保證數(shù)據(jù)包能成功到達(dá)目的地。那么問題來了:如何確定數(shù)據(jù)包成功到達(dá)目的地?

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

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

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

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

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

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

ICMP 消息封裝

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

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

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

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

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

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

常見的 ICMP 消息類型

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ICMP 的應(yīng)用

ICMP 被廣泛應(yīng)用于網(wǎng)絡(luò)測(cè)試,最常用的ping和tracert網(wǎng)絡(luò)測(cè)試工具,都是使用 ICMP 協(xié)議實(shí)現(xiàn)的。

ping

ping 是 ICMP 最著名的一個(gè)應(yīng)用,通過 ping 可以測(cè)試網(wǎng)絡(luò)的可達(dá)性,即網(wǎng)絡(luò)上的報(bào)文能否成功到達(dá)目的地。使用 ping 命令時(shí),源設(shè)備向目的設(shè)備發(fā)送 Echo request 消息,目的地址是目的設(shè)備的 IP 地址。目的設(shè)備收到 Echo request 消息后,向源設(shè)備回應(yīng)一個(gè) Echo reply 消息,可知目的設(shè)備是可達(dá)的。也可以通過 ping 命令來判斷目標(biāo)主機(jī)是否啟用。

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

如果中間某個(gè)路由器沒有到達(dá)目的網(wǎng)絡(luò)的路由,便會(huì)向源設(shè)備回應(yīng)一個(gè) Destination Unreachable 消息,告知目的設(shè)備不可達(dá)。

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

如果源主機(jī)在一定時(shí)間內(nèi)無法收到回應(yīng)報(bào)文,就認(rèn)為目的設(shè)備不可達(dá),并顯示超時(shí)。

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

需要注意的是 ping 過程是雙向的消息通信,只有雙向都成功傳輸時(shí),才能說明通信是正常的。另外主機(jī)也可能因?yàn)榉阑饓r截,導(dǎo)致 ping 不通。

tracert

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

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

IP 頭部的TTL字段是為避免數(shù)據(jù)包循環(huán)轉(zhuǎn)發(fā)而設(shè)計(jì)的。每經(jīng)過一個(gè)路由器,數(shù)據(jù)包頭中的 TTL 值減 1 。如果 TTL 值為 0 則丟棄報(bào)文,并向源設(shè)備回應(yīng)一個(gè) Time Exceeded 消息,告知錯(cuò)誤類型。tracert 就是基于 TTL 字段和 ICMP 協(xié)議實(shí)現(xiàn)的。在 Windows 中命令是tracert,在 Unix 、MacOS 中命令是traceroute。

使用 tracert 命令時(shí),源設(shè)備的 tracert逐跳發(fā)送數(shù)據(jù)包,并等待每一個(gè)響應(yīng)報(bào)文。發(fā)送第一個(gè)數(shù)據(jù)包時(shí),TTL 值設(shè)為 1 。第一個(gè)路由器收到數(shù)據(jù)包后 TTL 值減 1 ,隨即丟棄數(shù)據(jù)包,并返回一個(gè) Time Exceeded 消息。源設(shè)備的 tracert 收到響應(yīng)報(bào)文后,取出源 IP 地址,即路徑上的第一個(gè)路由器地址。然后 tracert 發(fā)送一個(gè) TTL 值為 2 的數(shù)據(jù)包。第一個(gè)路由器將 TTL 值減 1 ,并轉(zhuǎn)發(fā)數(shù)據(jù)包。第二個(gè)路由器再將 TTL 值減 1 ,丟棄數(shù)據(jù)包并返回一個(gè) Time Exceeded 消息。tracert 收到響應(yīng)報(bào)文后,取出源 IP 地址,即路徑上的第二個(gè)路由器地址。類似步驟,tracert 逐跳獲得每一個(gè)路由器的地址,并探測(cè)到目的設(shè)備的可達(dá)性。

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

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

網(wǎng)絡(luò)實(shí)戰(zhàn)

ping

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

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

同步抓包進(jìn)行驗(yàn)證。

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

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

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

tracert

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

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

同步抓包進(jìn)行驗(yàn)證。

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

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

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

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

    關(guān)注

    3

    文章

    268

    瀏覽量

    21563
  • ICMP
    +關(guān)注

    關(guān)注

    0

    文章

    52

    瀏覽量

    14932
  • Ping
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    15994

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

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

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

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

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

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

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

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

    必須學(xué)的幾個(gè)網(wǎng)絡(luò)測(cè)試命令

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

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

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

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

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

    icmpping的區(qū)別

    ping 程序是用來探測(cè)主機(jī)到主機(jī)之間是否可通信,如果不能ping到某臺(tái)主機(jī),表明不能和這臺(tái)主機(jī)建立連接。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)下的一個(gè)命令。ping也屬于一個(gè)通信協(xié)議,是TCP/IP協(xié)議的一部分。利用“ping命令
    發(fā)表于 11-23 15:22 ?7.2w次閱讀
    <b class='flag-5'>ping</b><b class='flag-5'>命令</b>的使用方法及功能

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

    Ping命令利用ICMP回射請(qǐng)求報(bào)文和回射應(yīng)答報(bào)文來測(cè)試目標(biāo)系統(tǒng)是否可達(dá)。ICMP回射請(qǐng)求和ICMP回射應(yīng)答報(bào)文是配合工作的?當(dāng)源主機(jī)向目標(biāo)
    發(fā)表于 12-08 15:22 ?7858次閱讀

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

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

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

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

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

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

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

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

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

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

    Ping命令的基本用法

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