首页
/
每日頭條
/
科技
/
ping網絡命令不彈出來
ping網絡命令不彈出來
更新时间:2024-07-24 13:13:00

有朋友反映,能不能講下ping命令的使用,其實對于命令的使用我們之前提到過一些,但對ping命令沒有過多講解,一般我們用的都是它的基本功能,今天我們來詳細看下ping命令詳細使用。

一、ping基本使用詳解

在網絡中ping是一個十分強大的TCP/IP工具。它的作用主要為:

1、用來檢測網絡的連通情況和分析網絡速度

2、根據域名得到服務器IP

3、根據ping返回的TTL值來判斷對方所使用的操作系統及數據包經過路由器數量。

我們通常會用它來直接ping IP地址,來測試網絡的連通情況。

ping網絡命令不彈出來(ping命令開始到結束)1

ping命令的七種用法,看完瞬間成大神

類如這種,直接ping ip地址或網關,ping通會顯示出以上數據,有朋友可能會問,bytes=32;time<1ms;TTL=128 這些是什麼意思。

bytes值:數據包大小,也就是字節。

time值:響應時間,這個時間越小,說明你連接這個地址速度越快。

TTL值:Time To Live,表示DNS記錄在DNS服務器上存在的時間,它是IP協議包的一個值,告訴路由器該數據包何時需要被丢棄。可以通過Ping返回的TTL值大小,粗略地判斷目标系統類型是Windows系列還是UNIX/Linux系列。

默認情況下,Linux系統的TTL值為64或255,WindowsNT/2000/XP系統的TTL值為128,Windows98系統的TTL值為32,UNIX主機的TTL值為255。

因此一般TTL值:

100~130ms之間,Windows系統 ;

240~255ms之間,UNIX/Linux系統。

當然,我們今天主要了解并不是這些,而是ping的其它參考。

ping命令除了直接ping網絡的ip地址,驗證網絡暢通和速度之外,它還有這些用法。

ping網絡命令不彈出來(ping命令開始到結束)2

ping命令的七種用法,看完瞬間成大神

二、ping -t的使用

不間斷地Ping指定計算機,直到管理員中斷。

ping網絡命令不彈出來(ping命令開始到結束)3

ping命令的七種用法,看完瞬間成大神

這就說明電腦連接路由器是通的,網絡效果很好。下面按按住鍵盤的Ctrl c終止它繼續ping下去,就會停止了,會總結出運行的數據包有多少,通斷的有多少了。

三、ping -a的使用

ping-a解析計算機名與NetBios名。就是可以通過ping它的ip地址,可以解析出主機名。

ping網絡命令不彈出來(ping命令開始到結束)4

ping命令的七種用法,看完瞬間成大神

四、ping -n的使用

在默認情況下,一般都隻發送四個數據包,通過這個命令可以自己定義發送的個數,對衡量網絡速度很有幫助,比如我想測試發送10個數據包的返回的平均時間為多少,最快時間為多少,最慢時間為多少就可以通過以下獲知:

ping網絡命令不彈出來(ping命令開始到結束)5

ping命令的七種用法,看完瞬間成大神

從以上我就可以知道在給47.93.187.142發送10個數據包的過程當中,返回了10個,沒有丢失,這10個數據包當中返回速度最快為32ms,最慢為55ms,平均速度為37ms。說明我的網絡良好。

如果對于一些不好的網絡,比如監控系統中非常卡頓,這樣測試,返回的結果可能會顯示出丢失出一部分,如果丢失的比較多的話,那麼就說明網絡不好,可以很直觀的判斷出網絡的情況。

五、ping -l size的使用

-l size:發送size指定大小的到目标主機的數據包。

在默認的情況下Windows的ping發送的數據包大小為32byt,最大能發送65500byt。當一次發送的數據包大于或等于65500byt時,将可能導緻接收方計算機宕機。所以微軟限制了這一數值;這個參數配合其它參數以後危害非常強大,比如攻擊者可以結合-t參數實施DOS攻擊。(所以它具有危險性,不要輕易向别人計算機使用)。

例如:ping -l 65500 -t 211.84.7.46

會連續對IP地址執行ping命令,直到被用戶以Ctrl C中斷.

ping網絡命令不彈出來(ping命令開始到結束)6

ping命令的七種用法,看完瞬間成大神

這樣它就會不停的向211.84.7.46計算機發送大小為65500byt的數據包,如果你隻有一台計算機也許沒有什麼效果,但如果有很多計算機那麼就可以使對方完全癱瘓,網絡嚴重堵塞,由此可見威力非同小可。

六、ping -r count 的使用

在"記錄路由"字段中記錄傳出和返回數據包的路由,探測經過的

路由個數,但最多隻能跟蹤到9個路由。

ping -n 1 -r 9 202.102.224.25 (發送一個數據包,最多記錄9個路由)

ping網絡命令不彈出來(ping命令開始到結束)7

ping命令的七種用法,看完瞬間成大神

将經過 9個路由都顯示出來了,可以看上圖。

ping命令用的較多的就這6類的,大家有可能在項目中會用到的。

七、批量ping網段

對于一個網段ip地址衆多,如果單個檢測實在麻煩,那麼我們可以直接批量ping網段檢測,那個ip地址出了問題,一目了然。

先看代碼,直接在命令行窗口輸入:

for /L %D in (1,1,255) do ping 10.168.1.%D

IP地址段修改成你要檢查的IP地址段。

ping網絡命令不彈出來(ping命令開始到結束)8

ping命令的七種用法,看完瞬間成大神

當輸入批量命令後,那麼它就自動把網段内所有的ip地址都ping完為止。

那麼這段"for /L %D in(1,1,255) do ping 10.168.1.%D" 代碼是什麼意思呢?

代碼中的這個(1,1,255)就是網段起與始,就是檢測網段192.168.1.1到192.168.1.255之間的所有的ip地址,每次逐增1,直接到1到255這255個ip檢測完為止。

八、ping命令的背後原理

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

環境準備和抓包

環境準備

抓包工具: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命令開始到結束)9

抓包情況如下:

ping網絡命令不彈出來(ping命令開始到結束)10

這裡先簡單的介紹下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網絡命令不彈出來(ping命令開始到結束)11

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

ping網絡命令不彈出來(ping命令開始到結束)12

簡單介紹完了 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命令開始到結束)13

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

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

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

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

ping網絡命令不彈出來(ping命令開始到結束)14

我們看看第二次 ping的抓包

ping網絡命令不彈出來(ping命令開始到結束)15

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

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

ping網絡命令不彈出來(ping命令開始到結束)16

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

ping網絡命令不彈出來(ping命令開始到結束)17

上圖的響應報文, 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緩存。

,
Comments
Welcome to tft每日頭條 comments! Please keep conversations courteous and on-topic. To fosterproductive and respectful conversations, you may see comments from our Community Managers.
Sign up to post
Sort by
Show More Comments
Copyright 2023-2024 - www.tftnews.com All Rights Reserved