• 忘掉天地
  • 仿佛也想不起自己
bingliaolongBingliaolong  2020-09-30 08:44 Aet 隐藏边栏 |   抢沙发  24 
文章评分 1 次,平均分 5.0

前言

本地局域网的设备会被分配一些本地IP地址(Cip地址),用于局域网内部使用。

这个IP地址是不能用于外部使用的,因为和外部的网络通信,需要使用公网IP。因而,如果我们使用这个内网IP进行webrtc的对等端通信,将会是不成功的。

STUN

webrtc使用stun来解决上述问题。

首先,STUN服务器位于公网上,它的作用是:检查传入请求的IP地址,并将该地址作为响应再发送回去。【这个传入请求的IP地址,它来自某个局域网内运行的程序】

换句话说,就是我的在局域网内的应用程序,通过这个运行在公网的STUN服务器来获取我的可用于公网通信的地址。

  • 我去连接运行在公网的STUN服务器
  • STUN服务器在公网的角度发现了我的信息:IP+端口
  • STUN服务器把他发现的这个地址再给我发送回来
  • 然后我收到STUN服务器给我的这个地址后,有了自己用于公网通信的地址
  • 拿到这个用于公网通信的地址后,我再通过信令机制,把这个地址发送给了另一个对等端,从而建立连接

连接

到了建立连接的阶段,它可以细化如下:

  • RTCPeerConnection尝试通过UDP建立对等端之间的直接通信
  • 如果UDP失败了,RTCPeerConnection会再使用TCP去建立对等端之间的直接通信
  • 如果TCP失败了,RTCPeerConnection可以用TURN服务器作为后备,在终端之间转发数据

有了公网IP之后,先是尝试点对点直连,但是直连也可能是不成功的,不成功的情况下就会通过转发

TURN

当直连没成功的情况下,就会通过TURN转发,STUN转发的是信令数据,而TURN转发的才是真正的数据流,比如是音频的、视频的

那它这个通讯模式里面,显然作为备用的转发服务器TURN也是相当重要的,为什么TCP直连失败了,TRUN就一定成功呢?

因为TRUN服务器也是位于公网上,它具有公网地址,即使当对等端位于防火墙或代理的后面,也可以与之联系。

假设

假设从一开始STUN服务器连接就没有成功,那么怎么办呢?
这时,每个对等端还可以使用TURN服务器来连接

总结

根据上述理解与分析

  • STUN服务器的功能相对TURN服务器的功能来说,比较单一简单
  • TURN服务器需要强大的性能来支撑大带宽的中继数据流的传输以及多功能的支持实现

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

bingliaolong
Bingliaolong 关注:0    粉丝:0 最后编辑于:2021-11-20
Everything will be better.

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享