我遇到了这个问题:"仅当一方在对称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后面的节点通信呢?谢谢。
例如,让在对称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后面的节点通信呢?谢谢。