什麼是 ping?

Ping(全稱 Packet InterNet Groper) 是一種用來測試封包是否能通過 IP 協議到達特定主機的管理員工具。

Ping 程式通過向目標主機發送一個ICMP 請求,並等待其回應封包。它根據時間和成功次數來計算數據丟包率以及數據往返時間(Rouad-trip time, RTT)。

Unix/Linux 下的ping 命令參數

$ ping -help
Usage: ping [-LRUbdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
            [-p pattern] [-s packetsize] [-t ttl] [-I interface]
            [-M pmtudisc-hint] [-m mark] [-S sndbuf]
            [-T tstamp-options] [-Q tos] [hop1 ...] destination

目前許多系統也提供了用來測試 IPv6 網絡的ping6 工具。

$ ping6 -help
Usage: ping6 [-LUdfnqrvVaAD] [-c count] [-i interval] [-w deadline]
             [-p pattern] [-s packetsize] [-t ttl] [-I interface]
             [-M pmtudisc-hint] [-S sndbuf] [-F flowlabel] [-Q tclass]
             [[-N nodeinfo-option] ...]
             [hop1 ...] destination

Windows 下的ping 命令參數

C:\>ping /?

Usage: ping [-t] [-a] [-n count] [-l size] [-f] [-i TTL] [-v TOS]
            [-r count] [-s count] [[-j host-list] | [-k host-list]]
            [-w timeout] [-R] [-S srcaddr] [-4] [-6] target_name

Options:
    -t             Ping the specified host until stopped.
                   To see statistics and continue - type Control-Break;
                   To stop - type Control-C.
    -a             Resolve addresses to hostnames.
    -n count       Number of echo requests to send.
    -l size        Send buffer size.
    -f             Set Don't Fragment flag in packet (IPv4-only).
    -i TTL         Time To Live.
    -v TOS         Type Of Service (IPv4-only. This setting has been deprecated
                   and has no effect on the type of service field in the IP Header).
    -r count       Record route for count hops (IPv4-only).
    -s count       Timestamp for count hops (IPv4-only).
    -j host-list   Loose source route along host-list (IPv4-only).
    -k host-list   Strict source route along host-list (IPv4-only).
    -w timeout     Timeout in milliseconds to wait for each reply.
    -R             Use routing header to test reverse route also (IPv6-only).
    -S srcaddr     Source address to use.
    -4             Force using IPv4.
    -6             Force using IPv6.

Ping 程式測試示例

在 Linux 系統下,運行ping 程式,向 www.yahoo.com 發送 5 個測試封包的輸出結果:

$ ping -c 5 www.yahoo.com
PING www.yahoo.com (116.214.12.74) 56(84) bytes of data.
64 bytes from 116.214.12.74: icmp_req=1 ttl=47 time=22.8 ms
64 bytes from 116.214.12.74: icmp_req=2 ttl=47 time=22.3 ms
64 bytes from 116.214.12.74: icmp_req=3 ttl=47 time=22.8 ms
64 bytes from 116.214.12.74: icmp_req=4 ttl=47 time=22.2 ms
64 bytes from 116.214.12.74: icmp_req=5 ttl=47 time=22.2 ms

--- www.yahoo.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4005ms
rtt min/avg/max/mdev = 22.228/22.503/22.853/0.316 ms

程式在完成 ping 檢測之後,輸出了詳細的結果信息。數據往返時間(RTT)為 22.228 ms, 平均時間為 22.503 ms, 最長時間為 22.853 ms,其中測量的誤差為0.316 ms。

其他與 ping 相關的資源