JavaScript是否只能通过NAT实现穿透?

4
我想知道是否有可能实现一个仅使用JavaScript的NAT穿透应用程序,它应该能够在浏览器中运行。
我正在寻找一种解决方案,可以通过穿透实现P2P连接。服务器也会存在,但仅用于介绍对等方并交换IP地址和端口。
如果可能的话,它只能使用UDP(已经了解到NAT穿透在UDP中更容易),还是TCP连接也可以?
2个回答

1
TCP打洞是有可能的,但这取决于两个因素:一个是基于操作系统的NAT,另一个是NAT硬件。这两个都需要支持。根据以下文章,UDP打洞支持82%,而TCP打洞仅支持64%。您也可以在此文章中找到该技术的详细信息。祝一切顺利。 http://www.brynosaurus.com/pub/net/p2pnat/

1
你可以。我为npm打包了一个stun服务器和客户端(https://npmjs.org/package/stunsrv)。我没有真正记录客户端的内容,但它仍然存在。除此之外还有一些其他仅限客户端的软件包可用。
编辑: WebRTC可能是你感兴趣的东西,也可以看看https://github.com/webRTC

嘿,谢谢你的回答。你知道有没有关于TCP的解决方案吗? - kapad
如果你只是想从TCP中获得三次握手的话,通过编程实现三次握手并不是什么坏主意。 - keyneom
不仅仅是三次握手。我想用它来进行文件传输,而不仅仅是语音或视频,其中UDP是可以接受一小部分数据包丢失的。如果TCP非常困难,那么选择是在开始传输之前交换一个描述文件。 - kapad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接