《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的特殊性,将单独介绍。

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

相关文章
|
8月前
|
存储 机器学习/深度学习 安全
|
10月前
|
安全 Linux
效率工具RunFlow完全手册之局域网传输篇
RunFlow局域网传输教程教你如何在内网安全快速地传输文件和同步剪贴板,避免公共平台的风险。启用局域网传输需在设置中开启相关功能,然后通过IPv4地址和端口建立连接。静态文件浏览服务允许共享只读文件,而建立连接则可用于双向文件传输和剪贴板同步。此外, RunFlow还支持与移动端、Web端的连接,尽管浏览器连接有一定限制。此功能确保了数据的私密性和高效传输。
66 4
效率工具RunFlow完全手册之局域网传输篇
|
10月前
|
网络性能优化 数据安全/隐私保护 网络架构
|
算法 C#
《c# 实现p2p文件分享与传输系统》 二、 设计
《c# 实现p2p文件分享与传输系统》 二、 设计
123 0
|
C# C++ 网络架构
《c# 实现p2p文件分享与传输系统》 一、 模型
《c# 实现p2p文件分享与传输系统》 一、 模型
307 0
|
网络协议 数据挖掘 程序员
计网之初识网络(理解网络传输的基本流程)
计网之初识网络(理解网络传输的基本流程)
28355 0
计网之初识网络(理解网络传输的基本流程)
|
算法 C#
《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
《c# 实现p2p文件分享与传输系统》 二、 设计 - 续(NAT穿透)
163 0
|
移动开发 网络协议 前端开发
webim 实现实时通讯的 4 种方式
webim 实现实时通讯的 4 种方式
webim 实现实时通讯的 4 种方式
|
网络协议 前端开发 测试技术
海量用户通讯系统——服务端结构改进1|学习笔记
快速学习海量用户通讯系统——服务端结构改进1
海量用户通讯系统——服务端结构改进1|学习笔记