1. 程式人生 > >127.0.0.1和localhost和本機IP三者的區別!

127.0.0.1和localhost和本機IP三者的區別!

操作系統初始化 判斷 con 發送 cal /etc drive self 下層

1,

先來說下回送地址(Loopback Address):

回送地址是主機用於向自身發送通信的一個特殊地址(也就是一個特殊的目的地址)。
可以這麽說:同一臺主機上的兩項服務若使用回送地址而非分配的主機地址,就可以繞開TCP/IP協議棧的下層。(也就是說:不用再通過什麽鏈路層,物理層,以太網傳出去了,而是可以直接在自己的網絡層,傳輸層進行處理了)

IPv4的回送地址為:127.0.0.0到127.255.255.255都是回送地址(只是有兩個特殊的保留),此地址中的任何地址都不會出現在網絡中
網絡號為127的地址根本就不是一個網絡地址(因為產生的IP數據報就不會到達外部網絡接口中,是不離開主機的包)

當操作系統初始化本機的TCP/IP協議棧時,設置協議棧本身的IP地址為127.0.0.1(保留地址),並註入路由表。當IP層接收到目的地址為127.0.0.1(準確的說是:網絡號為127的IP)的數據包時,不調用網卡驅動進行二次封裝,而是立即轉發到本機IP層進行處理,由於不涉及底層操作。因此,ping 127.0.0.1一般作為測試本機TCP/IP協議棧正常與否的判斷之一。

所以說:127.0.0.1是保留地址之一,只是被經常的使用,來檢驗本機TCP/IP協議棧而已,我們可以Ping回送地址。通常如果回送地址Ping不通,就說明IP堆棧出了故障。如果通的話,表明網絡出了問題。

2,

localhost首先是一個域名(如同:www.baidu.com),也是本機地址,它可以被配置為任意的IP地址(也就是說,可以通過hosts這個文件進行更改的),不過通常情況下都指向:(如下)
IPv4:表示 127.0.0.1

IPv6:表示 [::1]

整個127.*網段通常被用作loopback網絡接口的默認地址,按照慣例通常設置為127.0.0.1。我們當前這個主機上的這個地址,別人不能訪問,即使訪問,也是訪問自己。因為每一臺TCP/IP協議棧的設備基本上都有local/127.0.0.1

在 Windows 中,這個域名是預定義的,從C:\Windows\System32\drivers\etc\ hosts 文件中可以看出:

# localhost name resolution is handled within DNS itself.
# 127.0.0.1 localhost ( ipv4)
# ::1 localhost (ipv6)

而在 Linux 中,其定義位於 /etc/hosts 中:
127.0.0.1 localhost
註意這個值是可修改的,比如我把它改成
192.168.2.1 localhost
然後再去 ping localhost,提示就變成了
PING localhost (192.168.2.1) 56(84) bytes of data. 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.1.1 #ping localhost # ping不通了 #ping 192.128.1.1 # 可以通

3,

本機IP,我們可以理解為本機有三塊網卡,一塊網卡叫做loopback(虛擬網卡),一塊叫做ethernet(有線網卡),一塊叫做wlan(你的無線網卡),

連接網絡,網卡傳輸,受防火墻和網卡限制

用於本機和外部訪問

127.0.0.1和localhost和本機IP三者的區別!