前言
本地局域网的设备会被分配一些本地
IP地址(C类ip地址),用于局域网内部使用。这个
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服务器需要强大的性能来支撑大带宽的中继数据流的传输以及多功能的支持实现
声明:本文为原创文章,版权归Aet所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 【Manjaro】Vmware分辨率不能修改03/22
- ♥ C++17_第三篇06/29
- ♥ Objective-C学习记述一09/26
- ♥ Reading 2021 《百年孤独》10/04
- ♥ Java基础_第一篇08/31
- ♥ 3阶魔方公式简记05/31