stun服务器原理(turn服务器原理)

admin 轻心小站 关注 LV.14 VIP
发表于IDC交流版块 分享,经验

STUN服务器和TURN服务器是在实现P2P(peer-to-peer)通信过程中起到重要作用的服务器。在P2P通信中,软件能够在计算机上直接交流,不需要中间服务器协调。然而,当两个Peer不在同一个网络时,就需要STUN和TURN服务器来协调。本文将详细介绍STUN服务器和TURN服务器的原理,以及它们在P2P通信中的具体作用。

一、 STUN服务器的原理

STUN服务器是基于UDP协议的,主要作用是获取设备的公网IP和端口号。在NAT(Network Address Translation)环境下,设备的内网IP和端口号很容易获得,但获得公网IP和端口号就比较困难。STUN协议是专门为了解决这个问题而设计的。

STUN协议通过在内网设备发送STUN消息到公网STUN服务器上,然后在STUN消息的返回信息中,获得设备的公网IP和端口号。STUN消息包括请求和响应两种。请求消息中包含了设备的网络地址和端口等信息;响应消息中包含了当前网络环境的信息,如公网IP、类型、NAT类型等。在获取到公网IP和端口号后,设备就可以将其发送给对方设备,实现P2P通信。

具体来说,当设备连接到NAT环境下,其产生的IP数据包需要首先经过NAT设备进行转换,然后才能发送到Internet上。NAT设备为了避免IP地址的冲突,会在这个过程中改变这个数据包中的源IP地址和源端口号。这个过程被称为IP地址转换。STUN协议就是利用这个过程,在不同网络间进行IP/端口的映射。

STUN服务器的应用情景主要 是在UDP Hole Punching的情况下,通过对Nat对外端口的反射得到外网IP和对外端口。例如有两个设备A、B想要进行P2P通信,但是它们在不同的私有网路下,A上的公网IP和端口是x,B上的公网IP和端口是y。若A直接向B发送数据,则数据包会无法穿越NAT,从而无法到达B处。但如果A和B都向一个公网IP和端口发送数据包,由于该公网IP和端口上的NAT映射到A和B的私有网络地址是不同的,因此这两个NAT之间就建立了一条“虚拟直通”隧道。A、B就可以通过这条“虚拟直通”隧道直接通信。STUN 就是借助这条“虚拟直通”隧道来提供P2P连接的。

二、TURN服务器的原理

TURN服务器(Traversal Using Relay NAT)可以作为STUN的补充协议,主要作用是在不能进行UDP Hole Punching的环境下搭建一条“隧道”,让数据包穿过NAT设备,从而实现P2P通信。TURN服务器能够保证在双方都无法进行UDP Hole Punching的情况下,能够通讯。

在一些极限情况下会出现STUN服务器失效的现象,例如:双方设备在一个双NAT网络环境下,NAT都不支持STUN。这时TURN就可以发挥作用了,TURN服务器的作用是充当一个“转发器”,将不能直接相互通信的设备的数据包中继转发给对方,让它们完成数据交流。所有的两端数据都经过TURN服务器的转发,TURN会将数据包转发给设备对应的端口,设备接收数据包并返回响应数据。

具体来说,TURN协议的过程如下:

1. 设备A向TURN服务器发送相应请求,包括本地私网IP和端口等信息。

2. TURN服务器响应请求,生成临时公网IP和端口。

3. A向TURN服务器发送连接请求,包含临时公网IP和端口等信息。

4. 服务器代表A向设备B发送连接请求,B会响应请求,并把响应消息发送给服务器。

5. TURN将响应消息转发给A,A向TURN发送数据,TURN将数据转发给B,从而实现P2P通信。

TURN的优势在于,没有NAT阻塞,无需NAT设备的支持。但TURN的弊端是,数据包都经过TURN服务器的转发,会增加延迟和带宽使用率。

特别需要注意的是,TURN是一种基于UDP的转发技术,这就意味着在用户使用的网络环境中,需要允许UDP消息的传输。

三、STUN和TURN的应用:

STUN和TURN主要用于实现实时多人游戏或视频会议等P2P无服务器通信的场景中。在这样的场景下,P2P通信不仅可以大幅降低服务器压力,同时也能降低延迟和提高通信质量。运用STUN和TURN时,需要注意以下几个要素:

1. IP和端口穿透

在NAT环境下,STUN和TURN都需要进行IP和端口穿透。其中,STUN只需要完成UDP Hole Punching,而TURN则需要依赖中转服务器进行穿透。

2. NAT类型

在使用STUN和TURN的过程中,NAT的类型需要被考虑到。对于Full Cone、Restricted Cone、Port Restricted Cone类型的NAT,使用STUN已经足够;针对Symmetric NAT,就需要使用到TURN来解决。

3. 用户需求

使用STUN和TURN之前,需要确定用户需求和使用场景。例如不用视频会议的情况下,STUN就够用了;而对于需要多人实时游戏场景,则需要使用TURN来实现,从而保证稳定的通信连接。

总结:STUN和TURN服务器都是在P2P通信场景下重要的服务器。在使用STUN和TURN时,需要考虑到NAT类型、IP和端口穿透问题,从而保证P2P通信的通畅。同时,在不同的使用场景下,选择不同的服务器方案也是重要的。

评论列表 评论
IDC交流
IDC交流
服务器主机,虚拟主机相关内容都可以来这里推荐交流哦!
社区管理员:

暂无管理员

 
 
 
发布评论

评论: stun服务器原理(turn服务器原理)

(0) 分享
分享

取消

粉丝

0

关注

0

收藏

0

已有0次打赏