【问题标题】:Why is my public IP address not unique (and what do I do about it)?为什么我的公共 IP 地址不是唯一的(我该怎么办)?
【发布时间】:2016-06-16 00:51:42
【问题描述】:

我有一个运行在“远程”机器上的应用程序,我想用一个网络服务器模块来增强它,这样我就可以使用一个普通的网络浏览器来获取有关应用程序状态的信息。我将使用Poco Libraries,这并不重要。

第 1 步:添加一个服务器模块来提供“Hello World!”本地 - 完成,简单。

第 2 步:找到我的“本地”机器的公共 IP 地址,例如通过转到here,然后使用一些外部路由的网络浏览器(例如在我的手机上)模拟与我的“Hello World!”的“远程”连接。响应者——失败。

我测试过的办公室中的每台机器都共享相同的公共 IP 地址...尽管许多网页都在讨论将公共 IP 地址描述为唯一的。为什么它们不是唯一的?

听说过Network Address Translation,我猜肯定会发生类似的事情(也许Port Forwarding?)......但即使这可能回答最初的问题,实际程序员对“现在”的回答是什么我知道公共 IP 地址可能不是唯一的,当远程站点(可能)位于防火墙后面时,如何唯一标识远程站点上的特定计算机?

【问题讨论】:

    标签: ip


    【解决方案1】:

    首先,您的公共 IP 地址不是唯一的原因是您和共享相同 IP 地址的所有设备不是直接连接到互联网,而是通过一些中间“网关”设备(例如交换机、路由器、调制解调器)。您的公共 IP 地址实际上是该网关设备的地址。

    因此,当您从 Google 或 Facebook 或其他任何地方请求网页时,该设备会将您的 LAN IP 和端口号(对于 HTTP 可能是 80,对于 HTTPS 可能是 443)转换为其 IP 和一些其他端口号,它可以重新转换当响应返回时。这是网络地址转换 (NAT) 的一种形式,它是一种动态安排,通常在会话范围内运行 - 它在会话开始时设置,在会话时关闭结束。

    这就是您的设备充当客户端的情况;当你想把它变成服务器时,你有两种选择:

    • 设置 VPN
    • 使用端口转发

    VPN(虚拟专用网络)将使远程计算机在您的计算机上看起来像是本地网络的一部分。您必须安装特殊的 VPN 软件才能做到这一点,这样做您将获得更强大和通用的解决方案。但是,如果您只想提供一些简单的东西,例如为了您自己的个人利益,从您的家用计算机上下载。

    端口转发稍微容易一些,但可能会因为security concerns 而被托管您设备的任何人的 IT 政策所禁止。它需要将您连接到 Internet 的“网关”设备(路由器、交换机、调制解调器)上的表中的静态条目。它告诉网关设备将特定端口上的所有流量发送到设备上具有其(私有、LAN)IP 的端口。具体操作方法请查阅该网关设备的手册。

    所有这些都适用于 IPv4。任何人都在猜测当 IPv6 被更多采用时它将如何变化——理论上每个人的设备都会在 IPv6 下拥有一个唯一的公共 IP 地址,但由于安全性是互联网上的一个主要问题,尚不清楚这些公共地址将如何“公开”是 - 许多设备可能会隐藏在这些网关设备提供的防火墙后面。

    【讨论】:

      【解决方案2】:

      由于我们没有为每个设备提供足够的 ipv4 地址,因此发明了 NAT(网络地址转换)。这意味着您的路由器具有公共 IP 地址并管理会话(检测 TCP 连接并将传出端口临时转发到打开连接的客户端)

      如果您的服务器需要将一个或多个端口转发到 LAN 地址(对于 HTTP 和 HTTPS,可能分别为 80 和 443)

      然而,在 ipv6 中,每台机器都有自己的公共地址。

      【讨论】:

        猜你喜欢
        • 2018-09-23
        • 1970-01-01
        • 1970-01-01
        • 2012-03-11
        • 2011-12-12
        • 1970-01-01
        • 1970-01-01
        • 2018-03-20
        • 1970-01-01
        相关资源
        最近更新 更多