gpt4 book ai didi

networking - 通过 NAT 连接 P2P?

转载 作者:行者123 更新时间:2023-12-03 07:50:49 24 4
gpt4 key购买 nike

我开始探索使用 p2p 连接与其他人连接的选项,因此我在 JAVA 中为 android 设备编写了一个简单的套接字程序,用户可以在其中共享简单的消息 p2p(当时我对 NAT 没有任何想法)。我了解了 NAT,所以我现在需要与另一个用户建立 TCP 连接,该用户使用服务器进行发现,但有效负载是 p2p 传输的。我还查看了 XMPP(对协议(protocol)如何工作的一个非常好的和详细的解释是 here)和 UPnP,但我不知道如何实现它们。

另一个有趣的问题是 BitTorrent,因为它们可以在任何设备上工作,甚至在 NAT 之后。我无法解释 BitTorrent 的工作原理。

我研究了很多,但我被困住了。

我的问题是:

  • BitTorrent 的详细解释(如 here,而不是种子如何工作)以及它如何能够绕过 NAT?
  • 有没有办法以编程方式进行 NAT 条目?
  • 套接字编程对于 p2p 是否足够?
  • 创建自己的协议(protocol)有多困难,我该如何构建一个?
  • 如果两个设备 D1 和 D2 想要进行 p2p 通信,并且它们知道彼此的 IP。 D1 向 D2 发送请求,并且无法通过 D2 的 NAT,但应该在 D1 的 NAT 中创建了一个条目。因此,当 D2 尝试发送某些内容时,D1 的 NAT 应该会发现一个具有 D2 的 IP 的条目。那为什么数据包不允许呢?
  • 最佳答案

    Another interesting question that arises is of BitTorrent because they can work on any device and even behind a NAT. I am not able to get any explanation of how BitTorrent works.



    此语句看起来像您假设 bittorrent 需要完全连接才能运行。

    这是不正确的。

    在 NAT 设备后面,您仍然可以建立传出 TCP 连接。只要网络中有其他非 NATed(或 NATed 但正确的 port-forwarded )客户端可以接受传入连接,这通常对于 bittorrent 就足够了。

    NAT 对数据的流向没有影响,因为一旦建立连接,它们就是双向的。它仅对初始连接设置有问题。

    这对于 bittorrent 非常有效,因为 bittorent 不关心您从哪个特定节点获取数据。
    尽管更好的连接性通常会提高性能。

    如果节点的身份很重要或一对一传输是一个重要的用例,那么其他 p2p 协议(protocol)通常会尝试 NAT traversal首先,如果失败,则依靠第 3 方节点在无法直接相互连接的节点之间中继流量。

    此外,由于越来越多的 ISP 开始推出 carrier-grade NAT,IPv6 支持在 future 将成为维持端到端连接的必要条件。对于 IPv4,而 IPv6 将保持非 NAT

    关于networking - 通过 NAT 连接 P2P?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30367603/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com