【问题标题】:Public to Local IP Communication公共到本地 IP 通信
【发布时间】:2020-05-07 22:52:50
【问题描述】:

我创建了一个项目,它有桌面客户端和网页两个组件。

Web 服务器正在与我在其他系统上作为客户端运行的另一个程序进行通信。

连接这些客户端后,网络中的通信正在发生,因为网络中的所有 IP 都可以访问。

但是,当我现在在公共 IP 上部署 Web 应用程序时,我无法连接客户端,因为服务器无法访问这些客户端的本地 IP。

如何实现本地 IP 与公共 IP 之间的这种通信,反之亦然?

【问题讨论】:

  • 建立从本地客户端到公共服务器的 soclet 连接,并从双方使用它,因为它是双工的。
  • 查找 NAT 打孔以获得此问题的标准解决方案。否则,您可以只做简单的解决方案并使用您的服务器在客户端之间转发所有呼叫。

标签: java spring web networking desktop


【解决方案1】:

有多种方法可以实现这一目标。 无论如何,如果您希望该服务可以公开访问,那么您可能希望将端口转发到运行该服务的机器。 另外,请确保防火墙允许连接到此端口。

既然您谈论的是 Web 应用程序,它可能是 HTTP、80 端口 TCP 或 HTTPS,即在 TCP 端口 443 上运行的 HTTP 的加密版本。

为了解释这一点,您的 ISP 为您提供了一个公共 IP 地址。 由于您可能有多个使用互联网的设备,它们都作为您的提供商提供给您的一个 IP 地址出现在互联网上。 每当您发送某些内容时,您的路由器都会记住您尝试连接的位置,并且如果您的路由器收到响应,您的路由器就会知道将响应发送到哪个设备。

现在,由于您希望有人连接到您,因此没有请求,因此您的路由器不知道将数据包放在哪里,只是阻止它。 在大多数路由器中,您可以配置通常称为 NAT 或端口转发的东西。您只需指定端口 80 或 443 上的通信应路由到内部 IP。它具有以下格式之一: 192.168.0.1 - 192.168.255.254 172.16.XXX.XXX - 172.31.255.254 10.0.0.0 - 10.255.255.254

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-26
    • 2019-07-25
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多