localhost與127.0.0.1的概念和工作原理之不同
概念:
- localhost:也叫local ,正確的解釋是:本地服務器
- 127.0.0.1:在windows等系統的正確解釋是:本機地址(本機服務器)
工作原理:
- localhot:是不經網卡傳輸的,它不受網絡防火牆和網卡相關的的限制。
- 127.0.0.1:是通過網卡傳輸的,它依賴網卡,並受到網絡防火牆和網卡相關的限制。
文中開頭提到的localhost不能訪問但127.0.0.1可以訪問的問題,究其原因,很可能是localhost訪問時,系統帶的本機當前用戶的權限去訪問,而用ip的時候,等於本機是通過網絡再去訪問本機,可能涉及到網絡用戶的權限。
另外,我們現在也應該明白了一個道理,那就是一般設置程序時本地服務用localhost是最好的,localhost不會解析成IP,也不會佔用網卡、網絡資源。
出現的問題:
一般情況下ping localhost 應該爲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
解決方案一:
修改host文件用記事本打開C:/WINDOWS/system32/drivers/etc/hosts文件,看裏面是否有包含:127.0.0.1 localhost
如果沒有則將其添加進去,host文件部分內容:
# 127.0.0.1 localhost
# ::1 localhost
127.0.0.1localhost
localhost 127.0.0.1
這時候ping localhost可以了,但還是無法打開localhost
解決方案二:
可能是有些程序修改了Winsock,命令行窗口使用 netsh winsock reset 命令修復 Winsock 後重啓計算機即可。