之前用 WebRTC 技术做了个传文件的网站,最近测试发现外网之间的文件传输非常慢, 经过调查才知道原来外网之间的连接并没有走 P2P ,而是走了 TURN 协议,相当于让服务端转发数据了。 我试了用我的宽带连手机 4G,以及与朋友的宽带连接,都没有成功。
如果只能通过服务器转发的方式,那么使用 WebRTC 的意义就不大了,因为当初做这个项目想的就是要做一个 P2P 的文件传输网站。
所以我想问的是,在当前大部分普通人的网络环境下,WebRTC 技术到底能不能实现真正的 P2P 连接(也就是 NAT 穿透能成功的概率有多大)?
1
learningman 2020-02-11 22:53:13 +08:00 via Android
在我国基本不用考虑了,国情限制,你甚至不知道有几层 NAT
|
2
fancy2020 OP @learningman 那很好奇那些 P2P 下载软件为啥可以 work 呢?他们的 P2P 和 webrtc 的 P2P 不是一样的吗?
|
3
kevinle 2020-02-11 23:07:36 +08:00 via Android
mark 一下,紫薯布丁
|
4
watzds 2020-02-11 23:37:20 +08:00 via Android
六年前玩过一段时间,都是学校内网,外网穿透太不容易了
|
5
xubeiyan 2020-02-12 00:34:46 +08:00 via Android
有哦,我司经常用来打视频电话哦
|
6
sleepm 2020-02-12 01:02:15 +08:00 via Android
用 croc 吧。。。
手机用流量好像穿透很困难 |
7
codehz 2020-02-12 01:58:13 +08:00 via Android
(我觉得国内的用例大概只能是利用这个 udp 特性进行页游了(服务器公网,然后手动 STUN
|
8
xsen 2020-02-12 09:01:38 +08:00
WebRTC 穿透成功率可以到 95%以上;当然,需要对服务器端配置与客户端配置做适当调整,进行优化,比如
1. stun 采用 tcp 方式 2. stun/turn 服务器端口要修改 等等诸如此类。因为很多内网会封掉 udp,对于 tcp 只会开启 80/443 |
10
codehz 2020-02-12 10:44:33 +08:00 via Android
(我说的是服务器自己也作为 rtc peer 的一种用法,理论上能获得比 WebSocket 更低延迟的通讯(
|
11
xsen 2020-02-12 11:01:17 +08:00
@fanchangyong 你误解了我的回答。比如你要两端 p2p 传文件,如 A 与B,其中a、b处于不同的网络环境(家庭或公司),要穿透成功就要求a、b都穿透成功,才可以 p2p,不然是通过 turn 转发
若 a 穿透成功;而 b 所处的网络(如某公司),防火墙把 udp 都封掉,或者把 80/443 之外的端口都封了,那么b是无法穿透成功的 |
12
whywhywhy 2020-02-12 12:43:40 +08:00
p2p 穿透本质上是利用了中间设备不严格的防护,所以是需要根据情况而定的,至于你直接抛出一个“实用价值”。。。。世界上的东西都是有取舍的,只有最合适的,没有最好的。
|