热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

获取文件哈希值_2.1分布式哈希表

1.分布式哈希表2.1.1Kademlia(DHT)Kademlia(DHT)是分布式点对点计算机网络的分布式哈希表。它通过
ecee4a1e863eeeeae45de86cdcf1e4f2.png

1.分布式哈希表

2.1.1 Kademlia(DHT)

Kademlia(DHT)是分布式点对点计算机网络的分布式哈希表

它通过节点查找指定网络的结构信息交换

Kademlia节点使用UDP在它们之间进行通信。

虚拟或覆盖网络由参与者节点形成。

每个节点由数字或节点ID标识节点ID不仅作为识别,但Kademlia的算法使用节点ID来定位的值(通常是文件散列或关键字)。

实际上,节点ID 提供文件哈希的直接映射,该节点存储有关获取文件或资源的位置的信息。

在搜索某些值时,算法需要知道相关的密钥并分几步探索网络。每个步骤都会找到更靠近密钥的节点,直到联系的节点返回值或找不到更近的节点。这非常有效:与许多其他DHT一样,Kademlia O( log(n))在搜索系统中的总节点的时间复杂度仅为n。

特别是在分散结构中发现了进一步的优点,这增加了对拒绝服务攻击(DDoS)的抵抗力。即使整个节点集合被淹没,这也会对网络可用性产生有限的影响,因为网络将通过围绕这些“漏洞”编织网络来恢复自身。

KAD算法

(1)Kadelia二叉状态树:

6a4717bd61dcb01de315584d7d1714aa.png

XOR运算:判断两个节点之间的距离的远近d(x,y)=x⊕y

(2)节点路由表:节点路由表 保存每个节点与自己一顶范围内其他节点的连接信息

  • 每条路由信息:ip addr、UDP port 、Nodeid
  • 路由查询机制
  • 节点加入和离开
4c1a61635b9772a26705a2c43575ea35.png

Kademlia中的路由表,其中nodeId前缀为0011的节点

自我思考:实质上就是构造哈夫曼二叉树,树的分裂的知识。

Kademlia有四条消息。

  • PING - 用于验证节点是否仍然存在。
  • 存储 - 在一个节点中存储(键,值)对。
  • FIND_NODE - 请求的接收者将返回他自己的桶中的k个节点,这些节点是与请求的密钥最接近的节点。
  • FIND_VALUE - 与FIND_NODE相同,但如果请求的收件人在其商店中具有请求的密钥,则它将返回相应的值。

每个RPC消息都包含来自发起者的随机值。这确保了当接收到响应时,它对应于先前发送的请求。

2.1.2 Coral DSHT

提出coral协议的两位大佬,纽约大学,内容分发网络系统 其论文原文:

e08843dcda5a1f4abc15208d14637820.png

Michael J. Freedman and David Mazi`eres NYU Dept of Computer Science

目的:

避开互联网传输瓶颈 降低内容供应服务器的网络压力

基本思想:

在网络内部部署一些节点 建立一套虚拟的网络 将用户的请求重定向到最适合的服务器上去

优点:

  • 通过节点服务器中转 提高了用户访问网页的速度
  • 降低网络的负载
  • 内容服务器暂时离线 用户可以通过节点服务器的缓存读取

索引机制和分层

基于键值对的路由层

Sloppy存储

Coral执行存储分为两步进行:

第一步是前向查询,Coral会持续迭代查找距离Key更近的节点ID,每一个节点返回两个信息,1.该节点是否loaded,2.对于该Key,这一节点存储有几个Value ,每一个Value的实效时间是多长。客户端根据信息决定这些节点是否可以存储新的值

第二步为反向查询,客户端从第一步得到了可存放的节点列表,按照距离Key从近到远的顺序,依次尝试添加Key/Value到这些节点

2.1.3 S/ Kademlia(DHT)

034094126d7038ff0b75ed6cb4b75e17.png

论文来源:

http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.68.4986&rep=rep1&type=pdf

因为 Kademlia是一种开放的p2p网络协议,易受到来自恶意节点的各类攻击。

这是一种基于Kademlia的安全Key路由协议,该协议通过在多条不相交的路径上使用并行查找来抵抗常见攻击,用隐式身份认证密码来限制自由节点ID生成,并引入可靠的兄弟广播。 后者需要以安全复制的方式存储数据。

中文翻译:

https://medium.com/@elninowang_cn/s-kademlia2007-%E7%BF%BB%E8%AF%91-4af0bcc09b66

参考: http://blog.lpc-win32.com/2018/10/29/coral-dsht/ Coral DSHT(内容分发网络系统)



推荐阅读
  • 概述H.323是由ITU制定的通信控制协议,用于在分组交换网中提供多媒体业务。呼叫控制是其中的重要组成部分,它可用来建立点到点的媒体会话和多点间媒体会议 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了如何使用iptables添加非对称的NAT规则段,以实现内网穿透和端口转发的功能。通过查阅相关文章,得出了解决方案,即当匹配的端口在映射端口的区间内时,可以成功进行端口转发。详细的操作步骤和命令示例也在文章中给出。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了在CentOS 7.x上进行端口映射配置的方法,通过修改内核和配置防火墙实现端口映射。作者分享了自己使用华为服务器进行端口映射的经验,发现网速比直连还快且稳定。详细的配置过程包括开启系统路由模式功能、设置IP地址伪装、设置端口映射等。同时,还介绍了如何监听本地端口的tcp请求,以及删除规则和开放的端口的方法。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了VoLTE端到端业务详解|VoLTE用户注册流程相关的知识,希望对你有一定的参考价值。书籍来源:艾怀丽 ... [详细]
  • 本文介绍了如何找到并终止在8080端口上运行的进程的方法,通过使用终端命令lsof -i :8080可以获取在该端口上运行的所有进程的输出,并使用kill命令终止指定进程的运行。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 网卡工作原理及网络知识分享
    本文介绍了网卡的工作原理,包括CSMA/CD、ARP欺骗等网络知识。网卡是负责整台计算机的网络通信,没有它,计算机将成为信息孤岛。文章通过一个对话的形式,生动形象地讲述了网卡的工作原理,并介绍了集线器Hub时代的网络构成。对于想学习网络知识的读者来说,本文是一篇不错的参考资料。 ... [详细]
  • Android自定义控件绘图篇之Paint函数大汇总
    本文介绍了Android自定义控件绘图篇中的Paint函数大汇总,包括重置画笔、设置颜色、设置透明度、设置样式、设置宽度、设置抗锯齿等功能。通过学习这些函数,可以更好地掌握Paint的用法。 ... [详细]
  • Todayatworksomeonetriedtoconvincemethat:今天在工作中有人试图说服我:{$obj->getTableInfo()}isfine ... [详细]
author-avatar
多米音乐_34306427
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有