Ping命令我們見怪不怪了,一般來說,我們們用 ping查看網絡情況,主要是檢查兩個指标:
1、對方是否可達
2、延遲是否太高
如果超時那麼肯定是網絡有問題(禁 ping情況除外),如果延遲太高,網絡情況肯定也是很糟糕的。
我們知道它的作用,但是ping到底是如何檢查網絡的?它背後的原理又是什麼呢?
接下來我們做個實驗來驗證一下!
環境準備和抓包
01 環境準備
抓包工具:Wireshark 準備兩台電腦,進行互 ping操作:
02 抓包操作
打開 Wireshark,選取指定的網卡進行抓包,進行 ping操作,在 A電腦上 ping B電腦的 IP。抓包情況如下:
在上圖中可以看到發送方和接收方的IP以及使用的協議等、在下面的封包列表中顯示被選中的詳細信息,信息按OSI Layer進行分組;
上面就是整個 ping命令的過程,但我們知道 ping命令不是依托于 TCP或者 UDP這種傳輸層協議的,而是依托于 ICMP協議實現的, 那麼什麼是 ICMP 協議呢?這裡簡單介紹下:
1、ICMP是什麼?
ICMP是控制報文協議,它是TCP/IP協議族的一個子協議,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息,這些控制消息雖然并不傳輸用戶數據,但是對于用戶數據的傳遞起着重要的作用。
從技術角度說,ICMP就是一個"錯誤偵測與回報機制",其目的就是讓我們能夠檢測網路的連線狀況﹐也能确保連線的準确性﹐其功能主要有:
· 偵測遠端主機是否存在。
· 建立及維護路由資料。
· 重導資料傳送路徑(ICMP重定向)。
ICMP在溝通之中,主要是透過不同的類别(Type)與代碼(Code) 讓機器來識别不同的連線狀況。常用的類别如下表所列:
可見,ICMP 是個非常有用的協議﹐尤其是當我們要對網路連接狀況進行判斷的時候。
02 Ping過程解析
了解了上面的基礎概念後,我們來分析下抓包的數據,其流程如下:
上面的請求過程我畫成流程圖比較直觀一點:
關于ping
1、ping命令是依托于 ICMP協議的, ICMP協議是網絡層輔助IP工作的協議,存在就是為了更高效的轉發 IP數據報和提高交付成功的機會。
ping命令除了依托于 ICMP,在局域網下還要借助于 ARP協議, ARP協議能根據 IP地址反查出計算機的 MAC地址。
另外 ARP是有緩存的,為了保證 ARP的準确性,計算機會更新ARP緩存。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!