日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

當 Ping 命令后,背后發(fā)生了什么?

作者 | 木木匠

鏈接 | my.oschina.net/luozhou/blog/2992137

01 概覽

對于 ping命令,想必只要是程序員都知道吧?當我們檢查網(wǎng)絡(luò)情況的時候,最先使用的命令肯定是ping命令吧?一般我們用ping查看網(wǎng)絡(luò)情況,主要是檢查兩個指標:

  • 第一個是看看是不是超時

  • 第二個看看是不是延遲太高

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

那么對于 ping命令的原理,ping是如何檢查網(wǎng)絡(luò)的?大家之前有了解嗎?接下來我們來跟著ping命令走一圈,看看ping是如何工作的。

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

  • 環(huán)境準備

抓包工具:Wireshark 準備兩臺電腦,進行互 ping操作:

  1. A電腦(IP地址: 192.168.2.135/ mac地址:98:22:EF:E8:A8:87

  2. B電腦(IP地址: 192.168.2.179/ MAC地址:90:A4:DE:C2:DF:FE

  • 抓包操作

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

當 Ping 命令后,背后發(fā)生了什么?

抓包情況如下:

當 Ping 命令后,背后發(fā)生了什么?

這里先簡單的介紹下Wireshark的控制面板,這個面板包含7個字段,分別是:

  • NO: 編號

  • Time: 包的時間戳

  • Source: 源地址

  • Destination: 目標地址

  • Protocol: 協(xié)議

  • Length: 包長度

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

03 深入解析

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

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

[RFC792]中說明了 ICMP產(chǎn)生的原因:由于互聯(lián)網(wǎng)之間通訊會涉及很多網(wǎng)關(guān)和主機,為了能夠報告數(shù)據(jù)錯誤,所以產(chǎn)生了ICMP協(xié)議。也就是說ICMP協(xié)議就是為了更高效的轉(zhuǎn)發(fā) IP數(shù)據(jù)報和提高交付成功的機會。

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

當 Ping 命令后,背后發(fā)生了什么?

根據(jù)上圖我們知道了 ICMP協(xié)議頭包含 4個字節(jié),頭部主要用來說明類型和校驗ICMP報文。下圖是對應(yīng)的類型和代碼釋義列表,我們后面分析抓包的時候會用到。

當 Ping 命令后,背后發(fā)生了什么?

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

  • ARP協(xié)議

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

  • Ping過程解析

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

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

  2. A 電腦廣播發(fā)起 ARP請求,查詢192.168.2.179的 MAC地址。

  3. B 電腦應(yīng)答 ARP請求,向 A電腦發(fā)起單向應(yīng)答,告訴 A電腦自己的 MAC地址為90:A4:DE:C2:DF:FE

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

上面的請求過程我畫成流程圖比較直觀一點:

當 Ping 命令后,背后發(fā)生了什么?

觀察仔細的朋友可能已經(jīng)發(fā)現(xiàn),Ping 4次請求和響應(yīng)結(jié)束后,還有一次 B電腦對 A電腦的 ARP請求,這是為什么呢?這里我猜測應(yīng)該是有 2個原因:

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

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

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

當 Ping 命令后,背后發(fā)生了什么?

我們看看第二次 ping的抓包

當 Ping 命令后,背后發(fā)生了什么?

我們看到上圖中在真正 ping之前并沒有進行一次ARP請求,這也就是說,直接拿了緩存中的ARP來執(zhí)行了,另外當 B計算機進行響應(yīng)之前還是進行了一次ARP請求,它還是要確認下之前的ARP緩存是否為正確的。然后結(jié)束ping操作之后,同樣再發(fā)一次ARP請求,更新下自己的ARP緩存。這里和我們的猜想基本一致。

弄懂了 ping的流程之后我們來解析下之前解釋的ICMP數(shù)據(jù)結(jié)果是否和抓包的一致。我們來點擊一個ping request看看ICMP協(xié)議詳情

當 Ping 命令后,背后發(fā)生了什么?

圖中紅框內(nèi)就行 ICMP協(xié)議的詳情了,這里的Type=8,code=0, 校驗是正確,且這是一個請求報文。我們再點擊Responseframe:57,這里說明響應(yīng)報文在序號57。詳情如下:

當 Ping 命令后,背后發(fā)生了什么?

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

04 總結(jié)

我們分析了一次完整的 ping請求過程,ping命令是依托于ICMP協(xié)議的,ICMP協(xié)議的存在就是為了更高效的轉(zhuǎn)發(fā) IP數(shù)據(jù)報和提高交付成功的機會。ping命令除了依托于ICMP,在局域網(wǎng)下還要借助于ARP協(xié)議,ARP協(xié)議能根據(jù) IP地址反查出計算機的 MAC地址。另外ARP是有緩存的,為了保證ARP的準確性,計算機會更新ARP緩存。

分享到:
標簽:命令 Ping
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定