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