P2P网络——Kademila算法

article/2025/9/27 22:08:59

P2P网络——Kademila算法

简介

Kademlia 是由 Petar Maymounkov 与 David Mazières 所设计的P2P 重叠网络传输协议,以构建分布式的P2P电脑网络。是一种基于异或运算的P2P信息系统。它制定了网络的结构及规范了节点间通讯和交换资讯的方式。

节点内容

Kademlia节点包括以下元素:

  • GUID
  • node地址
  • 路由表
  • API(API to call other nodes)

节点连接

image-20220427095112794

节点会依据guid的确定连接节点,具体计算如下:

image-20220427095226570

以节点0举例,guid为0,计算格式为初始节点guid XOR 2^n = 相连节点guid

0 XOR 1 = 1 , 0 XOR 2 = 2,0 XOR 4= 4,0 XOR 8 = 8

因此,0节点与1,2,4,8相连

节点调用

先看正常情况:

image-20220427100129679

节点0要call节点13:

  • 与节点0向连的是节点1,2,4,8

1 XOR 13 = 12,

2 XOR 13 = 15,

4 XOR 13 = 9,

8 XOR 13 = 5

选XOR结果最小的节点来连接,故,0和8连接

  • 与节点0向连的是节点9,10,12

9 XOR 13 = 4,

10 XOR 13 = 7,

12 XOR 13 = 1,

选择12与13相连

  • 同理计算得出12与13相连
  • 综上,节点0 要调用13,路径为0–>8–>12–>13

当有节点断开

image-20220427100715413

  • 由于8节点断开,节点0会调用距离第二小的节点,即0和4相连

1 XOR 13 = 12,

2 XOR 13 = 15,

4 XOR 13 = 9,

8 XOR 13 = 5

  • 之后计算与正常的节点计算一致

参考

(2) Kademlia Algorithm Overview - 1 - YouTube


http://chatgpt.dhexx.cn/article/pvbge8kf.shtml

相关文章

P2P网络编程-2-案例实践:P2P聊天应用

文章目录 一、初代版本1.1 简介1.2 代码与解析1.3 测试运行 二、节点发现2.1 简介2.2 代码与解析2.3 测试运行 三、总结3.1 libp2p节点发现构建流程3.2 libp2p中地址的转换关系 上一节学习了IPFS项目中P2P网络的构建工具libp2p的基本概念以及简单案例 接下来通过官方的聊天案例…

p2p网络实现(C++)

p2p网络(对等网络):对等网络是一种网络结构的思想。它与目前网络中占据主导地位的客户端/服务器结构的一个本质区别是,整个网络结构中不存在中心节点。在P2P结构中,每一个节点(peer)大都同时具有…

区块链中Java基于WebSocket构建P2P网络

一、pom依赖 <dependency><groupId>org.java-websocket</groupId><artifactId>Java-WebSocket</artifactId><version>1.5.1</version></dependency>二、服务端代码 package com.peck.blockchain.p2p;import org.java_websock…

区块链P2P网络

区块链P2P网络 阅读大概需要10分钟 前言 上两篇文章中我们聊了共识机制&#xff0c;今天我们聊一下区块链技术中的另外一个核心技术点&#xff1a;P2P网络&#xff08;Peer to peer networking&#xff09;。首先澄清一点的是这里讲的P2P这个概念跟平时我们在互联网金融圈提及…

Rust P2P网络应用实战-1 P2P网络核心概念及Ping程序

本系列文章首先研究P2P网络的核心概念&#xff0c;然后详细分析libp2p-rust库中的应用实例&#xff0c;为以后开发P2P网络应用程序打好基础。 P2P网络 P2P(Peer-to-Peer)是一种网络技术&#xff0c;可以在网络中不同的计算机上共享各种计算资源&#xff0c;如CPU、网络带宽和存…

区块链P2P网络协议演进过程

区块链是以加密机制、储存机制、共识机制等多种技术组成的分布式系统&#xff0c;可以在无中心服务器的情况下实现相互信任的点对点交易功能。区块链最大的特点是去中心化和分布式&#xff0c;区块链共识机制使得参与节点共同为系统提供服务&#xff0c;实现中心化系统中类似金…

【区块链实战】什么是 P2P 网络,区块链和 P2P 网络有什么关系

目录 一、简介 二、知识点 P2P 网络 区块链节点与 P2P 的关系 区块链节点功能分类 P2P 网络特征 三、什么是 P2P 网络&#xff0c;区块链式使用 P2P 网络做什么 1、P2P 网络概念 2、P2P 网络节点特征 3、P2P 与区块链 4、网络节点功能 一、简介 在白皮书中&#xf…

Peer to Peer ( P2P ) 综述

Peer to Peer ( P2P ) 综述 罗杰文 luojwics.ict.ac.cn 中科院计算技术研究所 2005-11-3 1 绪言 1.1 Peer-To-Peer 介绍 最近几年&#xff0c;对等计算 目前,在学术界、工业界对于P2P没有一个统一的定义&#xff0c;下面列举几个常用的定义供参考&#xff1a; 定义:1、Pe…

Ubuntu对分区扩容

Ubuntu对分区扩容 准备工具 1、U盘 2、准备好的内存空间 3、Ubuntu的镜像文件 4、清楚如何进入自己电脑的BIOS 扩容大致方向try Ubuntu 网络上的扩容方法大都是在自己的Ubuntu下使用GParted,对将要扩容的分区进行卸载&#xff0c;然后进行扩容&#xff0c;但是这样做有个前…

linux ubuntu 分区,查看Ubuntu分区列表方法

今天在Ubuntu修复Grub正好碰到了要展示分区列表看看 不然都不清楚哪个是哪个了。。 sudo fdisk -l 就是这个命令 ubuntuubuntu:~$ sudo fdisk -l Disk /dev/sda: 250.0 GB, 250059350016 bytes 255 heads, 63 sectors/track, 30401 cylinders Units cylinders of 16065 * 512 …

U盘安装ubuntu20.04 Linux系统分区方案 Invalid Partition Table

一、简介&#xff1a; 一般磁盘分区表有两种格式&#xff1a;MBR和GPT&#xff0c;目前主要的BIOS系统引导方式也有两种&#xff1a;传统的Legacy BIOS和新型的UEFI BIOS 如果主机BIOS系统引导方式采用传统的Legacy BIOS&#xff0c;那么安装ubuntu系统的磁盘分区表使用MBR格式…

Android布局

目录 1. Android的基础布局 2. LinearLayout 线性布局 3. RelativeLayout 4. 常用的控件 1. Android的基础布局 LinearLayout 线性布局 RelativeLayout 相对布局 TableLayout 表格布局 FrameLayout 帧布局&#xff08;框架布局&#xff09; ConstrantLayout 约束布局 &…

安卓布局简单归纳

安卓布局 1.线性布局LinearLayout 2.表格布局TableLayout以及网格布局GridLayout 3.帧布局FrameLayout 4.相对布局RelativeLayout 5.Android2.0已经过时的绝对布局AbsoluteLayout 这里仅谈xml的实现、不涉及java实现 布局管理器及组件的常用共有属性&#xff1a; 属性作用and…

安卓layout布局三等分

关于android LinearLayout的比例布局&#xff0c;主要有以下三个属性需要设置&#xff1a; 1&#xff0c;android:layout_width&#xff0c;android:layout_height,android:layout_weight三个值 2&#xff0c;当为水平布局时&#xff0c;android:layout_height“0dp",当为…

安卓APP(3)——安卓布局控件

嵌入式之路&#xff0c;贵在日常点滴 ---阿杰在线送代码 目录 一、布局的种类 二、布局和页面的关系 三、显示一张美女图 控件的宽度和高度 四、布局背景颜色&#xff0c;背景图&#xff0c;显示两个美女 关于控件ID 五、常用布局之相对布局 RelativeLayout中子控件常…

安卓的相对布局与线性布局

一、安卓布局的种类 Android共有七大基本布局。 分别是&#xff1a;线性布局LinearLayout、表格布局TableLayout、相对布局RelativeLayout、帧布局FrameLayout、绝对布局AbsoluteLayout、网格布局GridLayout。约束布局ConstraintLayout。 其中&#xff0c;表格布局是线性布局的…

Android:布局

Android&#xff1a;布局 LinearLayoutRelativeLayoutFrameLayoutTableLayoutGridLayoutConstraintLayout LinearLayout <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_height"match_parent"android:layout_…

安卓六大布局之 线性布局(LinearLayout)

Android的界面是有布局和组件协同完成的&#xff0c;布局好比是建筑里的框架&#xff0c;而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列&#xff0c;就组成了用户所看见的界面。 Android的六大布局分别是 LinearLayout&#xff08;线性布局&#xff09;RelativeLayo…

Android-布局管理器

线性布局(Linearlayout) 属性 orientation 布局管理器内组件的排列方式(horizontal&#xff08;水平&#xff09;和vertical&#xff08;垂直&#xff09;&#xff0c;默认值为 horizontal.) layout_weight 权重 用于设置组件占父容器剩余空间的比例 la…