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