《c# 实现p2p文件分享与传输系统》 二、 设计

简介: c#实现P2P文件分享与传输系统 二、设计  在上一篇文章中,介绍了P2P网络的常用模型,并确定了EasyP2P系统的框架,本文将就此设计完成它的主要结构和运作流程。1. 首先是Tracker Server和Peer这两个最重要的模块:Tracker Server负责Peer的信息的收集和跟踪,并向下载节点提供其他节点的信息,实际上就是维护“PeerResource”之间的这种映射关系,一般来说,在数据结构上,可以把它设计成一个十字链表,当然,也可以用其他结构。

c#实现P2P文件分享与传输系统 

二、设计

  在上一篇文章中,介绍了P2P网络的常用模型,并确定了EasyP2P系统的框架,本文将就此设计完成它的主要结构和运作流程。

1. 首先是Tracker Server和Peer这两个最重要的模块:

  • Tracker Server负责Peer的信息的收集和跟踪,并向下载节点提供其他节点的信息,实际上就是维护“Peer<-->Resource”之间的这种映射关系,一般来说,在数据结构上,可以把它设计成一个十字链表,当然,也可以用其他结构。当Peer启动时,向Tracker Server进行汇报,Tracker将信息存入映射表,当Peer退出时,从映射表中清除。
  • Peer主要是驱动下载,当需要下载资源时,向Tracker Server提交要下载的资源信息,Tracker查询之后,返回拥有该资源所的节点列表,Peer便可向其他的节点请求并下载数据,完成p2p下载。

上图:

2. 文件描述

  P2P系统另一个非常关键的部分就是资源(文件)描述符,它提供某个资源(文件)的简短而详细的描述信息。

  • 首先,一个资源需要进行标识,以区别于其他资源,每个不同的资源都有不同的标识,这里,我们以资源的MD5值来作为该资源的标识(ID)。计算方式是:ID = MD5Hash(资源的所有数据)。
  • 其次,为了支持断点续传以及利于p2p传输,需要对资源进行分块描述。一个完整的资源(文件)可以从逻辑上分为多个“块”,通过对“块”的标志,可以从更细的粒度来描述资源健康程度(也就是下载进度);通过对每个“块”进行校验,还能从更细的粒度防止脏数据对p2p网络的污染。

  之所以说文件描述非常重要,是因为它几乎贯穿了整个p2p传输的过程。一个设计良好的文件描述符,不仅可以详细的标识资源健康度,还能够通过适当的压缩算法节省存储空间。

  在上图中,我设计了一个双层的文件描述符,Segment层描述整个资源/文件,用于数据校验;Piece层描述一个Segment,用于细化描述。这样做的好处有两个:一是简化了校验信息的粒度,在peer之间只需要传递segment的描述即可;二是由于我们只需要对正在下载的Segment进行描述,因此文件描述符不会占用多少存储空间。

  考虑到NAT Server的特殊性,将单独介绍。

文章版权所有,如需转载,请注明作者和出处,谢谢~

相关文章
|
安全 数据安全/隐私保护
直播系统源码部署,高效文件管理与传输的FTP协议
在直播系统源码部署后的每天要处理大量媒体文件的情况下,FTP协议可以依靠自身的强大文件传输管理机制、备份与恢复与自动化任务来帮助平台用户更好的操作体验,通过FTP协议,也确保直播系统源码媒体文件传输的可靠性与安全性,让直播系统源码成为了更优质的平台。
直播系统源码部署,高效文件管理与传输的FTP协议
|
4天前
|
监控 安全 数据安全/隐私保护
一个典型的DRM系统的工作流程:
【10月更文挑战第30天】个典型的DRM系统的工作流程:
17 3
|
4月前
|
存储 机器学习/深度学习 安全
|
6月前
|
安全 Linux
效率工具RunFlow完全手册之局域网传输篇
RunFlow局域网传输教程教你如何在内网安全快速地传输文件和同步剪贴板,避免公共平台的风险。启用局域网传输需在设置中开启相关功能,然后通过IPv4地址和端口建立连接。静态文件浏览服务允许共享只读文件,而建立连接则可用于双向文件传输和剪贴板同步。此外, RunFlow还支持与移动端、Web端的连接,尽管浏览器连接有一定限制。此功能确保了数据的私密性和高效传输。
50 4
效率工具RunFlow完全手册之局域网传输篇
|
6月前
|
网络性能优化 数据安全/隐私保护 网络架构
|
6月前
|
安全 定位技术 数据安全/隐私保护
多台电脑之间共享、传输文件数据:不借助数据线与软件的方法
多台电脑之间共享、传输文件数据:不借助数据线与软件的方法
311 1
|
编解码 监控 网络协议
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
156 2
|
对象存储 UED CDN
传输加速是一项很重要的功能
传输加速是一项很重要的功能
105 2
|
编解码 边缘计算 算法
一文详述流媒体传输网络MediaUni
LiveVideoStackCon2023上海站,阿里云视频云专场系列演讲-1
544 0
|
算法 C#
《c# 实现p2p文件分享与传输系统》 二、 设计
《c# 实现p2p文件分享与传输系统》 二、 设计
106 0