基于BT协议的文件分发系统
构成:
1.一个Web服务器:保存着种子文件
2.一个种子文件:保存共享文件的一些信息(文件名,文件大小 ,Tracker服务器地址,torrent为后缀)
3.一个Tracker服务器:保存当前下载某共享文件的所有下载者的IP和端口
4.一个原始文件提供者:提供完整的共享文件
5.一个网络浏览器
6.一个或者多个下载者 :下载者本身称为客户端,其他下载者为peer
BT客户端下载一个共享文件的过程:
客户端首先解析一个种子文件,
获取待下载的共享文件的一些信息,
包括Tracker服务器的地址,
之后客户端通过Tracker的Ip和端口链接其他下载者,
从他们那里下载文件,
同时把自己已经下载的部分提供给其他下载者下载。
共享文件在逻辑上被划分为大小相同的块,称之为piece,每个piece大小通常为256K。
对于共享文件,1-256k为第一个piece ,257K-512K为第二个piece,依次类推...
种子文件包含每个piece的hash值。
BT协议规定使用Sha1算法对每个piece生成20字节的hash值作为每个piece的指纹。
每当客户端下载完一个piece时,即对该piece使用Sha1算法计算hash值,与种子文件保存的的piece的hash值比较,
如果一致,表明下载了一个完整而正确的piece。
一旦某个piece被下载。该piece即提供给其他peer下载。
在实际上传和下载中,每个piece又被划分为大小相同的slice,每个slice大小固定为16K。
peer之间每次传输以slice为单位。
相关文章
- TSL 和 SSL 是什么?它们有何关系?-定义:SSL(安全套接层)是一种早期的加密协议,用于在互联网通信中保障数据传输的安全性。它通过加密和身份验证机制,确保客户端(如浏览器)与服务器之间的通信不被窃听或篡改。 版本:SSL 1.0(未发布)、SSL 2.0(1995年,已废弃)、SSL 3.0(1996年,已淘汰)。 问题:SSL 3.0 及早期版本存在严重安全漏洞(如 POODLE 攻击),目前已被现代系统禁用。 2. TLS(Transport Layer Security) 定义:TLS(传输层安全协议)是 SSL 的继任者,旨在提供更安全的通信协议。TLS 由国际互联网工程任务组(IETF)标准化,逐步替代了 SSL。 版本:TLS 1.0(1999年,已淘汰)、TLS 1.1(2006年,已淘汰)、TLS 1.2(2008年,广泛使用)、TLS 1.3(2018年,最新标准)。 优势:更强的加密算法(如 AES、ChaCha20)、更高效的握手过程、支持前向保密(Perfect Forward Secrecy)等。 SSL 与 TLS 的关系 继承关系 TLS 直接基于 SSL 3.0 设计,可以视为 SSL 的升级版。TLS 1.0 最初命名为 SSL 3.1,后因标准化需要更名为 TLS。 协议兼容性
- PySpark安装及WordCount实现(基于Ubuntu)-安装Java: PySpark需要Java运行环境。你可以使用以下命令安装OpenJDK: sudo apt update sudo apt install default-jre default-jdk 安装Scala: PySpark还需要Scala,可以使用以下命令安装: sudo apt install scala 安装Python: 如果你的系统没有Python,可以安装Python 3: sudo apt install python3 安装Apache Spark: 下载并解压Apache Spark。你可以在Apache Spark官网下载最新版本的Spark。 wget https://downloads.apache.org/spark/spark-x.y.z/spark-x.y.z-bin-hadoopx.y.tgz tar -xzvf spark-x.y.z-bin-hadoopx.y.tgz 将 spark-x.y.z-bin-hadoopx.y替换为你下载的实际版本。 设置环境变量: 在 .bashrc或 .zshrc文件中设置Spark和PySpark的环境变量: export SPARK_HOME=/path/to/spark-x.y.z-bin-hadoopx.y export PATH=$PATH:$SPARK_HOME/bin export PYSPARK_PYTHON=python3 记得使用实际的Spark路径。 安装PySpark: 使用pip安装PySpark: pip install pyspark 实现WordCount:
- 基于C语言的图书管理系统【链表/文件】
- 供应基于LayerFsd技术的文件安全管理系统
- C语言小项目-基于TCP协议和SOCKET编程的网络通信系统
- 基于stm32f103zet6的FAT16文件系统学习0(读SD卡扇区)
- 基于fuse的文件系统导出NFS的问题
- 基于STM32F407内部Flash的FATfs文件系统移植
- 基于《道路运输车辆卫星定位系统车载视频通信协议》(JT/T 1078-)的流媒体服务器
- IIS搭建基于HTTP协议的文件服务器