ping的原理
一、什么是 PING
DOS 命令,一般用于檢測網絡通與不通 ,也叫時延,其值越大,速度越慢 PING (Packet Internet Grope),因特網包探索器,用于測試網絡連接量的程序。Ping 發 送一個 ICMP 回聲請求消息給目的地并報告是否收到所希望的 ICMP 回聲應答。
它是用來檢查網絡是否通暢或者網絡連接速度的命令。作為一個生活在網絡上的管理員或者黑客來說,ping 命令是第一個必須掌握的 DOS 命令,它所利用的原理是這樣的:網絡上的機器都有唯一確定的 IP 地址,我們給目標 IP 地址發送一個數據包,對方就要返回一個同樣大小的數據包, 根據返回的數據包我們可以確定目標主機的存在,可以初步判斷目標主機的操作系統等。
Ping 是 Windows 系列自帶的一個可執行命令。利用它可以檢查網絡是否能夠連通,用 好它可以很好地幫助我們分析判定網絡故障。應用格式:Ping IP 地址。該命令還可以加許多參數使用,具體是鍵入Ping 按回車即可看到詳細說明。ping 指的是端對端連通,通常用來作為可用性的檢查, 但是某些病毒木馬會強行大量遠程執行 ping 命令搶占你的網絡資源,導致系統變慢,網速變慢。嚴禁 ping 入侵作為大多數防火墻的一個基本功能提供給用戶進行選擇。通常的情況下你如果不用作服務器或者進行網絡測試,可以放心的選中它,保護你的電腦。
二、PING的工作流程
我們以下面一個網絡為例:有 A、B、C、D 四臺機子,一臺路由 RA,子網掩碼均為 255.255.255.0,默認路由為 192.168.0.1 [1]
1.在同一網段內
在主機 A 上運行“Ping 192.168.0.5”后,都發生了些什么呢?
首先,Ping 命令會構建一個固定格式的 ICMP 請求數據包, 然后由 ICMP 協議將這個數據包連同地址“192.168.0.5”一起交給IP 層協議(和 ICMP 一樣,實際上是一組后臺運行的進程),IP 層協議將以地址 “192.168.0.5”作為目的地址,本機 IP地址作為源地址,加上一些其他的控制信息,構建一 個 IP數據包,并想辦法得到 192.168.0.5 的MAC 地址(物理地址,這是數據鏈路層協議構建數據鏈路層的傳輸單元——幀所必需的),以便交給數據鏈路層構建一個數據幀。關鍵就在這里,IP 層協議通過機器 B 的 IP 地址和自己的子網掩碼,發現它跟自己屬同一網絡,就直接在本網絡內查找這臺機器的 MAC,如果以前兩機有過通信,在 A 機的 ARP 緩存表應該有 B機IP與其 MAC 的映射關系,如果沒有,就發一個 ARP 請求廣播,得到 B 機的 MAC,一并交給數據鏈路層。后者構建一個數據幀,目的地址是 IP 層傳過來的物理地址,源地址則是本機的物理地址,還要附加上一些控制信息,依據以太網的介質訪問規則,將它們傳送出去。主機B收到這個數據幀后,先檢查它的目的地址,并和本機的物理地址對比,如符合, 則接收;否則丟棄。接收后檢查該數據幀,將 IP 數據包從幀中提取出來,交給本機的 IP 層協議。同樣,IP層檢查后,將有用的信息提取后交給 ICMP 協議,后者處理后,馬上構建 一個ICMP應答包,發送給主機 A,其過程和主機 A 發送 ICMP 請求包到主機 B一模一樣。
2.不在同一網段內
在主機 A 上運行“Ping 192.168.1.4”后,開始跟上面一樣,到了怎樣得到 MAC 地址時,IP 協議通過計算發現 D 機與自己不在同一網段內,就直接將交由路由處理,也就是將路由的 MAC 取過來,至于怎樣得到路由的 MAC,跟上面一樣,先在 ARP 緩存表找,找不到就廣 播吧。路由得到這個數據幀后,再跟主機 D 進行聯系,如果找不到,就向主機 A 返回一個 超時的信息。
三、PING 測試
1.Ping 本機IP
例如本機 IP 地址為:172.168.200.2。則執行命令 Ping 172.168.200.2。如果網卡安裝配 置沒有問題,則應有類似下列顯示:Replay from 172.168.200.2 bytes=32 time<10ms Ping statistics for 172.168.200.2 Packets Sent=4 Received=4 Lost=0 0% loss Approximate round trip times in milli-seconds Minimum=0ms Maxiumu=1ms Average=0ms 如果在 MS-DOS 方式下執行此命令顯示內容為:Request timed out,則表明網卡安裝或 配置有問題。將網線斷開再次執行此命令,如果顯示正常,則說明本機使用的 IP 地址可能 與另一臺正在使用的機器 IP 地址重復了。如果仍然不正常,則表明本機網卡安裝或配置有 問題,需繼續檢查相關網絡配置。
2.Ping 網關 IP
假定網關 IP 為:172.168.6.1,則執行命令 Ping 172.168.6.1。在 MS-DOS 方式下執行此命令,如果顯示類似以下信息:Reply from 172.168.6.1 bytes=32 time=9ms TTL=255 Ping statistics for 172.168.6.1 Packets Sent=4 Received=4 Lost=0 Approximate round trip times in milli-seconds Minimum=1ms Maximum=9ms Average=5ms 則表明局域網中的網關路由器正在正常運行。反之,則說明網關有問題。
3.Ping 遠程
IP 這一命令可以檢測本機能否正常訪問 Internet。比如江蘇電信運營商的 IP 地址為:202.102.48.141。在 MS-DOS 方式下執行命令:Ping 202.102.48.141,如果屏幕顯示:
Reply from 202.102.48.141 bytes=32 time=33ms TTL=252
Reply from 202.102.48.141 bytes=32 time=21ms TTL=252
Reply from 202.102.48.141 bytes=32 time=5ms TTL=252
Reply from 202.102.48.141 bytes=32 time=6ms TTL=252
Ping statistics for 202.102.48.141
Packets Sent=4 Received=4 Lost=0 0% loss
Approximate round trip times in milli-seconds
Minimum=5ms Maximum=33ms Average=16ms
則表明運行正常,能夠正常接入互聯網。反之,則表明主機文件(windows/host)存在問 題。
對于 Windows 下 ping 命令相信大家已經再熟悉不過了,但是能把 ping 的功能發揮到最大的人卻并不是很多,當然我也并不是說我可以讓 ping 發揮最大的功能,我也只不過經常 用 ping 這個工具,也總結了一些小經驗,現在和大家分享一下。
此參數沒有什么其他技巧。
ping 命令的其他技巧:在一般情況下還可以通過 ping 對方讓對方返回給你的 TTL 值大小, 粗略的判斷目標主機的系統類型是Windows 系列還是 UNIX/Linux 系列,一般情況下Windows 系列的系統返回的 TTL 值在 100-130 之間,UNIX/Linux 系列的系統返回的 TTL 而 值在 240-255 之間,當然 TTL 的值在對方的主機里是可以修改的,Windows 系列的系統可以通過修改注冊表以下鍵值實現:
[HKEY_LOCAL_MACHINE\sys tem\CurrentControlSet\Services\Tcpip\ Parameters]
"DefaultTTL"=dword:000000ff
255---FF
128---80
64----40
32----20
Ping 是個使用頻率極高的網絡診斷程序, 用于確定本地主機是否能與另一臺主機交換 (發送與接收)數據報。根據返回的信息,你就可以推斷 TCP/IP 參數是否設置得正確以及運行是否正常。需要注意的是:成功地與另一臺主機進行一次或兩次數據報交換并不表示 TCP/IP 配置就是正確的,你必須執行大量的本地主機與遠程主機的數據報交換,才能確信 TCP/IP 的正確性。
Ping 的返回信息有"Request Timed Out"、"Destination Net Unreachable"和"Bad IP address"還有"Source quench received"。
(1)"Request Timed Out"這個信息表示對方主機可以到達到 TIME OUT,這種情況通常是為對方拒絕接收你發給它的數據包造成數據包丟失。大多數的原因可能是對方裝有防火墻或已下線。
(2)"Destination Net Unreachable"這個信息表示對方主機不存在或者沒有跟對方建立連接。這里要說明一下"destination host unreachable"和"time out"的區別,如果所經過的路由器的路由表中具有到達目標的路由,而目標因為其它原因不可到達,這時候會出現"time out", 如果路由表中連到達目標的路由都沒有,那就會出現"destination host unreachable"。
(3)"Bad IP address" 這個信息表示你可能沒有連接到 DNS 服務器所以無法解析這個IP地址,也可能是IP地址不存在。
(4)"Source quench received"信息比較特殊,它出現的機率很少。它表示對方或中途的服務 器繁忙無法回應。
怎樣使用 Ping 這命令來測試網絡連通呢?
連通問題是由許多原因引起的,如本地配置錯誤、遠程主機協議失效等,當然還包括設備等造成的故障。
首先我們講一下使用 Ping 命令的步驟。
使用 Ping 檢查連通性有六個步驟:
(1)使用 ipconfig /all 觀察本地網絡設置是否正確;
(2)Ping 127.0.0.1,127.0.0.1 回送地址 Ping 回送地址是為了檢查本地的 TCP/IP 協議有沒有設置好;
(3)Ping 本機 IP 地址,這樣是為了檢查本機的 IP 地址是否設置有誤;
(4) Ping 本網網關或本網 IP 地址,這樣的是為了檢查硬件設備是否有問題,也可以檢查本機與本地網絡連接是否正常;(在非局域網中這一步驟可以忽略)
(5)Ping 本地 DNS 地址,這樣做是為了檢查 DNS 是否能夠將 IP。
(6)Ping 遠程 IP 地址,這主要是檢查本網或本機與外部的連接是否正常。
在檢查網絡連通的過程中可能出現一些錯誤,這些錯誤總的來說分為兩種最常見。
1. Request Timed Out "request time out"這提示除了在《PING(一)》提到的對方可能裝有防火墻或已關機以外,還有就是本機的IP不正確和網關設置錯誤。
① IP 不正確:IP 不正確主要是 IP 地址設置錯誤或 IP 地址沖突, 這可以利用 ipconfig /all 這命令來檢查。在 WIN2000等更高版本系統下沖突的情況很少發生,因為系統會自動檢測在網絡中是否有相同的 IP 地 址并提醒你是否設置正確。在 NT 中不但會出現"request time out"這提示而且會出現 "Hardware error"這提示信息比較特殊不要給它的提示所迷惑。
② 網關設置錯誤:這個錯誤可能會在第四個步驟出現。網關設置錯誤主要是網關地址設置不正確或網關沒有幫你轉發數據,還有就是可能遠程網關失效。這里主要是在你 Ping 外部網絡地址時出錯。錯誤表現為無法 Ping 外部主機返回信息"Request timeout"。
2. Destination Host Unreachable
當你在開始 PING 網絡計算機時如果網絡設備出錯它返回信息會提示"destination host unreachable"。如果局域網中使用 DHCP 分配 IP 時,而碰巧 DHCP 失效,這時使用 PING 命令就會產生此錯誤。因為在 DHCP 失效時客戶機無法分配到 IP 系統只有自設 IP, 它往往 會設為不同子網的 IP。所以會出現"Destination Host Unreachable"。另外子網掩碼設置錯 誤也會出現這錯誤。
還有一個比較特殊就是路由返回錯誤信息, 它一般都會在"Destination Host Unreachable" 前加上 IP 地址說明哪個路由不能到達目標主機。這說明你的機器與外部網絡連接沒有問題, 但與某臺主機連接存在問題。
五、PING 的各類反饋信息 Request timed out
a.對方已關機, 或者網絡上根本沒有這個地址:比如在上圖中主機 A 中 PING 192.168.0.7 , 或者主機 B 關機了,在主機 A 中 PING 192.168.0.5 都會得到超時的信息。
b.對方與自己不在同一網段內,通過路由也無法找到對方,但有時對方確實是存在的,當 然不存在也是返回超時的信息。
c.對方確實存在,但設置了 ICMP 數據包過濾(比如防火墻設置) 怎樣知道對方是存在,還是不存在呢,可以用帶參數 -a的 Ping 命令探測對方,如果能 得到對方的 NETBIOS 名稱,則說明對方是存在的,是有防火墻設置,如果得不到,多半是 對方不存在或關機,或不在同一網段內。
d.錯誤設置 IP 地址正常情況下,一臺主機應該有一個網卡,一個IP地址,或多個網卡,多個IP 地址(這些 地址一定要處于不同的 IP 子網)。但如果一臺電腦的“撥號網絡適配器”(相當于一塊軟網 卡)的 TCP/IP 設置中,設置了一個與網卡 IP 地址處于同一子網的 IP 地址,這樣,在 IP 層協議看來,這臺主機就有兩個不同的接口處于同一網段內。當從這臺主機 Ping 其他的機 器時,會存在這樣的問題:
A.主機不知道將數據包發到哪個網絡接口,因為有兩個網絡接口都連接在同一網段。
B.主機不知道用哪個地址作為數據包的源地址。因此,從這臺主機去 Ping 其他機器,IP 層協議會無法處理,超時后,Ping 就會給出一個“超時無應答”的錯誤信息提示。但從其他 主機 Ping 這臺主機時,請求包從特定的網卡來,ICMP 只須簡單地將目的、源地址互換, 并更改一些標志即可,ICMP 應答包能順利發出,其他主機也就能成功 Ping 通這臺機器了。
Destination host Unreachable
對方與自己不在同一網段內,而自己又未設置默認的路由,比如上例中 A 機中不設定默 認的路由,運行 Ping 192.168.0.1.4 就會出現“Destination host Unreachable”。
網線出了故障
這里要說明一下“destination host unreachable”和 “time out”的區別,如果所經過的路由 器的路由表中具有到達目標的路由,而目標因為其他原因不可到達,這時候會出現“time out”,如果路由表中連到達目標的路由都沒有,那就會出現“destination host unreachable”。
Bad IP address
這個信息表示您可能沒有連接到 DNS 服務器,所以無法解析這個 IP 地址,也可能是 IP 地址不存在。
Source quench received 這個信息比較特殊,它出現的機率很少。它表示對方或中途的服務器繁忙無法回應。
Unknown host——不知名主機 這種出錯信息的意思是,該遠程主機的名字不能被域名服務器(DNS)轉換成 IP 地址。故障原因可能是域名服務器有故障, 或者其名字不正確, 或者網絡管理員的系統與遠程主機 之間的通信線路有故障。
No answer——無響應 這種故障說明本地系統有一條通向中心主機的路由, 但卻接收不到它發給該中心主機的任 何信息。故障原因可能是下列之一:中心主機沒有工作;本地或中心主機網絡配置不正確;本地或中心的路由器沒有工作;通信線路有故障;中心主機存在路由選擇問題。
Ping 127.0.0.1:127.0.0.1 是本地循環地址
如果本地址無法 Ping 通,則表明本地機 TCP/IP 協議不能正常工作。
no rout to host:網卡工作不正常。
transmit failed,error code:10043 網卡驅動不正常。
unknown host name:DNS 配置不正確。