mediasoup不需要单独部署STUN服务器,这是因为mediasoup支持ICE(交互式连接建立)框架,可以通过ICE框架自动探测和选择网络路径,从而避免使用STUN服务器。ICE框架允许浏览器在STUN和TURN(中继转换)服务器之间进行选择,以确保在不同的网络环境下建立连接1。
STUN协议的作用和机制
STUN(Session Traversal Utilities for NAT)是一种网络协议,主要用于NAT(网络地址转换)穿透。它的主要作用是获取自己的外网IP并进行连通性检测。客户端(如Chrome)会向STUN服务器发送请求,以获取自己的外网IP信息。对于部署在公网环境中的流媒体服务器(如mediasoup和SRS等WebRTC服务器),它们本身具有外网IP信息,因此不需要再通过STUN服务器来探测自己的外网IP23。
mediasoup中STUN数据包的处理流程
在mediasoup中,STUN数据包的处理流程如下:
- 数据包到达时,首先通过WebRtcTransport::OnPacketReceived方法接收数据包。
- 通过RTC::StunPacket::IsStun方法判断数据包是否为STUN数据包。
- 如果是STUN数据包,则调用WebRtcTransport::OnStunDataReceived方法进行处理。
- 接着,通过RTC::StunPacket::Parse方法解析STUN数据包,并调用IceServer::ProcessStunPacket方法进行处理4。