【问题标题】:STUN and TURN clarificationSTUN 和 TURN 说明
【发布时间】:2016-07-10 10:05:08
【问题描述】:

我需要在服务器和客户端之间建立连接,它们都可以位于任何类型的 NAT 之后。为此,我在 Internet 上有一个专用主​​机,其 IP 干净,用于托管 STUN/TURN 服务器。我不会使用 WebRTC,我只想使用 STUN/TURN 服务器在客户端和服务器之间进行消息传递。在阅读了 RFC、SO 等之后,我有一些不清楚的问题:

  1. 在什么情况下使用 STUN?据我了解,STUN 仅用于全锥 NAT。在所有其他情况下,由于主机和/或端口限制,必须使用 TURN 服务器。对吗?
  2. 看来我需要一个信令服务器来通知客户端服务器地址,反之亦然。但是一旦客户端/服务器向信令服务器发送消息,我就知道他们的外部主机:端口,所以我让每一方都知道对方的主机:端口,每一方都可以向这个信令服务器发送包含对等方主机:端口数据的消息,信令服务器可以使用它来检测该消息是针对哪个对等点并将其转发给相应的对等点。乍一看,这个逻辑在我看来非常简单,我的信令服务器变成了一个 TURN 服务器——这就是 TURN 服务器的实现方式吗?但如果是这样,我不明白,为什么我需要像“coturn”、“reTurn”等这样的 TURN 服务器?我知道他们实现了 ICE,但是如果我的信令服务器从对等点的具体主机:端口接收到消息,那么这个 ICE 将如何工作,那么这是唯一可用于与对等点连接的候选对象?
  3. 在受限 NAT(端口、地址或对称)的情况下,客户端外部(公共)端口在路由器上打开多长时间以接收 UDP 数据报?我读到 TURN 客户端向服务器发送刷新消息以保持通道打开,这是客户端也防止端口关闭的方式吗?

【问题讨论】:

    标签: networking stun turn nat-traversal


    【解决方案1】:
    1. STUN 可以桥接大多数 NAT 的 P2P 连接,但对称类型除外,它具有不可预测的端口映射。后者需要TURN。

    2. 信令通常使用 TCP 和不同的套接字来完成。 P2P 媒体通常是 UDP。所以有这个区别。您可能会在信令服务器的帮助下发现 IP 地址,但无法可靠地发现端口。即使两者都是 TCP,您也可能需要一个单独的套接字连接用于信令服务而不是媒体。

    3. 根据我的经验:1-2 分钟不等。有时更长。在没有双向数据流动的情况下,每 45 秒发送一次保持活动消息,以防止会话被丢弃。

    【讨论】:

    • 感谢您的回答。 1) 据我了解,如果使用 STUN,则不使用中继,因此当它使用信令服务器接收客户端主机:端口时,对等方直接连接到客户端。但是没有中继怎么可能,如果对等方有另一个主机:端口而不是 STUN 服务器,该客户端连接到,因此在除了全锥 NAT 之外的任何情况下,这种从对等端到客户端的直接连接将被拒绝,因为只有全锥NAT 允许任何主机:端口连接到侦听的端口? 2)您能否澄清一下,为什么我不能用这种方法可靠地发现端口?
    猜你喜欢
    • 1970-01-01
    • 2020-04-16
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2017-10-17
    • 2015-10-30
    相关资源
    最近更新 更多