我碰到过这样的情况:“唯一需要进行TURN的时间是当一个对等方位于对称NAT之后而另一个对等方位于对称NAT或端口受限NAT之后。” 那么,对称NAT后面的对等方如何连接另一个后面的对等方,例如全锥状NAT?
例如,让对称NAT后面的对等方为A,而全圆锥NAT后面的对等方为B。呼叫过程应类似于:
请检查我是否正确理解这些步骤。那么,A(在对称NAT后面)如何与B(在整个圆锥或地址限制的圆锥后面)进行通信?
谢谢。
小智 5
如您所知,仅在用例的两面使用STUN就会导致单向音频通话:A能够将音频发送到B。
您知道,如果A可以发送给B,那么反向路径也是可用的。
这是B的情况:
* RTP packets are sent to As:Asp
* RTP packets are received from As:Asp'
* B can read the origin of RTP packets with "recvfrom"
Run Code Online (Sandbox Code Playgroud)
B的一种非常简单的方法是比较SDP中的IP:PORT和RTP数据包中的IP:PORT'。除了它引入的安全性问题外,如果B切换到IP:PORT',A将收到来自B的RTP,并且您最终会进行2路音频呼叫:该技术被许多软件所使用,通常被称为“对称RTP”。
同样,这不是兼容的方式。它可能会导致ALG出现问题,并且仅在发件人使用相同的套接字进行发送和接收时才起作用。(用例的99%)。由于“中间人”可能向您发送RTP数据包,因此您也开始与他交谈,这也被视为安全问题。
RFC6336定义的ICE 提供了解决方案。STUN连接检查将通过RTP路径进行交换。B将收到应该来自As:Asp但来自As:Asp'的STUN连接检查:将STUN连接检查验证为来自A。此新“候选”(请参阅ICE的定义)应添加到列表中可能的候选对象(新的RTP路径),并将由A和B再次进行验证/认证。理论上,它是通过信令协议再次交换的。(实际上,即使不再次交换新候选人也可以使用...)
因此,使用ICE,将学习,验证,确认和使用RTP路径As:Asp'<-> Bs:Bsp!
| 归档时间: |
|
| 查看次数: |
1341 次 |
| 最近记录: |