首页 文章

TCP孔打孔是否适用于此?

提问于
浏览
1

该项目有点类似于家庭自动化项目,因此请牢记家庭自动化 .

  • 我有一个名为 S 的全球无障碍服务器

  • 有一个名为 M 的移动客户端

  • 有一个称为 H 的集线器

由于许多IP是动态的,并且ISP为静态IP收取额外费用并且让客户端口转发其应用程序的端口是不切实际的 .

我听说用于P2P的TCP Hole冲孔可能不可靠,但是使用 S 作为所有请求的代理似乎是不切实际的,因为 S 会有很大的负载 .

我的目标:

M 连接到 H ,以便他们可以互相进行RESTful HTTP请求 .

我的问题

  • 如何管理 MH 无法通过TCP启动连接的情况? (使用UDP?)

  • 如果TCP打孔没有't work in the situation, could I send UDP packs instead? (UDP'在交付方面不可靠,那么发送多个重复数据包是否保证交付?)

注意事项

我一般都知道打孔是如何工作的, S 必须给两个客户端的 endpoints ,以便他们都可以尝试启动连接 . 我对NAT也有很好的理解

也许对于TCP Hole Punching无效的罕见情况, S 可以充当代理

1 回答

  • 0

    我如何管理M或H都无法通过TCP启动连接的情况? (使用UDP?)

    是的通过UDP . 或者使用TCP到S.

    如果TCP Hole打孔在这种情况下不起作用,我可以发送UDP包吗? (UDP在交付方面不可靠,因此发送多个重复数据包可以保证交付吗?)

    这取决于 . 您必须在接收方进行检查,以确定是否收到数据包,然后向发送方发送通知 . 因为您可能会发送10/20相同的数据包,但仍然可能无法到达接收方 . 但是如果你想拥有可靠的数据包传输以及UDP,那么就有一个名为RUDP的协议 .

    Note that 无论您使用的是TCP还是UDP,都无法始终成功 Build P2P连接 . 许多时候您必须通过S Build 连接或者您无法连接 . 该场景是,其中一个 endpoints 具有对称NAT,而其他 endpoints 具有PRC / Symmetric NAT . 现在,很多基于LTE的连接使用对称NAT .

相关问题