2012-07-07 54 views
1

我正在开发一个项目,我必须通过互联网在计算机之间发送信息。通常显而易见的解决方案可以确保在端口转发方面没有太多模糊的问题。但是,我注意到Skype等应用程序能够打开这些连接,而无需使用户端口(大多数情况下)。我注意到这一点,当你能够使用诸如netstat之类的工具检索通话另一端的人的IP时。没有端口转发的两台计算机之间如何进行通信?

所以我的问题是:怎样的Skype,和“其他”的应用,能做到这一点? “普通”路由器有多开放?

注:我没有很多机会了解网络,这可能是微不足道的,但如果你有什么好的读取与网络相关的主题或任何东西,我将感谢。

+0

这不是一个编程问题。 – Rich 2012-07-07 14:54:35

+0

也许,我应该问哪里?我尝试了安全性,但得到了同样的回应。 – Root 2012-07-07 14:58:36

回答

0

没关系,显然这是使用中间服务器,其经纪人的连接来完成。

1

Skype使用了一个名为“打孔”通过防火墙来获得技术。

我写了一个很长的描述here。从该:

一般来说,打孔具有以下要求:

  • 外部,公共服务器是用于初始连接的目标,并且其有助于协调连接过程。
  • NAT后面的两位同事最终将直接连接。
  • NAT实现方式是宽松的交通,他们接受,而且这是在他们是如何运作预测的。
  • 一个协议(如TCP),它在它接受的流量中是宽松的,特别是使用状态机和消息,这些消息比服务器/客户机角色在更高级别假定为 更加对称。

的一般过程(牢记,这仅仅是一个草图) 为冲孔是:

  • 对等体连接到中央,公共服务器并同意在其上对将连接。
  • 中央服务器标识,对于每一个NAT,如何未来传出连接被创建时(当一个对等体作出穿过NAT传递
    然后端口必须打开上的NAT接收 的响应的连接;通常使用的端口号是连续的)。

(实际上,上面的细节是TCP打孔。这是可能的Skype使用UDP,但总的想法是相似的)。

相关问题