我正在尝试找到使NAT后面的浏览器(windows)可以使用嵌入式Linux设备p2p的解决方案,后面是另一个没有配置路由器的NAT,我已经调查并尝试了同步方法,但都无法工作:
1.UDP打孔:
a.browser无法发送UDP数据包(chrome.socket似乎可以)
b.browser无法绑定端口
2.TCP打孔
a.browser无法绑定端口,很难做到
3.WebRTC(学习)
我想交叉编译到我的嵌入式linux设备,尝试使用 RTCPeerconnection 或 RTCDataChannel 两个WebRTC API与浏览器p2p,我不确定是不是可以工作
4.RTP流(尚未尝试)
因为我想从设备获取视频实时流,我看到视频流可以通过RTP传输之前,但RTP基于UDP,我不确定它是否正常工作
答案 0 :(得分:0)
答案是WebRTC。
WebRTC在没有任何额外工作的情况下完成此任务(这是它的优势)。这是通过使用STUN来发现外部地址的ICE完成的(STUN服务器本身不会中继任何东西。它只是一个简单的乒乓协议,用作NAT处理的标准)。
然而,通过这种方式,绕过NAT只能获得大约80-90%的成功(如果我们查看全局统计数据)。对于其余部分,您将需要一个TURN服务器并将其配置为WebRTC客户端用于处理NAT后面两个端点之间的UDP路由无法工作的情况。