实现 p2p 消息广播网络的最新技术是什么?

2023-12-11

我知道快速谷歌可以得到大量的结果,并且关于这个主题的文献非常丰富,而这正是问题所在。在众多可能的解决方案中,我不确定哪一个是满足我的特定需求的最佳、最新的选择。

我正在尝试在互联网上实现一个 p2p 网络,其唯一的功能是将消息广播到在线节点。为了连接到网络,您必须能够指向现有的 IP。当你这样做时,你会发现一些同伴并与他们保持活跃的联系。然后,您可以向每个其他节点发送消息。没有直接的沟通,发送的每条消息都会被其他人接收。我希望这个网络具有尽可能高的性能,并且在 UDP 之上工作。

解决此处指定的形状问题的一些最先进算法的名称是什么?


如果你想了解建立去中心化 P2P 架构的概念,你可以看看数据基金会,他们提供了一个用于通过互联网共享 P2P 数据的模块生态系统,例如超核(原始 P2P 流)和超光速引擎(超核之上的文件传输)。 他们有一些关于技术概念、挑战以及如何解决这些问题的良好文档。

P2P 设计中的一些挑战:

  • NAT 路由器和防火墙:通过实施 NAT 穿越和 UDP 打洞来克服(参见:NAT穿越现状由零层)
  • 发现同行:Dat 项目使用 Gossiping 作为一群对等点在网络上找到彼此的有效方式,以及一种简单的(protobuf)有线协议进行通信(请参阅:超发现 and 超核协议).
  • P2P数据通讯/同步:Hypercore 在每个对等点上实现仅追加日志,并使用 Merkle 树以正确的顺序聚合和删除来自其他对等点的重复数据块

Dat 项目支持 TCP、UDP、WebRTC 和 BittorrentDHT。

请阅读他们的一些规范文档,以获取有关这些概念和协议设计的深入信息:

  • Dat - 分布式数据集同步和版本控制 (pdf)
  • 数据如何运作
  • 超核协议
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实现 p2p 消息广播网络的最新技术是什么? 的相关文章

  • Python UPnP/IGD 客户端实现?

    我正在寻找一个开源实现UPnP http elinux org UPnPPython 中的客户端 更具体地说是它的互联网网关设备 http en wikipedia org wiki Internet Gateway Device Prot
  • 我可以关闭并重新打开套接字吗?

    我学习了一个使用套接字的例子 在此示例中 客户端向服务器发送请求以打开套接字 然后服务器 侦听特定端口 打开套接字 一切都很好 套接字从双方 客户端和服务器 打开 但我仍然不清楚这个东西有多灵活 例如 客户端是否可以关闭一个打开的 从两端
  • 为什么SOCKS5需要通过UDP中继UDP?

    The SOCKS5 https en wikipedia org wiki SOCKS SOCKS5协议 描述为RFC1928 https www rfc editor org rfc rfc1928提供对 UDP 的支持 总而言之 希望
  • 恐怖分子已弃用

    正在接听另一个问题 https stackoverflow com q 11830514 1468366 我偶然发现了man page http linux die net man 3 herror一个名为的函数herror 看起来很像pe
  • Android 防火墙与 VpnService

    我正在尝试使用 BS 项目的 VpnService 为 Android 实现一个简单的防火墙 我选择 VpnService 因为它将在非 root 设备上运行 它将记录连接并让您过滤连接 基于IP 有一个应用程序可以做到这一点 因此这是可能
  • 无法通过 macvlan 网络从主机访问 docker 容器

    在我的 Linux 网络中 我无法通过专用 macvlan 网络从运行它们的主机访问我的 docker 容器 到此 macvlan 网络的所有其他连接都正常 所以基本上设置是 DOCKER1 eth0 172 0 0 1 default e
  • 为什么 Kademlia 使用 UDP?

    为什么Kademlia 分布式哈希表 http en wikipedia org wiki Kademlia使用 UDP 作为其网络传输协议 即使它不可靠 主要原因是您快速查询了许多以前从未建立过联系并且可能在查找过程中永远不会再看到的节点
  • 网络服务发现不是发现服务类型

    我想通过 Android 设备在本地网络中找到服务器 我可以通过使用找到它NSDManager具有服务器服务类型的服务 例如 workstation tcp是服务类型 在我的本地网络中我有一个 无线路由器和无线中继器 两者都有不同的SSID
  • Java快速检查网络连接

    我的问题相当简单 如果网络连接丢失 我的程序需要立即通知 我正在使用 Java 5 所以我无法使用非常方便的功能网络接口 http download oracle com javase 6 docs api java net Network
  • 使用 TCP 时是否需要使用校验和来保护我的消息?

    使用 TCP 作为网络协议 在通过线路发送消息之前 我会为每条消息的大小 以及可能的校验和 添加前缀 我想知道 计算和传输消息的校验和是否有意义 以确保消息将被不变地传递 如果以及何时传递 例如因为一些网络错误 目前 我在发送消息本身之前发
  • 如何确定非阻塞套接字是否真正连接?

    这个问题不仅限于Python 这是一个一般的套接字问题 我有一个非阻塞套接字 想要连接到一台可访问的机器 在另一端 该端口不存在 为什么 select 仍然成功 我预计会超时 sock send 因管道损坏而失败 select 之后如何确定
  • 检查 IPv4 地址是否在私有范围内

    在 Python 中 使用 IPy 模块您可以执行以下操作 gt gt gt ip iptype PRIVATE 有没有一个库或简单的方法可以在 Java 中执行相同的操作 似乎不完全是但是InetAddress有一些 isXX 方法 例如
  • Docker 容器是否有自己的 TCP/IP 堆栈?

    我试图了解来自连接到主机的线路并定向到 Docker 容器内的应用程序的网络数据包在幕后发生了什么 如果它是一个经典的 VM 我知道到达主机的数据包将由虚拟机管理程序 例如 VMware VBox 等 传输到 VM 的虚拟 NIC 并从那里
  • Node.js:将 repl 挂接到远程节点服务器

    假设我有一个节点服务器在 mysite com 上运行 有没有办法设置该服务器以便我可以使用节点的repl api http nodejs org docs latest api repl html to securely从我的本地计算机连
  • Java Socket/Serversocket WAN 连接

    我试图用我的计算机创建一个服务器 以便他们的计算机上的客户端可以与我的计算机连接和通信 我在端口 31350 上创建了服务器 客户端尝试通过我的路由器的 IP 地址进行连接 但只有当我在套接字创建参数中有 localhost 或我的计算机名
  • TCL类C10K事件服务器开发进展如何?

    TCL 是一种很好的简单编程语言 但似乎没有得到认可和 或尊重它deserves http antirez com articoli tclmisunderstood html 我 1995 年在大学时就学过它 但很快就忘记了 直到最近才再
  • SO_REUSEPORT 可以在 Unix 域套接字上使用吗?

    Linux 内核 gt 3 9 允许通过设置在内核负载平衡的进程之间共享套接字SO REUSEPORT http lwn net Articles 542629 http lwn net Articles 542629 这如何用于类型的套接
  • HttpRequest PUT内容到poco库中

    我想使用 HTTP PUT 请求将一些数据从 C 应用程序发送到服务器 我在用poco http pocoproject org我的应用程序中的网络库 我正在使用这个代码片段 HTTPClientSession session uri ge
  • 从 Docker 容器发送多播数据包(到多播组)

    我有一个通过 UDP 多播发送消息的应用程序 我一直试图将其放在 docker 下 我在尝试从 Docker 容器发送多播数据包时遇到了很大的阻力 我已经能够通过 net host运行 docker 容器的选项 然而 我想坚持使用桥接配置
  • 尝试对无法访问的主机进行套接字操作

    一位客户在连接到我们的服务器服务的 WCF 客户端上报告了此错误 消息 尝试对无法访问的主机进行套接字操作 类型 System Net Sockets SocketException 从这个链接http msdn microsoft com

随机推荐

  • 将元素插入全局映射时发生访问冲突

    我已经尝试调试这个几个小时了 但没有成功 我知道你们会在几分钟内解决问题 所以情况是这样的 我有大约 400 个名为 ProblemX cpp ProblemX h 的 cpp h 文件 其中 X 是 1 到 400 之间的数字 每个文件都
  • 如何修改 Pandas 中的日期时间索引格式(UTC)?

    我有一个看起来像这样的 df 2015 01 29 08 30 00 05 00 199425 199950 199375 199825 2015 01 29 08 45 00 05 00 199825 199850 199650 1998
  • Rails 4 使用回形针添加多个文件附件

    我知道 Stackoverflow 上有很多关于这个主题的帖子和一些教程 然而 他们都没有能够解决我的问题 而且大多数都已经过时了 我正在尝试使用 Rails 4 中的回形针 gem 将多个图像添加到项目中 当我尝试上传它时 我确实看到参数
  • 如何使用 HTML 中的 mailto 在 Outlook 中附加文件?

    我使用以下代码使用 Outlook 发送邮件 a href Send Mail a 问题是我无法在 Outlook 中附加文件 我尝试过使用 附件 参数 但出现了同样的问题 可以做到还是有替代方案 这是不允许的 请注意仅通过单击链接附加本地
  • BarcodeScanner2 = TypeError:无法将属性“innerHTML”设置为 null

    我正在尝试在android中使用phonegap 1 4 1开发一个条形码扫描应用程序 我试图将所有值存储在数组中code 后来我使用数组显示值 我正在创建一个local storage的价值观 这是我对数组和计数器的声明 localSto
  • 无法使用主活动中的导航视图在导航抽屉中设置文本视图。 Xamarin Android

    这是我设置所有图标 菜单 抽屉和导航视图的主要活动 在这里 我通过将 nav header 膨胀到视图中来设置另一个视图并设置文本视图 但我似乎仍然无法更改导航抽屉中的文本视图 主要活动 using Android App using An
  • 标题栏按钮和自定义标题栏

    我为黑色 NSWindow 样式 0 创建了一个自定义标题栏视图 这样我就可以让它以与 Quicktime X 类似的方式消失 唯一的问题是 按钮不响应鼠标悬停和鼠标移动操作标题栏上的 可以与按下按钮组合起来 完整的源代码在这里 https
  • 使用 Java 和 Kerberos 以不同用户身份创建进程

    我正在开发一个Java服务器应用程序 在Windows下作为服务运行 并希望实现以下场景 用户向服务器发出 POST 请求 用户通过 Kerberos SPNEGO 企业环境中的 SSO 进行身份验证 该服务创建一个新的 Java 进程 该
  • Pandas - 移动平均值 - 使用当前行的前 X 个条目的值

    所以我的数据集看起来像这样 date site iso id hits 2017 08 25 google 1 7012 14225 0 2017 08 26 google 1 7012 14565 0 2017 08 27 google
  • 如何更改 SwiftUI 中每个视图的状态栏文本颜色?

    我正在寻找一种方法来改变text状态栏的颜色 允许为每个视图使用不同的文本颜色 我见过本次问答 但这不是我要找的 我并不是在寻找只允许所有视图使用一种状态栏文本颜色的解决方案 我想更改状态栏text color 对于每个视图 例如 一个视图
  • OleDb / OleDbConnection 调整表单大小(错误?)

    有人可以帮助解决我似乎无法解决的问题吗 我在适用于桌面的 VSE2012 Express 和适用于桌面的 VSE2013 Express 中创建了一个 C 表单 其中我将表单保留为默认大小 并再次完全默认添加了一个按钮 该按钮被编码为打开和
  • 如何使用 JavaScript 检测连接麦克风的系统

    我在用着getUserMedia 用于音频录制 它工作正常 但有问题 我想在开始录制之前显示一条消息 表明任何麦克风是否与系统连接 为此 我使用了以下代码并将其运行到 chrome 中 但它无法正常工作 if navigator getUs
  • Bootstrap 4:未捕获的引用错误:波普尔未定义

    我已经使用 Node 和 Gulp 安装了 Bootstrap 4 在运行该应用程序时出现以下错误 未捕获的引用错误 波普尔未定义 到目前为止 我只使用过 Bootstrap 网格系统 还没有使用过任何需要 Bootstrap JS 的东西
  • SBT 未从根目录运行

    FROM openjdk 8 as build ENV SBT VERSION 1 5 8 ENV APP HOME service RUN apt get update apt get install apt transport http
  • Boost序列化不适用于shared_ptr

    下面的代码编译得很好 include
  • chrome 中 svg 背景周围的奇怪滚动条

    我在添加 svg 文件作为背景时遇到问题 一切看起来都不错 但在 Google Chrome 中 我在 svg 的右侧和底部看到了 stage 非活动滚动条 而不是容器 这是问题结果的屏幕截图 http xmages net show ph
  • 通过连接另一个 char* 来初始化 const char*

    我想重构 const char arr The quick brown 变成这样的东西 const char quick quick const char arr The quick brown 因为字符串 quick 在很多其他地方都被使
  • 从前台服务启动的协程被暂停

    我每秒都会更新一条通知 AndroidEntryPoint class StopwatchService Service Inject lateinit var stopwatch Stopwatch scope private val j
  • 学习 JavaScript:词法与动态作用域

    所以我在读this本书 遵循代码示例并使用节点控制台运行它们 在第 7 章 词法与动态作用域 段落中 作者声称以下代码将导致错误 const x 3 function f console log x this will work conso
  • 实现 p2p 消息广播网络的最新技术是什么?

    我知道快速谷歌可以得到大量的结果 并且关于这个主题的文献非常丰富 而这正是问题所在 在众多可能的解决方案中 我不确定哪一个是满足我的特定需求的最佳 最新的选择 我正在尝试在互联网上实现一个 p2p 网络 其唯一的功能是将消息广播到在线节点