我读过一些关于WebRTC的文章,如果只有一个对等点使用对称NAT,而另一个对等端使用对称或端口限制NAT,那么我就不明白为什么我们需要一个转身服务器,所以假设A使用完全Cone NAT,B使用对称NAT:
我是遗漏了什么,还是这是正确的(并已实现的),还是太复杂而无法实现?
如果这是正确的,那么理论上,如果我是对等点A,并且我使用的是完全Cone NAT,那么任何对等的B都可以连接到我(只要我首先发送连接请求),而不需要一个转服务器。
谢谢
发布于 2021-08-01 10:09:29
如果对称NAT环境仅更改端口,则有关连接到完全Cone NAT的处理是正确的。打孔的步骤是可行的。
但是,许多企业和移动环境都有复杂的路由方案和与传统家庭网络路由器不同的疯狂网络环境。这些环境不仅仅是一个连接到电缆调制解调器的小路由器盒。它是一个使用IP地址银行的路由器和负载均衡器的复杂数组。并且每个出站连接都可能得到一个与以前的连接不同的IP地址。从技术上讲是“对称NAT”。
因此,在此环境中的节点从STUN服务器获得外部IP /端口对后,后续发送到对等地址可能同时更改端口和IP地址。
因此,NAT在打孔步骤中看到UDP数据包到达时所看到的IP地址与预期完全不同。因此,这里需要一个中继地址(转)。
发布于 2021-08-01 10:43:10
如果从映射/过滤的角度来看,这个问题要简单一些。其他NAT术语并不能很好地描述事物的实际工作方式。我的答案来自RFC 4787和好奇的WebRTC :连接
映射是NAT为出站数据包分配IP/端口的时候。远程对等方可以向此映射发送通信量。过滤是围绕谁可以使用这些映射的规则。
然后,过滤和映射可以是与地址相关的和独立的。如果映射依赖于地址,则意味着每次联系新的IP/端口时都会创建一个新的映射。如果映射是独立于地址的,则意味着不管您在哪里发送通信量,它都会被重用。这些规则同样适用于过滤。
如果一个对等点是地址+过滤独立的,我不相信转服务器会带来好处。
如果您想要TCP连接,那么部署一个转身服务器是个好主意。一些WebRTC服务器支持TCP,但我不相信任何浏览器都会生成被动的TCP候选服务器。
https://stackoverflow.com/questions/68610661
复制相似问题