我想知道 skype 如何直接向通常位于防火墙后面的用户发送文件?这如何工作,因为我需要开发类似的东西,其中一个本地网络服务器(位于防火墙后面)需要能够直接将文件发送/流式传输到另一个相同的服务器?
我理解需要有某种可公开访问的中央服务器,通过它双方可以相互发现,我也计划拥有这样一个服务器,但是之后如何实现直接连接呢?
谢谢
答案1
Skype 不依赖服务器来发送文件本身. Skype使用一种称为打孔允许在两个限制性防火墙后进行通信。本质上,它将打开一个通信通道,从而“打通”本地防火墙,另一个 Skype 客户端可以使用它来传输数据。
Skype 的通信几乎完全基于点对点,因此实际的数据传输不需要集中式服务器。但它需要一个超级节点来进行初始通信。
因此,NAT 路由器会保存哪台内部计算机与哪台外部计算机进行过通信以及这两台计算机使用了哪些端口的表格。VoIP 软件使用的技巧是让防火墙相信已建立连接,然后防火墙应将后续传入的数据包分配给该连接。
因此,基本上,沟通是这样的: