V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fancy2020
V2EX  ›  程序员

WebRTC 到底有没有实用价值? NAT 穿透成功的概率有多大?

  •  
  •   fancy2020 ·
    fanchangyong · 2020-02-11 22:40:46 +08:00 · 5977 次点击
    这是一个创建于 1529 天前的主题,其中的信息可能已经有所发展或是发生改变。

    之前用 WebRTC 技术做了个传文件的网站,最近测试发现外网之间的文件传输非常慢, 经过调查才知道原来外网之间的连接并没有走 P2P ,而是走了 TURN 协议,相当于让服务端转发数据了。 我试了用我的宽带连手机 4G,以及与朋友的宽带连接,都没有成功。

    如果只能通过服务器转发的方式,那么使用 WebRTC 的意义就不大了,因为当初做这个项目想的就是要做一个 P2P 的文件传输网站。

    所以我想问的是,在当前大部分普通人的网络环境下,WebRTC 技术到底能不能实现真正的 P2P 连接(也就是 NAT 穿透能成功的概率有多大)?

    12 条回复    2020-02-12 12:43:40 +08:00
    learningman
        1
    learningman  
       2020-02-11 22:53:13 +08:00 via Android
    在我国基本不用考虑了,国情限制,你甚至不知道有几层 NAT
    fancy2020
        2
    fancy2020  
    OP
       2020-02-11 23:01:54 +08:00
    @learningman 那很好奇那些 P2P 下载软件为啥可以 work 呢?他们的 P2P 和 webrtc 的 P2P 不是一样的吗?
    kevinle
        3
    kevinle  
       2020-02-11 23:07:36 +08:00 via Android
    mark 一下,紫薯布丁
    watzds
        4
    watzds  
       2020-02-11 23:37:20 +08:00 via Android
    六年前玩过一段时间,都是学校内网,外网穿透太不容易了
    xubeiyan
        5
    xubeiyan  
       2020-02-12 00:34:46 +08:00 via Android
    有哦,我司经常用来打视频电话哦
    sleepm
        6
    sleepm  
       2020-02-12 01:02:15 +08:00 via Android
    用 croc 吧。。。
    手机用流量好像穿透很困难
    codehz
        7
    codehz  
       2020-02-12 01:58:13 +08:00 via Android
    (我觉得国内的用例大概只能是利用这个 udp 特性进行页游了(服务器公网,然后手动 STUN
    xsen
        8
    xsen  
       2020-02-12 09:01:38 +08:00
    WebRTC 穿透成功率可以到 95%以上;当然,需要对服务器端配置与客户端配置做适当调整,进行优化,比如
    1. stun 采用 tcp 方式
    2. stun/turn 服务器端口要修改

    等等诸如此类。因为很多内网会封掉 udp,对于 tcp 只会开启 80/443
    fancy2020
        9
    fancy2020  
    OP
       2020-02-12 10:16:20 +08:00
    @xsen @codehz 我现在访问 STUN 服务是没问题的,问题在双方获取到各自的地址之后的穿透上
    codehz
        10
    codehz  
       2020-02-12 10:44:33 +08:00 via Android
    (我说的是服务器自己也作为 rtc peer 的一种用法,理论上能获得比 WebSocket 更低延迟的通讯(
    xsen
        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是无法穿透成功的
    whywhywhy
        12
    whywhywhy  
       2020-02-12 12:43:40 +08:00
    p2p 穿透本质上是利用了中间设备不严格的防护,所以是需要根据情况而定的,至于你直接抛出一个“实用价值”。。。。世界上的东西都是有取舍的,只有最合适的,没有最好的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1004 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 18:50 · PVG 02:50 · LAX 11:50 · JFK 14:50
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.