1

我正在做一个项目,我必须通过互联网在计算机之间发送信息。通常,确保没有太多模糊的明显解决方案是端口转发。但是,我注意到像 Skype 这样的应用程序能够打开诸如此类的连接,而无需转发用户端口(在大多数情况下)。当您能够使用诸如 netstat 之类的工具检索通话另一端的人的 IP 时,我注意到了这一点。

所以我的问题是:Skype 和“其他”应用程序是如何做到这一点的?“普通”路由器有多开放?

注意:我没有阅读太多关于网络的内容,这可能是微不足道的,但如果您确实对这个主题或与网络相关的任何内容有任何好的阅读,我将不胜感激。

4

2 回答 2

1

Skype 使用一种称为“打孔”的技术来通过防火墙。

我在这里写了很长的描述。从此:

一般来说,打孔需要以下几点:

  • 作为初始连接目标的外部公共服务器,它有助于协调连接过程。
  • NAT 后面的两个对等点,最终将直接连接。
  • NAT 实施对它们接受的流量宽松,并且在它们的操作方式上是可预测的。
  • 一种协议(如 TCP),它接受的流量比较宽松,特别是它使用的状态机和消息比假定的更高级别的服务器/客户端角色更对称。

打孔的一般过程(请记住,这只是一个粗略的草图)是:

  • 对等点连接到中央公共服务器并就将连接的对达成一致。
  • 中央服务器为每个 NAT 确定未来的传出连接是如何创建的(当对等点建立
    通过 NAT 的连接时,必须在 NAT 上打开一个端口以接收响应;通常使用的端口号是连续的) .

(其实上面的细节都是针对 TCP 打孔的。Skype 使用 UDP 是可能的,但大体思路是类似的)。

于 2012-07-08T02:30:08.207 回答
0

没关系,显然这是使用代理连接的中间服务器完成的。

于 2012-07-07T15:18:32.590 回答