繁体   English   中英

无需端口转发即可发送消息

[英]Send message without port forwarding

我想在两个都位于不同防火墙后面的Java应用程序之间发送消息。 有没有端口转发的方法吗?(例如p2p,skype在做什么?)

几乎没有办法做到这一点,但是经过大量的搜索之后,我发现了一种经常有效的方法。 这称为UDP穿孔。

它也适用于TCP,但不如UDP好。

https://zh.wikipedia.org/wiki/UDP_hole_punching (在Java中,您可以使用DatagramSocket做到这一点)

如果没有在至少一个防火墙上进行端口转发,就无法做到这一点(假设防火墙具有适当限制的规则)。

使用TCP,有一个服务器和一个客户端。 服务器将接受连接,并且直到服务器前面的防火墙将网络流量转发给它之前,它才能接受请求。

典型的客户端防火墙允许将请求发送到远程服务器(有时限于某些服务,例如http和https等)。

因此,将需要配置网络服务器端的防火墙,以将适当的数据包转发到实际的服务器计算机。

诸如Skype之类的东西通常仅具有传出连接(它们不运行服务器套接字等待连接),而是连接到中央服务器,该中央服务器随后为系统路由通信。 VPN通常是通过这种方式完成的。

像大多数P2P协议一样,其他协议也要求对等方运行端口,并且需要配置防火墙以将流量转发给对等方。

在过去的几年中,已经建立了一种称为Internet网关设备协议 (通常称为“ UPnP”)的协议,该协议允许对等方根据请求请求防火墙转发流量。 大多数bittorrent客户端将允许您使用UPnP重新配置防火墙,并且大多数现代住宅型宽带路由器将支持这些请求。

因此,防火墙需要重新配置,但是有一些方法可以让您的服务器软件要求防火墙“自动”进行重新配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM