Networking 晕眩和转身

Networking 晕眩和转身,networking,stun,turn,nat-traversal,Networking,Stun,Turn,Nat Traversal,我需要在服务器和客户端之间建立连接,这两者都可以支持任何类型的NAT。为此,我在互联网上有一台专用主机,具有干净的IP,用于托管STUN/TURN服务器。我不打算使用WebRTC,我只想使用STUN/TURN服务器在客户端和服务器之间传递消息。在阅读RFC、SO等之后,我有一些问题不清楚: 在哪种情况下使用电击?据我所知,眩晕只用于全锥NAT。在所有其他情况下,由于主机和/或端口限制,必须使用TURN服务器。对吗 似乎我需要一个信令服务器来通知客户端服务器地址,反之亦然。但只要客户机/服务器向信

我需要在服务器和客户端之间建立连接,这两者都可以支持任何类型的NAT。为此,我在互联网上有一台专用主机,具有干净的IP,用于托管STUN/TURN服务器。我不打算使用WebRTC,我只想使用STUN/TURN服务器在客户端和服务器之间传递消息。在阅读RFC、SO等之后,我有一些问题不清楚:

  • 在哪种情况下使用电击?据我所知,眩晕只用于全锥NAT。在所有其他情况下,由于主机和/或端口限制,必须使用TURN服务器。对吗
  • 似乎我需要一个信令服务器来通知客户端服务器地址,反之亦然。但只要客户机/服务器向信令服务器发送消息,我就知道它们的外部主机:端口,所以我让每一方都知道对方的主机:端口,每一方都可以向这个信令服务器发送包含对等方主机:端口数据的消息,信令服务器可以使用它来检测此消息用于哪个对等方,并将其转发给相应的对等方。乍一看,我觉得这个逻辑非常简单,我的信令服务器变成了TURN服务器——TURN服务器就是这样实现的吗?但如果是这样,我不明白,为什么我需要像“coturn”、“reTurn”这样的回合服务器?我知道他们实现了ICE,但如果我的信令服务器接收到来自具体主机的消息:对等机的端口,那么ICE将如何工作,所以这是唯一可以用于与对等机连接的候选者
  • 在受限NAT(端口、地址或对称)的情况下,路由器上的客户端外部(公共)端口打开多长时间以接收UDP数据报?我读到TURN客户端向服务器发送刷新消息以保持通道打开,这是客户端阻止端口关闭的方式吗
  • STUN可以桥接大多数nat的P2P连接,但对称nat除外,对称nat具有不可预测的端口映射。后者需要转向

  • 信令通常通过TCP和不同的套接字完成。P2P媒体通常是UDP。这就是区别。您可能会在信令服务器帮助下发现IP地址,但无法可靠地发现端口。即使两者都是TCP,您也可能希望信令服务使用单独的套接字连接,而不是媒体

  • 根据我的经验:1-2分钟。有时更长。在两个方向都没有数据流动的情况下,每45秒会有保持活动的消息流动,以防止会话被丢弃

  • 谢谢你的邀请。1) 据我所知,如果使用了STUN,那么就没有使用中继,因此对等方在接收客户端主机时直接连接到客户端:使用信令服务器的端口。但是,如果peer拥有客户端连接到的另一个主机:STUN服务器以外的端口,那么在没有完全Cone NAT的情况下,从peer到客户端的直接连接将被拒绝,因为只有完全Cone NAT允许任何主机:端口连接到侦听端口,那么没有中继怎么可能呢?2) 请您澄清一下,为什么我不能用这种方法可靠地发现端口?