无需端口转发即可访问networking服务器

我有以下结构的networking

在这里输入图像说明

PC2中的服务器是8080端口的简单套接字服务器TCP。

我需要通过套接字客户端从其他外部networking访问PC2。 这个套接字客户端知道公共IP(85.xxx.xxx.x),私有IP(192.168.0.21)和端口。

如何在没有路由器端口转发的情况下访问PC2?

如果可能的话,我想在这个案例的任何编程语言中有一个参考。

附加信息

如何在没有路由器端口转发的情况下访问PC2?

假设一个NAT路由器(几乎可以肯定192.168.0.0/24的内部networking),你不能在路由器上不进行端口转发。 或者非常相似的东西

例如,如果您可以SSH到路由器,然后到服务器,您可以使用SSH调谐(这是一种端口转发的forms)。

您也可以将PC2 SSH连接到公共服务器,并在那里提供经过调整的端点。 (你可能需要类似netcat或socat来协助这个)

一般来说,路由器上的端口转发是一个很好的select。


NAT穿越协议

有许多方法可以在没有手动configuration端口转发的情况下启用这种通信,但通常依靠路由器支持和/或外部连接代理。

一般

  • UDP打孔 – 非常清晰的解释
  • 打孔
  • NAT穿越

具体

  • IGDP 。
  • STUN
  • NAT-PMP
  • PCP
  • 通用即插即用

我想在这个案例的任何编程语言中有一个参考

如果你在编写软件的两端,可能有很多例子可以遵循。

例如,请参阅

  • Java UDP打孔示例 – 通过防火墙连接
  • 实施TCP穿孔NAT穿越解决scheme