基本介紹
Ping是一個網絡命令,主要是檢測網絡的,它用于确定本地主機是否能與另一台主機交換(發送與接收)數據。根據返回的信息,你就可以推斷TCP/IP參數是否設置得正确以及運行是否正常。按照缺省設置,Windows上運行的Ping命令發送4個ICMP(網間控制報文協議)回送請求,每個32字節數據,如果一切正常,你應能得到4個回送應答。Ping能夠以毫秒為單位顯示發送回送請求到返回回送應答之間的時間量。如果應答時間短,表示數據報不必通過太多的路由器或網絡連接速度比較快
流程介紹
假定主機A的IP地址是192.168.1.1,主機B的IP地址是192.168.1.2,都在同一子網内,則當你在主機A上行“Ping192.168.1.2”後都發生了些什麼呢?首先,Ping命令會構建一個固定格式的ICMP請求數據包,然後由ICMP協議将這個數據包連址“192.168.1.2”一起交給IP層協議(和ICMP一樣,實際上是一組後台運行的進程),IP層協議将以地址“192.168.1.2”作為目的地址,本機IP地址作為地址,加上一些其他的控制信息,構建一個IP數據包,并在一個映射表中查找出IP地址192.168.1.2所對應的物理地址(也叫MAC地址,熟悉網卡配置的朋友不會陌生,這是數據鍊路層協議構建數據鍊路層的傳輸單元——幀所必需的),一并交給數據鍊路層。
後者構建一個數據幀,目的地址是IP層傳過來的物理地址,源地址則是本機的物理地址,還要附加上一些控制信息,依據以太網的介質訪問規則,将它們傳送出去。主機B收到這個數據幀後,先檢查它的目的地址,并和本機的物理地址對比,如符合,則接收;否則丢棄。接收後檢查該數據幀,将IP數據包從幀中提取出來,交給本機的IP層協議。同樣,IP層檢查後,将有用的信息提取後交給ICMP協議,後者處理後,馬上構建一個ICMP應答包,發送給主機A,其過程和主機A發送ICMP請求包到主機B一模一樣。從Ping的工作過程,我們可以知道,主機A收到了主機B的一個應答包,說明兩台主機之間的去、回通路均正常。也就是說,無論從主機A到主機B,還是從主機B到主機A,都是正常的。那麼,是什麼原因引起隻能單方向Ping通的呢?這是由于電子的反向性質,導緻電磁頻段無法相互聯通。
安裝了個人防火牆
在共享上網的機器中,出于安全考慮,大部分作為服務器的主機都安裝了個人防火牆軟件,而其他作為客戶機的機器則一般不安裝。幾乎所有的個人防火牆軟件,默認情況下是不允許其他機器Ping本機的。一般的做法是将來自外部的ICMP請求報文濾掉但它卻對本機出去的ICMP請求報文,以及來自外部的ICMP應答報文不加任何限制。這樣,從本機Ping其他機器時,如果網絡正常,就沒有問題。但如果從其他機器Ping這台機器,即使網絡一切正常,也會出現“超時無應答”的錯誤。
大部分的單方向Ping通現象源于此。解決的辦法也很簡單,根據你自己所用的不同類型的防火牆,調整相應的設置即可。