Ping是潛水艇人員的專用術(shù)語,表示回應的聲納脈沖,在網(wǎng)絡(luò)中Ping 是一個十分好用的TCP/IP工具。它主要的功能是用來檢測網(wǎng)絡(luò)的連通情況和分析網(wǎng)絡(luò)速度。
Ping有好的善的一面也有惡的一面。先說一下善的一面吧。上面已經(jīng)說過Ping的用途就是用來檢測網(wǎng)絡(luò)的連同情況和分析網(wǎng)絡(luò)速度,但它是通過什么來顯示連通呢?這首先要了解Ping的一些參數(shù)和返回信息。
以下是PING的一些參數(shù):
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
發(fā)送 count 指定的 ECHO 數(shù)據(jù)包數(shù)。默認值為 4。
-l length
發(fā)送包含由 length 指定的數(shù)據(jù)量的 ECHO 數(shù)據(jù)包。默認為 32 字節(jié);最大值是65,527。
-f
在數(shù)據(jù)包中發(fā)送不要分段標志。數(shù)據(jù)包就不會被路由上的網(wǎng)關(guān)分段。
-i ttl
將生存時間字段設(shè)置為 ttl 指定的值。
-v tos
將服務(wù)類型字段設(shè)置為 tos 指定的值。
-r count
在記錄路由字段中記錄傳出和返回數(shù)據(jù)包的路由。count 可以指定最少 1 臺,最多 9 臺計算機。
-s count
指定 count 指定的躍點數(shù)的時間戳。
-j computer-list
利用 computer-list 指定的計算機列表路由數(shù)據(jù)包。連續(xù)計算機可以被中間網(wǎng)關(guān)分隔(路由稀疏源)IP 允許的最大數(shù)量為 9。
-k computer-list
利用 computer-list 指定的計算機列表路由數(shù)據(jù)包。連續(xù)計算機不能被中間網(wǎng)關(guān)分隔(路由嚴格源)IP 允許的最大數(shù)量為 9。
-w timeout
指定超時間隔,單位為毫秒。
destination-list
指定要 ping 的遠程計算機。
Ping的返回信息有Request Timed Out、Destination Net Unreachable和Bad IP address還有Source quench received。
Request Timed Out這個信息表示對方主機可以到達到TIME OUT,這種情況通常是為對方拒絕接收你發(fā)給它的數(shù)據(jù)包造成數(shù)據(jù)包丟失。大多數(shù)的原因可能是對方裝有防火墻或已下線。
Destination Net Unreachable這個信息表示對方主機不存在或者沒有跟對方建立連接。這里要說明一下destination host unreachable和time out的區(qū)別,如果所經(jīng)過的路由器的路由表中具有到達目標的路由,而目標因為其它原因不可到達,這時候會出現(xiàn)time out,如果路由表中連到達目標的路由都沒有,那就會出現(xiàn)destination host unreachable。
Bad IP address 這個信息表示你可能沒有連接到DNS服務(wù)器所以無法解析這個IP地址,也可能是IP地址不存在。
Source quench received信息比較特殊,它出現(xiàn)的機率很少。它表示對方或中途的服務(wù)器繁忙無法回應。
怎樣使用Ping這命令來測試網(wǎng)絡(luò)連通呢?
連通問題是由許多原因引起的,如本地配置錯誤、遠程主機協(xié)議失效等,當然還包括設(shè)備等造成的故障。
首先我們講一下使用Ping命令的步驟。
使用Ping檢查連通性有五個步驟:
1. 使用ipconfig /all觀察本地網(wǎng)絡(luò)設(shè)置是否正確;
2. Ping 127.0.0.1,127.0.0.1 回送地址Ping回送地址是為了檢查本地的TCP/IP協(xié)議有沒有設(shè)置好;
3. Ping本機IP地址,這樣是為了檢查本機的IP地址是否設(shè)置有誤;
4. Ping本網(wǎng)網(wǎng)關(guān)或本網(wǎng)IP地址,這樣的是為了檢查硬件設(shè)備是否有問題,也可以檢查本機與本地網(wǎng)絡(luò)連接是否正常;(在非局域網(wǎng)中這一步驟可以忽略)
5. Ping遠程IP地址,這主要是檢查本網(wǎng)或本機與外部的連接是否正常。
在檢查網(wǎng)絡(luò)連通的過程中可能出現(xiàn)一些錯誤,這些錯誤總的來說分為兩種最常見。
1. Request Timed Out
request time out這提示除了在《PING(一)》提到的對方可能裝有防火墻或已關(guān)機以外,還有就是本機的IP不正確和網(wǎng)關(guān)設(shè)置錯誤。
①、IP不正確:
IP不正確主要是IP地址設(shè)置錯誤或IP地址沖突,這可以利用ipconfig /all這命令來檢查。在WIN2000下IP沖突的情況很少發(fā)生,因為系統(tǒng)會自動檢測在網(wǎng)絡(luò)中是否有相同的IP地址并提醒你是否設(shè)置正確。在NT中不但會出現(xiàn)request time out這提示而且會出現(xiàn)Hardware error這提示信息比較特殊不要給它的提示所迷惑。
②、網(wǎng)關(guān)設(shè)置錯誤:這個錯誤可能會在第四個步驟出現(xiàn)。網(wǎng)關(guān)設(shè)置錯誤主要是網(wǎng)關(guān)地址設(shè)置不正確或網(wǎng)關(guān)沒有幫你轉(zhuǎn)發(fā)數(shù)據(jù),還有就是可能遠程網(wǎng)關(guān)失效。這里主要是在你Ping外部網(wǎng)絡(luò)地址時出錯。錯誤表現(xiàn)為無法Ping外部主機返回信息Request timeout。
2. Destination Host Unreachable
當你在開始PING網(wǎng)絡(luò)計算機時如果網(wǎng)絡(luò)設(shè)備出錯它返回信息會提示destination host unreachable。如果局域網(wǎng)中使用DHCP分配IP時,而碰巧DHCP失效,這時使用 PING命令就會產(chǎn)生此錯誤。因為在DHCP失效時客戶機無法分配到IP系統(tǒng)只有自設(shè)IP,它往往會設(shè)為不同子網(wǎng)的IP。所以會出現(xiàn)Destination Host Unreachable。另外子網(wǎng)掩碼設(shè)置錯誤也會出現(xiàn)這錯誤。
還有一個比較特殊就是路由返回錯誤信息,它一般都會在Destination Host Unreachable前加上IP地址說明哪個路由不能到達目標主機。這說明你的機器與外部網(wǎng)絡(luò)連接沒有問題,但與某臺主機連接存在問題。
#p#副標題#e#
舉個例子吧。
我管理的網(wǎng)絡(luò)有19臺機,由一臺100M集線器連接服務(wù)器,使用DHCP動態(tài)分配IP地址。
有一次有位同事匆忙地告訴我我的OUTLOOK打不開了,我到他機器檢查,首先我檢查了本地網(wǎng)絡(luò)設(shè)置,我用ipconfig /all看IP分配情況一切正常。接著我就開始PING網(wǎng)絡(luò)中的其中一臺機器,第一次PING結(jié)果很正常,但OUTLOOK還是無法使用其它網(wǎng)絡(luò)軟件和Copy網(wǎng)絡(luò)文件都可以使用但網(wǎng)絡(luò)速度很慢,第二次PING我用了一個參數(shù)-t(-t可以不中斷地PING對方,當時我想PING一次可能發(fā)現(xiàn)不了問題)發(fā)現(xiàn)有time=30ms和request time out,從服務(wù)器PING這臺機就更有趣,request time out比正常數(shù)據(jù)還多,在局域中竟然有time=30ms和request time out太不正常了。開始我認為是網(wǎng)卡的問題但換網(wǎng)卡后故障依舊,重做網(wǎng)線還是不能解決問題,這故障真有趣!最后我沒辦法了把它插在集線器端口上的另一端的網(wǎng)線換到另一個端口,哈!故障解決了。原來是集線器端口壞了。
如何用Ping命令來判斷一條鏈路的速度?
Ping這個命令除了可以檢查網(wǎng)絡(luò)的連通和檢測故障以外,還有一個比較有趣的用途,那就是可以利用它的一些返回數(shù)據(jù),來估算你跟某臺主機之間的速度是多少字節(jié)每秒
我們先來看看它有那些返回數(shù)據(jù)。
Pinging 202.105.136.105 with 32 bytes of data:
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=590ms TTL=114
Reply from 202.105.136.105: bytes=32 time=601ms TTL=114
Ping statistics for 202.105.136.105:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 590ms, Maximum = 601ms, Average = 593ms
在例子中bytes=32表示ICMP報文中有32個字節(jié)的測試數(shù)據(jù)(這是估算速度的關(guān)鍵數(shù)據(jù)),time=590ms是往返時間。
怎樣估算鏈路的速度呢?舉個例子吧。我們把A和B之間設(shè)置為PPP鏈路。
從上面的PING例子可以注意到,默認情況下發(fā)送的ICMP報文有32個字節(jié)。除了這32個字節(jié)外再加上20個字節(jié)的IP首部和8個字節(jié)的ICMP首部,整個IP數(shù)據(jù)報文的總長度就是60個字節(jié)(因為IP和ICMP是Ping命令的主要使用協(xié)議,所以整個數(shù)據(jù)報文要加上它們)。另外在使用Ping命令時還使用了另一個協(xié)議進行傳輸,那就是PPP協(xié)議(點對點協(xié)議),所以在數(shù)據(jù)的開始和結(jié)尾再加上8個字節(jié)。在傳輸過程中,由于每個字節(jié)含有8bit數(shù)據(jù)、1bit起始位和1bit結(jié)束位,因此傳輸速率是每個字節(jié)2.98ms。由此我們可以估計需要405ms。即68*2.98*2(乘2是因為我們還要計算它的往返時間)。
#p#副標題#e#
我們來測試一下33600 b/s的鏈路:
Pinging 202.105.36.125 with 32 bytes of data:
Reply from 202.105.36.125: bytes=32 time=415ms TTL=114
Reply from 202.105.36.125: bytes=32 time=415ms TTL=114
Reply from 202.105.36.125: bytes=32 time=415ms TTL=114
Reply from 202.105.36.125: bytes=32 time=421ms TTL=114
Ping statistics for 202.105.36.125:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 415ms, Maximum = 421ms, Average = 417ms
看是不是差不多啊。^_^
這里大家可能要注意到,這估算值跟實際值是有誤差的,為什么呢?因為我們現(xiàn)在估算的是一個理論值,還有一些東西我們沒有考慮。比如在網(wǎng)絡(luò)中的其它干擾,這些干擾主要來之別的計算機。因為在你測試時不可能全部計算機停止使用網(wǎng)絡(luò)給你做測試,這是不實際的。另外就是傳輸設(shè)備,因為有某些設(shè)備如MODEM它在傳輸時會把數(shù)據(jù)壓