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)受老鼠的社会和行为特征启发,在各个领域已展现出潜力,但其收敛…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
多模态大语言模型arxiv论文略读(108)
CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题:CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者:Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...
全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
C++.OpenGL (14/64)多光源(Multiple Lights)
多光源(Multiple Lights) 多光源渲染技术概览 #mermaid-svg-3L5e5gGn76TNh7Lq {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3L5e5gGn76TNh7Lq .error-icon{fill:#552222;}#mermaid-svg-3L5e5gGn76TNh7Lq .erro…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
Mysql8 忘记密码重置,以及问题解决
1.使用免密登录 找到配置MySQL文件,我的文件路径是/etc/mysql/my.cnf,有的人的是/etc/mysql/mysql.cnf 在里最后加入 skip-grant-tables重启MySQL服务 service mysql restartShutting down MySQL… SUCCESS! Starting MySQL… SUCCESS! 重启成功 2.登…...
RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)
RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发,后来由Pivotal Software Inc.(现为VMware子公司)接管。RabbitMQ 是一个开源的消息代理和队列服务器,用 Erlang 语言编写。广泛应用于各种分布…...
Kubernetes 节点自动伸缩(Cluster Autoscaler)原理与实践
在 Kubernetes 集群中,如何在保障应用高可用的同时有效地管理资源,一直是运维人员和开发者关注的重点。随着微服务架构的普及,集群内各个服务的负载波动日趋明显,传统的手动扩缩容方式已无法满足实时性和弹性需求。 Cluster Auto…...
