BitTorrent (协议)

维基百科,自由的百科全书
本文介绍的是BitTorrent的一种意思。关于BitTorrent的其他含义,详见“BitTorrent”。

BitTorrent下载影片的示例

BitTorrent协议(简称BT,俗称比特洪流BT下载)是一个网络文件传输协议,它能够实现点对点文件分享的技术。比起其他点对点的协议,它具有多点对多点的特性,该特性简而言之即为:下载一文件的人越多,且下载后,并继续维持分享(上传)的状态就可以成为可让其他人下载的种子文件(.torrent),该文件即下载速度越快。

目录

[隐藏]

  • 1 历史
  • 2 原理简述
  • 3 DHT网络
  • 4 BT中相关概念
  • 5 BitTorrent与自由软件
  • 6 历史
  • 7 影响
  • 8 中国大陆对Tracker服务器的封锁
  • 9 支持此协议的软件
  • 10 相关条目
  • 11 参考文献
  • 12 外部链接

[编辑]历史

该技术由美国的程序员布莱姆·科亨于2001年4月时发布,并于2001年7月2日时首次正式应用。

[编辑]原理简述

BT原理 在该图示中,由不同颜色区分的是某一文件的不同部分,当传输开始时,只有种子发布者拥有全部文件,在传输进行中,有部分用户获得部分文件(带颜色线条表示),随着传输的继续,文件已经全部公布在系统中,此时,种子拥有者可以退出,也不会影响该文件的传播

普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。 BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。

根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。

种子文件本质上是文本文件,包含Tracker信息和文件信息两部分。Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的Bencode规则进行编码。它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash验证码写入种子文件中;所以,种子文件就是被下载文件的“索引”。

下载者要下载文件内容,需要先得到相应的种子文件,然后使用BT客户端软件进行下载。

下载时,BT客户端首先解析种子文件得到Tracker地址,然后连接Tracker服务器。Tracker服务器回应下载者的请求,提供下载者其他下载者(包括发布者)的IP。下载者再连接其他下载者,根据种子文件,两者分别告知对方自己已经有的块,然后交换对方所没有的数据。此时不需要其他服务器参与,分散了单个线路上的数据流量,因此减轻了服务器负担。

下载者每得到一个块,需要算出下载块的Hash验证码与种子文件中的对比,如果一样则说明块正确,不一样则需要重新下载这个块。这种规定是为了解决下载内容准确性的问题。

一般的HTTP/FTP下载,发布文件仅在某个或某几个服务器,下载的人太多,服务器的带宽很易不胜负荷,变得很慢。而BitTorrent协议下载的特点是,下载的人越多,提供的带宽也越多,下载速度就越快。同时,拥有完整文件的用户也会越来越多,使文件的“寿命”不断延长。

为了解决某些用户“下完就跑”的现象,在非官方BitTorrent协议中还存在一种慢慢开放下载内容的超级种子的算法。

[编辑]DHT网络

目前,又发展出DHT网络技术,可以在无Tracker的情况下下载。

DHT全称为分布式哈希表(Distributed Hash Table),是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储。使用支持该技术的BT下载软件,用户无需连上Tracker就可以下载,因为软件会在DHT网络中寻找下载同一文件的其他用户并与之通讯,开始下载任务。

有些软件(如比特精灵)还会自动通过DHT搜索种子资源,构成种子市场。

另外,这里使用的DHT算法叫Kademlia(在eMule中也有使用,称为Kad网络,具体实现协议有所不同)。

这种技术好处十分明显,就是大大减轻了Tracker的负担(甚至不需要)。用户之间可以更快速创建通讯(特别是与Tracker连接不上的时候)。

[编辑]BT中相关概念

  • Tracker:收集下载者信息的服务器,并将此信息提供给其他下载者,使下载者们相互连接起来,传输数据。
  • 种子:指一个下载任务中所有文件都被某下载者完整的下载,此时下载者成为一个种子。发布者本身发布的文件就是原始种子。
  • 做种:发布者提供下载任务的全部内容的行为;下载者下载完成后继续提供给他人下载的行为。

[编辑]BitTorrent与自由软件

BitTorrent对于大型文档和自由软件如Linux、FreeBSD的发布帮助很大。对于发布数百MB以至数十GB的文件时,如Fedora的光盘镜像格式档,BitTorrent的使用能大大减低服务器的数据流量从而减低发布的成本。另外,一般有新版本软件推出时,服务器必定人山人海,使用BitTorrent也能大大减低繁忙时间服务器的负担。

[编辑]历史

2002年,布莱姆·科亨在CodeCon初次露面,发表首个BT软件BitTorrent。它以Python写成,以MIT许可证发布。

[编辑]影响

以联机游戏为例,有些联机游戏的联机更新(如魔兽世界)就是采用BT的技术。所以当每次有改版时,动辄数百MB的更新档,通过游戏厂商所提供的更新程序,以BT的方式进行下载分流。这为以往的其他种联机游戏,每次重大改版就必须重新压制光盘,或是等待单一下载点的下载方式,带来另一种节省成本的经营模式。

BT下载方式目前引起社会的广泛讨论。利用BT免费发布版权内容肯定损害版权所有者的合法权益,但传播非收费性内容的好处有目共睹。争论的焦点是,是否应因此立法全面禁止BT,并且对从事BT下载的人作出惩罚。但到目前为止,中国大陆和西欧国家等,对BT仍没有任何法律上的约束。而在香港,陈乃明因为发布电影的种子而被海关拘捕。

2005年10月24日,香港司法机关裁定陈乃明的侵权罪成立,需要实时监禁三个月。香港工商贸易部门领导曾俊华与海关关长汤显明对今次裁决感到满意,并表示香港政府和业界将不容忍任何侵权行为的存在,同时政府亦会随时与商人合作打击侵权行为。

香港海关再于2008年9月及2009年4月先后拘捕两人,分别为一名27岁任职收银员的女性及一名38岁无业的男性。他们都被怀疑以BT非法上载两套外国电影而被捕,其中男疑犯涉及的电影为英国电影《故园风雨后》(Brideshead Revisited)及美国电视电影《十级飓风》(NYC: Tornado Terror)。他们成为当局自2007年中激活,24小时运作的“网线监察系统”(Lineament Monitoring System)以来首两名被捕者,使香港因以BT非法上载而被捕人士的总数提升至三名。[1][2][3]

而在台湾,由于需受到美国特别301报告报复的压力,因此经常与IFPI及商业软件联盟(BSA)等商业版权组织合作查缉提供BT来源的网站及讨论区,台湾论坛首度因为供应BT下载遭到被捕,卡提诺王国为全台湾最大的BT以及违法分享最大的分享平台,也于不久后被法务部调查。

由于占大部分的BT下载都是歌曲或影片,尤以后者为多。举个例子,一集电视剧的大小约200至300MB,而电影则是几百MB至几GB(1GB=1024MB),在以前没有BT技术前,要下载这些类影片是颇困难和花时间的。因此BT的发展使互联网用户下载影片的数量大大增加。除了下载本地的歌曲影片外,用户同时也能下载其他国家地区的歌曲影片,一些在其他国家播放的电视剧或综艺节目,次日BT网站已能提供下载。所以BT的发展也促使互联网用户更加快地能接触到其他国家的影视,而不需等待自己国家购买回来播放或出版VCD/DVD才能看。这样使用户多了选择,不需只跟随本地电视台或电影院播映什么,就只看什么。同样地,他们的偶像也渐渐由本地化转为国际化,以中港台为例,年轻人追棒的偶像越来越多是来自其他国家,如日本、韩国等。而这或多或少和他们能通过BT下载其电视电影,更快和更多地接触外地信息娱乐有关。

传输文件的行为根据相关法律法规不能算是使用了文件 正如一栋公寓的大业主为了所有租户的利益而架设天线的行为不是播放节目一样(美国最高法官波特斯图尔特)

[编辑]中国大陆对Tracker服务器的封锁

2009年12月,国家广播电影电视总局开始大范围打击和封锁在中国大陆的Tracker服务器,以BTChina为代表的一批知名Tracker服务器均停止服务。

[编辑]支持此协议的软件

主条目:BitTorrent客户端

[编辑]相关条目

  • BitTorrent协议规范
  • Bencode
  • PT下载
  • 字幕组

[编辑]参考文献

  1. ^ 两电影斩件上载 古惑汉落网. 大公报. 2009-04-29 [2009-04-29].
  2. ^ 分段上载电影 侵权无业汉被拘. 明报/新浪. 2009-04-29 [2009-04-29].
  3. ^ HK Man Arrested for Sharing Films with BitTorrent. Xinhua/CriEnglish.com. 2009-04-29 [2009-04-29] (英文).

[编辑]外部链接

  • (英文)Torrent文件搜索引擎
  • (英文)BT官方网站
  • (英文)BitTorrent非官方协议
  • (繁体中文)P2P 极速下载 谁最受伤?
  • (正体中文)透视BT(一)——── BT的基本运作原理

关于Bitrorrent协议方面的信息,转自维基百科相关推荐

  1. HTTP协议的头信息详解

    HTTP协议的头信息详解 http://blog.csdn.net/guoguo1980/archive/2008/07/14/2649658.aspx HTTP协议的头信息详解 HTTP(Hyper ...

  2. 配置snmp_多种设备基于 SNMP 协议的敏感信息泄露漏洞数据分析报告

    作者:知道创宇404实验室 1. 更新情况 2. 事件概述 SNMP协议[1],即简单网络管理协议(SNMP,Simple Network Management Protocol),默认端口为 161 ...

  3. c++通过TCP/IP协议提交POST信息登录到PHPChina中文开发者社区

    这篇文章讲述如何利用C++编写一个自动登陆到PHPChina中文开发者社区的程序! 首先需要工具: 1.IE 2.HttpWatch 3.C/C++集成开发环境 1.首先打开IE然后在IE上方的地址栏 ...

  4. 假设R1、R2、R3采用RIP协议交换路由信息,且均已收敛。若R3检测到网络201.1.2.0/25不可达,并向R2通告一次新的距离向量,则R2更新后,其到达该网络的距离是

    假设R1.R2.R3采用RIP协议交换路由信息,且均已收敛.若R3检测到网络201.1.2.0/25不可达,并向R2通告一次新的距离向量,则R2更新后,其到达该网络的距离是(). A.2   B.3 ...

  5. Android 蓝牙开发——Avrcp协议获取歌曲信息(十八)

    通过前面的 Avrcp 协协议的学习,我们知道蓝牙音乐的控制是通过媒体播放器进行的.而媒体播放器的数据发生变化时会通过 MediaSeesion 通知客户端,本篇文章主要分析一下歌曲信息是如何传递的. ...

  6. HTTP协议的头信息详解 1

    HTTP协议的头信息详解 我用抓包软件抓了http的包,发现accept大多数有两种情况. # l8 X" o; I5 e# t9 y第一种:Accept: image/gif, image ...

  7. 微信ipad协议 code 授权信息 hook

    前言 微信iPad协议助于辅助微信各种操作智能控制系统,可制作机器人.云控.智能聊天系统ACS .云端,爆粉系统等,其中包含接口丰富,可做到全自动化模式,完全满足于大部分要求. 最新微信ipad协议, ...

  8. java读取BACnet协议的设备信息-demo

    序 鉴于目前网上对于BACnet协议的相关文章比较少,所以写出这段时间对于java对接该协议的一个demo程序,供参考. 一.代码简介 本代码 gitee地址:https://gitee.com/Si ...

  9. netbios协议探测主机信息

    NetBIOS是网络基本输入输出系统,通过netbios协议,可以得到局域网内的主机信息 在windows下可以使用nbtstat命令查看netbios信息 nbtstat -A 192.168.0. ...

最新文章

  1. 哈夫曼树的java实现_java实现哈夫曼树
  2. 学IT技术几个好的网站
  3. python之路-网络编程
  4. Show Attend and Tell的词表
  5. python基本输入输出系统_Python的输入输出
  6. mysql获取查询策略语句_MySQL数据库查询性能优化策略
  7. 《朝花夕拾》金句摘抄(三)
  8. 深度学习修炼(三)——自动求导机制
  9. Grow heap (frag case) to 6.437MB for 1114126-byte allocation
  10. 开源的“底线”在哪里?
  11. 目标检测相关概念:IOU,precision, recall, AP, mAP
  12. 威海二职工业机器人专业_工业机器人专业主要学什么?
  13. scala学习笔记一------初步了解scala
  14. mac头和ip头部详解
  15. 支付:在线支付功能的概述
  16. 深入浅出SSM框架流程以及原理
  17. 项目经理和技术主管的分工
  18. word顶部有一道线_为什么word文档上面有一条横线
  19. ps2022 - ps to dxf
  20. python修改excel表格_python操作excel表格(xlrd/xlwt)以及表格的修改(OpenPyXL)

热门文章

  1. AutoJs学习-模拟鼠标
  2. 资料搜集-JAVA系统的梳理知识9-高级计算机网络
  3. 方舟找不到mod服务器了,方舟搜索不到加mod的服务器 | 手游网游页游攻略大全
  4. 关于gdtr和cr3地址类型的理解
  5. 习题 4.10 企业发放的奖金根据利润提成。。。
  6. 我windows 上面的苹果切换桌面插件
  7. 【P5253】丢番图【数论,数学】
  8. Android常用的第三方组件
  9. 【PyQt】MC自动钓鱼
  10. 乌镇现场 | 专访戴文渊:AI应该像Windows一样 让大众也能用