|
|
|
|
|
有時候我們在調(diào)試程序的時候,會出現(xiàn)一些莫名其妙匪夷所思的奇怪問題,localhost不能訪問但127.0.0.1可以訪問的問題就是其中之一。
我估計大多數(shù)人都不會去想localhost到底與127.0.0.1有什么不同,就比如我,有時候用http://localhost/來訪問本地服務(wù)器網(wǎng)頁,有時則用http://127.0.0.1/來訪問,我覺得他們是通用的表示本地服務(wù)器的兩個不同的寫法而已,就好比一個網(wǎng)頁可以通過域名來訪問也可以通過IP來訪問一樣,localhost代表的是域名,而127.0.0.1則代表IP地址。
我的理解對不對呢?我們現(xiàn)在來看看更專業(yè)的解讀吧。
localhost與127.0.0.1的概念和工作原理之不同
要比較兩個東西有什么不同,首先要弄清兩者的概念。所以,我們從概念開始。
localhost:也叫l(wèi)ocal ,正確的解釋是:本地服務(wù)器
127.0.0.1:在windows等系統(tǒng)的正確解釋是:本機(jī)地址(本機(jī)服務(wù)器)
一個是“本地”,一個是“本機(jī)”。不過從這兩個詞來看,還是不能比較兩者的區(qū)別。我們再看看他們的工作原理。
localhot:是不經(jīng)網(wǎng)卡傳輸?shù)?,它不受網(wǎng)絡(luò)防火墻和網(wǎng)卡相關(guān)的的限制。
127.0.0.1:是通過網(wǎng)卡傳輸?shù)模蕾嚲W(wǎng)卡,并受到網(wǎng)絡(luò)防火墻和網(wǎng)卡相關(guān)的限制。
通過上述概念和工作原理的比較,我想現(xiàn)在大家都心里有譜了吧,知道localhost與127.0.0.1有什么不同了。文中開頭提到的localhost不能訪問但127.0.0.1可以訪問的問題,究其原因,很可能是localhost訪問時,系統(tǒng)帶的本機(jī)當(dāng)前用戶的權(quán)限去訪問,而用ip的時候,等于本機(jī)是通過網(wǎng)絡(luò)再去訪問本機(jī),可能涉及到網(wǎng)絡(luò)用戶的權(quán)限。
另外,我們現(xiàn)在也應(yīng)該明白了一個道理,那就是一般設(shè)置程序時本地服務(wù)用localhost是最好的,localhost不會解析成IP,也不會占用網(wǎng)卡、網(wǎng)絡(luò)資源。
localhost不能訪問127.0.0.1可以訪問的解決方案
一般情況下ping localhost 應(yīng)該為127.0.0.1 ,但是有時會出來下面這個東西:
>ping localhost
reply from ::1: times<1ms
reply from ::1: times<1ms
reply from ::1: times<1ms
地址根本不是“127.0.0.1”,而是“::1:”
>ping 127.0.0.1 正常
reply from 127.0.0.1 : bytes=32 times<1ms
reply from 127.0.0.1 : bytes=32 times<1ms
reply from 127.0.0.1 : bytes=32 times<1ms
♦原因分析:
IPV6協(xié)議將127.0.0.1解析為 ::1 (127.0.0.1 ipv6的形式)
Vista開始菜單中輸入cmd回車后打開命令提示符,輸入ping localhost默認(rèn)的就會出現(xiàn)返回的數(shù)據(jù)包并不是127.0.0.1而是::1。這就是Ipv6格式的本地地址,
♦解決方案1:
修改host文件用記事本打開C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:
127.0.0.1 localhost
如果沒有則將其添加進(jìn)去,再查看能否訪問localhost。
host文件部分內(nèi)容
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1localhost
localhost 127.0.0.1
♦解決方案2:
1、打開Internert信息管理查看IIS是否啟動,且默認(rèn)網(wǎng)站時候已經(jīng)開啟;
2、打開http://127.0.0.1/ 看是否能訪問IIS的默認(rèn)網(wǎng)頁,能訪問則說明IIS已經(jīng)成功安裝到電腦上,可能是無法解析localhost;
3、開始--命令(cmd)--ping localhost,看是否能ping通,從127.0.0.1上返回信息,如果成功則說明可以解析localhost;
4、如果上一步不成功,則用記事本打開C:/WINDOWS/system32/drivers/etc/hosts文件,看里面是否有包含:127.0.0.1 localhost ,如果沒有則將其添加進(jìn)去,再查看能否訪問localhost。
5、嘗試將網(wǎng)站的主目錄指向另一個目錄或新建一個虛擬目錄,并在該新目錄創(chuàng)建一個新的網(wǎng)頁文件,如index.html,然后將其加到默認(rèn)網(wǎng)站的"文檔"項中作為默認(rèn)訪問的網(wǎng)頁,重新輸入網(wǎng)址:http://localhost/,看否能訪問。
6、還是不行的話將IIS卸載掉,重新再安裝一次。
♦解決問題的思路:
1、ping一下localhost,這個是關(guān)鍵,看看是否能ping通,然后看解析到那個ip地址下去了
2、然后查看本機(jī)的hosts文件,看看是否有被修改,如果被修改,就改回正常的模式
3、解決問題本質(zhì),ipconfig看看網(wǎng)絡(luò)是否正常,如果不正常就進(jìn)行修復(fù)
4、用殺毒軟件或者360等修復(fù)軟件進(jìn)行掃描,看看是否存在惡意插件或者病毒,然后清除,一勞永逸!
5、多動腦,想辦法解決問題,善于用搜索引擎。