“ STUN可以使用三种类型的NAT:全锥NAT,受限锥NAT和端口受限锥NAT。对于受限
锥或端口受限锥NAT,客户端必须先向端点发送数据包
,然后NAT才允许从端点
到客户端的数据包。对称NAT“
谁能解释为什么?
#1 楼
因为是STUN(外部服务器),所以无法知道NAT设备将哪个端口提供给客户端。在对称NAT中,客户端在每个连接上获得唯一的端口(在池情况下为IP:端口)#2 楼
假设我们有一个位于地址stun_addr
的STUN服务器和一个位于地址srv_addr
的服务器。使用STUN通常是这样的:客户端通过NAT设备连接到位于
stun_addr
的STUN服务器。 NAT设备将源地址转换为natted_addr_1
STUN服务器告诉客户端从其接收连接的地址,即
natted_addr_1
客户端通过NAT设备与
srv_addr
的服务器联系,并告知如果外部系统希望到达客户端,则使用natted_addr_1
外部系统使用
natted_addr_1
将某些内容发送到客户端这仅在NAT设备同时使用
natted_addr_1
与STUN服务器和其他外部系统的通信。更具体地说,只有当NAT设备将在步骤4中到达的数据包传递到客户端时,它才起作用。交通不同。在第3步中,发送到服务器的数据包中的源地址将转换为其他地址natted_addr_2
。 从
stun_addr
到natted_addr_1
从
srv_addr
到natted_addr_2
很遗憾,服务器被告知使用
natted_addr_1
但是由于到位的NAT地址:端口限制,从srv_addr
发送到natted_addr_1
的数据包将被NAT设备拒绝。 为了更正确,此答案中的“地址”应替换为“地址/端口”,因为NAT设备可以与IP地址和端口号结合使用。
评论
很好的解释。这帮助我理解了为什么STUN不适用于对称NAT。我仍在努力的是,在WebRTC的世界中,通过STUN在地址或端口限制锥NAT上生成的候选者是否会成功?似乎在所有这些情况下,UDP打孔都会失败。我的理解正确吗?
–三元
14-10-16在13:46
对我来说,这听起来像是一个新问题。由于有关不同NAT类型的术语可能会造成混淆,因此,如果您愿意,您可以在站点上提出更多有关上下文的新问题。
– Gerben
14-10-16在18:16
当然,您在这里进入networkengineering.stackexchange.com/questions/12509/…
–三元
14-10-16在18:21