題 0.0.0.0綁定如何在linux中發生?


一個ping到 0.0.0.0 回應 127.0.0.1。但是,如果我關閉localhost環回並將另一個接口保持為另一個ip,那麼ping 0.0.0.0 給出錯誤

$ping 0.0.0.0 connect: Invalid argument

是不是 0.0.0.0 應該聽所有接口?所以基本上,究竟是怎麼做的 0.0.0.0 從網絡角度看綁定工作?怎麼ping 0.0.0.0 僅適用於環回而不適用於其他界面?

  • 更新 我在其他地方讀過它並在這裡得到了類似的答案(你不能ping 0.0.0.0)。
[anshup@s2 ~]$ ping 0.0.0.0 PING 0.0.0.0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.010 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.009 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.009 ms
^C
--- 0.0.0.0 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2551ms
rtt min/avg/max/mdev =
0.009/0.009/0.010/0.002 ms

那麼,如果我們不能ping,究竟發生了什麼 0.0.0.0?並重複問題,為什麼呢 0.0.0.0 僅從環回而不是主機上的任何其他接口回复?


4
2018-05-07 12:58


起源




答案:


0.0.0.0/0 不是地址而是網絡標識(用於路由,並且表示“所有網絡”)。因此你不能ping它。如果你想ping你將使用的每個系統 255.255.255.255。 每個網絡都有兩個特殊的地址,即身份和廣播,通常在 .0 和 .255 分別。

例如在網絡上 192.168.5.0/24,身份= 192.168.5.0,和廣播= 192.168.5.255。第一個主持人是 192.168.5.1,最後是 192.168.5.254。請注意,沒有主機可以使用標識或廣播地址作為自己的IP地址。

根據定義,主機默認網關是您用於到達所有未知網絡的路由,因此 0.0.0.0/0 只是對所有網絡的參考。

編輯: 環迴響應的原因是未指定的“未定義”行為 RFC1700。根據RFC,從0開始的地址(以十進製表示)絕不允許作為目標(僅作為廣播數據包的源),因此網絡堆棧的作者選擇讓環迴響應。

當我試圖ping 0.0.0.0 從Win7 / powershell提示符,我只是得到消息'PING:傳輸失敗。一般失敗。'所以這顯然是特定於給定OS堆棧的行為,或者甚至可能是特定於驅動程序的行為。如果您提供操作系統,我們可能會找到更多,但它不會回答任何有意義的問題,因為它的實現特定行為不受網絡標準的約束。我的猜測是你的操作系統只是將所有無效地址別名為 127.x.y.z 地址。


17
2018-05-07 13:47



@frank:謝謝你的回答。更新問題以根據您的答案添加更多信息。 - Anshu Prateek
@Frank:感謝您的更新/編輯答案。這有幫助。在fedora 17上。將檢查其實施情況。 - Anshu Prateek


在Internet協議版本4中的地址 0.0.0.0 是一個 不可路由 用於指定的元地址 無效,未知或不適用 目標。


1
2018-05-07 13:27