一方通过对称NAT连接,另一方可以直接访问,并有一个STUN服务器。
各方将通过WebRTC进行交stream。 两者都被configuration为使用STUN服务器。
它会起作用吗? 仅仅因为WebRTC协议,我需要一个STUN服务器,还是有一个真正的理由让它通过一个NAT设备?
NAT设备更改IP数据包的地址和端口。 但是,SIP消息包含IP数据包的有效负载内的IP地址,这些数据包不由NAT设备pipe理。 作为联系人或Via或SDP数据的SIP标头包含仅在LAN上下文中有效的IP地址和端口号。 这是因为SIP必须得到其他机制的帮助才能正确填充协议头。 作为来自星号的专有IAX2的其他VoIP协议可以在没有这些问题的情况下穿越NAT,但是如果您有星号服务器,或者您可以将其安装在公共场所,则只能利用它。
无论如何,假设你必须使用SIP。 在这种情况下需要使用NAT穿越协议。 STUN协议使用外部服务器来查找NAT后面的公开地址和端口
正如您在STUN协议和VoIP中所看到的 – 第1部分
STUN协议的主要目的是使运行在NAT设备后面的设备能够发现它的公有IP以及在它所连接的网关上运行的NATtypes。 它还使连接在网关后面的设备能够发现由网关本身(NAT)完成的端口转换; 即其他设备可以使用哪个端口从networking外部连接到它。 请注意,网关和路由器并不总是进行端口转换; 这取决于他们正在运行的NAT的types以及如何configuration。 例如,全锥形NATconfiguration不会转换端口。
因此,对于公共服务器是否需要STUN的问题,答案是否定的。 它可以帮助NAT后面的客户find他们的公共地址和端口,以便将正确的数据放在SIP头中。
但是…简单的NAT是一种NAT,其中设备根据外部服务器将一对(私有IP,私有端口)转换成不同的对(公共IP,公共端口)。 设备(路由器)至less可以改变每个连接中的公共端口,因此,不需要从STUN服务器获取信息,因为与呼叫中的另一方的真实连接要使用其他端口。 仿真NAT必须通过其他协议遍历TURN