stun、turn、ice介绍

在介绍stun、turn、ice前,不得不说一个很重要的东西:NAT。

NAT也是上面三个的基础。

NAT模式

Network Address Translation,网络地址转换。

网络分为内网和外网。有一个道理:内网可以访问外网,但是外网并不能访问内网。

而NAT的出现解决了这个问题,有了NAT的存在,外网也可以访问内网(前提是内网需要先访问外网)。

NAT包含四种类型:

1.Full Cone:

​ 内部机器A访问外网机器C,NAT打开一个端口,后面外网的任意ip和任意port都可以访问这个端口,也就是任意ip+任意port可以访问机器A

2.Address Restricted Cone:

​ 内部机器A访问外网机器C,NAT打开一个端口,后面机器C的任意port可以访问这个端口,就是只能固定ip+任意port访问A

3.Port Restricted Cone

​ 内部机器A访问外网机器C,NAT打开一个端口,后面机器C的固定port可以访问这个端口,就是只能固定ip+固定port访问A

4.Symmetric

​ 连接不同的外部Server,NAT打开的端口会变化。也就是内部机器A连接外网机器B时,NAT会打开一个端口,连接外网机器C时又会打开另外一个端口。

有了这个前提,就可以解释stub、turn、ice的原理了,他们都是通过NAT模式,内网访问外网的机器,然后二者进行通讯。

STUN

STUN的全称是Simple Traversal of UDP Through NAT,即UDP对NAT的简单穿越方式。应用程序(即STUN CLIENT)向NAT外的STUN SERVER通过UDP发送请求STUN 消息询问自身的转换后地址。

根据了解到的地址,发送给对端,然后对端请求这个地址,进行通讯。

在实际场景中有两种形式:

1.内网机器A访问stun服务器C,通过C获知自己的对外通信的ip和port,然后通过信令服务器告知机器B。B通过ip和port与A进行通信。

2.内网机器A访问stun服务器C,直接和C进行通信。(这个就是ice中的lite模式,也是webrtc中的prflx模式)

STUN协议最大的优点是无需现有NAT/FW设备做任何改动,同时STUN方式可在多个NAT串联的网络环境中使用. STUN的局限性在于STUN并不适合支持TCP连接的穿越,同时STUN方式不支持对对称NAT(Symmetric NAT).

TURN

TURN的全称为Traversal Using RelayNAT,即通过Relay方式穿越NAT,TURN应用模型通过分配TURNServer的地址和端口作为客户端对外的接受地址和端口,即私网用户发出的报文都要经过TURNServer进行Relay转发,这种方式除了具有STUN方式的优点外,还解决了STUN应用无法穿透对称NAT(Symmetric NAT)以及类似的Firewall设备的缺陷

ICE

ICE跟STUN和TURN不一样,ICE不是一种协议,而是一个framework,它整合了STUN和TURN。

参考自:https://www.cnblogs.com/whyandinside/archive/2010/12/08/1900492.html

你可能感兴趣的:(webrtc)