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

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

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

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

華為開發(fā)者社區(qū) ? 來源:華為云社區(qū) ? 作者:云小萌 ? 2021-03-18 17:21 ? 次閱讀

在測(cè)試和部署網(wǎng)絡(luò)通信應(yīng)用時(shí),我們經(jīng)常會(huì)遇到網(wǎng)絡(luò)不通的問題。一般都會(huì)想到ping一下。那么ping命令的作用和原理到底是什么呢?

ping 命令是基于 ICMP 協(xié)議來工作的,要明白ping, 先了解下ICMP協(xié)議吧~

ICMP協(xié)議

ICMP全稱為互聯(lián)網(wǎng)控制報(bào)文協(xié)議(Internet Control Message Protocol)。那么具體是怎么“控制”的呢?

在復(fù)雜的網(wǎng)絡(luò)傳輸環(huán)境里,數(shù)據(jù)包常常會(huì)遇到各種問題導(dǎo)致傳輸失敗。網(wǎng)絡(luò)層的IP協(xié)議是一種無連接的,不可靠的數(shù)據(jù)包協(xié)議,它并不能保證數(shù)據(jù)一定被送達(dá),因此,我們需要其它的協(xié)議,在數(shù)據(jù)包傳發(fā)送異常時(shí),能將異常信息傳回來,這樣才可以調(diào)整傳輸策略,以此來控制整個(gè)局面。

ICMP協(xié)議格式

ICMP 協(xié)議是通過IP協(xié)議來發(fā)送的,報(bào)文封裝在 IP 包里面。如下:

ICMP報(bào)文格式:

ICMP數(shù)據(jù)包由8bit的類型字段和8bit的代碼字段以及16bit的校驗(yàn)字段再加上選項(xiàng)數(shù)據(jù)組成。ICMP報(bào)文大致分為兩類:查詢報(bào)文類型和差錯(cuò)報(bào)文類型。

查詢報(bào)文類型

查詢報(bào)文主要應(yīng)用于ping查詢、子網(wǎng)掩碼查詢、時(shí)間戳查詢等。ping命令其實(shí)就是對(duì)ICMP協(xié)議查詢報(bào)文類型的使用。

主機(jī)A ping 主機(jī)B時(shí),ping命令在主機(jī)A構(gòu)建ICMP請(qǐng)求數(shù)據(jù)包時(shí),ICMP的類型字段為8(回送請(qǐng)求),當(dāng)主機(jī)B構(gòu)建ICMP請(qǐng)求數(shù)據(jù)包時(shí),ICMP的類型字段為0(回送應(yīng)答)。如果主機(jī)A在一定時(shí)間內(nèi)收到了主機(jī)B的應(yīng)答,則表明兩臺(tái)主機(jī)之間網(wǎng)絡(luò)是可達(dá)的。

差錯(cuò)報(bào)文類型

差錯(cuò)報(bào)文主要產(chǎn)生于數(shù)據(jù)傳送發(fā)送錯(cuò)誤的時(shí)候,包括:目標(biāo)不可達(dá)(網(wǎng)絡(luò)不可達(dá)、主機(jī)不可達(dá)、協(xié)議不可達(dá)、端口不可達(dá)、禁止分片等)、超時(shí)、參數(shù)問題、重定向(網(wǎng)絡(luò)重定向、主機(jī)重定向等)等。

IP 路由器無法將 IP 數(shù)據(jù)包發(fā)送給目標(biāo)地址時(shí),會(huì)給發(fā)送端主機(jī)返回一個(gè)目標(biāo)不可達(dá)的 ICMP 消息,并在這個(gè)消息中顯示不可達(dá)的具體原因,原因記錄在 ICMP 包頭的代碼字段。

ping命令的工作過程

舉一個(gè)例子來描述「ping」命令的工作過程:

假設(shè)有兩個(gè)主機(jī),主機(jī)A(192.168.0.1)和主機(jī)B(192.168.0.2),現(xiàn)在我們要監(jiān)測(cè)主機(jī)A和主機(jī)B之間網(wǎng)絡(luò)是否可達(dá),在主機(jī)A上輸入命令:ping 192.168.0.2

1.發(fā)送端主機(jī)構(gòu)建ICMP請(qǐng)求數(shù)據(jù)包。ping命令會(huì)在主機(jī)A上構(gòu)建一個(gè) ICMP的請(qǐng)求數(shù)據(jù)包。數(shù)據(jù)包包含多個(gè)字段,主要的有類型和序號(hào)。類型:在請(qǐng)求數(shù)據(jù)包中,類型字段為8;序號(hào):主要用于區(qū)分連續(xù) ping 的時(shí)候發(fā)出的多個(gè)數(shù)據(jù)包。

每發(fā)出一個(gè)請(qǐng)求數(shù)據(jù)包,序號(hào)會(huì)自動(dòng)加 1。為了能夠計(jì)算往返時(shí)間 RTT,它會(huì)在報(bào)文的數(shù)據(jù)部分插入發(fā)送時(shí)間。

2.IP層構(gòu)建IP數(shù)據(jù)包。ICMP協(xié)議會(huì)將這個(gè)數(shù)據(jù)包以及目標(biāo)IP(192.168.0.2)等信息一同交給IP層協(xié)議。IP層協(xié)議得到這些信息后,將源地址(即本機(jī)IP)、目標(biāo)地址(即目標(biāo)IP:192.168.0.2)、再加上一些其它的控制信息,構(gòu)建成一個(gè)IP數(shù)據(jù)包。

3.加入MAC地址。需要通過ARP映射表找出目標(biāo)IP(192.168.0.2)所對(duì)應(yīng)的MAC地址。當(dāng)拿到了目標(biāo)主機(jī)的MAC地址和本機(jī)MAC后,一并交給數(shù)據(jù)鏈路層,組裝成一個(gè)數(shù)據(jù)幀,依據(jù)以太網(wǎng)的介質(zhì)訪問規(guī)則,將它們傳送出出去。

主機(jī)B收到數(shù)據(jù)幀后,進(jìn)行如下步驟:

1.檢查MAC地址,丟棄或接收,提取IP數(shù)據(jù)包。當(dāng)主機(jī)B收到這個(gè)數(shù)據(jù)幀之后,會(huì)首先檢查它的目標(biāo)MAC地址是不是本機(jī),如果是就接收下來處理,接收之后會(huì)檢查這個(gè)數(shù)據(jù)幀,將數(shù)據(jù)幀中的IP數(shù)據(jù)包取出來,交給本機(jī)的IP層協(xié)議。

2.IP層檢查IP。IP層協(xié)議檢查完之后,再將ICMP數(shù)據(jù)包取出來交給ICMP協(xié)議處理。

3.構(gòu)建ICMP應(yīng)答包。應(yīng)答包的類型字段為 0,序號(hào)為接收到的請(qǐng)求數(shù)據(jù)包中的序號(hào)。

4.應(yīng)答數(shù)據(jù)包回發(fā)給主機(jī)A。

在一定的時(shí)間內(nèi),如果主機(jī)A收到了應(yīng)答包,則說明它與主機(jī)B之間網(wǎng)絡(luò)可達(dá),如果沒有收到,則說明網(wǎng)絡(luò)不可達(dá)。除了監(jiān)測(cè)是否可達(dá)以外,還可以利用應(yīng)答時(shí)間和發(fā)起時(shí)間之間的差值,計(jì)算出數(shù)據(jù)包的延遲耗時(shí)。

課堂練習(xí)

關(guān)于ICMP協(xié)議與ping命令如何工作我們已經(jīng)了解了,那對(duì)于我們?cè)谠粕洗罱ǖ膽?yīng)用,如何測(cè)試彈性云服務(wù)器間的通信狀況呢?

回憶一下,彈性云服務(wù)器數(shù)據(jù)流量的進(jìn)出是需要遵守安全組規(guī)則的,沒有安全組規(guī)則的允許,誰都不能訪問。

那我們就可以在安全組中添加放通ICMP協(xié)議的安全組規(guī)則,允許其他云服務(wù)器通過 ICMP 協(xié)議訪問該云服務(wù)器,進(jìn)而實(shí)現(xiàn)通過ping命令來測(cè)試彈性云服務(wù)器間的通信狀況了。

安全組規(guī)則配置如下:

原文標(biāo)題:爆文速遞| 網(wǎng)絡(luò)好不好,ping一下就知道

文章出處:【微信公眾號(hào):華為開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

責(zé)任編輯:haq

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

    關(guān)注

    18

    文章

    5950

    瀏覽量

    135785
  • Ping
    +關(guān)注

    關(guān)注

    0

    文章

    69

    瀏覽量

    15931

原文標(biāo)題:爆文速遞| 網(wǎng)絡(luò)好不好,ping一下就知道

文章出處:【微信號(hào):Huawei_Developer,微信公眾號(hào):華為開發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    服務(wù)器ping不通但是http能請(qǐng)求成功是什么原因

    平時(shí),我們想要知道,自己的機(jī)器到目的機(jī)器之間,網(wǎng)絡(luò)通不通,一般會(huì)執(zhí)行ping命令。
    的頭像 發(fā)表于 10-23 09:23 ?195次閱讀
    服務(wù)器<b class='flag-5'>ping</b>不通但是http能請(qǐng)求成功是什么原因

    局域網(wǎng)ping不通的原因有哪些

    使用 ping 命令測(cè)試兩臺(tái)計(jì)算機(jī)之間的連接時(shí),如果 ping 不通,可能存在多種原因。以下是一些可能導(dǎo)致局域網(wǎng) ping 不通的原因: 1. 物理連接問題 物理連接問題通常是最容易發(fā)
    的頭像 發(fā)表于 10-14 15:03 ?1793次閱讀

    新加坡服務(wù)器的速度測(cè)試方法有哪些

    測(cè)試新加坡服務(wù)器的速度和性能是確保服務(wù)器能夠滿足業(yè)務(wù)需求的關(guān)鍵步驟。以下是一些常用的方法和工具: Ping測(cè)試: Ping命令是一種基本的網(wǎng)絡(luò)診斷工具,用于測(cè)試與服務(wù)器的連接延遲和丟包率。在
    的頭像 發(fā)表于 10-14 14:55 ?114次閱讀

    常見的shell命令之網(wǎng)絡(luò)相關(guān)命令

    netmask 255.255.255.0elf@ubuntu:~$ sudo ifconfig ens33 hw ether 22:22:22:22:22:223、ping網(wǎng)絡(luò)通斷檢查命令命令
    發(fā)表于 08-20 09:50

    恒訊科技分析:如何測(cè)試海外靜態(tài)IP服務(wù)的穩(wěn)定性和速度?

    測(cè)試海外靜態(tài)IP服務(wù)的穩(wěn)定性和速度可以通過以下步驟進(jìn)行: 1、選擇測(cè)試工具:使用網(wǎng)絡(luò)測(cè)試工具,如ping命令、traceroute(或 racert)、網(wǎng)絡(luò)速度測(cè)試網(wǎng)站(例如
    的頭像 發(fā)表于 08-14 14:58 ?268次閱讀

    使用Python進(jìn)行Ping測(cè)試

    在網(wǎng)絡(luò)工程中,Ping測(cè)試是一種常用的網(wǎng)絡(luò)診斷工具,用于檢查網(wǎng)絡(luò)連接的可達(dá)性和響應(yīng)時(shí)間。Ping測(cè)試通過向目標(biāo)主機(jī)發(fā)送ICMP(Internet Control Message Protocol
    的頭像 發(fā)表于 08-12 17:56 ?419次閱讀
    使用Python進(jìn)行<b class='flag-5'>Ping</b>測(cè)試

    Ping測(cè)試在不同網(wǎng)段通信中的準(zhǔn)確性

    不同網(wǎng)段之間的通信順暢與否能影響網(wǎng)絡(luò)的整體性能和業(yè)務(wù)的正常運(yùn)行。Ping 測(cè)試作為一種常用的網(wǎng)絡(luò)診斷工具,被廣泛用于檢測(cè)網(wǎng)絡(luò)連接的可達(dá)性。然而,在沒有三層交換路由功能的網(wǎng)絡(luò)中,跨網(wǎng)段的 Ping 測(cè)試結(jié)果的不穩(wěn)定給網(wǎng)絡(luò)故障排查和性能評(píng)估帶來了一定的挑戰(zhàn)。
    的頭像 發(fā)表于 07-31 16:15 ?237次閱讀

    如何使用DTU Ping功能?

    DTUToolInstaller_V1.1.36 以后的版本支持Ping功能 配置工具鏈接DTU之后,首先確認(rèn)DTU是否撥號(hào)成功、獲得IP地址。之后撥號(hào)成功ping服務(wù)器地址才意義。有肯能服務(wù)器是禁ping的,也可以
    發(fā)表于 07-25 06:13

    嵌入式學(xué)習(xí)-飛凌嵌入式ElfBoard ELF 1板卡-uboot常用命令-網(wǎng)絡(luò)命令

    命令主要用于測(cè)試網(wǎng)絡(luò)通信狀態(tài),設(shè)置好開發(fā)板IP和PC機(jī)IP之后,使用網(wǎng)線連接好開發(fā)板和PC機(jī),使用ping命令: => ping 192.168.0.102 Using FEC
    發(fā)表于 07-19 16:24

    ping不存在的地址會(huì)咋樣?ping和誰都不在一個(gè)網(wǎng)段的IP又會(huì)如何?

    ping不存在的地址會(huì)咋樣?ping和誰都不在一個(gè)網(wǎng)段的IP又會(huì)如何? 當(dāng)嘗試ping一個(gè)不存在的地址時(shí),會(huì)出現(xiàn)不同的結(jié)果,具體取決于網(wǎng)絡(luò)配置和操作系統(tǒng)。以下是一些可能的情況: 1. 目標(biāo)主機(jī)無響應(yīng)
    的頭像 發(fā)表于 02-04 11:21 ?1294次閱讀

    交換機(jī)物理連接不當(dāng)導(dǎo)致無法ping通故障排除報(bào)告

    2023年12月20日,在對(duì)某銀行大樓局域網(wǎng)進(jìn)行維護(hù)時(shí),發(fā)現(xiàn)某個(gè)樓層的所有計(jì)算機(jī)都無法訪問互聯(lián)網(wǎng)。工程師使用 ping 命令測(cè)試該樓層交換機(jī)的連通性,發(fā)現(xiàn)無法ping通。
    的頭像 發(fā)表于 01-15 11:17 ?1393次閱讀
    交換機(jī)物理連接不當(dāng)導(dǎo)致無法<b class='flag-5'>ping</b>通故障排除報(bào)告

    bootm命令的執(zhí)行流程

    Bootm命令用來從memory啟動(dòng)內(nèi)核,bootm命令的執(zhí)行流程如下圖所示。 在串口終端輸入bootm命令后,執(zhí)行do_bootm函數(shù)來完成相應(yīng)的功能。Do_bootm函數(shù)首先
    的頭像 發(fā)表于 12-04 17:33 ?1083次閱讀
    bootm<b class='flag-5'>命令</b>的執(zhí)行流程

    Linux內(nèi)核中Uboot命令處理

    完成。U-Boot在include/command.h中定義了一個(gè)非常重要的cmd_tbl_s結(jié)構(gòu)體,它在命令的實(shí)現(xiàn)方面起著至關(guān)重要的作用。 struct cmd_tbl_s { char *name
    的頭像 發(fā)表于 12-04 17:23 ?442次閱讀

    網(wǎng)絡(luò)工程師常用的命令整理

    ping是個(gè)使用頻率極高的實(shí)用程序,主要用于確定網(wǎng)絡(luò)的連通性pi,如果ping通一個(gè)地址,那么基本可以排除物理層數(shù)據(jù)鏈路層的故障等。
    的頭像 發(fā)表于 11-21 09:42 ?1939次閱讀
    網(wǎng)絡(luò)工程師常用的<b class='flag-5'>命令</b>整理

    linux常用命令作用

    在Linux系統(tǒng)中,有許多常用的命令,它們可以用于管理文件、目錄、進(jìn)程等。以下是一些常用的命令及它們的作用: ls命令:列出當(dāng)前目錄下的所有文件和子目錄。使用ls
    的頭像 發(fā)表于 11-13 16:45 ?765次閱讀