成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

當 Ping 命令后,背后發生了什么?

網絡
對于 ping命令,想必只要是程序員都知道吧?當我們檢查網絡情況的時候,先使用的命令肯定是ping命令吧?

 01 概覽

[[274853]]

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

  • 第一個是看看是不是超時
  • 第二個看看是不是延遲太高

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

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

02 環境準備和抓包

環境準備

抓包工具: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,選取指定的網卡進行抓包,進行 ping操作,在 A電腦上 ping B電腦的 IP

 

當 Ping 命令后,背后發生了什么?

 

抓包情況如下:

 

當 Ping 命令后,背后發生了什么?

 

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

  • NO: 編號
  • Time: 包的時間戳
  • Source: 源地址
  • Destination: 目標地址
  • Protocol: 協議
  • Length: 包長度
  • Info: 數據包附加信息

03 深入解析

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

ICMP協議的產生背景

[RFC792]中說明了 ICMP產生的原因:由于互聯網之間通訊會涉及很多網關和主機,為了能夠報告數據錯誤,所以產生了ICMP協議。也就是說ICMP協議就是為了更高效的轉發 IP數據報和提高交付成功的機會。

ICMP協議的數據格式

 

當 Ping 命令后,背后發生了什么?

 

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

當 Ping 命令后,背后發生了什么?

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

ARP協議

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

Ping過程解析

了解了上面的基礎概念后,我們來分析下抓包的數據,其流程如下:

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

A 電腦廣播發起 ARP請求,查詢192.168.2.179的 MAC地址。

B 電腦應答 ARP請求,向 A電腦發起單向應答,告訴 A電腦自己的 MAC地址為90:A4:DE:C2:DF:FE

知道了 MAC地址后,開始進行真正的 ping請求,由于 B電腦可以根據A電腦發送的請求知道 源 MAC地址,所以就可以根據源 MAC地址進行響應了。

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

當 Ping 命令后,背后發生了什么?

觀察仔細的朋友可能已經發現,Ping 4次請求和響應結束后,還有一次 B電腦對 A電腦的 ARP請求,這是為什么呢?這里我猜測應該是有 2個原因:

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

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

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

當 Ping 命令后,背后發生了什么?

我們看看第二次 ping的抓包

當 Ping 命令后,背后發生了什么?

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

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

當 Ping 命令后,背后發生了什么?

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

當 Ping 命令后,背后發生了什么?

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

04 總結

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

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2019-11-12 14:41:41

Redis程序員Linux

2021-12-16 15:58:48

Linux內存微軟

2018-03-16 15:31:50

2023-11-02 08:00:00

ClickHouse數據庫

2022-02-15 13:20:28

特斯拉電動車

2016-10-15 10:33:14

阿里云降價云計算

2025-04-27 08:11:26

2020-08-17 12:47:07

Mozilla裁員瀏覽器

2011-03-31 09:20:45

URLDNSWeb應用程序

2021-02-25 10:02:32

開機鍵Linux內存

2024-05-06 10:53:22

瀏覽器TCPHTTPS

2023-01-14 16:11:27

瀏覽器URL回車

2010-02-07 09:00:29

AndroidLinux Kerne

2021-04-11 10:40:16

Git軟件開發

2021-01-18 08:23:23

內存時底層CPU

2023-08-29 16:26:20

Linux命令行

2015-07-03 09:27:43

網絡閏秒

2020-09-01 11:40:01

HTTPJavaTCP

2019-09-16 17:16:29

Hadoop數據湖數據結構

2022-06-03 08:12:52

InnoDB插入MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久久久久久网 | 亚洲欧美在线一区 | 午夜在线电影网 | 中文字幕不卡在线观看 | 久久逼逼| 狠狠影院 | 国产精品中文字幕在线观看 | 精品日韩欧美一区二区 | 欧美激情久久久 | 在线看片国产精品 | 国产精品69久久久久水密桃 | 米奇7777狠狠狠狠视频 | av av在线 | 国产一区二区在线看 | 2018中文字幕第一页 | 国产午夜精品一区二区三区 | 亚洲一区在线日韩在线深爱 | 欧美aaaaaaaa| 国产精品亚洲一区 | 久久精品99国产精品 | 中文字幕三区 | av色在线| av免费网站在线观看 | 中文字幕第三页 | 国产一区二区精品自拍 | 久久免费高清视频 | 亚洲一区中文 | 免费视频二区 | 国产精品久久久久久网站 | 午夜影视大全 | 国产一级成人 | 国产精品99久久久久久动医院 | 亚洲第一天堂 | 综合一区二区三区 | 国产黄色大片 | 久久久久久久夜 | 国产在线观看不卡一区二区三区 | 欧美毛片免费观看 | 日韩精品在线视频免费观看 | 99re6在线视频精品免费 | 日本超碰 |