关于BitTorrent 协议的几点感想

简介: 关于BitTorrent 协议的几点感想 1) 使用文件info的hash值作为文件的id(即Info_hash) 为什么不使用顺序编号或者GUID之类的东西呢? 如果采用顺序编号,谁来编号,发布者?还是某个服务器?如果是发布者,两个不同的发布者就不能保证编号不重复。

关于BitTorrent 协议的几点感想

1) 使用文件infohash值作为文件的id(即Info_hash

为什么不使用顺序编号或者GUID之类的东西呢?

如果采用顺序编号,谁来编号,发布者?还是某个服务器?如果是发布者,两个不同的发布者就不能保证编号不重复。如果是某个服务器,那这个ID只在该服务器的势力范围内有效,不够灵活,也增加了发布的复杂度。

至于GUID,可能是个办法。但感觉不太保险,谁知道发布者的GUID从哪儿来的。

但使用文件infohash值作为文件的idInfo_hash)就完全不一样了。

文件info中包含所有片段的Hash值,所以infohash值其实和文件内容是有对应关系的。除非2个文件的内容完全一样,并且它们的发布者给它们设的属性(文件名,片段长度等)完全相同,否则hash值发生冲突的概率小到可以忽略不计。

这个Info_hash本身就能标识文件,只要种子和下载者提供的Info_hash相同,就可以认为它们指的是同一个文件。

这样一个.torrent对应多个tracer也是有可能的。

 

2)数据块的管理

对于多个文件,按文件顺序将所有文件的片段统一编号,管理,显然简化了处理。

 

3)为什么使用bencoding编码

-交换性好(比较2进制编码)

-机器读取方便

-解编码器比较容易实现(比较其他文本编码,如XML

-可以在字符串中自由包含2进制数据,不用转义。

-可扩展(比较java的属性文件)

-人工可读

 

4‘choke’,‘unchoe’,‘interested’,not interested’的作用

‘choke’,‘unchoe’告诉对方,我能不能或愿不愿意给你发数据。

interested’,not interested’ 告诉对方,我愿不愿意接受数据。

我想暂停的时候,应该发送unchoenot interested中止对方的数据收发。

 

疑问:

Peer_id的作用,以及Peer_id为什么要通过hash运算得到?不清楚

参考:

http://blog.csdn.net/honkerhero/archive/2007/07/03/1677022.aspx     

 

 

相关文章
|
2月前
|
安全 Linux Windows
小试跨平台局域网文件传输工具NitroShare,几点感想
小试跨平台局域网文件传输工具NitroShare,几点感想
|
4月前
|
数据采集 网络协议 Python
🔍HTTP协议不为人知的秘密:Python网络编程高手是如何炼成的?
【7月更文挑战第29天】探索HTTP协议核心—请求与响应的交互:浏览器发送请求至服务器,后者处理后返回资源数据与状态码(如200表示成功)。Python高手需理解这些机制并掌握工具如`requests`库。HTTP头信息(Headers)含元数据如`User-Agent`、`Content-Type`及`Cookie`用于会话管理。尽管HTTP无状态,但可通过`Cookie`和`Session`模拟状态保持。成为高手之路包括:深入理解协议、实践项目、阅读优秀库源码如`requests`、跟进新技术如HTTP/2与HTTP/3,并积极参与社区交流。
25 1
|
6月前
|
域名解析 存储 缓存
《计算机网络简易速速上手小册》第2章:计算机网络协议和标准(2024 最新版)
《计算机网络简易速速上手小册》第2章:计算机网络协议和标准(2024 最新版)
49 3
|
6月前
|
安全 前端开发 算法
前端知识笔记(三十八)———HTTPS:保护网络通信安全的关键
前端知识笔记(三十八)———HTTPS:保护网络通信安全的关键
68 0
|
负载均衡 安全 网络协议
网络编程懒人入门(十五):外行也能读懂的网络硬件设备功能原理速成
本文是《网络编程懒人入门》系列文章的第15篇,本篇将继续以通俗易懂的文字,帮你无脑理解各种基础网络硬件设备的功能原理。
125 0
|
机器学习/深度学习 算法 API
性能世界第二的半定规划SDP是什么?怎么用?此文全面解答
半定规划作为作为重要的优化建模工具被广泛应用于机器学习、信号处理、计算机视觉、以及量子计算等领域。MindOpt新版本V0.23.0中新增了半定规划SDP求解器,测评成绩世界第二。
性能世界第二的半定规划SDP是什么?怎么用?此文全面解答
|
数据格式
Kwp2000协议的应用(程序后续篇)
Kwp2000协议的应用(程序后续篇)
123 1
Kwp2000协议的应用(程序后续篇)
|
网络协议 测试技术 开发工具
游戏协议测试二:协议工具开发技术介绍
游戏客户端通常是与服务器直接进行通信,如何通过工具来进行协议的修改和创建呢?第一种就是直接在客户端代码里面增加一些类似GM指令的测试接口,来达到对每个接口的测试目的。第二种就是从外部对双方的通讯网络下手,通过第三方将协议截获修改后再发送给对方,从而达到协议测试的目的如图1,本篇文章就是针对第二种方式来做介绍。
1207 0
游戏协议测试二:协议工具开发技术介绍
|
存储 缓存 网络架构
好家伙!计算机网络基础知识发布!(三)
如果说计算机把我们从工业时代带到了信息时代,那么计算机网络就可以说把我们带到了网络时代。随着使用计算机人数的不断增加,计算机也经历了一系列的快速发展,从大型通用计算机 -> 超级计算机 -> 小型机 -> 个人电脑 -> 工作站 -> 便携式电脑 -> 智能手机终端等都是这一过程的产物。计算机网络也逐渐从独立模式演变为了网络互联模式。
好家伙!计算机网络基础知识发布!(三)
|
域名解析 缓存 网络协议
好家伙!计算机网络基础知识发布!(二)
如果说计算机把我们从工业时代带到了信息时代,那么计算机网络就可以说把我们带到了网络时代。随着使用计算机人数的不断增加,计算机也经历了一系列的快速发展,从大型通用计算机 -> 超级计算机 -> 小型机 -> 个人电脑 -> 工作站 -> 便携式电脑 -> 智能手机终端等都是这一过程的产物。计算机网络也逐渐从独立模式演变为了网络互联模式。
好家伙!计算机网络基础知识发布!(二)