我正在设计一个在端口30000上工作的p2p应用程序.我的路由器不是UPnP所以我需要将端口转发到路由器.但Skype是另一个p2p应用程序在我的电脑上没有端口转发.当我用wireshark分析它时,我发现它使用的是UDP端口48980,58544.我正在使用c ++.
在Python库在这里它会为纳特即插即用路由器.是否可以以编程方式将端口转发到路由器,而不管路由器和操作系统的类型如何.用c ++或任何其他语言做什么的方法应该是什么.
Skype的工作方式非常有趣.从我读过的内容(这是前一段时间),它的工作原理如下:
Skype服务器维护所有用户和IP的列表.
Skype用户A想要与用户B通话
Skype用户A向用户B的IP地址发送网络数据包并等待响应.(用户B永远不会获得此数据包).
Skype用户A通知服务器正在等待响应的IP /端口组合
服务器通知用户B在指定端口上向用户A发送响应
建立连接.
这可能过度简化,但最后我检查过,这是它的工作原理.(如果我错了,有人会纠正我).
编辑:修复子弹问题
UDP穿孔是(一种)遍历NAT的方法.