我一直在测试我的应用程序,该应用程序具有用于点对点的 TCP/UDP 端口,借助服务器信令命令进行通信,当我有公共 IP 或 Lan IP 并且不涉及防火墙/端口块时,该应用程序可以工作。我将在这里命名我的终点:
a) PC1 - 在欧洲委员会中运行,具有 Lan IP 和未知的 Wan IP b) PC2 - 在欧洲委员会中运行,具有 Lan IP 和未知的 Wan IP c) 服务器 1 - 在 Amazon 中运行,具有公共 IP
现在,我正在欧洲委员会/机场/铁路网络中测试相同的应用程序,其中互联网入站/出站流量具有防火墙和规则,因此它无法与地图和应用程序算法的服务器进行通信。
然而,我在这些 PC1/PC2 上测试了 Skype,它可以正常工作,无需关心防火墙或所有这些网络问题。 Skype 简单易用。
所以我在想是否有任何第三方工具可以在我的 PC1/PC2 中使用来创建可通过 TCP/UDP 远程访问的端口列表(而不关心它们位于什么防火墙或网络?)。这样我就可以从服务器进行端口映射并桥接或中继数据包?
(例如Skype在如此复杂的网络中工作,我们在Linux中是否有任何工具可以将其用作外部包)
答案1
我认为你真正应该问的是:
“...Skype 如何穿越复杂的网络拓扑,在这些拓扑中似乎不可能通过部署了复杂防火墙的网络进行连接?”
我会直接从 Skype 上看这篇文章,其中用相当好的术语解释了他们用来使 Skype 正常工作的方法。
如果您通读那篇文章,他们基本上是说他们使用各种技术来规避复杂的网络。他们利用的关键技术如下:
摘自维基百科
存在多种技术,但没有一种方法适用于所有情况,因为 NAT 行为尚未标准化。许多 NAT 穿越技术需要公共可路由 IP 地址的服务器的帮助。有些方法仅在建立连接时使用服务器,而其他方法则基于通过服务器中继所有数据,这会增加带宽成本并增加延迟,不利于实时语音和视频通信。
2.全球去中心化用户目录
这是一种奇特的说法,“我们在互联网上使用超级节点,这些计算机允许 Skype 客户端临时连接到其选择的任何端口。这些“客户端”充当用户信息的分散数据库,如果您将它们作为一个整体,组成了 Skype 用户目录。
摘抄
显然,为了以尽可能低的成本提供高质量的通信,第三代 P2P 技术(“3G P2P”)或全球索引(GI)是必要的发展,并且代表了可扩展网络概念的另一个范式转变。全局索引技术是一个多层网络,超级节点之间的通信方式使得网络中的每个节点都以最小的延迟充分了解所有可用用户和资源。
3.Skype 如何保持通话质量?
答案基本上是说,这是一个秘密,我们不愿意与您分享这一点信息。