localhost、127.0.0.1和0.0.0.0和本機IP的區別


localhost
localhost其實是域名,一般windows系統默認將localhost指向127.0.0.1,但是localhost並不等於127.0.0.1,localhost指向的IP地址是可以配置的
 
127.0.0.1
首先我們要先知道一個概念,凡是以127開頭的IP地址,都是回環地址(Loop back address),其所在的回環接口一般被理解為虛擬網卡,並不是真正的路由器接口。
所謂的回環地址,通俗的講,就是我們在主機上發送給127開頭的IP地址的數據包會被發送的主機自己接收,根本傳不出去,外部設備也無法通過回環地址訪問到本機。
 
小說明:正常的數據包會從IP層進入鏈路層,然后發送到網絡上;而給回環地址發送數據包,數據包會直接被發送主機的IP層獲取,后面就沒有鏈路層他們啥事了。
而127.0.0.1作為{127}集合中的一員,當然也是個回環地址。只不過127.0.0.1經常被默認配置為localhost的IP地址。
一般會通過ping 127.0.0.1來測試某台機器上的網絡設備是否工作正常。
 
0.0.0.0
首先,0.0.0.0是不能被ping通的。在服務器中,0.0.0.0並不是一個真實的的IP地址,它表示本機中所有的IPV4地址。監聽0.0.0.0的端口,就是監聽本機中所有IP的端口。
 
本機IP
本機IP通常僅指在同一個局域網內,能同時被外部設備訪問和本機訪問的那些IP地址(可能不止一個)。像127.0.0.1這種一般是不被當作本機IP的。本機IP是與具體的網絡接口綁定的,比如以太網卡、無線網卡或者PPP/PPPoE撥號網絡的虛擬網卡,想要正常工作都要綁定一個地址,否則其他設備就不知道如何訪問它。
 
 

localhost
首先 localhost 是一個域名,在過去它指向 127.0.0.1 這個IP地址。在操作系統支持 ipv6 后,它同時還指向ipv6 的地址 [::1] 
在 Windows 中,這個域名是預定義的,從 hosts 文件中可以看出:
# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost
# ::1 localhost
 
而在 Linux 中,其定義位於 /etc/hosts 中:
127.0.0.1 localhost
 
注意這個值是可修改的,比如把它改成
192.068.206.1 localhost
 
然后再去 ping localhost,提示就變成了
PING localhost (192.168.206.1) 56(84) bytes of data.
 
127.0.0.1
127.0.0.1 這個地址通常分配給 loopback 接口。loopback 是一個特殊的網絡接口(可理解成虛擬網卡),用於本機中各個應用之間的網絡交互。只要操作系統的網絡組件是正常的,loopback 就能工作。Windows 中看不到這個接口,Linux中這個接口叫 lo:
#ifconfig
eth0 Link encap:Ethernet hwaddr 00:00:00:00:00:00
  inet addr :192.168.0.1 Bcase:192.168.0.255 Mask:255.255.255.0
  ......
lo     Link encap:Local Loopback
  inetaddr: 127.0.0.1 Mask: 255.0.0.0
       ......
 
可以看出 lo 接口的地址是 127.0.0.1。事實上整個 127.* 網段都算能夠使用,比如你 ping 127.0.0.2 也是通的。 
但是使用127.0.0.1作為loopback接口的默認地址只是一個慣例,比如下面這樣:
#ifconfig lo 192.168.128.1
#ping localhost  #糟糕,ping不通了
#ping 192.128.128.1 # 可以通
#ifconfig lo
lo  Link encap:Local Loopback
  inetaddr: 192.168.128.1 Mask: 255.255.255.0
     ......
 
如果隨便改這些配置,可能導致很多只認 127.0.0.1 的軟件掛掉。
 
本機IP
確切地說,“本機地址”並不是一個規范的名詞。通常情況下,指的是“本機物理網卡所綁定的網絡協議地址”。由於目前常用網絡協議只剩下了IPV4,IPX/Apple Tak消失了,IPV6還沒普及,所以通常僅指IP地址甚至ipv4地址。一般情況下,並不會把 127.0.0.1當作本機地址——因為沒必要特別說明,大家都知道。 
本機地址是與具體的網絡接口綁定的。比如以太網卡、無線網卡或者PPP/PPPoE撥號網絡的虛擬網卡,想要正常工作都要綁定一個地址,否則其他設備就不知道如何訪問它。
● localhost 是個域名,不是地址,它可以被配置為任意的 IP 地址,不過通常情況下都指向 127.0.0.1(ipv4)和  ::1 
● 整個127.* 網段通常被用作 loopback 網絡接口的默認地址,按慣例通常設置為 127.0.0.1。這個地址在其他計算機上不能訪問,就算你想訪問,訪問的也是自己,因為每台帶有TCP/IP協議棧的設備基本上都有 localhost/127.0.0.1。 
● 本機地址通常指的是綁定在物理或虛擬網絡接口上的IP地址,可供其他設備訪問到。 
● 最后,從開發度來看 
○ localhost是個域名,性質跟 “www.baidu.com” 差不多。不能直接綁定套接字,必須先gethostbyname轉成IP才能綁定。 
○ 127.0.0.1 是綁定在 loopback 接口上的地址,如果服務端套接字綁定在它上面,你的客戶端程序就只能在本機訪問


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM