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