BT下载原理学习简介
1. BT下载原理简介
BT是一种用来进行文件下载的共享软件(不是“变态”),全名叫"BitTorrent"。BitTorrent是一个多点下载的源码公开的P2P软件,使用非常方便,就像一个浏览器插件,很适合新
发布的热门下载。其特点简单的说就是:下载的人越多,速度越快 。
一般来讲,下载是把文件由服务器端传送到客户端,例如FTP,HTTP,PUB等等。工作原理如下图:
但是这样就出现了一个问题,随着用户的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,而且搞不好还会把服务器挂掉,所以很多的服务器会都有用户人数的限制,下载速度的限制,这样就给用户造成了诸多的不便。
但BT就不同,用BT下载反而是用户越多,下载越快,这是为什么呢?因为BT用的是一种传销的方式来达到共享的,工作原理如下图:
BT首先在上传者端把一个文件分成了Z个部分,甲在服务器随机下载了第N各部分,乙在服务器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去拿乙已经下载好的M部分,乙的BT就会根据情况去到甲的电脑上去拿甲已经下载好的N部分,这样就不但减轻了服务器端得负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去拿就快得多了。所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。而且,在你下载的同时,你也在上传(别人从你的电脑上拿那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。
2. BT协议介绍
2.1. 综述
l 一个“原始”下载者('original'downloader)
2.开始运行普通网络服务器程序,如Apache,已运行的跳过这一步;
3.在网络服务器上将.torrent文件关联到Mime类型application/x-bittorrent(已做过关联的跳过这一步);
4.用要发布的完整文件和Tracker的URL创建一个元信息文件(.torrent文件);
l 网站正常提供静态文件,并且启动客户端上的BitTorrenthelper(这里说官方的客户端程序);
l Tracker即时接收所有下载者信息,并且给每个下载者一份随机的peer列表。通过HTTP或HTTPS协议实现;
l 下载者定时向Tracker登记,使之知道每个人的进度,并和那些直接连接上的peer互相进行数据的上传下载。这些连接遵循BitTorrent peer协议,通过TCP协议进行通信。
2.2. B编码及元信息文件
l 字符串表示为前缀十进制的字符串长度加冒号再跟原字符串。
如4:spam就相当于'spam'。
l 整型数据的表示是前面加'i'后面加'e'中间是十进制数,如i3e就相当于3,i-3e就是-3。整型数据没有长度限制。i-0e无效,所有以'i0'开头的除了代表0的i0e,其它都无效。
l 列表编码为一个'l'开头,后面跟它所包含的项目(已经被编码过)最后加一个'e',比如 l4:spam4:eggse 就等于 ['spam', 'eggs'] 。
元信息文件就是B编码的有以下关键值的字典(括号里面的字是简译的关键值中文意思,不作为关键值一部分,后同):
l 关键值name对应一个字符串,代表默认的下载文件(或保存时目录)的名字。它是纯粹建议性的。
l 关键值pieces(块)对应一个字符串,此字符串长度是20的倍数。它可以再分成每20字节一段的多个字符串,分别对应块在相应索引中的SHA1校验码(hash)。
单文件情况下,length对应文件长度的字节数。多文件情况被看作是把许多单文件按文件列表中的顺序连成一个大文件下载,
而关键值files就对应文件列表,是一个字典的列表,其中每个字典又包含以下关键值:
l path(路径):一个包含字符串的列表,字符串就是子目录名,最后一项的字符串就是文件本身的文件名。(一个长度为零的length表单是错误的。)
2.3. Tracker HTTP协议
Tracker质询是双向的。Tracker通过HTTP协议的GET参数获得信息,然后返回一个B编码后的信息。尽管Tracker需要在自己的服务器端执行,但它运行流畅就像Apache的一个嵌入模块。
l info_hash
20字节长的SHA1验证码,就是元信息文件中的info值中分出来的字符串进行B编码以后的信息,是元信息文件的一个支链。这个值必须是自动转换的。
l peer_id
一个20字节长的字符串,是每个用户开始新下载时随机生成的ID。这个值也必须是自动转换的。
一个非强制性的参数(可有可无)给出peer所在的IP(或DNS主机名),一般是和Tracker同机器的原始下载者得到后用来散发文件。
监听端口,官方默认的是从6881端口开始试,如果端口被占用则依次向后推一个端口直到找到空闲端口,到6889端口没找到就放弃。
还要下载的字节数,编码为十进制ASCII码。这个数不能通过文件长度和已下载数出来的,因为文件可能是续传的,还可能有一些已经下载的数据不能通过完整性检查必须被重新下载。
Tracker的回应也是B编码字典。如果Tracker回应中有关键值failure reason(失败原因),则对应一个人易读懂的字符串信息,解释质询失败的原因,不需要其它关键值。
l interval(间隔):对应下载者定期发出请求的间隔秒数;
如果你想对元信息文件或者Tracker质询进行扩展,请与Bram Cohen进行协调,确保所有扩展都兼容。
(downloader 通过 HTTP 的GET 命令来向 tracker 发送查询请求,tracker 响应一个peers 的列表)
2.4. BitTorrent peer protocol
BT对等协议基于TCP,它很有效率,并不需要设置任何socket选项。(译注:BT对等协议指的是peer与peer之间交换信息的协议)
对等的两个连接是对称的,消息在两个方向上同样的传递,数据也可以在任何一个方向上流动。一旦某个peer下载完了一个片断,并且也检查了它的完整性,那么它就向它所有的peers宣布它拥有了这个片断。
在连接的任一端包含两个bit位用来指示连接状态:choked or not、interested or not。
由一个握手开始,后面是循环的消息流,每个消息的前面,都有一个数字来表示消息的长度。握手的过程
接下来就是以消息长度开始的消息流,这是可选的。长度为0 的消息,用于保持连接的活动状态,被忽略。通常每隔2分钟发送一个这样的消息。
‘choke’, ‘unchoe’, ‘interested’, not interested’类型的消息不再含有其它数据了。
‘have’类型的消息,后面的数据是一个简单的数字,它是下载者刚刚下载完并检查过完整性的片断的索引。(由此,可以看到,peer通过这种消息,很快就相互了解了谁都有什么片断)
Choking算法不是BT链路协议的技术组成,但是对提高下载效率很有作用,一个好的Choking应该能够利用各种资源,保障参加下载的每个用户获得理想的下载速度,同时杜绝有人只下载不上载。
2.5. BT限流的解决方案
1、利用客户端与客户端连接的端口号:6m## o
BT实现中,提供了一个端口范围(6881~6889),如果通过这个范围的所有端口来限
流,一些运营商曾采用这种方法来封杀BT,如长城宽带和重庆网通曾采用这种方法来封堵
这种方法在前期一定程度上是可用的;因为:BT的官方网站提供了一个默认的监听端
口范围(6881~6889)。但是,这种方法比较片面,因为通过一定的技术手段可以改变这个
端口范围(网上有);另外,BT的客户端较多,它们所采用的端口范围及实现方式各不相
BT客户端 |
端口范围 |
贪婪ABC |
可以手工设置 |
BitComet |
没有公开 |
BitTorrent Plus |
可以手工设置 |
BitTorrent |
6881~6889 |
比特精灵Bit Spirit |
16881 |
对所有的 ip 包都进行检查,如果 ip 包的数据区包含 BT 对等协议的特征“BitTorrent
protocol”(BT协议规定),那么可以标识这是一个BT流,标识了以后,就可以采取相应的措施(CAR)对它进行限流。
1、 TCP三此握手与BT对等协议二次握手用的端口号都是一样的,并且以后得数据传输用的端口号也和前两者是一样的。
‘B’- 对应图中的“42(十六进制)”以后对应“Bittorrentprotocol”
由上图可以看BitTorrentPlus! 2建立连接的过程是:
1、 TCP三此握手与BT对等协议二次握手用的端口号都是一样的,并且以后得数据传输用的端口号也和前两者是一样的。
‘B’- 对应图中的“42(十六进制)”以后对应“Bittorrentprotocol”
由上图可以看BitTorrentPlus! 2建立连接的过程是:
1、 TCP三此握手与BT对等协议二次握手用的端口号都是一样的,并且以后得数据传输用的端口号也和前两者是一样的。
‘B’- 对应图中的“42(十六进制)”以后对应“Bittorrentprotocol”
2、TCP三此握手与BT对等协议二次握手用的端口号都是一样的,并且以后得数据传输用的端口号也和前两者是一样的。
‘B’- 对应图中的“42(十六进制)”以后对应“Bittorrentprotocol”
BT下载原理学习简介相关推荐
- BT、电骡、迅雷等P2P下载原理
迅雷的下载原理: 一.迅雷下载原理分析 迅雷的工作原理据称为"多资源超线程技术基于网格原理,能够将网络上存在的服务器和计算机资源进行有效的整合".实际上还是传统的下载技术 ...
- BT下载会损害硬盘吗?--硬盘的工作原理,硬盘寿命
关键字:硬盘,电脑维修,电脑故障,BT,Emule,P2P,S2P,FlashXP,FlashGet,ftp,NetAnts电骡,电驴,资源下载,软件下载,损坏硬盘,硬盘的工作原理,硬盘寿命,磁盘整理 ...
- BT下载的原理 和疑问
我心中有几个疑问,同时也搜索了点素材,肯能对理解问题有帮助. BT下载,即P2P下载,是一种不需要中心化服务器的下载,实现原理是,每个客户端在下载的时候也作为服务器. 我的疑问是,P2P各个节点是如何 ...
- java解析bt协议详解_BT下载原理分析
BT全名为BitTorrent,是一个p2p软件,你在下载download的同时,也在为其他用户提供上传upload,因为大家是"互相帮助",所以不会随着用户数的增加而降低下载速度 ...
- [机器学习入门] 深度学习简介,GPU计算的原理,分布式机器学习原理
深度学习简介 深度学习的概念源于人工神经网络的研究.含多隐层的多层感知器就是一种深度学习结构.深度学习通过组合低层特征形成更加抽象的高层表示属性类别或特征,以发现数据的分布式特征表示. 深度学习采用的 ...
- BT下载的工作原理及小知识
作者:周轶 时间:2005-11-01 00:00:00 出处:天极Myhard <script src="/e/public/ViewClick?classid=3& ...
- 专门的考试学习培训课程录象资料bt下载
专门的考试学习培训课程录象资料bt下载:满分bt下载索引: http://www.manfen.net/forum/btsubsystem.php http://www.manfen.net/foru ...
- Dr.COM防BT下载技术的原理和实现的方式
Dr.COM防BT下载技术的原理和实现的方式 背景介绍 目前互联网络中P2P下载业务流量非常大,包括大家熟知的BT,eDonkey,eMule,都是较为流行的P2P软件.P2P业务特点占用大量网络带宽 ...
- 2-51单片机ESP8266学习-AT指令(开发板51单片机自动冷启动下载原理)
前言:了解就行,不必深究 上一篇链接 http://www.cnblogs.com/yangfengwu/p/8720148.html 源码链接:https://pan.baidu.com/s/1wT ...
最新文章
- mysql构架,索引,视图,查询语句
- 不展现报表实现对报表的打印导出
- How to create a jump server in AWS VPC
- Python3.7模块之re
- 根据年 -月查询这个月的第一天和最后一天
- MFC多线程处理界面假死之红外图像数据获取和excel写入
- 大工18秋计算机应用在线作业,大工18秋《计算机应用基础》在线测试2答案.docx...
- 类与对象、引用传递、封装、构造方法、匿名对象笔记
- python识别收件地址_Python3 自动识别地址信息
- cam电路原理图 h7 openmv4_Protel电路设计软件难点解答(上)
- CAS4 之 集成RESTful API
- 算命师傅的好帮手:一款简单好用又使用的排盘工具--灵棋排盘
- 2022年信息系统监理师考试大纲
- 利用讯飞语音识别技术开发离线语音控制系统(Windows平台)
- 利用weevely生成php后门木马
- 大学计算机基础 - 第七章练习题
- python实现批量图片文字识别(ocr)
- 西瓜书课后11.1(Relief算法)
- Discuz 开启开发者模式并且开始默认安装未上架插件调试的模式-并且关掉应用中心-一颗优雅草科技伊凡
- VUE指令大全(详解)
热门文章
- 雄安新区区块链底层系统(1.0)今日正式发布
- TStringGrid - 重绘时RECT解决一块空白区域
- 邓俊辉数据结构学习-8-2-B树
- Python学习-基础篇14 Web框架本质及第一个Django实例
- va_start(),va_end()函数应用
- watir-webdriver使用过程中异常
- MVVM教程[资源+分析]
- pre textarea code标签区别
- es6 let和const命令(1)
- 放肆的使用UIBezierPath和CAShapeLayer画各种图形