BitTorrent
比特流(BitTorrent,比特急流)是一种内容分发协议,由布拉姆·科恩自主开发。它采用高效的软件分发系统和点对点技术共享大体积文件(如一部电影或电视节目),并使每个用户像网络重新分配结点那样提供上传服务。一般的下载服务器为每一个发出下载请求的用户提供下载服务,而BitTorrent的工作方式与之不同。分配器或文件的持有者将文件发送给其中一名用户,再由这名用户转发给其它用户,用户之间相互转发自己所拥有的文件部分,直到每个用户的下载都全部完成。这种方法可以使下载服务器同时处理多个大体积文件的下载请求,而无须占用大量带宽。
技术特点
2003年,软件工程师Bram Cohen发明了BitTorrent协议。
BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。而在FTP,HTTP协议中,每个下载者在下载自己所需文件的同时,各个下载者之间没有交互。当非常多的用户同时访问和下载服务器上的文件时,由于FTP服务器处理能力和带宽的限制,下载速度会急剧下降,有的用户可能访问不了服务器。BT协议与FTP协议不同,特点是下载的人越多,下载速度越快,原因在于每个下载者将已下载的数据提供给其他下载者下载,充分利用了用户的上载带宽。通过一定的策略保证上传速度越快,下载速度也越快。在很短时间内,BitTorrent协议成为一种新的变革技术。
实现原理
普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。 BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。
根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。
.torrent文件本质上是文本文件,包含Tracker(追踪者,跟踪者)信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件(.torrent)中。所以,种子文件(.torrent)就是被下载文件的“索引”。
技术依赖
bittorrent 的发展依赖于peer-to-peer技术。对等网络 (Peer - to - Peer 简称 P2P) 的研究一直是国外知名学府和知名企业以及研发机构最关注的重点。它甚至被美国《财富》杂志称为改变因特网发展的四大新技术之一 , 被认为是代表无线宽带互联网未来的关键技术。现广泛应用于新技术与软件等工程。
P2P是近年来互联网最热门的技术 ,在VoIP、下载、流媒体、协调技术等领域得到飞速发展 , 被财富杂志评为影响互联网的四大科技之一。P2P技术体现了互联网最根本的内涵——自由和免费,它的主要优点如下:和检索相关的节点上去 , 存储有和该检索 ;对等性高 : 非中心化 , 互联网回归本色——联系和传输 ;扩展性强 : 用户扩展与资源、服务、系统同步扩展 ;健壮性高 : 服务分散和自适应 , 耐攻击、高容错性 ;性价比高 :P2P成本低、存储和技术能力强 ;负载均衡 :分布存储和技术 , 整个网络负载得以均衡。
在P2P网络中,每个参与的节点既是服务器又是客户端, 既是信息的提供者又是信息的消费者。P2P信息检索的目的就是网络中的任意节点都可以提交检索的请求 ,然后这些检索通过相关信息的节点将会回应请求 ,把本地相某种路由机制被路由到关的内容以对等的形式直接传送到请求节点上 , 如上图所示。
图中的检索过程分为以下几个阶段:每个节点在加入网络的时候 , 会对存储在本节点上的内容进行索引 , 以满足本地内容检索的目的。然后按某种预定的规则选择一些节点作为自己的邻居 , 加入到P2P网络当中。发起者P提出检索请求q,并将 q发送给自己的邻居 P的邻居收到 q后 , 再按照某种策略转发给它在网络中的其它邻居节点。这样 ,q就在整个网络中传播开来。收到请求 q 的节点如果存储有相应内容信息 , 则将对应的内容返回。
如何在一个大规模分布的环境下定位资源是个十分具有挑战性的问题。集中在如何组建P2P网络,如何选择有效的资源请求路由策略以便以较少的消息通信开销 ,获得较多的相关查询结果返回 , 同时能够保证较好的服务均衡性。
下载特点
和常规下载文件不一样的是,当你进行BT下载时,你开始链接的地址都是.torrent结尾的文件。其实只要下载此文件,在本机运行此文件一样可以进行BT下载工作。而网上的BT下载链接都是由广大用户自己发布提供的,这样使得下载资料非常广,不受常规管理人员的限制。
种子
想想自己下载时遇到的“种子数为0”的痛苦吧,将心比心,尽可能在下载结束后不要立即关闭BT程序窗口,做一个传递圣火的使者吧。
下载注意
下载者要下载文件内容,需要先得到相应的.torrent文件,然后使用BT客户端软件进行下载。
下载者每得到一个块,需要算出下载块的Hash验证码与.torrent文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。
存在问题
网络技术
又发展出DHT网络技术,使得无Tracker下载成为可能。
DHT全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。
有些软件(比特精灵)还会自动通过DHT搜索种子资源,构成种子市场。
另外,这里使用的DHT算法叫Kademlia(在eMule中也有使用,常把它叫做KAD,具体实现协议有所不同)。
这种技术好处十分明显,就是大大减轻了Tracker的负担(甚至不需要)。用户之间可以更快速建立通讯(特别是与Tracker连接不上的时候)。
相关概念
Tracker:收集下载者信息的服务器,并将此信息提供给其他下载者,使下载者们相互连接起来,传输数据。
种子:指一个下载任务中所有文件都被某下载者完整的下载,此时下载者成为一个种子。发布者本身发布的文件就是原始种子。也指.torrent文件。
做种:发布者提供下载任务的全部内容的行为;下载者下载完成后继续提供给他人下载的行为。
功能
bittorrent下载界面
BitTorrent对于大型文档和自由软件如Linux、FreeBSD的发布帮助很大。对于发布数百MB以至数GB的档案时,如Fedora的光盘镜像格式档,BitTorrent的使用能大大减低服务器的数据流量从而减低发布的成本。另外,一般有新版本软件推出时,服务器必定人山人海,使用BitTorrent也能大大减低繁忙时间服务器的负担。
浏览器
Opera 9
BT软件
p2psearcher
BT Plus!
BitBuddy
BitTornado
Azureus
比特精灵
比特彗星(BitComet)
BitTorrent
迅雷
Frostwire
uTorrent
脱兔
Flashget
QQ旋风
历史
2002年,Bram Cohen在CodeCon初次露面,发表首个BT软件BitTorrent。它以Python写成,以MIT许可证发布。
合法性
简介
BitTorrent
用途
BitTorrent 用来做什么
当通过HTTP协议来下载一个文件的时候,所有的上载开销都在主机上。而使用 BitTorrent,当多个人同时下载同一个文件的时候,他们之间也相互为对方提供文件的部分片断的下载。这样,就把上载的开销分摊到每个下载者那里,也就可以在理论上支持无限多个下载者来下载同一个文件。
研究人员以前也在寻找一种达到这种效果的可实用的技术。这种技术原来并没有在大的范围内运用过,因为逻辑和的问题非常棘手。如果仅仅计算哪些 peers 拥有文件的哪些片断以及这些片断应该被发送给谁,那么很难只产生比较小的系统开销。Peers之间的连接很少会超过几个小时,通常是几分钟而已。最后,有一个普遍的问题,就是公平性。
我们将解释BitTorrent 是如何很好的解决这些问题的。
1.1.BitTorrent接口
BitTorrent 的接口可能是最简单的。用户点击希望下载的文件的超级链接,然后会弹出一个标准的“保存到”对话框。此后,出现一个下载进度的窗口,在这个窗口中,除了显示下载速率外,还显示一个上载速率。BT在使用上非常简单,使得BT能广泛的被运用。
1.2.部署
决定采用BitTorrent的原因是因为有一些文件需要发布。而下载者使用 BitTorrent,是因为这是他们获取所需要的文件的唯一途径。下载者经常一完成下载,就停止为别人上载,虽然说,在BT客户端完成下载之后,继续为别人提供一段时间的上载是一种礼貌的行为。标准的实现是让客户端一直保持上载,除非窗口被关闭。
在一个典型的部署中,未完成的下载者
一台主机负责提供原始的文件,下载者通过BT来下载这个文件。下载者在下载的同时,为其它人提供上载,最后,离开这个系统。
技术框架
P2P的核心思想就是没有服务器的概念,任何一个下载者既是client,又是server。
下载者从别人那里取文件的时候,称为下载,而为别人提供文件的时候,称为上载(传)。
译注:也就是说,每次发送5个请求,然后过一段时间,又发送5个请求。流水作业在HTTP 协议1.1版本中被广泛运用。
选择一个好的顺序来下载片断,对提高性能非常重要。一个差的片断选择算法可能导致所有的片断都处于下载中,或者另一种情况,没有任何片断被上载给其它 peers。
片断选择的第一个策略是:一旦请求了某个片断的子片断,那么该片断剩下的子片断优先被请求。这样,可以尽可能快的获得一个完整的片断
在BT系统中,充分考虑了经济学的概念,处处从整个系统的性能出发,参与者越多,系统越优化。
阻塞算法
为了避免因为频繁的阻塞和疏通 peers造成的资源浪费,BT每隔10秒计算一次哪个peer需要被阻塞,然后将这种状态保持到下一个10秒。10秒已经足够使得TCP来调整它的传输性能到最大。
真实体验
BitTorrent相关推荐
- bt下载加速 BitTorrent trackers服务器列表
有时候用BT软件下载文件的时候,经常会碰到没速度的情况,这个时候你就需要设置BT Tracker服务器地址了.网上有人专门做了一个列表放在github上面,不定时更新.BitComet软件可以直接添加 ...
- 手把手教你在Linux上搭建BitTorrent服务器
网络技术的飞速发展与迅速普及使其成为数据通信的重要手段,网络规模越来越大,连入网络中的计算设备的数量和种类也越来越多,而这些资源并没有得到充分利用,如果能将这些计算单元的处理器计算能力.磁盘存储能力. ...
- [译]BitTorrent协议规范
BitTorrent 是一个用于文件分发的协议.它通过 URL 来标识内容,其设计使其可以与 Web 无缝集成.BitTorrent 相对于一般 HTTP 的优势在于,当相同文件的多个下载并行进行时, ...
- linux可用机场客户端,Linux系统可用的6款Bittorrent客户端
大家都知道迅雷目前尚不支持Linux系统,其实使用Bittorrent客户端进行下载未尝不是一个好的选择,这里给大家介绍6款Linux可用Bittorrent客户端,方便经常需要进行文件下载的Linu ...
- BitTorrent协议规范(BitTorrent Protocol Specification)系列之元信息文件结构(Metainfo File Structure)-第二部分...
元信息文件结构(Metainfo File Structure) 元信息文件里面的所有数据都以B编码方式编码,B编码规范请参考本系列文档之B编码. 元信息文件(就是平常咱们经常接触到的以.torren ...
- Syncthing vs BitTorrent Sync
Syncthing 是一款跨平台的文件同步工具.即你在一台设备上创建.修改或删除文件,在其他设备上会同步执行相同的操作.Syncthing 不会将你的数据上传到云端,而是在你的多台设备同时在线时对指定 ...
- BitTorrent协议与MagNet协议原理
BitTorrent协议 1.简介 BitTorrent(简称BT)是一个文件分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据.而在FTP,HTTP协议中,每个下载者在下载自己所需文件 ...
- BitTorrent应用
配置 nginx.conf location /RPC2 { include scgi_params; scgi_pass 127.0.0.1:5000; #scgi_pass unix:///tmp ...
- linksys 打印软件_Linksys固件DD-WRT BitTorrent优化
linksys 打印软件 After updating my Linksys Router to DD-WRT I turned on syslogd, the router's equivalent ...
- 用python实现bt下载_Python边学边用--BT客户端实现之(一)BitTorrent文件解析
原博文 2012-09-29 23:17 − BitTorrent文件解析: BitTorrent文件使用bencode编码,其中包括了4种数据类型: 'd' 开头表示是dict类型,'e'表示结束 ...
最新文章
- 音视频技术开发周刊 | 203
- DCASE2013挑战赛介绍
- 设置Mac自动显示和隐藏 Dock 栏的速度
- codeforces C. Inna and Huge Candy Matrix 解题报告
- NLP算法学习路线-自己整理
- example 排序_个性化推荐系统源代码之基于 WideDeep模型的在线排序
- 突击计划——求整数中的较大者
- .Net中俩种使用不定参数的方法
- 日活两亿的快手,如何用AI理解视频、做好分发
- 学习笔记-安全-MAC地址攻击
- 嵌入式开发(二):开发板配置(自用)
- 如何下载浏览器中的flash 视频
- 推荐系统与搜索引擎的差异
- rtmp/rtsp测试地址 2019/11/22日亲测可用
- 华为设备远程登陆配置
- 网易云个人收藏歌单信息获取
- PAT A1110 Complete Binary Tree ——雨打梨花深闭门
- 三维电子沙盘数字沙盘可视化大数据人工智能教程MR VR AR M3D GIS第56课
- Windows10登录不上Micrsoft账户,解决办法
- DellOptiPlex 5060台式机WinServer2012系统安装网卡驱动回顾
热门文章
- linux mariadb默认密码,mariadb设置初始密码
- 猕猴桃的红色果肉受到特定的激活-抑制系统的控制
- 微信小程序 实现路线规划
- 重磅丨美国公布长达35页的《2016-2045年新兴科技趋势报告》
- 【历史上的今天】6 月 1 日:Napster 成立;MS-DOS 原作者出生;谷歌出售 Google SketchUp
- 【Python】通过 Python 设置电脑代理端口
- 【合成图片】——Graphics2D
- 2100 年的世界会怎样?特拉华教授用机器学习开启“上帝之眼”
- android 常用action和category
- 2.自动加载(phalapi框架总结)