Ping 命令的含義和作用:ping命令用來測試主機之間網絡的連通性。執行ping指令會使用ICMP傳輸協議,發出要求回應的信息,若遠端主機的網絡功能沒有問題,就會回應該信息,因而得知該主機運作正常。


前言

1、PING (Packet Internet Groper),因特網包探索器,作用是測試你到某一個IP之間的網絡是否通暢,可以很好地幫助我們分析和判定網絡故障。

2、Ping是Windows、Unix和Linux操作系統下的一個命令。ping也屬於一個通信協議,是TCP/IP協議的一部分。

 

① ping 127.0.0.1 ,如果本地址無法Ping通,則表明本地機TCP/IP協議不能正常工作。

② ping 本機的IP地址 ,用IPConfig查看本機IP,然后Ping該IP,通則表明網絡適配器工作正常,不通則是網絡適配器出現故障。【檢查本機與網關之間通不通】

【網絡適配器又稱網卡或網絡接口卡(NIC),英文名NetworkInterfaceCard。它是使計算機聯網的設備。】

③ ping 域名 ,驗證是否可以連接外網,也就是是否可以上網。

3、根據ping不同的ip你就可以知道各種你要了解的網絡狀況。

比如你不能上網了,你又不知道問題出在哪,那你先 ping 本機IP地址 ,這就是ping你到網關之間通不通。如果通,怎么你到網關之間的線路是通的,你就再ping www.sina.com.cn 看看你到新浪網通不通,如果通,那問題就出在電腦而不是出在網絡。

4、ping是網絡維護中最重要的一個網絡命令,也是最常用的。如果把網絡看成一根管子,你不知道哪兒不通,那ping命令就像是一根無限長的探針,用它在網絡這跟管子里捅,捅到哪不通了就查出問題了。

5、ping命令是依托於 ICMP協議的, ICMP協議的存在就是為了更高效的轉發 IP數據報和提高交付成功的機會。 

6、ping命令除了依托於 ICMP,在局域網下還要借助於 ARP協議, ARP協議能根據 IP地址反查出計算機的 MAC地址。(另外ARP是有緩存的,為了保證 ARP的准確性,計算機會更新ARP緩存。)

ping的語法

ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [-j computer-list] | [-k computer-list] [-w timeout] destination-list

即:

ping  (選項)  (參數)

選項

-d:使用Socket的SO_DEBUG功能;

-c<完成次數>:設置完成要求回應的次數;

-f:極限檢測;

-i<間隔秒數>:指定收發信息的間隔時間;

-I<網絡界面>:使用指定的網絡界面送出數據包;

-l<前置載入>:設置在送出要求信息之前,先行發出的數據包;

-n:只輸出數值;

-p<范本樣式>:設置填滿數據包的范本樣式;

-q:不顯示指令執行過程,開頭和結尾的相關信息除外;

-r:忽略普通的Routing Table,直接將數據包送到遠端主機上;

-R:記錄路由過程;

-s<數據包大小>:設置數據包的大小;

-t<存活數值>:設置存活數值TTL的大小;

-v:詳細顯示指令的執行過程。

ping的用法

下面是愛E族(aiezu.com)收集整理的ping詳細參數:

 

①ping 192.168.1.9   開始;ctrl + c 停止

②ping命令通過ICMP協議(Internet控制消息協議)工作;ping可以用來測試本機與目標主機是否聯通、聯通速度如何、穩定性如何。

③ping命令運行在命令提示符終端,用法為: ping 參數 目標主機 。其中參數為零到多個,目標主機可以是IP或者域名。

④輸出格式:

下圖為簡單的ping產生的響應內容,圖中返回內容具體的含義如下:

① ping目標主機的域名和IP(ping會自動將域名轉換為IP)
② 不帶包頭的包大小和帶包頭的包大小(參考“-s”參數)
③ icmp_seq:ping序列,從1開始;
  ttl:剩余的ttl;
  time: 響應時間,數值越小,聯通速度越快;
④ 發出去的包數,返回的包數,丟包率,耗費時間;
⑤ 最小/最大/平均響應時間和本機硬件耗費時間

⑤每隔0.6秒ping一次,一共ping 5次:

[root@aiezu.com ~]# ping -c 5 -i 0.6 qq.com

PING qq.com (14.17.32.211) 56(84) bytes of data.

64 bytes from 14.17.32.211: icmp_seq=1 ttl=54 time=16.5 ms

64 bytes from 14.17.32.211: icmp_seq=2 ttl=54 time=17.0 ms

64 bytes from 14.17.32.211: icmp_seq=3 ttl=54 time=16.6 ms

64 bytes from 14.17.32.211: icmp_seq=4 ttl=54 time=18.3 ms

64 bytes from 14.17.32.211: icmp_seq=5 ttl=54 time=19.9 ms

 

--- qq.com ping statistics ---

5 packets transmitted, 5 received, 0% packet loss, time 2405ms

rtt min/avg/max/mdev = 16.520/17.692/19.919/1.293 ms

⑥極限快速的使用大包ping:以最快的速度,使用最大的包進行ping,可用於測試目標主機的承壓能力:

[root@aiezu ~]# ping -f -s 65507 10.0.0.52

PING 10.0.0.52 (10.0.0.52) 65507(65535) bytes of data.

.^

--- 10.0.0.52 ping statistics ---

646 packets transmitted, 646 received, 0% packet loss, time 1675ms

rtt min/avg/max/mdev = 1.202/2.406/8.253/0.507 ms, ipg/ewma 2.598/2.318 ms

注意:此用法非常危險,65535(包頭+內容)*100個包每秒=6.25MB,每秒發送6.25MB的數據,相當於50Mbps的帶寬,完全可能導致目標主機拒絕服務。請勿用於非法用途,造成不良后果自負。

⑦聯通不穩定,丟包嚴重的情形:下面的ping發出17個ping icmp包,而只有序號為8、9、12的包收到響應信息,丟包率達82%,聯通非常不穩定:

[root@aiezu.com ~]# ping 8.8.8.8

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

64 bytes from 8.8.8.8: icmp_seq=8 ttl=43 time=32.3 ms

64 bytes from 8.8.8.8: icmp_seq=9 ttl=43 time=32.2 ms

64 bytes from 8.8.8.8: icmp_seq=12 ttl=43 time=32.0 ms

^C

--- 8.8.8.8 ping statistics ---

17 packets transmitted, 3 received, 82% packet loss, time 16003ms

rtt min/avg/max/mdev = 32.038/32.208/32.362/0.246 ms

⑧完全無法ping通的情形:

[root@aiezu.com ~]# ping -c 3 9.9.9.9

PING 9.9.9.9 (9.9.9.9) 56(84) bytes of data.

 

--- 9.9.9.9 ping statistics ---

3 packets transmitted, 0 received, 100% packet loss, time 1999ms

ping的原理

① ping是用來探測本機與網絡中另一主機之間是否可達的命令,如果兩台主機之間ping不通,則表明這兩台主機不能建立起連接。ping是定位網絡通不通的一個重要手段。

② ping 命令是基於 ICMP 協議來工作的,「 ICMP 」全稱為 Internet 控制報文協議( Internet Control Message Protocol)。

③ ping 命令會發送一份ICMP回顯請求報文給目標主機,並等待目標主機返回ICMP回顯應答。因為ICMP協議會要求目標主機在收到消息之后,必須返回ICMP應答消息給源主機,如果源主機在一定時間內收到了目標主機的應答,則表明兩台主機之間網絡是可達的。

實例1

一般來說,用 ping命令查看電腦的網絡情況,主要是檢查兩個指標:

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

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

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

那么,ping是如何檢查網絡的?ping背后的原理到底是啥樣的?

1、環境准備

抓包工具:Wireshark網絡抓包分析軟件; 准備兩台電腦;進行互 ping操作:

    A電腦(IP地址:192.168.2.135 / MAC地址:98:22:EF:E8:A8:87)

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

2、抓包操作

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

抓包情況如下:(下圖顯示的就是整個ping命令的過程)

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

  • NO: 編號

  • Time: 包的時間戳

  • Source: 源地址

  • Destination: 目標地址

  • Protocol: 協議

  • Length: 包長度

  • Info: 數據包附加信息

4、根據抓包流程對ping過程解析

  1. A 電腦( 192.168.2.135)對B電腦(192.168.2.179)發起 ping 請求:ping192.168.2.179;
  2. A 電腦(192.168.2.135)廣播發起 ARP請求,查詢 192.168.2.179的 MAC地址;
  3. B 電腦(192.168.2.179)應答 ARP請求,向 A電腦發起單向應答,告訴 A電腦自己的 MAC地址為:90:A4:DE:C2:DF:FE;
  4. A 電腦(192.168.2.135)知道B電腦(192.168.2.179)的MAC地址后,開始進行真正的 ping請求,由於 B電腦可以根據A電腦發送的請求知道 源 MAC地址,所以就可以根據源MAC地址進行響應;

5、ping過程的流程圖

問題:Ping 4次請求和響應結束后,還有一次 B電腦對 A電腦的 ARP請求,這是為什么?

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

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

驗證:

①此時的電腦A(192.168.2.135)里面已經有了ARP的緩存,執行  ARP-a  看看緩存的arp列表:

②電腦A(192.168.2.135)重新 ping 電腦B(192.168.2.179)

通過上圖可以看出:在真正 ping 開始之前並沒有進行一次 ARP請求。這也就是說,電腦A直接拿了緩存中的 ARP來執行了,另外當電腦B進行響應之前還是進行了一次ARP請求,它還是要確認下之前的 ARP緩存是否為正確的。

6、弄懂了ping的流程之后我們來解析下之前解釋的 ICMP數據結果是否和抓包的一致。

①隨機點擊一個ping request查看ICMP協議報文詳情:

上圖中紅框內就行 ICMP協議的詳情了,這里的 Type=8,code=0, 校驗是正確,且這是一個請求報文。

②再點擊上圖中的Response frame:57,這里說明響應報文在Wireshark控制面板的序號為57的一條協議。詳情如下:

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

抓包過程中出現的協議的詳細介紹

ICMP( Internet 控制報文協議)

1、ping命令不是依托於TCP或者UDP這種傳輸層協議的,而是依托於ICMP協議實現。

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

3、ICMP協議的數據格式:(ICMP協議頭包含 4個字節,頭部主要用來說明類型和校驗 ICMP報文)

 

5、下圖是對應的類型和代碼釋義列表。

ARP協議

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

實例2

細心的小伙伴應該會在電腦上或者一些網絡游戲中看到有一個ping的參數,那么你知道這個ping是用來表示什么的嗎?

①ping指的就是從某個數據包發送到服務器開始,到服務器接收到數據包並且應答的過程就被叫做ping了。

②簡單點說,這個ping代表的含義就是我們網絡的情況了,一般數值越大(ms)網絡的延遲也就越高,玩游戲的話,就會體驗到明顯的網絡卡頓現象。

實例3

使用Ping命令測試網絡是否聯通:

連通問題是由許多原因引起的,如本地配置錯誤、遠程主機協議失效等,當然還包括設備等造成的故障。

首先我們講一下使用Ping命令的步驟。

使用Ping檢查連通性有五個步驟:

ipconfig /all :觀察本地網絡設置是否正確,如圖:

② ping 127.0.0.1(本地ip)  ,127.0.0.1 回送地址Ping回送地址是為了檢查本地的TCP/IP協議是否設置成功:

③ ping 本機IP地址,檢查本機的IP地址是否設置有誤:

④ ping 本網網關或本網IP地址,檢查硬件設備是否有問題,也可以檢查本機與本地網絡連接是否正常(在非局域網中這一步驟可以忽略):

⑤ ping 遠程IP地址,檢查本網或本機與外部的連接是否正常:

 實例4

Linux操作系統使用指定網卡進行ping操作

1、需要使用指定網卡ping操作的原因

現在很多服務器都擁有雙網卡甚至多網卡,有些是為了保持高可用,有些是網絡隔離(內網與外網或者不同網絡)。

比如說網卡1插在進網口,另一張網卡插在某一個交換機或者路由器下,ping指定網卡可以判斷哪條網絡不通。

2、ping命令指定網卡的參數

 # man ping
     -I interface
               interface  is  either  an  address,  or  an  interface  name.  If interface is an
               address, it sets source address to specified interface address.  If interface  in
               an  interface  name,  it sets source interface to specified interface.  For IPv6,
               when doing ping to  a  link-local  scope  address,  link  specification  (by  the
               \'%\'-notation in destination, or by this option) is required.

大概意思: ping -I 接口(網卡名) 遠程ip地址 : 接口可以是網卡設備名,也可以是網卡設備的IP地址(網卡設備聯網之后,萬維網會給網卡分配IP地址;此外每一塊網卡都有一個獨一無二的物理地址)。

3、舉例

Linux主機的網卡信息:

其中enp2s0網卡是不通外網的(因為enp2s0網卡插在路由器下,但是路由器因為設置問題導致不通外網),enp3s0是插在進網口的可以通外網。

①ping命令不指定網卡名是可以ping通外網的,但是因為ping會自動走通外網的網卡設備(enp3s0)

② ping命令指定網卡設備(通過網卡設備的IP地址指定)

PING www.a.shifen.com (112.80.248.76) from 192.168.80.90 : 56(84) bytes of data:可以證明ping操作是來自IP地址為192.168.80.90的這塊網卡設備。

③ping命令指定網卡設備(通過網卡設備的網卡名指定)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM