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

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

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

關(guān)于完整的 ping請(qǐng)求過(guò)程

lhl545545 ? 來(lái)源:杰哥IT之旅 ? 作者:杰哥IT之旅 ? 2022-09-19 09:14 ? 次閱讀

一般來(lái)說(shuō),用 ping查看網(wǎng)絡(luò)情況,主要是檢查兩個(gè)指標(biāo):

第一個(gè)是看看是不是超時(shí)

第二個(gè)看看是不是延遲太高

如果超時(shí)那么肯定是網(wǎng)絡(luò)有問(wèn)題(禁 ping情況除外),如果延遲太高,網(wǎng)絡(luò)情況肯定也是很糟糕的。

ping是如何檢查網(wǎng)絡(luò)的?

ping背后的原理到底是啥樣的?

這篇文章就帶著你,來(lái)跟著 ping命令走一圈,看看 ping是如何工作的

環(huán)境準(zhǔn)備和抓包

環(huán)境準(zhǔn)備

抓包工具:Wireshark 準(zhǔn)備兩臺(tái)電腦,進(jìn)行互 ping操作:

A電腦(IP地址:192.168.2.135 / MAC地址:98EFA8:87)

B電腦(IP地址:192.168.2.179 / MAC地址:90DEDF:FE)

抓包操作

打開(kāi) Wireshark,選取指定的網(wǎng)卡進(jìn)行抓包,進(jìn)行 ping操作,在 A電腦上 ping B電腦的 IP。

f85a6986-37aa-11ed-ba43-dac502259ad0.png

抓包情況如下:

f86b9f3a-37aa-11ed-ba43-dac502259ad0.jpg

這里先簡(jiǎn)單的介紹下Wireshark的控制面板,這個(gè)面板包含7個(gè)字段,分別是:

NO: 編號(hào)

Time: 包的時(shí)間戳

Source: 源地址

Destination: 目標(biāo)地址

Protocol: 協(xié)議

Length: 包長(zhǎng)度

Info: 數(shù)據(jù)包附加信息

深入解析

上圖中抓包編號(hào) 54-132 顯示的就是整個(gè) ping命令的過(guò)程,我們知道 ping命令不是依托于 TCP或者 UDP這種傳輸層協(xié)議的,而是依托于 ICMP協(xié)議實(shí)現(xiàn)的, 那么什么是 ICMP 協(xié)議呢?這里簡(jiǎn)單介紹下:

ICMP協(xié)議的產(chǎn)生背景

[RFC792]中說(shuō)明了 ICMP產(chǎn)生的原因:

由于互聯(lián)網(wǎng)之間通訊會(huì)涉及很多網(wǎng)關(guān)和主機(jī),為了能夠報(bào)告數(shù)據(jù)錯(cuò)誤,所以產(chǎn)生了 ICMP協(xié)議。也就是說(shuō) ICMP 協(xié)議就是為了更高效的轉(zhuǎn)發(fā) IP數(shù)據(jù)報(bào)和提高交付成功的機(jī)會(huì)。

ICMP協(xié)議的數(shù)據(jù)格式

f89662ba-37aa-11ed-ba43-dac502259ad0.jpg

根據(jù)上圖,你會(huì)知道 ICMP協(xié)議頭包含 4個(gè)字節(jié),頭部主要用來(lái)說(shuō)明類型和校驗(yàn) ICMP報(bào)文。

下圖是對(duì)應(yīng)的類型和代碼釋義列表,后面分析抓包的時(shí)候會(huì)用到。

f8a48e4e-37aa-11ed-ba43-dac502259ad0.jpg

簡(jiǎn)單介紹完了 ICMP,那么抓包過(guò)程中出現(xiàn)的 ARP協(xié)議是什么呢?同樣來(lái)簡(jiǎn)單解釋下:

ARP協(xié)議

我們知道,在一個(gè)局域網(wǎng)中,計(jì)算機(jī)通信實(shí)際上是依賴于 MAC地址進(jìn)行通信的,那么 ARP( AddressResolutionProtocol)的作用就是根據(jù) IP地址查找出對(duì)應(yīng)的 MAC地址。

Ping過(guò)程解析

了解了上面的基礎(chǔ)概念后,我們來(lái)分析下抓包的數(shù)據(jù),其流程如下:

A 電腦( 192.168.2.135)發(fā)起 ping請(qǐng)求, ping192.168.2.179

A 電腦廣播發(fā)起 ARP請(qǐng)求,查詢 192.168.2.179的 MAC地址

B 電腦應(yīng)答 ARP請(qǐng)求,向 A電腦發(fā)起單向應(yīng)答,告訴 A電腦自己的 MAC地址為 90DEDF:FE

知道了 MAC地址后,開(kāi)始進(jìn)行真正的 ping請(qǐng)求,由于 B電腦可以根據(jù)A電腦發(fā)送的請(qǐng)求知道 源 MAC地址,所以就可以根據(jù)源 MAC地址進(jìn)行響應(yīng)了

上面的請(qǐng)求過(guò)程我畫成流程圖比較直觀一點(diǎn):

f8b565c0-37aa-11ed-ba43-dac502259ad0.jpg

觀察仔細(xì)的朋友,可能已經(jīng)發(fā)現(xiàn),Ping 4次請(qǐng)求和響應(yīng)結(jié)束后,還有一次 B電腦對(duì) A電腦的 ARP請(qǐng)求,這是為什么?

這里我猜測(cè)應(yīng)該是有 2個(gè)原因:

由于 ARP有緩存機(jī)制,為了防止 ARP過(guò)期,結(jié)束后重新更新下 ARP緩存,保證下次請(qǐng)求能去往正確的路徑,如果 ARP過(guò)期就會(huì)導(dǎo)致出現(xiàn)一次錯(cuò)誤,從而影響測(cè)試準(zhǔn)確性。

由于 ping命令的響應(yīng)時(shí)間是根據(jù)請(qǐng)求包和響應(yīng)包的時(shí)間戳計(jì)算出來(lái)的,所以一次 ARP過(guò)程也是會(huì)消耗時(shí)間。這里提前緩存最新的 ARP結(jié)果就是節(jié)省了下次 ping的 ARP時(shí)間。

為了驗(yàn)證猜測(cè),我再進(jìn)行一次 ping操作,抓包看看是不是和猜測(cè)的一樣。此時(shí),計(jì)算機(jī)里面已經(jīng)有了ARP的緩存,執(zhí)行 ARP-a 看看緩存的arp列表:

f8eee476-37aa-11ed-ba43-dac502259ad0.jpg

看看第二次 ping的抓包:

f903cd00-37aa-11ed-ba43-dac502259ad0.jpg

可以看到,上圖中在真正 ping之前并沒(méi)有進(jìn)行一次 ARP請(qǐng)求。

這也就是說(shuō),直接拿了緩存中的 ARP來(lái)執(zhí)行了,另外當(dāng) B計(jì)算機(jī)進(jìn)行響應(yīng)之前還是進(jìn)行了一次 ARP請(qǐng)求,它還是要確認(rèn)下之前的 ARP緩存是否為正確的。

結(jié)束ping操作之后,同樣再發(fā)一次 ARP請(qǐng)求,更新下自己的 ARP緩存,這里和我們的猜想基本一致。

弄懂了ping的流程之后我們來(lái)解析下之前解釋的 ICMP數(shù)據(jù)結(jié)果是否和抓包的一致。

我們來(lái)點(diǎn)擊一個(gè) ping request看看 ICMP協(xié)議詳情:

f9373a6e-37aa-11ed-ba43-dac502259ad0.jpg

圖中紅框內(nèi)就行 ICMP協(xié)議的詳情了,這里的 Type=8,code=0, 校驗(yàn)是正確,且這是一個(gè)請(qǐng)求報(bào)文。

我們?cè)冱c(diǎn)擊Responseframe:57,這里說(shuō)明響應(yīng)報(bào)文在序號(hào) 57。詳情如下:

f948ec1e-37aa-11ed-ba43-dac502259ad0.jpg

上圖的響應(yīng)報(bào)文, Type=0,code=0,這里知道就是響應(yīng)報(bào)文了,然后最后就是根據(jù)請(qǐng)求和響應(yīng)的時(shí)間戳計(jì)算出來(lái)的響應(yīng)延遲。3379.764ms-3376.890ms=2.874ms。

總結(jié)

你看,上面的文章其實(shí)是分析了一次完整的 ping請(qǐng)求過(guò)程。

ping命令是依托于 ICMP協(xié)議的, ICMP協(xié)議的存在就是為了更高效的轉(zhuǎn)發(fā) IP數(shù)據(jù)報(bào)和提高交付成功的機(jī)會(huì)。

ping命令除了依托于 ICMP,在局域網(wǎng)下還要借助于 ARP協(xié)議, ARP協(xié)議能根據(jù) IP地址反查出計(jì)算機(jī)的 MAC地址。

另外 ARP是有緩存的,為了保證 ARP的準(zhǔn)確性,計(jì)算機(jī)會(huì)更新ARP緩存。

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

    關(guān)注

    54

    文章

    11015

    瀏覽量

    102085
  • 網(wǎng)絡(luò)
    +關(guān)注

    關(guān)注

    14

    文章

    7389

    瀏覽量

    88211
  • Ping
    +關(guān)注

    關(guān)注

    0

    文章

    68

    瀏覽量

    15889

原文標(biāo)題:當(dāng)黑客在用 Ping 時(shí),Ping 在偷摸做啥事兒?

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    一次完整Ping過(guò)程會(huì)涉及哪些協(xié)議?

    一次完整的網(wǎng)絡(luò)Ping過(guò)程
    發(fā)表于 03-31 06:19

    請(qǐng)問(wèn)CH32V307 ping正常但是http請(qǐng)求少部分正常大部分請(qǐng)求超時(shí)是為什么?

    請(qǐng)問(wèn) CH32V307ping正常 但是 http請(qǐng)求少部分正常大部分請(qǐng)求超時(shí) ,用的是netlib,這個(gè)會(huì)是什么原因引起的?
    發(fā)表于 09-15 07:32

    三種不同的“防 Ping”技巧

    三種不同的“防 Ping”技巧 淺析三種不同的“防 Ping”方法   眾所周知,Ping命令是一個(gè)非常有用的網(wǎng)絡(luò)命令,大家常用它
    發(fā)表于 04-14 13:53 ?1100次閱讀

    icmp和ping的區(qū)別

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

    ping命令的使用方法及功能

    ping是Windows、Unix和Linux系統(tǒng)下的一個(gè)命令。ping也屬于一個(gè)通信協(xié)議,是TCP/IP協(xié)議的一部分。利用“ping”命令可以檢查網(wǎng)絡(luò)是否連通,可以很好地幫助我們分析和判定網(wǎng)絡(luò)故障。應(yīng)用格式:
    發(fā)表于 11-23 15:22 ?7.2w次閱讀
    <b class='flag-5'>ping</b>命令的使用方法及功能

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

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

    ping原理及應(yīng)用介紹

    Ping程序的實(shí)質(zhì)是利用了ICMP請(qǐng)求回顯和回顯應(yīng)答報(bào)文,但ARP請(qǐng)求和應(yīng)答報(bào)文也在其中起了非常重要的作用。 Ping的邏輯過(guò)程以從PC1
    發(fā)表于 10-06 14:25 ?8215次閱讀

    ping值和網(wǎng)速有關(guān)系嗎?ping值多少算正常

    PING值--代表你的電腦跟服務(wù)器的連接速度,即:客戶端數(shù)據(jù)傳送至服務(wù)器后再將命令反饋到客戶端所需的時(shí)長(zhǎng),單位為毫秒(ms),PING值越小速度越快。 主要還要看是用“光纖寬帶”還是“普通寬帶
    發(fā)表于 10-06 15:27 ?11.8w次閱讀

    ping是什么?ping背后的邏輯是什么樣的?是如何實(shí)現(xiàn)的?

    我們?cè)谟龅骄W(wǎng)絡(luò)不通的情況,大家都知道去 ping 一下,看一下網(wǎng)絡(luò)狀況。那你知道「ping」命令后背的邏輯是什么嗎?知道它是如何實(shí)現(xiàn)的嗎?
    的頭像 發(fā)表于 10-03 12:25 ?8331次閱讀

    說(shuō)說(shuō)PING命令涉及端到端的理論

    任何靠 IT 行業(yè)討飯吃的人,無(wú)論在哪個(gè)范疇工作,都一定懂得 Ping 這個(gè)指令。差不多任何作業(yè)系統(tǒng)都具備 Ping 這命令,用來(lái)做簡(jiǎn)單的 Troubleshooting。但究竟 Ping 在背后幫我們做了些什麼呢?本篇文章就從
    的頭像 發(fā)表于 01-01 17:26 ?3030次閱讀

    Ping命令的7個(gè)基礎(chǔ)用法

    IT行業(yè)中ping命令經(jīng)常被用到,今天整理了一下關(guān)于網(wǎng)絡(luò)基礎(chǔ)知識(shí)中的網(wǎng)絡(luò)命令ping命令在項(xiàng)目中是使用頻率最高的,一般我們用的都是它的基本功能,今天和大家來(lái)詳細(xì)看下Ping命令的7個(gè)基
    的頭像 發(fā)表于 10-12 09:16 ?3610次閱讀

    PING命令還能這么用?

    今天和你聊聊PING命令。 一般來(lái)說(shuō),網(wǎng)工們通常會(huì)用它來(lái)直接ping ip地址,來(lái)測(cè)試網(wǎng)絡(luò)的連通情況。 類似這種,ping ip地址或網(wǎng)關(guān),然后ping通后會(huì)顯示出以上數(shù)據(jù)。 再通過(guò)
    的頭像 發(fā)表于 05-18 16:43 ?941次閱讀
    <b class='flag-5'>PING</b>命令還能這么用?

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

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

    【筆記】ping不通的原因有那些?

    當(dāng)Ping命令無(wú)法成功訪問(wèn)目標(biāo)主機(jī)時(shí),可能存在多種原因。以下是一些常見(jiàn)的導(dǎo)致Ping不通的問(wèn)題,并對(duì)每個(gè)問(wèn)題進(jìn)行了分析和解釋:1.請(qǐng)求超時(shí):當(dāng)Ping命令發(fā)送
    的頭像 發(fā)表于 05-30 17:24 ?2w次閱讀
    【筆記】<b class='flag-5'>ping</b>不通的原因有那些?

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

    請(qǐng)求包,然后等待目標(biāo)主機(jī)返回響應(yīng)包,從而測(cè)量網(wǎng)絡(luò)的延遲和丟包情況。隨著Python編程語(yǔ)言的廣泛應(yīng)用,越來(lái)越多的網(wǎng)絡(luò)工程師開(kāi)始使用Python進(jìn)行自動(dòng)化網(wǎng)絡(luò)測(cè)試和管理任務(wù)。本篇文章將詳細(xì)介紹如何使用Python進(jìn)行Ping測(cè)試,適合網(wǎng)工初學(xué)者。
    的頭像 發(fā)表于 08-12 17:56 ?250次閱讀
    使用Python進(jìn)行<b class='flag-5'>Ping</b>測(cè)試