localhost 和 ip 位址之間的區別

localhost 和 ip 位址之間的區別

如果將 Python 中的套接字綁定到 localhost,8200,則可以透過以下方式存取它http://本地主機:8200/。但不是http://xxxx:8200/

如果將 Python 中的套接字綁定到 xxxx,8200, machinename,8200,則可以透過以下方式存取它http://xxxx:8200/http://機器名稱:8200/, 但不是http://本地主機:8200/

我認為 localhost 的意思是“這台機器”,使用它會“環回”到機器的 IP 位址,但它似乎是不同的 ip。

127.0.0.1 是否始終與機器的 IP 位址不同?

更新:

我知道實際數字是不同的,但是環回有什麼作用?

例如維基百科
'將網頁瀏覽器指向 URLhttp://127.0.0.1/或者http://本地主機/將訪問該計算機自己的網站”

但是該網站也可以在 xxxx 上訪問,並且可能在 xxxx 上使用單一套接字進行設定 那麼這兩個引用如何運作呢?

結論:

我想我終於明白 127.0.0.1 和 xxxx 是這樣運作的

--127.0.0.1 ==\
               >- Computer
--x.x.x.x   ==/

並不是

--127.0.0.1 ==\
--------------- x.x.x.x >- Computer

或者

--x.x.x.x ==\
--------------- 127.0.0.1 >- Computer

感謝大家的幫助

答案1

來回答你的問題。

127.0.0.1 不僅是與機器 IP 位址不同的 IP 位址,也是不同的介面。 127.0.0.1 不應出現在本地網路上。它是環回適配器的特殊內部 IP 位址。

xxxx 將是您的乙太網路卡。

順便說一句,「localhost」只是主機檔案中指向 127.0.0.1 的一個項目

如果將套接字綁定到 127.0.0.1:8200,則只有本地運行的用戶端才能存取它,並且只能使用http://127.0.0.1:8200或者http://本地主機:8200(或指向 127.0.0.1 的 dns 或主機檔案條目)。

綁定到 xxxx:8200 的套接字只能透過http://xxxx:8200或指向該條目的 dns 或主機檔案條目。

將套接字綁定到 127.0.0.1 不會自動使其在乙太網路介面上可用。

這就是為什麼你無法連接到 xxxx:8200

您可以將連接埠 8200 綁定到所有可用介面 (0.0.0.0),然後它應該可以工作。

環回適配器的其他功能:

Loopback介面是一個虛擬介面。它通常用於允許同一台機器上的程式相互通訊。它不是引用機器 IP 位址的方法。 127.0.0.1 是環回虛擬適配器的 IP 位址。

關於環回適配器的另一件事是,因為它是虛擬的,所以它實際上不會將任何資料包傳遞到網路卡。

答案2

例如,維基百科說“將網頁瀏覽器指向 URL”http://127.0.0.1/或者http://本地主機/將訪問該計算機自己的網站”

有點不準確。它可能這樣做。同樣,它可能不會顯示任何網站,甚至可能顯示與您使用 xxxx 地址時所獲得的不同的內部網站。

127.0.0.1 指向您自己的計算機,但這並不意味著一旦到達您的計算機,它就會以相同的方式運行

如果您想要一個非技術性的類比,您可以將它們視為進入您房屋的不同門。

兩者都指向同一棟房子,但它們不是同一件事。每扇門都可能帶您進入同一個房間,也可能帶您進入不同的房間。也可以鎖一扇門而不鎖另一扇門。

配置網站時,您指定要綁定到哪些位址,而答案通常是所有位址。 (這相當於所有的門都帶你進入一個房間)

您也可以指定網站僅綁定到一個位址。 (這相當於鎖上除一扇門之外的所有門。)

如果您有兩個(或更多)網站,您可以將它們綁定到單獨的地址。 (這相當於每扇門都進入一個單獨的房間)。

兩個參考如何運作的範例,我的 Windows 7 電腦安裝了 IIS,當我進入 IIS 管理員並右鍵單擊「預設網站」時,它會給我一個「編輯綁定」功能表選項。選擇該選項將彈出綁定清單。我只有一個,但對於 IP 位址,它有 *,這意味著 IIS 偵聽我的所有 IP 位址。

答案3

系統上的每個 IP 位址都是獨立的,可以分別透過套接字綁定,但特殊位址 0.0.0.0 除外,它指示作業系統將套接字綁定到所有介面。

相關內容