題 什麼是127.0.0.2的IP地址?


我在hiredis中運行示例,它使用“127.0.0.2”作為redis服務器IP,並且運行正常。實際上,redis服務器在同一台機器上運行。我知道“127.0.0.1”是“lo”的IP地址,但“127.0.0.2”怎麼樣?它與“127.0.0.1”相同嗎?


34
2018-02-24 02:15


起源




答案:


是:

IPv4網絡標准保留整個127.0.0.0/8地址塊以用於環回。這意味著發送到其中一個16,777,214地址(127.0.0.1到127.255.255.254)的任何數據包都會被回送。 IPv6只有一個地址:: 1。

各種因特網工程任務組(IETF)標準以CIDR表示法保留IPv4地址塊127.0.0.0/8,為此目的保留IPv6地址:: 1。使用的最常見IPv4地址是127.0.0.1。通常,這些環回地址映射到主機名,localhost或loopback。

或者來自RFC本身:

127.0.0.0/8 - 此塊被指定用作Internet主機      環回地址。由更高級別協議發送到的數據報      該塊內的任何地址都應該循環回主機內部。      這通常僅使用127.0.0.1/32來實現環回,      但是此塊中的地址不應出現在任何網絡上      任何地方[RFC1700,第5頁]。

為了好玩,請嘗試ping:

$ ping 127.127.127.127
PING 127.127.127.127 (127.127.127.127) 56(84) bytes of data.
64 bytes from 127.127.127.127: icmp_req=1 ttl=64 time=0.110 ms
64 bytes from 127.127.127.127: icmp_req=2 ttl=64 time=0.065 ms
^C
--- 127.127.127.127 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.065/0.087/0.110/0.024 ms

37
2018-02-24 02:19



維基百科頁面已經改變,現在說“儘管127.0.0.1到127.255.255.254範圍內的任何地址都映射到它”,使得這個答案的要點與維基百科直接衝突。 - SilverSkin
@SilverSkin你介意解釋一下你的意思嗎?答案中的內容與維基百科中的內容之間的唯一區別在於它們(正確地)排除了127.0.0.0和127.255.255.255,它們是網絡/廣播地址。要點仍然相同 - 127.x.x.x == 127.0.0.1(除了127.0.0.0和127.255.255.255,這在任何/ 8網絡上都是可以預期的)。 - icyrock.com
那麼綁定到127.0.0.1與綁定到127.0.0.124之間沒有區別?那麼為什麼hiredis會打擾127.0.0.2,如果它只是同一個地址呢?如果您確實向127.0.0.0發送了消息,會發生什麼? - CMCDragonkai
需要提一下的是OS X中的不一樣,只有127.0.0.1路由到環回。看到 這裡。 - Wenbing Li
@CMCDragonkai 127.0.0.1和127.0.0.124可能位於同一個接口上,但它們不是同一個地址。如果想要在公共端口上使用設置服務而不干擾可能在127.0.0.1上偵聽同一端口的其他服務,可以使用不常見的ip,如127.0.0.2 - Keith Reynolds


127.0.0.2 同樣的 127.0.0.1?答案= 沒有

127.0.0.1 至 127.255.255.254 是綁定到接口的所有本地地址 lo。他們不一樣。您可以使用每個地址將不同的服務綁定到同一端口。例如,端口80上的1600萬個Web服務器,只能從本地計算機訪問(如果您沒有內存不足或其他資源耗盡)

我剛剛設置了一個docker服務來綁定 127.0.0.2:80,然後我添加了一個別名 /etc/hosts 現在我可以通過它連接到它 http://myserver,但不是通過 http://127.0.0.1 要么 http://localhost。但是它只能從這台機器上獲得。事實上,只有,在 lo 接口。

然後我設置了另一個綁定到的docker服務 127.0.0.3:80和一個python服務 localhost:80 和另一個 127.0.0.4:80


這可能不適用於所有操作系統。 我正在使用Debian(9)Gnu / Linux,Linux內核4.9.0-3-amd64


3
2017-10-01 16:31



讓我們 在聊天中繼續討論。 - ctrl-alt-delor
我花了大約一個小時的研究時間,但我終於明白了你想要傳達的東西。我在接受的答案中更新了維基百科文章中的引用。由於引用的陳述多年來發生了變化,我引用了不同的聲明,以恢復原始信息所包含的答案。 - Ramhound


不是一個全面的一般答案(已經有一個)。 這是我的答案 顯示了一個例子 127.0.0.2 用來解決問題。

提取:

那裡的OP嘗試在與服務器的連接被拒絕的情況下測試某些軟件。這是在臨時服務器上完成的 iptables 拒絕來自客戶端IP的所有流量的規則。客戶端立即“看到”連接被拒絕。

當此人將服務器軟件移動到與客戶端相同的計算機並嘗試使用環回接口時,會出現問題。該規則被設置為阻止通信 127.0.0.1但是連接被拒絕的信息經歷了相同的規則,並且從未到達掛起的客戶端軟件(可能直到超時)。

解決方案是使用 127.0.0.2 作為服務器地址並設置拒絕連接的規則  它。關於拒絕的信息去了 127.0.0.1 並能夠傳遞給客戶端軟件。


0
2017-10-02 18:48