• 花果山の酸梅汤
    2019-08-06
    类型(A-B)    建立状况
    完全锥型-完全锥型    A通过server获得B的IP:port开始通信
    完全锥型-IP限制型    B通过server获得A的IP:port开始通信
    完全锥型-port限制型    B通过server获得A的IP:port开始通信
    完全锥型-对称型    B通过server获得A的IP:port开始通信
    IP限制型-IP限制型    A通过server获得B的IP:port,A向B发送UDP包,数据通过自己的NAT时会为B建立NAT映射条目;B通过server获得A的IP:port,发送UDP包为A建立NAT映射条目,二者之后就可以开始通信。
    IP限制型-port限制型    A通过server获得B的IP:port,A向B发送UDP包,数据通过自己的NAT时会为B建立NAT映射条目;B通过server获得A的IP:port,发送UDP包为A建立NAT映射条目,二者之后就可以开始通信。
    IP限制型-对称型    A通过server获得B的IP:port1,A向B发送UDP包,数据通过自己的NAT时会为B建立NAT映射条目;B通过server获得A的IP:port,发送UDP包为A建立NAT映射条目,A收到B的UDP包,获得B新的IP:port2;A向B的新地址IP:port2发送数据,可以开始通信。
    port限制型-对称型    A通过server获得B的IP:port1,A向B发送UDP包,数据通过自己的NAT时会为B建立NAT映射条目;B通过server获得A的IP:port,发送UDP包为A建立NAT映射条目,但由于B更换了新端口port2,A刚建立的映射无法使用,A故此无法收到B为A通信使用的新端口,无法建立NAT映射,两者无法互通。
    对称型-对称型    同上,对称型开启新端口对方无法获悉,无法建立链接。
    无法P2P就需要用TURN服务器转发数据了…
    展开

    作者回复: 非常赞!描述的非常清楚!

     2
     14
  • 李新
    2019-11-03
    请教一下,除了生日攻击,还有其他方法提高P2P的打洞成功率吗?

    作者回复: 在中国,P2P 成功率很低,尤其是移动互联网。

    
     1
  • SherwinFeng
    2019-11-23
    打洞失败自然就要用relay服务器啦
    
    
  • Happy~张🤔
    2019-11-10
    请问一下,stun服务器作为net打洞,那打洞成功后,后面传输还是会利用stun进行转发媒体信息进行通信吗?如果不是外网信息怎么转到内网的?

    作者回复: WebRTC内部首先会判断对方是否与自己在同一个网段,也就是说先判断通信双方是否在内网。如果是在内容就直接进行通信了。如果不在内网,会偿试 P2P 穿越,一旦穿越成功,双方就直接通信了,后面的传输不会用到 STUN服务器。

    
    
  • 李新
    2019-11-03
    请教一下,NAT类型的探测这么复杂,而且需要的时间也久,webrtc在P2P的时候是不是不需要探测NAT类型,而只是对着ICE Candidate相互发包就可以了?

    作者回复: 是进行 NAT 探测的,逻辑复杂,但执行速度很快!

     1
    
  • 张驰
    2019-09-25
    请问,如果对称NAT的B每次改变IP和端口,那么IP限制NAT主机A与对称NAT的B怎么建立连接呢?

    作者回复: A 先给 B发消息。此时,A 的NAT表里会增加这样一条记录<srcIP, srcPort, dstIP>,然后 B再给A发消息。B的消息过来之后,A的 NAT 发现来的这个主机的IP地址在地址表中,所以放行。

    
    
  • momo
    2019-08-28
    探测 NAT 环境的时候为什么要向服务器#2发请求, 不能向#1的另外一张网卡发请求吗?

    作者回复: 因为 #1 的第二块网卡后面还要用到,如果同一个网卡有两种用途就无法进行区分了。

    
    
  • 恋着歌
    2019-08-12
    看了 花果山の酸梅汤 同学的回答。打洞不成功是因为建立了两个连接,但是为什么不用发起者建立的连接来传回数据呢?

    作者回复: 这与你们公司用的网关/路由设备的实现有关

    
    
  • 刘丹
    2019-08-08
    是否IP限制型NAT、端口限制型NAT都有一个隐含条件:WebRtc客户端与防火墙之间只有1个NAT映射?

    作者回复: 对,只有一个映射的情况是最简单的,如果有多个出口IP的话的,情况会更复杂。

    
    
  • 君
    2019-08-07
    老师,请教下如何编译resiprocate成ios静态库

    作者回复: 不太清楚,这个好像与 webrtc 没啥关系!

    
    
  • 彭刚
    2019-08-06
    老师,前端这方面实在有点差,前端方面代码就看你的过一遍可以吗。大概能看懂每一步是干嘛的,后端部分认真写

    作者回复: 这块一定要好好看,如果这块没有学好的话,后面很难深入学习 webrtc

     1
    
  • 许童童
    2019-08-06
    两端都是NAT时,因为都没有公网IP,所以只能通过中转服务器打洞,但打的打洞却被对称型 NAT限制,需要重新打洞,从而无法打洞成功。此时只能让数据也通过中转服务器传输。

    作者回复: 描述的还是不够清楚,在NAT 之后,它要发包是必须要有外网地址的,NAT就是将内网转成外网哈,你再好好理解理解!

    
    
  • Jason
    2019-08-06
    尝试回答思考题,不知道理解的对不对,还请老师指正:
    对称型NAT之间打洞失败:对称型NAT是内网主机通过STUN服务返回的外网IP:port,只是针对STUN服务的,而跟其他外网设备的链路是直接不能相通的。
    端口受限型NAT与对称型NAT之间打洞失败:端口受限型NAT是指内网主机通过STUN服务返回的外网IP:port,要求外网设备的IP和端口是不能变的,否则链路不通。但对称型NAT针对内网主机的不同端口而映射出来的外网地址,明显不能保证IP和端口不变。

    作者回复: 是可以这么理解的。在本文中我讲的一个重点是映射表,从映射表的角度去思考这各种类型的NAT理解起来会更清晰哈!

    
    
  • 刘丹
    2019-08-06
    可以介绍一下WebRtc双方都是端口限制型NAT或者都是IP限制型NAT的情况下,怎样打洞通信的呢?好像打出来的洞只允许中间服务器和WebRtc直接通信,不允许另外一个WebRtc使用?

    作者回复: 打洞就是指 P2P之间打洞呀!也就是两个 WebRTC客户端之间打洞。不能 A 与 B 打通了这后,再让C来与 A通讯,这是不行的。

     1
    
  • Beast-Of-Prey
    2019-08-06
    打卡
    
    
  • 刘丹
    2019-08-06
    请问李老师:为什么在NAT类型检测图里,要先判断是否完全对称型NAT,然后才判断是否IP限制NAT、端口限制NAT呢?这个次序能变吗?

    作者回复: 原理都讲清楚了,你可以自己回答这个问哈!告诉我你思考后的答案。

    
    
  • XE.COM
    2019-08-06
    老师,想问一下,如果想在服务器保留音视频通话记录是不是P2P的连接方式就不能用了?

    作者回复: 是的

    
    
我们在线,来聊聊吧