2016-03-02 286 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地址,但安全问题是互联网的一个主要关注点,目前尚不清楚公共地址如何“公开”是 - 大量的设备,将有可能继续通过这些网关设备提供的防火墙后面隐藏。