每日學習-ping與fping

1、ping 的使用

1.一、簡介

ping命令經過發送ICMP(Internet控制消息協議)的ECHO REQUEST到目標網絡主機,來測試網絡聯通性。ping命令支持多平臺,linux,unix,windows等都有ping命令。html

1.二、使用

ping [-aAbBdDfhLnOqrRUvV46] [-c count] [-F flowlabel] [-i interval] [-I interface] [-l preload] [-m mark] [-M pmtudisc_option] [-N nodeinfo_option] [-w deadline] [-W time‐out] [-p pattern] [-Q tos] [-s packetsize] [-S sndbuf] [-t ttl] [-T timestamp option] [hop ...] destinationnode

[]:中括號中爲可選參數
destination:爲目的網絡主機,能夠是IP或域名linux

1.三、參數

參數 詳解git

-a 帶聲音的 ping.
-A 自適應ping,根據ping包往返時間肯定ping的速度;
-b 容許ping一個廣播地址;
-B 不容許ping改變包頭的源地址;
-c count ping指定次數後中止ping; 
-d  使用Socket的SO_DEBUG功能;
-F flow_label 爲ping回顯請求分配一個20位的「flow label」,若是未設置,內核會爲ping隨機分配;
-f 極限檢測,快速連續ping一臺主機,ping的速度達到100次每秒;
-i interval 設定間隔幾秒發送一個ping包,默認一秒ping一次;
-I interface 指定網卡接口、或指定的本機地址送出數據包;
-l preload 設置在送出要求信息以前,先行發出的數據包;
-L 抑制組播報文回送,只適用於ping的目標爲一個組播地址
-n  不要將ip地址轉換成主機名;
-p pattern 指定填充ping數據包的十六進制內容,在診斷與數據有關的網絡錯誤時這個選項就很是有用,如:「-p ff」;
-q 不顯示任何傳送封包的信息,只顯示最後的結果
-Q tos 設置Qos(Quality of Service),它是ICMP數據報相關位;能夠是十進制或十六進制數,詳見rfc1349和rfc2474文檔;
-R 記錄ping的路由過程(IPv4 only);
注意:因爲IP頭的限制,最多隻能記錄9個路由,其餘會被忽略;
-r 忽略正常的路由表,直接將數據包送到遠端主機上,一般是查看本機的網絡接口是否有問題;若是主機不直接鏈接的網絡上,則返回一個錯誤。
-S sndbuf Set socket sndbuf. If not specified, it is selected to buffer not more than one packet.
-s packetsize 指定每次ping發送的數據字節數,默認爲「56字節」+「28字節」的ICMP頭,一共是84字節;
包頭+內容不能大於65535,因此最大值爲65507(linux:65507, windows:65500);
-t ttl 設置TTL(Time To Live)爲指定的值。該字段指定IP包被路由器丟棄以前容許經過的最大網段數;
-T timestamp_option 設置IP timestamp選項,能夠是下面的任何一個:
'tsonly' (only timestamps)
'tsandaddr' (timestamps and addresses)
'tsprespec host1 [host2 [host3]]' (timestamp prespecified hops). 
-M hint  設置MTU(最大傳輸單元)分片策略。
可設置爲:
'do':禁止分片,即便包被丟棄;
'want':當包過大時分片;
'dont':不設置分片標誌(DF flag);
-m mark 設置mark;
-v 使ping處於verbose方式,它要ping命令除了打印ECHO-RESPONSE數據包以外,還打印其它全部返回的ICMP數據包;
-U  Print full user-to-user latency (the old behaviour).
Normally ping prints network round trip time, which can be different f.e. due to DNS failures.
-W timeout 以毫秒爲單位設置ping的超時時間;
-w deadline deadline;github

引用自 <https://www.cnblogs.com/operationhome/p/9848138.html>; windows

1.四、ping的示例

1.4.一、使用ping -c 4 baidu.com 來檢查與互聯網的連通性

[root@master ~]# ping -c 4 baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 time=20.3 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=28.9 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=3 ttl=128 time=19.0 ms
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=4 ttl=128 time=30.2 ms

--- baidu.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 19.036/24.651/30.299/4.999 ms

從上能夠看到百度服務器的ICMP ECHO RESPOND(返回)了64字節的包,icmp_seq爲包序號,ttl爲生存時間,time爲延時;在下方的統計信息中能夠看到發出4個包,收到4個包,丟包率0%,本次執行命令用時3004ms;rtt min/avg/max/mdev分別是最小/平均/最大響應時間和本機耗費時間。服務器

場景1:須要檢查發包服務器到某邊界網絡設備的時延
在各地的局點中選擇一部分服務器使用腳本加定時任務ping測固定大小的包到網絡設備,在固定時長的狀況下,取統計信息;
若是ttl有明顯少於其餘局點設備的,該局點中間設備可能存在網絡環路;
若是平均響應時間較高,且最大或最小響應時間不正常,可能服務器驅動、硬件、或中間鏈路存在問題;
若是本機耗費時間較高,可能服務器程序(尤爲是運行的c程序)、服務器驅動、硬件存在問題網絡

1.4.二、使用ping -6 單純測試ipv6地址聯通性

Ping ipv6的地址須要加上有ipv6地址的網卡socket

1.4.三、使用-s參數ping大包

[root@master ~]# ping -c 4 -s 65507 192.168.236.21
PING 192.168.236.21 (192.168.236.21) 65507(65535) bytes of data.
^C
--- 192.168.236.21 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

linux系統最大能夠ping65507字節的大包,經常使用於測試鏈路帶寬。ide

2、fping

2.一、簡介

fping能夠批量測試網絡聯通性。fping 與ping的不一樣之處在於,您能夠在命令行上指定任意數量的目標,或指定包含要ping的目標列表的文件。fping不會發送到一個目標,直到它超時或答覆爲止,它會發出ping數據包並以循環方式移至下一個目標。
在默認模式下,若是目標答覆,則將其記錄下來並從要檢查的目標列表中刪除;若是目標在特定時間限制和/或重試限制內未響應,則將其指定爲不可訪問。 ping還支持向目標發送指定數量的ping或無限循環(如 ping)。與ping不一樣,fping是在腳本中使用的,所以其輸出旨在易於解析。
項目地址:https://github.com/schweikert/fping/

2.二、使用

下載:https://github.com/schweikert/fping/releases/download/v5.0/fping-5.0.tar.gz

2.2.一、編譯安裝

tar -xzf fping-5.0.tar.gz
cd fping-5.0/
./configure prefix=/usr/local/fping
make ; make install
echo "export PATH=$PATH:/usr/local/fping/sbin" >> /etc/profile

2.三、參數

參數 詳解

-a 顯示可ping通的目標
-A 將目標以ip地址的形式顯示
-b ping 數據包的大小。(默認爲56)
-B <f> 設置指數反饋因子到f
-c <num> ping每一個目標的次數 (默認爲1)
-C <num> 同-c,返回的結果爲冗長格式
-e 顯示返回數據包所費時間
-f <file> 從文件獲取目標列表( - 表示從標準輸入)(不能與 -g 同時使用)
-g 經過指定開始和結束地址來生成目標列表(例如:./fping –g 192.168.1.0 192.168.1.255)或者一個IP/掩碼形式(例如:./fping –g 192.168.1.0/24)
-i <num> 設置ip的TTL值 (生存時間)
-l 循環發送ping
-m ping目標主機的多個網口
-n 將目標以主機名或域名顯示(等價於 -d )
-p <num> 對同一個目標的ping包間隔(毫秒) (在循環和統計模式中,默認爲1000)
-q 安靜模式(不顯示每一個目標或每一個ping的結果)
-Q <num> 同-q, 可是每n秒顯示信息概要
-r <num> 當ping失敗時,最大重試次數(默認爲3次)
-s 打印最後的統計數據
-t <num> 單個目標的超時時間(毫秒)(默認500)
-u 顯示不可到達的目標
-v 顯示版本號

2.四、fping 的示例

2.4.一、fping整個網段,顯示不存活的設備

[root@master ~]# fping -u -g 106.117.244.230/24
117.244.1
117.244.2
117.244.3
…

2.4.二、fping連續的網段,顯示不存活的設備

[root@master ~]# fping -u -g 106.117.244.100 106.117.244.235
106.117.244.100
106.117.244.101
106.117.244.102
…

2.4.三、fping不連續的多ip,顯示不存活的設備

iplist文件爲ip列表

[root@master ~]# fping -u < iplist 
106.117.244.174
106.117.244.175
106.117.244.176
106.117.244.177
[root@master ~]# fping -u -f iplist
106.117.244.174
106.117.244.175
106.117.244.176
106.117.244.177

2.4.四、fping 顯示可達設備往返時間

[root@master ~]# fping -a -e < iplist 
106.117.244.231 (28.8 ms)
1.81.1.223 (42.6 ms)
182.86.84.229 (49.4 ms)
106.117.244.232 (42.7 ms)
125.64.1.232 (36.6 ms)

2.4.五、fping 打印可達設備的統計數據

[root@master ~]# fping -s -a < iplist 
106.117.244.232
182.86.84.229
125.64.1.232

       9 targets
       3 alive
       6 unreachable
       0 unknown addresses

      30 timeouts (waiting for response)
      33 ICMP Echos sent
       3 ICMP Echo Replies received
       0 other ICMP received

 208 ms (min round trip time)
 219 ms (avg round trip time)
 229 ms (max round trip time)
        4.148 sec (elapsed real time)

參考文章:
https://www.cnblogs.com/operationhome/p/9848138.html
http://www.javashuo.com/article/p-uhgvpewd-ew.html

相關文章
相關標籤/搜索