使用 Linux 的 ping 命令診斷網(wǎng)絡連接問題
如今,聯(lián)網(wǎng)計算機變得十分普遍,以至于我們大多數(shù)人都理所當然地認為,房間一側的計算機可以連接上房間另一側的計算機,更不用說能連接上世界的另一端的計算機了。如此,網(wǎng)絡使互聯(lián)網(wǎng)、云、文件共享、媒體流、遠程管理、打印等服務成為可能。但是當網(wǎng)絡出現(xiàn)問題時,有時很難診斷到底是其中哪一環(huán)節(jié)出現(xiàn)了問題。下面,我們就來介紹:網(wǎng)絡連接最基本的診斷工具之一—— ??ping?
? 命令。
基本的 ping 命令
當你無法訪問本地網(wǎng)絡上的計算機或互聯(lián)網(wǎng)上的服務器時,你可以 ??ping?
? 它的 IP 地址。??ping?
? 將 互聯(lián)網(wǎng)控制報文協(xié)議Internet Control Message Protocol(ICMP)數(shù)據(jù)包發(fā)送到目標 IP 地址。當我們要對網(wǎng)路連接狀況進行判斷時,ICMP 是個非常有用的協(xié)議,本質上 ICMP 是一個響應和應答信號。
讓我們由近及遠地進行故障排除。請先 ??ping?
? 你自己的計算機,以確保你的計算機正在運行 網(wǎng)絡棧networking stack。你正在操作的計算機稱為 主機localhost,本地回環(huán)地址是:??127.0.0.1?
?。
??ping?
? 命令能用主機的 主機名 hostname、IP 地址(即 ??127.0.0.1?
?)或者僅僅用簡寫 ??0?
? 來表示 “主機”。
你可以使用 ??-c?
? 選項,來控制發(fā)送數(shù)據(jù)包的 次數(shù)count。
在你確認本地網(wǎng)絡棧已啟動并運行后,接下來,你可以 ??ping?
? 你的路由器的 IP 地址。路由器的 IP 地址通常以 ??192.168?
? 或 ??10?
? 開頭。實際的 IP 地址取決于路由器的配置。
當你沒有指定要發(fā)送多少次請求時,你可以用 ??Ctrl+C?
?,來終止 ??ping?
? 的運行。
如果你能 ??ping?
? 通路由器,則表示你的有線或無線連接能正常工作。
對于你的局域網(wǎng)上的其他主機呢?你可以 ??ping?
? 各種設備,但是并非所有設備都能保證響應,因為一些設備會丟棄 ICMP 數(shù)據(jù)包,但許多設備會做出響應。例如,我可以 ??ping?
? 我的打印機:
ping 路由器以外的其他服務器
在確定你自己的網(wǎng)絡內部都能連通以后,你還可以 ??ping?
? 通到路由器以外的其他服務器。同樣地,并非所有服務器都能接收 ICMP 數(shù)據(jù)包,更不用說響應 ICMP 數(shù)據(jù)包了。然而,也有一些服務器可以接收并響應 ICMP 數(shù)據(jù)包,而在互聯(lián)網(wǎng)中的一個重要服務器是 域名服務器nameserver。
谷歌的 域名解析服務器DNS server的 IP 地址很容易記住,而且它會響應 ??ping?
? 請求:
當你連不上一個網(wǎng)站時,你可以查詢全球 DNS 網(wǎng)絡,以找出其主機服務器的地址,然后 ??ping?
? 該服務器。這至少可以告訴你,網(wǎng)站不通的原因是主機已關閉,或者只是 Web 服務器問題。
例如,假設你嘗試訪問 ??example.com?
?,但是發(fā)現(xiàn)失敗了。首先,使用 ??host?
? 命令找到 ??example.com?
? 的 IP 地址:
然后,??ping?
? 該網(wǎng)站的的 IP 地址:
使用 IPv6
??ping?
? 不僅可以使用 IPv4,還能使用 IPv6。可以通過指定 ??-4?
? 或 ??-6?
? 選項,來只使用 IPv4 或 IPv6。
設置數(shù)據(jù)包大小
你可以使用 ??-s?
? 選項,來更改要發(fā)送的 ICMP 數(shù)據(jù)包的 大小size。默認的數(shù)據(jù)大小為 56 字節(jié),加上 8 字節(jié)包頭,總共得到 64 字節(jié)的 ICMP 數(shù)據(jù)包。以下的示例將發(fā)送的 ICMP 數(shù)據(jù)包大小修改為 35+8=43 個字節(jié):
你可以使用 ??-D?
? 選項,使得在終端中的每個 ??ping?
? 回復之前,先打印出當前的時間戳。該時間戳為 UNIX 時間戳,加上微秒:
設置時間間隔/長短
你可以使用 ??-i?
? 選項,來更改兩次 ??ping?
? 請求之間的 時間間隔interval。以下的示例將 ??ping?
? 間隔更改為 2 秒:
你也可以使用 ??-w?
? 選項,來在一段時間后終止 ??ping?
?,單位為秒。
ping 的變體
??ping?
? 有很多變體。例如,??iputils?
? 包提供了 ??ping?
? 命令;??Busybox?? 也有??ping?
? 命令;BSD 也有;甚至還有一個圖形界面的 ??ping?
?:??gping?
?,它可用于 Linux、macOS 和 Windows。你可以在 ??GitHub?? 上找到更多有關 ??gping?
? 的信息。
一起來學習吧
??ping?
? 命令很簡單,但它可以幫你診斷網(wǎng)絡連接問題。下次再遇到網(wǎng)絡連接問題時,讓 ??ping?
? 命令成為你解決問題的第一個工具吧。