趣谈网络协议-应用层(P2P协议)

趣谈网络协议-应用层(P2P协议)一 概述二 FTP 三 P2P1 概述 2 种子 torrent 文件 3 去中心化网络 4 哈希值 5 DHT 网络中的朋友圈是怎么维护的 6 DHT 网络是如何查找朋友的

一、FTP

1. 概述

FTP:文件传输协议,使用两个TCP连接来传输文件

  • 控制连接:客户端主动发起连接,服务端被动打开21端口。改连接将客户端命令传送给服务器,并回传服务器应答(list-获取文件目录;reter-取一个文件;store-存一个文件)
  • 数据连接:当有文件进行传输时,创建数据连接用以传输数据

2. FTP两种工作模式

FTP工作模式:主动模式(PORT)和被动模式(PASV)

主动模式:

  1. 客户端随机打开大于1024的端口N,向服务器21端口发起连接,同时客户端监听N+1端口,并通过21端口向服务器发送”port N+1″命令
  2. 服务器将自己的数据端口20连接到客户端指定端口N+1

被动模式:

  1. 客户端打开任意端口N(大于 1024)和 N+1
  2. N端口连接服务器21端口,并发送PASV 命令。服务端开启端口P,服务端21端口返回“227 entering passive mode”消息,消息包含服务器开放用来传输数据的端口P
  3. 客户端收到消息取得端口号之后,会通过 N+1 号端口连接服务器的端口 P,然后在两个端口之间进行数据传输。

二、P2P

1. 概述

FTP问题:难以解决一服务器的带宽压力

P2P(peer-to-peer)特点:

  • 资源分散存储在多个设备中
  • 下载文件时,需要获得已经存储了文件的peer,和这些peer建立点对点连接。一旦下载了文件,当前机器也成了peer的一员。旁边的机器也会从当前机器中下载文件。因此p2p软件一般有下载流量,也有上传流量

2. 种子(.torrent)文件

.torrent 文件:下载文件时,获取有哪些peer有该文件数据

.torrent 文件组成:announce(tracker URL)和文件信息

文件信息:

  • info区:该种子有几个文件、文件有多长、目录结构,以及目录和文件的名字
  • Name字段:顶层目录名字
  • 每个段大小:BitTorrent(简称 BT)协议把一个文件分成很多个小段,然后分段下载。
  • 段哈希值:将整个种子中,每个段的 SHA-1 哈希值拼在一起。

P2P下载流程:

  1. BT客户端解析.torrent文件,得到tracker地址,连接tracker服务器
  2. tracker服务器响应下载者,将其他下载者的IP地址提供给下载者
  3. 下载者连接其他下载者,两者告知对方自己已经有的数据块,交换对方没有的数据块
  4. 下载者每得到一个块,需要计算出下载快的HASH验证码,与.torrent 文件中的对比。若哈希值一致,则说明数据正确,否则需要重新下载该数据块

上述P2P下载流程的特点:

  • 下载过程非中心化
  • 加入P2P网络时,需要依赖tracker(tracker服务器是用来登记有哪些用户在请求哪些资源)

3. 去中心化网络

DHT去中心化网络:

  • 目的:使得tracker去中心化
  • 特点:每个加入这个 DHT 网络的人,都要负责存储这个网络里的资源信息和其他成员的联系信息

Kademlia协议:

  • 每个BitTorrent启动,会承担两个角色,分别是peer(监听TCP 端口以上传和下载文件)、DHT node(监听一个UDP 的端口,加入DHT 的网络)
  • DHT 网络里面,每一个 DHT node 都有一个 ID,DHT node 都有责任掌握一些知识,也就是文件索引,也即它应该知道某些文件是保存在哪些节点上。每个DHT node不会知道全局信息

趣谈网络协议-应用层(P2P协议)

Kademlia协议指令:

  • PING:测试结点是否在线
  • STORE:要求一个节点存储一份数据
  • FIND_NODE:给定节点 ID 查找一个节点
  • FIND_VALUE:根据文件哈希值(160bitID)查找保存了文件的结点

4. 哈希值

作用:通过哈希算法计算出每个DHT node保存的文件索引

DTH哈希算法特点:

  • 每个文件可以计算出一个哈希值,而 DHT node 的 ID 是和哈希值相同长度的串
  • 如果一个文件计算出一个哈希值,则和这个哈希值一样的那个 DHT node,就有责任知道从哪里下载这个文件,即便它自己没保存这个文件。
  • 除了一模一样的DHT node 应该知道文件存储位置,ID 和这个哈希值非常接近的 N 个 DHT node 也应该知道

DTH哈希算法计算流程:

  1. 种子.torrent 文件里面存储的 node 的地址,这些 node 在 DHT 网络里
  2. 新加入的节点node new通过种子文件获取上述node,找到一个可用的node,加入DHT网络
  3. node new计算文件1的哈希值,通过hash值获取与该哈希值相近的node id,获取下载方式
  4. node new通过DHT 网络获取文件下载索引,通过索引获取存有真实数据的结点node b
  5. node new与node b建立peer连接,下载文件。
  6. node new下载文件后,本地也有该文件,因此需要告知node c以及和node c的ID相近的结点(索引节点),将node new加入node c索引(索引表征含有真实数据的结点)

哈希算法node ID相似度计算方法:通过异或计算

3. DHT网络组织方式与查找方法

DHT网络组织方式:按距离分层。假设基础结点为node1,则与node1异或值为 00001的结点归为“k-bucket 1”;异或值为00010 和 00011的结点为“k-bucket 2”;倒数第 i 位开始不同,与基础节点的距离范围为[2^(i-1), 2^i),归为“k-bucket i”

DHT网络查找其他节点方法:

  1. 假设在node A(00110)查找目标结点10000,计算异或值,得到结果10110。由异或结果可知,目标结点所在的类别为k-bucket 5
  2. node A查找k-bucket 5中是否存在目标结点,存在则返回;不存在则在k-bucket 5随机找一个节点(假设为node c),node c与目标结点距离在2^4内。按同样的方法查找,请求C,在C找计算异或值,定位bucket,找相似结点,直到找到目标结点
  3. 该查找机制通过折半来缩小范围,最坏情况下,时间复杂度为log2(N)(总结点数量为N)

趣谈网络协议-应用层(P2P协议)

各结点DHT网络结构更新方法:

  1. 每个bucket中,结点ID按最后一次接触的时间倒序排列
  2. 每次执行Kademlia协议指令时更新结构
  3. 当一个节点node new与本节点接触时,检查它是否已经在 k-bucket 中。若结点不在bucket中,且该结点DHT网络信息存储空间已经满了,则ping一下bucket中最旧的结点,若ping通了,则更新最旧的结点的接触时间,将其挪到队列最底端,抛弃node new;否则抛弃最旧的结点,将node new加入bucket
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/177200.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午8:04
下一篇 2026年3月26日 下午8:04


相关推荐

  • H5常用标签大全

    H5常用标签大全1 HTML5 头部结构 nbsp DOCTYPEhtml 声明文档类型为 HTML5 文件 文档声明在 HTML5 文档必不可少 且必须放在文档的第一行 nbsp meta 标签 1 charset 属性 单独使用 设置文档字符及编码格式 写法 lt metacharset UTF 8 gt 常见的中文编码格式 B 2312 国标码 简体中文 GBK 扩展的国标编码 简体

    2026年3月17日
    2
  • Coze(扣子)消息卡片(Message Card)使用指南

    Coze(扣子)消息卡片(Message Card)使用指南

    2026年3月12日
    3
  • 豆包怎么使用自己的模板生成文档

    豆包怎么使用自己的模板生成文档

    2026年3月12日
    2
  • 在关系数据库设计理论中_数据库关系理论

    在关系数据库设计理论中_数据库关系理论一、关系模式    1、关系模式:是对一个关系的描述    2、关系模式的一般形式:R(U,D,DOM,F)       R ==>关系名     

    2022年10月10日
    2
  • 【5G NR】RRC连接释放

    【5G NR】RRC连接释放当 UE 与基站出现 RRC 重配置失败 切换失败 无线链路失败和完整性保护失败等失败时 将发起 RRCRelease 过程 将 UE 转为 RRC IDLE 或 RRC INACTIVE 状态

    2026年3月19日
    2
  • 互联网金融风控模型大全

    互联网金融风控模型大全一、市场调研目前市面主流的风控模型1、互联网金融前10名排行榜(数据截止日期2017-09-12)互联网金融公司排名分别是蚂蚁金服、陆金所、京东金融、苏宁金融、百度金融、腾讯理财通、宜信、钱大掌柜、万达金融和网易理财。1.1蚂蚁金服1.1.1大数据技术对接第三方征信公司芝麻信用分,通过用户信用历史、行为偏好、履约能力、身份特质、人脉关系五个维度对海量数据行综合的处理评估,同时也给予阿里电商交易…

    2022年4月29日
    56

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号