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

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

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协议
|
5月前
|
安全 网络协议 网络安全
程序与技术分享:Android应用安全之数据传输安全
程序与技术分享:Android应用安全之数据传输安全
|
6月前
|
网络性能优化 数据安全/隐私保护 网络架构
|
6月前
|
安全 定位技术 数据安全/隐私保护
多台电脑之间共享、传输文件数据:不借助数据线与软件的方法
多台电脑之间共享、传输文件数据:不借助数据线与软件的方法
311 1
|
编解码 监控 网络协议
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
159 2
|
编解码 边缘计算 算法
一文详述流媒体传输网络MediaUni
LiveVideoStackCon2023上海站,阿里云视频云专场系列演讲-1
565 0
|
C# C++ 网络架构
《c# 实现p2p文件分享与传输系统》 一、 模型
《c# 实现p2p文件分享与传输系统》 一、 模型
265 0
|
算法 C#
《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
123 0
|
安全 数据安全/隐私保护 Windows
不同电脑快速、实时传输数据的便捷方法
本文介绍多台Windows电脑之间不用软件、不用数据线的文件共享、数据传输方法~
532 1
不同电脑快速、实时传输数据的便捷方法
|
网络协议 数据挖掘 程序员
计网之初识网络(理解网络传输的基本流程)
计网之初识网络(理解网络传输的基本流程)
28309 0
计网之初识网络(理解网络传输的基本流程)
下一篇
无影云桌面