2016-03-02 91 views
0

我有一個應用程序運行在「遠程」機器上,我想用web服務器模塊進行增強,這樣我就可以使用普通的web瀏覽器來獲取有關應用程序狀態的信息。我將使用Poco Libraries,這並不重要。爲什麼我的公共IP地址不是唯一的(我該怎麼辦)?

第1步:添加一個服務器模塊來提供「Hello World!」本地 - 完成,輕鬆。

步驟2:找到我的「本地」機器的公共IP地址,例如通過訪問here,然後使用一些外部路由的網絡瀏覽器(例如,在我的電話上)來模擬與我的「Hello World!」的「遠程」連接。響應者 - 失敗。

我所測試的辦公室中的每臺計算機都共享相同的公共IP地址......儘管許多網頁討論將公共IP地址描述爲唯一的IP地址。他們爲什麼不是唯一的?

已經聽說過Network Address Translation,我猜沿着這些線路的東西必須發生的(也許Port Forwarding?)......但是,即使這可能回答最初的問題,實際的程序員的回答什麼是「現在我明白了公共IP地址可能並不唯一,如何在遠端站點(可能位於防火牆後面)唯一標識特定機器?

回答

0

由於我們沒有足夠的ipv4地址用於每個設備,所以NAT(網絡這意味着你的路由器擁有一個公共IP地址並且管理會話(檢測到一個TCP連接並且暫時將該輸出端口轉發給打開該連接的客戶端)

你需要一個或多個端口轉發到局域網地址,如果你的服務器(可能是80和443用於HTTP和HTTPS分別)

在IPv6中然而,每臺機器都有一個自己的公共地址。

0

首先,您的公共IP地址不唯一的原因是您和所有共享相同IP地址的設備不是直接連接到互聯網,而是通過某些中間「網關」設備(例如交換機,路由器,調制解調器)。您的公共IP地址實際上是該網關設備的地址。因此,當您從Google或Facebook或任何地方請求網頁時,該設備會將您的LAN IP和端口號(HTTP可能爲80,HTTPS爲443)轉換爲其IP和其他端口號,當響應返回時翻譯。這是網絡地址轉換(NAT)的一種形式,它是一種動態安排,通常在會話範圍內運行 - 它在會話啓動時設置,並在會話結束。

這就是您的設備表現爲客戶端的情況;當你想要把它變成一臺服務器,你有兩個選擇:

  • 建立VPN
  • 使用端口轉發

一個VPN(虛擬專用網絡)將遠程機器出現到您的機器,就好像它是您本地網絡的一部分一樣。您必須安裝特殊的VPN軟件才能完成此項任務,並且您將通過這樣做獲得更強大,更通用的解決方案。然而,如果你只想提供一些簡單的東西,這可能是矯枉過正的,例如,從您的家用電腦上獲取個人利益。

端口轉發是比較容易做到,但可以通過誰是你的設備託管由於security concerns的IT策略被禁止。它需要在一個表格,將您連接到互聯網「網關」設備(路由器,交換機,調制解調器)的靜態條目。它告訴網關設備將所有流量某個特定的端口到端口的設備上的(私人,LAN)IP。有關如何操作,請參閱該網關設備的手冊。

所有這一切都適用於IPv4。人們猜測,當IPv6有更多的推動時,它將如何改變 - 理論上,每個人的設備在IPv6下都將擁有獨一無二的公共IP地址,但安全問題是互聯網的一個主要關注點,目前尚不清楚公共地址如何「公開」是 - 大量的設備,將有可能繼續通過這些網關設備提供的防火牆後面隱藏。