在網路世界裡,ping 這個指令是相當常用的故障排除指令,首先我們先來了解 Ping 的代表意義是什麼?目前最普遍的說法,認為Ping是〝Packet INternet Groper〞的字首母縮寫,另一個說法認為它根本上不是一個字首縮寫,而是一種描述美國海軍的潛水艇用來尋找海底下物體的行為。當潛艇送出聲納波之後,接著便等待接收碰到物體的反射波,藉以判斷物體的方向與距離,原本是描述動作的名詞,到了資訊產業則賦予動詞的意義;對網路管理員而言,Ping 指令用起來就像海軍利用聲納來探索海底下的物體一樣道理。
運作原理:
Ping 指令是診斷網路連線狀態與連線品質,非常簡易好用的工具;此一指令是透過ICMP(Internet Control Message Protocol)協定的Echo功能,來檢查網路連線狀態,詳細說明可參考RFC 792。小型的封包被送到網路上特定的IP 位址,接著就等待回應的封包,如果網路連線沒問題,目標電腦也正常開啟運作,送出端將會收到完好回應封包。Ping 指令也被用來顯示兩端電腦之間的跳站(hop)數目和封包行程所需耗費的時間,以便進一步作為網路故障排除的依據。圖中TTL(Time To Live)由255 開始計數,每經過一個跳站就減一,因此可以計算出來總共經過255-245 = 10 個跳站,至於經過哪些站就需要用到另一個指令Tracert去追蹤,這裡我們不介紹Tracert,還是把焦點鎖在Ping 指令上。Ping 指令在各大作業系統都有支援,以Windows 而言您可以開啟「命令提示字元」功能,直接在視窗裡下指令。
※ 在Windows 2000/XP作業系統裡,是以cmd來開啟「命令提示字元」功能。
使用 Ping 指令期間我們可能收到底下的錯誤訊息:
此訊息表示跳站的數目已超過 TTL預設值,可由下參數方式增加 TTL的預設值來因應,但是不見得能解決問題,因為出現此問題的原因,絕大部分是網路存在路由迴圈所造成,這時就需改用 Tracert 指令來追蹤判斷。
1. TTL Expired in Transmit
2. Destination Host Unreachable
此訊息與路由表有關,因為不存在目標主機的路由路徑,以致於目標主機無法到達,這通常是TCP/IP 設定有問題造成,您如果試著將網路卡停用也會得到此相同訊息,路由表內容可由route print 指令來判讀。
3. Request time out
此訊息表示在指定的時間內並未收到 Echo Reply 的訊息,可能是網路連線品質不佳或目標主機來不及回應,或者根本目標主機已關閉回應機制。
4. Ping request could not find host
此訊息表示無法解析目標主機名稱,請檢查TCP/IP 的DNS 或 WINS 伺服器設定是否正確。
對於Windows下 ping -h 就可以看到指令說明,但是英文看不懂怎麼辦,就看以下的介紹啦!
驗證遠端電腦的連線。只有在安裝 TCP/IP 通訊協定之後,才能使用此指令。
ping [-t] [-a] [-n count] [-l length] [-f] [-i ttl] [-v tos] [-r count] [-s count] [[-j computer-list] | [-k computer-list]] [-w timeout] destination-list
參數
-t
Ping 到指定的電腦,直到插斷發生。
-a
將位址解析為電腦名稱。
-n count
傳送 count 所指定的 ECHO 封包數。預設值為 4。
-l length
傳送內含 length 所指定之資料量的 ECHO 封包。預設值為 32 位元組,最大值為 65,527。
-f
傳送封包中的「Do not Fragment (不分散)」旗標。路由上的閘道不會分散該封包。
-i ttl
將 [存活時間] 欄位設定為 ttl 所指定的值。
-v tos
將 [服務類型] 欄位設定為 tos 所指定的值。
-r count
將輸出封包及傳回封包的路由記錄在 [記錄路由] 欄位中。count 可指定的最小值為 1 台電腦,而最大值為 9 台電腦。
-s count
指定 count 所指定之躍點數的時間戳記。
-j computer-list
利用 computer-list 所指定之電腦清單的路徑來傳送封包。中介閘道可隔開 (鬆散路由來源) 連續的電腦。IP 允許的最大數目為 9。
-k computer-list
利用 computer-list 所指定之電腦清單的路徑來傳送封包。中介閘道 (嚴密路由來源) 無法隔開連續的電腦。IP 允許的最大數目為 9。
-w timeout
指定逾時間隔 (以毫秒計)。
destination-list
指定要 ping 到的遠端電腦。