为什么像Skype这样的程序不需要你打开端口?

时间:2014-11-05 07:17:39

标签: java networking tcp udp portforwarding

我目前正在研究java中的消息传递程序,并且我计划使用UDP将消息从用户发送到中央服务器,并且我计划使用TCP来从服务器返回用户的消息。我的主要问题是,如何在不要求客户端向前移动的情况下实现这一目标?

3 个答案:

答案 0 :(得分:1)

很简单,客户端必须建立到服务器的TCP连接,即使主要(实际上如果不是)数据流方向相反。

答案 1 :(得分:1)

skype等程序使用打开的公共端口(端口80)或在防火墙中放置规则以允许其他端口进行通信。此外,程序可以在没有管理权限的情况下打开1024以上的端口,但这取决于设置UPnP或保持活动通道到服务器打开所需的连接类型。 Windows Firewall

答案 2 :(得分:1)

像Skype这样的P2P客户端使用微妙的技巧来连接防火墙后面的对等设备。这里概述了使用的不同技术: http://www.h-online.com/security/features/How-Skype-Co-get-round-firewalls-747197.html