当前位置:  开发笔记 > 编程语言 > 正文

没有端口转发,Skype如何工作?

如何解决《没有端口转发,Skype如何工作?》经验,为你挑选了2个好方法。

我正在设计一个在端口30000上工作的p2p应用程序.我的路由器不是UPnP所以我需要将端口转发到路由器.但Skype是另一个p2p应用程序在我的电脑上没有端口转发.当我用wireshark分析它时,我发现它使用的是UDP端口48980,58544.我正在使用c ++.

在Python库在这里它会为纳特即插即用路由器.是否可以以编程方式将端口转发到路由器,而不管路由器和操作系统的类型如何.用c ++或任何其他语言做什么的方法应该是什么.



1> rein..:

Skype的工作方式非常有趣.从我读过的内容(这是前一段时间),它的工作原理如下:

Skype服务器维护所有用户和IP的列表.

Skype用户A想要与用户B通话

Skype用户A向用户B的IP地址发送网络数据包并等待响应.(用户B永远不会获得此数据包).

Skype用户A通知服务器正在等待响应的IP /端口组合

服务器通知用户B在指定端口上向用户A发送响应

建立连接.

这可能过度简化,但最后我检查过,这是它的工作原理.(如果我错了,有人会纠正我).

编辑:修复子弹问题


这个答案仅描述了A并且未能与B和服务器向用户B发送正确的IP /端口组合进行通信.它缺少主要点,称为打孔,并且在@MartinBeckett提供的链接中有很好的描述.我只想补充一点,如果路由器支持UPnP,也可以转发端口而不管路由器和操作系统的类型.

2> nothrow..:

UDP穿孔是(一种)遍历NAT的方法.

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有