什么时候需要使用转发?对称NAT和端口受限NAT。

4
我遇到了这个问题:"仅当一方在对称NAT后面,而另一方在对称NAT或端口限制NAT后面时,TURN才是必需的。"那么一个在对称NAT后面的节点如何连接另一个在全锥形NAT后面的节点呢?
例如,让在对称NAT后面的节点为A,在全锥形NAT后面的节点为B。呼叫过程应该是这样的:
1. A从STUN(无需TURN)服务器发现其本地地址和端口(Al:Alp)映射到服务器反射值(As:Asp),由于它是对称NAT,因此这些值只对A和STUN服务器有意义。(对吗?) 2. 同理,B发现其Bl:Blp映射到Bs:Bsp。 3. A发送SIP INVITE并且SDP部分指示使用As:Asp接收媒体。 4. B回复200 OK以指示使用Bs:Bsp来接收媒体。 5. 媒体开始并且A发送给B。请注意,由于它是对称NAT,因此NAT将创建一个新端口,因此数据包将变成As:Asp'-> Bs:Bsp(其中Asp'是新创建的端口)。 B端的NAT会传递数据包(因为它是全锥形NAT),并且B将获取A的媒体。 6. 从SIP / SDP中,B知道要使用As:Asp向A发送媒体,而这将在A的对称NAT中被丢弃,对吗?
请检查我是否正确理解了步骤。那么,一个在对称NAT后面的节点如何与一个在全锥形或地址限制锥形NAT后面的节点通信呢?谢谢。
1个回答

6

如您所了解,仅在您的用例中双方都使用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"

一个非常简单的方法是比较SDP中的IP:PORT和RTP数据包中的IP:PORT'。除了引入安全问题之外,如果B切换到IP:PORT',A将接收来自B的RTP,并且您将进入双向音频通话:这种技术被许多软件使用,并经常称为“对称RTP”。再次强调,这不是一种合规方式。它可能会引入ALG问题,并且仅在发送方使用相同的套接字进行发送和接收时才起作用(99%的用例)。它也被认为是一种安全问题,因为“中间人”可能会向您发送RTP数据包,您将开始与他交谈...

rfc6336定义的ICE提供了一种解决方案。STUN连接检查将在RTP路径上交换。B将接收到一个STUN连接检查,假定来自As:Asp但实际来自As:Asp':该STUN连接检查被认证为来自A。这些新的“候选项”(请参见ICE的定义)应添加到可能的候选项列表中(一个新的RTP路径),并将由A和B再次验证/认证。理论上,它会通过信令协议再次交换。(实际上,即使不交换新的候选项,它也可以正常工作...)

因此,使用ICE,RTP路径As:Asp' <-> Bs:Bsp将被学习、认证、确认和使用!


非常感谢您的详细解释。 - user2847598

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接