127.0.0.1 和 0.0.0.0 有什麼區別?
已發表: 2022-01-29
我們大多數人都聽說過“127.0.0.1 和 0.0.0.0”,但可能沒有過多考慮它們,但如果兩者實際上似乎都指向同一個位置,那麼兩者之間的實際區別是什麼? 今天的超級用戶問答帖子有助於為困惑的讀者澄清問題。
今天的問答環節由 SuperUser 提供——Stack Exchange 的一個分支,一個由社區驅動的問答網站分組。
照片由凱特·加德納 (Flickr) 提供。
問題
超級用戶 Sagnik Sarkar 想知道 127.0.0.1 和 0.0.0.0 之間的區別是什麼:
我知道 127.0.0.1 指向localhost並且 0.0.0.0 也可以(如果我錯了,請糾正我)。 那麼,127.0.0.1 和 0.0.0.0 有什麼區別呢?
127.0.0.1 和 0.0.0.0 有什麼區別?
答案
超級用戶貢獻者 DavidPostill 為我們提供了答案:
127.0.0.1 和 0.0.0.0 有什麼區別?
- 127.0.0.1 是環回地址(也稱為 localhost)。
- 0.0.0.0 是一個不可路由的元地址,用於指定無效、未知或不適用的目標(“無特定地址”佔位符)。
在路由條目的上下文中,它通常表示默認路由。
在服務器的上下文中,0.0.0.0 表示本地機器上的所有 IPv4 地址。 如果主機有兩個 IP 地址,192.168.1.1 和 10.1.2.1,並且在主機上運行的服務器偵聽 0.0.0.0,那麼這兩個 IP 都可以訪問它。
IP 地址 127.0.0.1 是什麼?
127.0.0.1 是環回 Internet 協議 (IP) 地址,也稱為localhost 。 該地址用於與最終用戶使用的同一台機器或計算機建立 IP 連接。
使用 ::1 的內涵為支持 IPv6 尋址的計算機定義了相同的約定。 使用地址 127.0.0.1 建立連接是最常見的做法; 但是,使用 127...* 範圍內的任何 IP 地址都將以相同或相似的方式運行。 環回結構使能夠聯網的計算機或設備能夠驗證或建立機器上的 IP 堆棧。
來源: 127.0.0.1 – 它的用途是什麼,為什麼重要?
特殊地址
A類網絡號127被分配了環回功能,即更高層協議發送到網絡127地址的數據報應該在主機內部環回。 發送到網絡 127 地址的任何數據報都不應該出現在任何地方的任何網絡上。
來源:網絡號碼
如果是整個 A 類,最後三個八位組的其他任意值的意義何在?
環回範圍的目的是測試主機上的 TCP/IP 協議實現。 由於較低層是短路的,因此發送到環回地址可以有效地測試較高層(IP 及以上),而不會出現較低層出現問題的機會。 127.0.0.1 是最常用於測試目的的地址。
來源: IP 保留、環回和私有地址
有關更多信息,請參閱詢問 Ubuntu問題:什麼是環回設備以及如何使用它?
IP 地址 0.0.0.0 是什麼?
0.0.0.0 是有效的地址語法。 因此,它應該在任何需要傳統點分十進製表示法的 IP 地址的地方解析為有效。 一旦解析並轉換為可用的數字形式,它的值就決定了接下來會發生什麼。
全零值確實具有特殊含義。 所以它是有效的,但對於特定情況可能不合適(因此被視為無效)。 它基本上是“無特定地址”佔位符。 對於諸如網絡連接的地址綁定之類的事情,結果可以是為連接分配適當的接口地址。 如果您使用它來配置接口,它可以改為從接口中刪除地址。 這取決於使用的上下文來確定“沒有特定地址”的真正作用。
在路由條目的上下文中,它通常表示默認路由。 發生這種情況的結果是更多的地址掩碼,它選擇要比較的位。 掩碼 0.0.0.0 不選擇任何位,因此比較將始終成功。 因此,當配置了這樣的路由時,數據包總是可以到達某個地方(如果配置了有效的目的地)。
在某些情況下,僅“0”也可以工作並具有相同的效果。 但這不能保證。 0.0.0.0 形式是說“沒有特定地址”的標準方式(在 IPv6 中是::0或只是:: )。
來源: IP地址0.0.0.0是什麼意思?
在 Internet 協議版本 4 中,地址 0.0.0.0 是不可路由的元地址,用於指定無效、未知或不適用的目標。 賦予無效數據塊特殊含義是帶內信令的應用。
在服務器的上下文中,0.0.0.0 表示本地機器上的所有 IPv4 地址。 如果主機有兩個 IP 地址,192.168.1.1 和 10.1.2.1,並且在主機上運行的服務器偵聽 0.0.0.0,則可以在這兩個 IP 上訪問它(注意:此特定文本從上面重複作為一部分的總體答案)。
在路由的上下文中,0.0.0.0 通常表示默認路由,即通向 Internet 的“其餘部分”而不是本地網絡某處的路由。
用途包括:
- 主機在尚未分配地址時聲明為自己的地址。 例如在使用 DHCP 時發送初始 DHCPDISCOVER 數據包時。
- 當通過 DHCP 的地址請求失敗時,主機分配給自己的地址,前提是主機的 IP 堆棧支持這一點。 這種用法已被現代操作系統中的 APIPA 機制所取代。
- 一種完全指定任何 IPv4 主機的方法。 指定默認路由時以這種方式使用它。
- 一種明確指定目標不可用的方法。 來源: 127.0.0.1 – 它的用途是什麼,為什麼重要?
- 一種完全指定任何 IPv4 地址的方法。 在配置服務器時(即綁定監聽套接字時)以這種方式使用。 TCP 程序員將其稱為 INADDR_ANY。 [ bind(2) 綁定到地址,而不是接口。 ]
在 IPv6 中,全零地址寫為::
來源: 0.0.0.0 [維基百科]
DHCP 發現/請求
當客戶端第一次啟動時,它被稱為處於初始化狀態,並通過用戶數據報協議 (UDP) 端口 67(BootP 服務器)在其本地物理子網上傳輸 DHCPDISCOVER 消息。 由於客戶端無法知道自己所屬的子網,所以DHCPDISCOVER是一個全子網廣播(目的IP地址為255.255.255.255),源IP地址為0.0.0.0。 源 IP 地址為 0.0.0.0,因為客戶端沒有配置的 IP 地址。
如果該本地子網上存在 DHCP 服務器並且配置和運行正確,則 DHCP 服務器將聽到廣播並以 DHCPOFFER 消息進行響應。 如果本地子網上不存在 DHCP 服務器,則該本地子網上必須有 DHCP/BootP 中繼代理,以將 DHCPDISCOVER 消息轉發到包含 DHCP 服務器的子網。
此中繼代理可以是專用主機(例如 Microsoft Windows Server)或路由器(例如配置有接口級 IP 幫助程序語句的 Cisco 路由器)。
…
客戶端收到 DHCPOFFER 後,會以 DHCPREQUEST 消息進行響應,表明其意圖接受 DHCPOFFER 中的參數,並進入請求狀態。 客戶端可能會收到多個 DHCPOFFER 消息,每個 DHCP 服務器收到一個原始 DHCPDISCOVER 消息。 客戶端選擇一個 DHCPOFFER 並僅響應該 DHCP 服務器,隱式拒絕所有其他 DHCPOFFER 消息。 客戶端通過使用 DHCP 服務器的 IP 地址填充服務器標識符選項字段來識別所選服務器。
DHCPREQUEST 也是一個廣播,因此所有發送 DHCPOFFER 的 DHCP 服務器都會看到 DHCPREQUEST,並且每個服務器都會知道它的 DHCPOFFER 是被接受還是被拒絕。 客戶端需要的任何其他配置選項都將包含在 DHCPREQUEST 消息的選項字段中。 即使已經為客戶端提供了 IP 地址,它也會發送源 IP 地址為 0.0.0.0 的 DHCPREQUEST 消息。 此時,客戶端還沒有收到可以使用IP地址的驗證。
…
客戶端獲取 DHCP 地址的客戶端-服務器對話,其中客戶端和 DHCP 服務器位於同一子網上:
資料來源:了解 Catalyst 交換機或企業網絡中的 DHCP 並對其進行故障排除
默認路由
本文檔說明如何配置默認路由或最後的網關。 使用這些 IP 命令:
- ip 默認網關
- ip 默認網絡
- ip 路由 0.0.0.0 0.0.0.0
IP 路由 0.0.0.0 0.0.0.0
創建到網絡 0.0.0.0 0.0.0.0 的靜態路由是在路由器上設置最後網關的另一種方法。 與ip default-network命令一樣,使用到 0.0.0.0 的靜態路由不依賴於任何路由協議。 但是,必須在路由器上啟用 IP 路由。
注意: IGRP 不理解到 0.0.0.0 的路由。 因此,它無法傳播使用ip route 0.0.0.0 0.0.0.0命令創建的默認路由。 使用ip default-network命令讓 IGRP 傳播默認路由。
資料來源:使用 IP 命令配置最後的網關
有什麼要補充的嗎? 在評論中關閉聲音。 想要閱讀其他精通技術的 Stack Exchange 用戶的更多答案? 在此處查看完整的討論主題。


