P2P 网络 简单研究 1
起因, 目的:
P2P 网络, 一道题。题目描述, 在下面。
P2P 网络,我以前只是听说过,并不深入。如果我有5台电脑的话,我也想深入研究一下。
P2P 简介:
P2P(Peer-to-Peer)网络是一种分布式网络架构,其中所有节点(即网络中的计算机或设备)作为对等节点(peers),既可以作为客户端请求资源,也可以作为服务器向其他节点提供资源。与传统的客户端-服务器架构不同,P2P网络没有中央服务器或单一控制点,所有参与的节点都有相同的地位。
一、P2P网络的工作原理
在P2P网络中,每个节点都可以:
- 上传(提供资源):如共享文件、数据块、计算资源。
- 下载(请求资源):从其他节点获得需要的资源。
数据或资源在多个节点之间分散存储。即使某些节点离线,其他节点仍可以继续为网络提供服务。常见的P2P网络采用动态查找算法(如DHT,即分布式哈希表)来高效地寻找目标资源。
二、P2P网络的分类
-
纯P2P网络(Pure P2P)
- 所有节点地位完全平等,没有中央服务器。
- 优点:真正的去中心化,系统可靠性高。
- 缺点:节点的查找可能会更复杂。
- 例子:早期的Napster、Gnutella网络。
-
混合P2P网络(Hybrid P2P)
- 存在部分中央服务器或超级节点用于协调或加速资源发现。
- 优点:资源查找更高效。
- 缺点:部分依赖中央组件,去中心化程度较低。
- 例子:Skype(早期版本)、BitTorrent。
三、P2P网络的优缺点
优点:
- 去中心化:没有单点故障,即使部分节点离线,网络依然可以运行。
- 可扩展性强:节点越多,资源提供和网络吞吐量越大。
- 高效的资源利用:用户不仅消费资源,还贡献资源,形成网络的自我维持。
- 容错性强:数据存储在多个节点上,某些节点失效时不会导致资源丢失。
缺点:
- 安全性风险:由于缺乏集中管理,网络容易成为恶意软件传播和非法活动的温床。
- 数据一致性问题:节点之间的数据同步困难,可能出现版本冲突或数据丢失。
- 带宽和性能限制:部分节点设备性能较弱,可能影响整体网络效率。
- 法律和监管问题:由于资源匿名共享,P2P网络常涉及版权侵权等法律风险。
四、P2P网络的应用
-
文件共享:
- BitTorrent:用户可以下载文件的多个部分,并从不同节点中获取数据。
- eDonkey/eMule:分布式的文件分享网络。
-
即时通信和VoIP:
- Skype(早期):利用超级节点进行点对点语音和视频传输。
-
区块链:
- 比特币和以太坊等加密货币使用P2P网络进行分布式账本维护,每个节点存储完整的区块链副本。
-
分布式计算:
- SETI@home 等项目通过P2P方式将计算任务分发到全球各地的计算机上处理。
-
视频和内容分发:
- WebRTC:用于浏览器之间的点对点连接,实现实时视频和文件共享。
五、P2P网络的关键技术
-
分布式哈希表(DHT):
- 用于高效地存储和查找资源,例如Kademlia协议。
-
数据分片和冗余:
- 大文件被分割成小块存储在多个节点上,提供冗余防止数据丢失。
-
节点发现和路由:
- 使用协议如Chord、Pastry等来实现快速的节点搜索和消息传递。
P2P网络通过去中心化和资源共享的模式,广泛应用于文件分发、实时通信、加密货币等领域。但由于安全、版权等问题,它也面临着一定的挑战。未来,P2P技术在区块链和分布式云计算中的应用前景非常广阔。
P2P 一个计算题
问题描述:
P2P.
A server distributes a file with the size of 10^9 bytes to n hosts.
The upload rate of the server is 3.5 Mbps.
The i-th host (i = 1,2,…,n) has a download rate of 0.5i Mbps.
For all hosts, the upload rate is 1 Mbps.
Calculate the minimum distribution time as a function of n for P2P distribution and clientserver distribution,
and plot the two curves.
(n = 1,2,…,100).
解答过程:
1. Client-Server 公式
T C S ( n ) = 1 0 9 × 8 3.5 × 1 0 6 = 8 × 1 0 9 3.5 × 1 0 6 秒 T_{CS}(n) = \frac{10^9 \times 8}{3.5 \times 10^6} = \frac{8 \times 10^9}{3.5 \times 10^6} \, \text{秒} TCS(n)=3.5×106109×8=3.5×1068×109秒
这是计算将 1GB 文件(即 (10^9 \times 8) 比特),通过 3.5 Mbps 上传速度传输所需的时间。
2. P2P 和 Client-Server 模式的时间计算公式依据
这些公式的来源基于 计算机网络领域的经典理论,特别是:
-
Client-Server 模式:
- 服务器的总上传速度决定了整个系统的瓶颈,因为所有数据都必须通过服务器传输。时间只与文件大小和服务器上传速度有关。
公式:
T C S = 文件大小 (bits) 服务器上传速度 (bps) T_{CS} = \frac{\text{文件大小 (bits)}}{\text{服务器上传速度 (bps)}} TCS=服务器上传速度 (bps)文件大小 (bits) -
P2P 模式:
- 在 P2P 网络中,主机之间可以相互上传,所以总的分发速度不仅依赖于服务器,还依赖于所有主机的上传速度和下载速度。
- 最小分发时间受两个瓶颈约束:
- 下载瓶颈:所有主机的总下载速度决定了他们接收数据的速度。
- 上传瓶颈:服务器和所有主机的上传速度决定了数据的供给速度。
公式:
T P 2 P ( n ) = max ( 文件大小 (bits) ∑ i = 1 n 主机的下载速度 , 文件大小 (bits) 总上传速度 ) T_{P2P}(n) = \max\left(\frac{\text{文件大小 (bits)}}{\sum_{i=1}^{n} \text{主机的下载速度}}, \frac{\text{文件大小 (bits)}}{\text{总上传速度}}\right) TP2P(n)=max(∑i=1n主机的下载速度文件大小 (bits),总上传速度文件大小 (bits)) -
画图:
代码 2 xxx
import numpy as np
import matplotlib.pyplot as plt# 文件大小 (字节 -> bit)
file_size = 10 ** 9 * 8 # 1 GB = 8 * 10^9 bits# 服务器的上传速度 (Mbps -> bps)
server_upload = 3.5 * 10 ** 6# 每个主机的上传速度 (Mbps -> bps)
host_upload = 1 * 10 ** 6# 定义 n 的范围
n_values = np.arange(1, 101) # 从 1 到 100# Client-Server 模式的分发时间 (恒定)
T_CS = file_size / server_upload# P2P 模式的分发时间计算
T_P2P = []
for n in n_values:# 总下载速度total_download = np.sum([0.5 * i * 10 ** 6 for i in range(1, n + 1)])# 总上传速度 (包括服务器和所有主机)total_upload = server_upload + n * host_upload# 计算 P2P 模式的时间time_p2p = max(file_size / total_download, file_size / total_upload)T_P2P.append(time_p2p)# 绘制两种分发时间的曲线
plt.figure(figsize=(10, 6))
plt.plot(n_values, [T_CS] * len(n_values), label='Client-Server time', linestyle='--', color='red')
plt.plot(n_values, T_P2P, label='P2P time', color='blue')
plt.xlabel('server nums (n)')
plt.ylabel('dis time (seconds)')
plt.title('P2P vs Client-Server time cost')
plt.legend()
plt.grid(True)
plt.show()
分发文件--------耗时对比
P2P 聊天过程
老哥留步,支持一下。
相关文章:

P2P 网络 简单研究 1
起因, 目的: P2P 网络, 一道题。题目描述, 在下面。 P2P 网络,我以前只是听说过,并不深入。如果我有5台电脑的话,我也想深入研究一下。 P2P 简介: P2P(Peer-to-Peer)网络是一种分…...

RAG(检索增强生成)面经(1)
1、RAG有哪几个步骤? 1.1、文本分块 第一个步骤是文本分块(chunking),这是一个重要的步骤,尤其在构建与处理文档的大型文本的时候。分块作为一种预处理技术,将长文档拆分成较小的文本块,这些文…...

卫爱守护|守护青春,送出温暖
2024年10月10日,艾多美爱心志愿者来到校园。艾多美“卫艾守护”项目于吉林省白山市政务大厅会议室举办了捐赠仪式,东北区外事部经理黄山出席了捐赠仪式仪式,为全校女同学捐赠了青春关爱包。 此次捐赠,面向吉林省自山市第十八中学、…...

ubuntu-24.04.1 系统安装
使用VMware虚拟机上进行实现 官网下载地址: https://cn.ubuntu.com/download https://releases.ubuntu.com 操作系统手册: https://ubuntu.com/server/docs/ (里面包含安装文档) 安装指南(详细):…...

华为OD机试真题---生成哈夫曼树
华为OD机试中关于生成哈夫曼树的题目通常要求根据给定的叶子节点权值数组,构建一棵哈夫曼树,并按照某种遍历方式(如中序遍历)输出树中节点的权值序列。以下是对这道题目的详细解析和解答思路: 一、题目要求 给定一个…...

小红书新ID保持项目StoryMaker,面部特征、服装、发型和身体特征都能保持一致!(已开源)
继之前和大家介绍的小红书在ID保持以及风格转换方面相关的优秀工作,感兴趣的小伙伴可以点击以下链接阅读~ 近期,小红书又新开源了一款文生图身份保持项目:StoryMaker,是一种个性化解决方案,它不仅保留了面部的一致性&…...

Docker 环境下 GPU 监控实战:使用 Prometheus 实现 DCGM Exporter 部署与 GPU 性能监控
Docker 环境下 GPU 监控实战:使用 Prometheus 实现 DCGM Exporter 部署与 GPU 性能监控 文章目录 Docker 环境下 GPU 监控实战:使用 Prometheus 实现 DCGM Exporter 部署与 GPU 性能监控一 查看当前 GPU 信息二 dcgm-exporter 部署1)Docker r…...

联想小新打印机M7328w如何解决卡纸,卡了一个小角在里面,然后再次打印的时候,直接卡住,不能动了。灯显示红色。
1、今天打印一张纸,应该是不小心放歪了,打出来的也是有些斜,然后打出来缺少了个角。 图中的小纸就是从打印机的左边的角,用镊子取出来的,手不太好拿,所以拿个工具比较合适。 2、那么碰到这种卡纸应该如何处…...

软件可靠性之MTTR、MTBF、MTTF、MTTD区别
一.概念解释 1.MTBF(Mean Time Between Failures):指两次故障之间的平均时间,通常用于衡量设备或系统的可靠性。 2.MTTF(Mean Time to Failure):指设备或系统的平均无故障运行时间。 3.MTTR&am…...

Qt-QDockWidget浮动窗口相关操作(49)
目录 描述 使用 描述 在 Qt 中,浮动窗⼝也称之为铆接部件。浮动窗⼝是通过 QDockWidget类 来实现浮动的功能。浮动窗口⼀般是位于核心部件的周围,可以有多个。 使用 创建我们可以参考下面的语法格式 使用起来也很简单,不过只能创建一个 Q…...

图形用户界面-GUI的基本概念和组件之一
前言 GUI(Graphical User Interface,图形用户界面,简称图形界面)编程实际是引用java.awt或javax.swing类包中的窗口类、控制组件类、布局类、事件类等,通过将控制组件类,如菜单、按钮、文本框等,…...

【MATLAB代码】基于RSSI原理的蓝牙定位程序(N个锚点、三维空间),源代码可直接复制
文章目录 介绍主要功能技术细节适用场景程序结构运行截图源代码详细教程:基于RSSI的蓝牙定位程序1. 准备工作2. 代码结构2.1 清理工作环境2.2 定义参数2.3 生成锚点坐标2.4 定义信号强度与距离的关系2.5 模拟未知点的位置2.6 定位函数2.7 绘图2.8 输出结果2.9 定义定位函数3. …...

Pyenv 介绍和安装指南 - Ubuntu 24
原文: https://www.qiulin-dev.top/articles/81aab753-0d0e-470c-b08f-2643c876841b 1. Pyenv 介绍 Pyenv 是一个非常流行的 Python 版本管理工具,它可以让你在同一台机器上安装并管理多个不同的 Python 版本,解决了不同项目需要不同 Python…...

zookeeper实现RMI服务,高可用,HA
这可不是目录 1.RMI原理与说明1.1含义1.2流程1.3rmi的简单实现1.4RMI的局限性 2.zookeeper实现RMI服务(高可用、HA)2.1实现原理2.2高可用分析2.3zookeeper实现2.3.1代码分析2.3.2公共部分2.3.3服务端2.3.4客户端2.3.5运行与部署2.3.6效果展示与说明 1.RM…...

通过Express + Vue3从零构建一个用户认证与授权系统(一)项目结构设计
项目背景 本文基于 TypeScript Express Vue3 ,从零构建一个用户认证与授权管理系统。这个系统的核心部分包括前端、后端和数据库。我们需要确保各部分合理分层、易于维护和扩展,让我们一步步去实现我们的系统。 一、项目结构设计 1. 前端 (Vue 3 E…...

JavaScript 第13章:Ajax 与异步请求
在Web开发中,异步请求是一种非常重要的技术,它可以让网页在不重新加载的情况下与服务器交互。本章将介绍两种常用的异步请求技术:XMLHttpRequest 和 Fetch API,以及它们如何用于处理JSON数据交换,并通过一个实战案例—…...

速卖通商品详情接口技术解析及Python代码示例
速卖通商品详情接口技术解析及Python代码示例 速卖通(AliExpress)作为全球知名的跨境电商平台,其开放平台提供了丰富的API接口,允许开发者集成速卖通的各项功能,实现商品搜索、详情查询、订单管理等一系列操作。本文将…...

邻接表的有向网(C语言代码)
#include <stdio.h> #include <stdlib.h> #define MVNum 100 //最大顶点数 //边表结构体 typedef struct ArcNode { //表结点 int adjvex; //邻接点的位置 struct ArcNode* nextarc; //指向下一个…...

大模型生成PPT大纲优化方案:基于 nVidia NIM 平台的递归结构化生成
大模型生成PPT大纲优化方案:基于 nVidia NIM 平台的递归结构化生成 待解决的问题 生成PPT大纲是一种大模型在办公场景下应用的常见需求。 然而: 目前直接让大模型生成大纲往往是非结构化的,输出格式多样,难以统一和规范&#…...

MRSO算法(JCR2区)
原论文摘要:智能技术的快速发展促使利用自然行为来解决复杂问题的优化算法得以发展。其中,鼠群优化算法(Rat Swarm Optimizer,RSO)受老鼠的社会和行为特征启发,在各个领域已展现出潜力,但其收敛…...

最新Spring Boot3框架入门教程,基础知识讲解(参考官方文档),同时基于MybatisPlus+MYSQL搭建后台管理系统基础流程(附源码)
本文所涉及的代码以及相关文件均上传至仓库:GitHub - yang66-hash/XDPropertyManagementSystemDemo: This is a demo template based on SpringBoot3 in the background of property management system. Spring Boot 是由 Pivotal 团队开发的一款开源框架,它可以帮助…...

导数的概念及在模型算法中的应用
一. 导数概念与计算 1. 导数的物理意义: 瞬时速率。一般的,函数yf(x)在x处的瞬时变化率是 2. 导数的几何意义: 曲线的切线,当点趋近于P时,直线 PT 与曲线相切。容易知道,割线的斜率是当点趋近于 P 时&…...

获取首日涨停封盘后第二次交易日上涨/下跌的概率
有许多投资者喜欢在股票涨停封盘后,跟进买入。普通股民会认为一个能在今日涨停封盘的股票,证明其上市公司正有十分重大的利好信息,只需要跟进购买便可以获取短期利益。 我们用数据来看一下在当日涨停封盘后,第二次交易日是上涨还…...

shell $ 用法
Shell脚本中$符号的几种用法小结_linux shell_脚本之家 Shell 传递参数 | 菜鸟教程 $ 符号说明$0Shell 的命令本身1到9表示 Shell 的第几个参数$?显示最后命令的执行情况$#传递到脚本的参数个数$$脚本运行的当前进程 ID 号$*以一个单字符串显示所有向脚本传递的参数$!后台运行…...

如何用支付宝实现靠脸吃饭
还记得上学时,每当下课铃声响起,我们就会像一群脱缰的野马一样,浩浩荡荡地冲向食堂。最令人崩溃的时刻莫过于终于到达打饭窗口前排时,却发现饭卡忘带了!但现在,这种情况将不再发生。许多学校食堂已经配备了…...

Visual Studio的实用调试技巧总结
对于很多学习编程的老铁们来说,是不是也像下面这张图一样写代码呢? 那当我们这样编写代码的时候遇到了问题?大家又是怎么排查问题的呢?是不是也像下面这张图一样,毫无目的的一遍遍尝试呢? 这篇文章我就以 V…...

graphrag学习总结
学习视频:b站链接 项目链接 GraphRAG 的基本概念 Document(文档):系统中的输入文档。这些文档要么代表CSV中的单独行,要么代表单独的txt文件。 TextUnit(文本块):要分析的文本块。…...

专题:贪心算法(已完结)
1.分发饼干 方法一:用最大的胃口 找到最大的饼干(先遍历胃口) class Solution { public:int findContentChildren(vector<int>& g, vector<int>& s) {// 主要思路 用最大的饼干找最大的胃口sort(g.begin(),g.end());so…...

Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
单机模式 单机模式是Hadoop最简单的运行模式。在单机模式下,所有Hadoop组件都运行在单个机器上,包括HDFS、MapReduce等。由于只有一个节点参与计算,单机模式适用于开发和测试阶段,不适合用于处理大规模数据。在单机模式下…...

JavaScript将array数据下载到Excel中
具体代码如下: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widt…...