ping命令經過發送ICMP(Internet控制消息協議)的ECHO REQUEST到目標網絡主機,來測試網絡聯通性。ping命令支持多平臺,linux,unix,windows等都有ping命令。html
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
參數 詳解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
[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程序)、服務器驅動、硬件存在問題網絡
Ping ipv6的地址須要加上有ipv6地址的網卡socket
[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
fping能夠批量測試網絡聯通性。fping 與ping的不一樣之處在於,您能夠在命令行上指定任意數量的目標,或指定包含要ping的目標列表的文件。fping不會發送到一個目標,直到它超時或答覆爲止,它會發出ping數據包並以循環方式移至下一個目標。
在默認模式下,若是目標答覆,則將其記錄下來並從要檢查的目標列表中刪除;若是目標在特定時間限制和/或重試限制內未響應,則將其指定爲不可訪問。 ping還支持向目標發送指定數量的ping或無限循環(如 ping)。與ping不一樣,fping是在腳本中使用的,所以其輸出旨在易於解析。
項目地址:https://github.com/schweikert/fping/
下載:https://github.com/schweikert/fping/releases/download/v5.0/fping-5.0.tar.gz
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
參數 詳解
-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 顯示版本號
[root@master ~]# fping -u -g 106.117.244.230/24 117.244.1 117.244.2 117.244.3 …
[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 …
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
[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)
[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