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