BitTorrent+协议规范(翻译)
bt协议 合同范本
bt协议合同范本名称:____________________地址:____________________名称:____________________地址:____________________第一条定义1.1 BT协议:指一种基于P2P(Peer-to-Peer,点对点)网络的文件共享协议,通过种子文件(Torrent文件)实现文件的分片与。
1.2 内容:指甲方拥有合法版权的数字内容,包括但不限于视频、音频、文本、图片等。
1.3 种子文件:指记录了内容分片信息、Tracker服务器地址等数据的文件,用于在BT协议中实现内容的分发。
1.4 Tracker服务器:指负责记录者和者的IP地址、端口等信息,以及维护种子文件中分片信息的服务器。
第二条内容授权2.1 甲方授权乙方在合同有效期内,通过BT协议在全球范围内独家分发内容。
2.2 甲方保证其对内容拥有合法的版权,并保证内容不侵犯任何第三方的知识产权。
2.3 乙方不得对内容进行任何形式的修改、剪辑、转码等处理。
第三条义务与责任3.1 甲方应保证内容的合法性、真实性、准确性,并对内容的合法性承担责任。
3.2 甲方应按时向乙方提供内容的种子文件和Tracker服务器地址。
3.3 乙方应保证Tracker服务器的稳定运行,确保内容的顺利分发。
3.4 乙方应采取必要的技术措施,防止内容的非法复制、传播。
第四条经济条款4.1 甲方应向乙方支付一定的授权费用,具体金额及支付方式由双方另行商定。
4.2 乙方应在收到授权费用后,按照约定的时间向甲方开具正规发票。
第五条违约责任5.1 任何一方违反本合同的约定,应承担违约责任,向对方支付违约金,并赔偿对方因此遭受的损失。
5.2 若乙方未能按照约定提供Tracker服务器的稳定运行,导致内容分发失败,乙方应退还甲方已支付的授权费用。
第六条保密条款6.1 双方应对在履行本合同过程中获得的对方商业秘密、技术秘密等保密信息予以保密,未经对方同意不得向第三方披露。
bt协议详解基础篇(上)
bt协议详解基础篇(上)bt协议详解基础篇(上)最近开发了⼀个的⽹站,产⽣了仔细了解bt协议的想法,所以写了这⼀篇⽂章,后续还会写⼀些关于搜索和索引的东西,都是在开发这个⽹站的过程中学习到的技术,敬请期待。
1 简介bt是BitTorrent协议的简称,bt协议是最流⾏的p2p下载协议,另外⼀种⽐较流⾏的p2p下载协议叫ed2k,ed2k的全称叫eDonkey2000 network,这⾥我们只讨论bt协议,ed2k协议以后有机会再和⼤家分享。
相信很多⼈都听说过bt协议。
但是当我问周围的⼈究竟什么是bt协议呢?他们的解释让我对bt协议的理解变得更含糊,为了弄清楚⼼中的问题,我开始了⾃⼰对bt协议的学习。
我在上找到⼀篇⽂章。
这个标题翻译过来就是“bittorrent协议规范”,是bittorrent协议的基础篇,为什么说是基础篇呢?BT协议是⼀个协议簇。
有点像tcp/ip协议⼀样,bt协议不是⼀个简单的协议,⽽是⼀系列相关的协议组成的,⽽且这个协议簇⼀直在进化。
既然这篇⽂章的主题是“基础篇”,所以它的内容主要来⾃,也就是bittorrent协议规范,因为其它的协议都是以这个协议为基础的,可见这个的重要性。
2 bittorrent协议规范(中⽂版)bittorrent是⼀个⽂件分发协议,它使⽤url来定位⽂件⽽且跟web服务⽆缝集成。
当有多个⼈同时下载同⼀个⽂件时,下载者之间可以互相上传⾃⼰已有的那部分⽂件,让⼀个⽂件⽀持很多⼈同时下载却只增加⼩量的带宽负担变成可能,这就是bt协议相⽐http协议的优势。
bt⽂件分享由下列内容组成:1. 传统的⽂件服务器2. 种⼦⽂件(.torrent⽂件)3. bt tracker服务器4. ⽂件分享者5. web浏览器6. web浏览器⽤户(多个)⼀个服务器按照下⾯的步骤开始⽂件分享过程1. 启动⼀个bt tracker服务器2. 启动⼀个普通的web服务器,如apache3. 在web服务器上配置多媒体类型‘application/x-bittorrent’关联到.torrent⽂件4. ⽣成⼀个.torrent⽂件,在⽂件中添加bt tracker服务器的地址5. 上传torrent⽂件到web服务器6. 发布torrent⽂件下载页⾯7. 等待⽤户下载⼀个⽤户按照下⾯的步骤开始⽂件下载1. 安装bt客户端2. 浏览web页⾯3. 下载torrent⽂件4. 保存torrent⽂件到本地5. 使⽤bt客户端打开torrent⽂件,开始下载6. 等待⽂件下载完成bencoding编码strings(字符串)编码为:<字符串长度>:<字符串> 例如: 4:test 表⽰为字符串"test",4:例⼦表⽰为字符串“例⼦”,字符串长度单位为字节,没开始或结束标记integers(整数)编码为:i<整数>e,开始标记i,结束标记为e,例如:i1234e 表⽰为整数1234,i-1234e 表⽰为整数-1234,整数没有⼤⼩限制,i0e 表⽰为整数0,i-0e 为⾮法,以0开头的为⾮法如: i01234e 为⾮法lists(列表)编码为:le,开始标记为l,结束标记为e,列表⾥可以包含任何bencoding编码类型,包括整数,字符串,列表,字典。
bittorrent原理
bittorrent原理BitTorrent原理引言BitTorrent是一种点对点文件共享协议,它基于TCP/IP协议,具有高效、可靠和分布式的特点。
本文将介绍BitTorrent的原理及其工作机制。
一、BitTorrent的基本原理1. 服务器与客户端模式BitTorrent采用了一种分布式的服务器和客户端模式。
在传统的客户端-服务器模式中,服务器负责存储文件并向客户端提供下载。
而在BitTorrent中,用户通过BitTorrent客户端连接到一个或多个其他用户的客户端,每个用户同时充当服务器和客户端,共享文件资源。
2. 文件分块BitTorrent将待分享的文件分成固定大小的块,通常为256KB或512KB。
每个块都被分配一个唯一的标识符,称为哈希值,用于校验文件的完整性。
3. 种子文件种子文件是一个小文件,包含了待分享文件的元数据,包括文件名、文件大小、块大小、Tracker服务器的地址等信息。
用户通过种子文件来获取待分享文件的相关信息,并连接到Tracker服务器。
4. Tracker服务器Tracker服务器是BitTorrent网络中的关键组件,它维护了当前参与共享文件的用户列表。
当用户连接到Tracker服务器时,它会返回一个包含其他用户IP地址的列表,用户可以从这些用户中选择连接的对象。
5. 分片下载BitTorrent的核心机制是分片下载。
当用户连接到其他用户时,它们可以请求和接收已经拥有的块,并向其他用户提供自己已经下载的块。
这种分片下载的方式可以加快下载速度,同时减轻了服务器的负担。
6. 块的校验和和完整性检查每个块都有一个唯一的哈希值,用于校验块的完整性。
当用户接收到一个块时,会根据块的哈希值进行校验,确保接收的块没有被篡改。
二、BitTorrent的工作流程1. 创建种子文件在共享文件之前,用户需要先创建种子文件。
种子文件包含了待分享文件的元数据,用户可以使用BitTorrent客户端创建种子文件。
bit torrent协议原理
bit torrent协议原理
BitTorrent协议是一种点对点(P2P)传输协议,用于高效地下载和上传大型文件。
它的原理是将文件分成较小的块,然后将这些块同时下载,从而实现更快的下载速度。
在BitTorrent网络中,每个用户都可以同时充当下载者和上传者,从而帮助其他用户下载文件。
BitTorrent协议使用一种称为“种子文件”的文件来描述要下载的文件。
种子文件包含有关文件的元数据,例如文件名、大小和哈希值(用于验证文件块的完整性)。
用户可以通过BitTorrent客户端打开种子文件,然后开始下载文件。
当用户下载文件时,BitTorrent客户端将文件分成较小的块,并从其他用户下载这些块。
如果一个用户没有完整的文件,但已经下载了一些块,他们可以立即将这些块上传给其他用户,以帮助他们更快地下载文件。
这种互相分享的方式有助于提高性能和可靠性。
BitTorrent协议还使用一种称为“种子”的机制来保持文件的可用性。
种子是指拥有完整文件的用户,他们可以选择继续上传文件,以帮助其他用户下载文件。
种子可以帮助保持文件的可用性,因为只要至少存在一个种子,其他用户就可以下载完整的文件。
如果没有种子,那么文件可能会变得不可用。
总的来说,BitTorrent协议是一种创新的P2P传输协议,它能够实现高效、可靠的大型文件传输。
通过将下载和上传相结合,BitTorrent使每个用户都成为网络的一部分,从而促进了文件的可用性和传输速度。
bittoorent协议
BitTorrent协议1. 简介BitTorrent协议是一种用于大规模文件共享的协议,它允许用户通过P2P(点对点)方式分享和下载文件。
该协议由布兰姆·科恩(Bram Cohen)在2001年开发,目前已成为最流行的P2P文件共享协议之一。
2. 工作原理BitTorrent协议的工作原理可以概括为以下几个步骤:2.1 种子文件在使用BitTorrent协议进行文件共享之前,用户首先需要创建一个种子文件。
种子文件包含了文件的元数据信息,如文件名、文件大小、文件分块等。
种子文件通常使用.torrent扩展名,并通过Tracker服务器进行分发。
2.2 Tracker服务器Tracker服务器是BitTorrent网络中的中央服务器,用于协调下载和上传的节点。
当用户想要下载一个文件时,他们需要连接到Tracker服务器,获取其他节点的列表。
Tracker服务器会返回一个包含其他节点信息的Peer列表,用户可以与这些节点建立连接。
2.3 分块下载一旦用户连接到其他节点,他们可以开始下载文件。
文件在BitTorrent协议中被分成多个固定大小的块。
用户可以选择下载特定的块,而不是整个文件。
这种分块下载的方式使得下载速度更快,并减轻了网络负荷。
2.4 分享与上传BitTorrent协议强调分享和上传的重要性。
用户在下载文件的同时也在上传文件的块给其他节点。
这种互相分享的机制使得文件能够更快地传播,同时也减轻了原始服务器的负荷。
2.5 智能下载策略BitTorrent协议具有智能下载策略,它会优先下载那些拥有更多块的节点。
这种策略可以提高整体下载速度,并减少下载时间。
3. BitTorrent协议的优势BitTorrent协议相对于传统的文件下载方式有以下优势:3.1 高速下载由于BitTorrent协议采用了分块下载的方式,用户可以同时从多个节点下载文件的不同块。
这样可以大大提高下载速度,尤其是在大文件和热门文件的情况下。
bittorrent的结构
bittorrent的结构
BitTorrent协议的系统结构包括以下四个主要组成部分:
1. WWW服务器(或其他能让最终用户获得种子文件的服务):提供上传和下载Torrent种子文件的功能。
2. Tracker:Tracker是指运行于服务器上的一个服务程序,也称Tracker服务器。
这个程序能够追踪到底有多少人同时在下载或上传同一个文件。
客户端连上Tracker服务器,就会获得一个正在下载和上传的用户的IP地址、端口、客户端ID等信息列表,根据这些信息,BT客户端会自动连上别的用户进行下载和上传。
3. 最终用户web浏览器(或其他能让最终用户获得种子文件的软件):提供上传和下载Torrent种子文件的功能。
4. 最终用户下载软件:泛指运行在用户自己电脑上的支持BitTorrent协议的程序。
以上是BitTorrent协议的系统结构的主要内容,供您参考,详细信息可以查询官网。
2019秋七年级英语上册趣味英语常见英文单词缩写素材(新版)人教新目标版
常用英文缩写VIP = very improtant person重要人物IMP (import)进口EXP (export)出口MAX (maximum)最大的、的最大限度的MIN (minimum)最小的,最低限度DOC (document)文件、的单据INT (international)国际的EMS (express mail special)特快传递IRC(International Red Cross)国际红十字会UNESCO(the United Nations Educational,Scientific and Cultural Organization)联合国教科文组织W.C(water closet)CIA(central intelligence agence)美国中情局FBI(feberal bureau of investigation)美国联邦调查局FA(football association)足协WTO 世界贸易组织WHO世界卫生组织UN 联合国UNICEF 联合国教科文组织建筑1.CBD:中央商务区 (Central Business District) CBD应具备以下特征:现代城市商务中心,汇聚世界众多知名企业,经济、金融、商业高度集中,众多最好的写字楼、商务酒店和娱乐中心,最完善便利的交通,最快捷的通讯与昂贵的地价。
2.CLD:中央居住区,指由若干个居住区组成的可以满足城市居民居住、教育、购物、娱乐、休闲的大型集中型居住区,国际上普遍称为Central Living District(简称CLD)。
CLD最重要的两个因素是空间和环境。
3.COD:中央行政区,全称是CentraL OffiCiaL DistriCt ,其名称源于该区内汇集了多家国家部委、机关、办事机构4.MORE:互动商务居住区,英文Mobile Office Residential Edifice的缩写,其文意为移动、办公、居住等意。
bt协议书
bt协议书BT协议书写BT(BitTorrent)是一种用于文件共享的协议,也是一种点对点(P2P)通信协议。
它的主要特点是能够实现高效的文件传输和共享,以及支持大规模的用户参与。
在互联网的发展过程中,BT协议广泛应用于文件下载、资源分享等各个领域。
下面,我将详细介绍BT协议的基本原理和实现机制。
首先,BT协议的基本原理是将一个文件分割成若干个小块,并将这些小块分布在不同的用户之间进行共享。
在文件下载的过程中,每个用户既充当文件的下载者,同时也充当文件的上传者。
这种点对点的方式使得下载速度更快,同时也减轻了服务器的负担。
其次,BT协议的实现机制主要包括Tracker服务器、种子文件和对等下载。
Tracker服务器是一个集中的管理者,它负责监控和管理参与文件下载的所有用户,并维护一个用户列表。
用户需要首先通过Tracker服务器获取文件的种子文件,种子文件包含了文件的详细信息和下载地址。
一旦获得种子文件,用户就可以开始下载文件了。
对等下载是BT协议的核心机制,它实现了用户之间的资源共享和交换。
在下载过程中,用户首先连接Tracker服务器,向其报告自己的下载状态,并获取其他用户的IP地址列表。
然后,用户通过与其他用户建立连接,请求并下载文件的小块。
同时,用户也允许其他用户从自己这里下载文件的小块。
这种对等下载的方式使得文件的下载速度相对较快,并且可以实现较好的负载均衡。
除了基本原理和实现机制,BT协议还具有一些特殊的优势和问题。
首先,BT协议具有高效的文件传输能力。
由于文件被分割成多个小块,并且可以从多个用户处同时下载,因此可以实现更快的下载速度。
另外,BT协议还支持断点续传,即当下载过程中出现中断,用户可以继续之前的下载进度,而不需要从头开始。
然而,BT协议也存在一些问题。
首先,由于BT协议的文件共享特点,使得版权保护问题比较突出。
很多用户利用BT协议进行盗版行为,侵犯了版权者的权益。
其次,BT协议也容易受到网络攻击,例如DHT攻击和假种子攻击等。
BT协议介绍
1 简介BT:BT是一种用来进行文件下载的共享软件(不是“变态”),全名叫"BitTorrent"。
一般来讲,下载是把文件由服务器端传送到客户端,例如,PUB等等。
但是这样就出现了一个问题,随着用户的增多,对带宽的要求也随之增多,用户过多就会造成瓶颈,而且搞不好还会把服务器挂掉,所以很多的服务器会都有用户人数的限制,下载速度的限制,这样就给用户造成了诸多的不便。
但BT就不同,用BT下载反而是用户越多,下载越快,这是为什么呢?因为BT用的是一种传销的方式来达到共享的,工作原理如下图:BT首先在上传者端把一个文件分成了Z个部分,甲在服务器随机下载了第N各部分,乙在服务器随机下载了第M个部分,这样甲的BT就会根据情况到乙的电脑上去拿乙已经下载好的M部分,乙的BT就会根据情况去到甲的电脑上去拿甲已经下载好的N部分,这样就不但减轻了服务器端得负荷,也加快了用户方(甲乙)的下载速度,效率也提高了,更同样减少了地域之间的限制。
比如说丙要连到服务器去下载的话可能才几K,但是要是到甲和乙的电脑上去拿就快得多了。
所以说用的人越多,下载的人越多,大家也就越快,BT的优越性就在这里。
而且,在你下载的同时,你也在上传(别人从你的电脑上拿那个文件的某个部分),所以说在享受别人提供的下载的同时,你也在贡献。
一些常用的术语解释:BT= BitTorrent 比特洪流HTTP= HyperText Transmission Protocol 超文本传输协议FTP= Protocol 文件传送协议PUB= 可以匿名登陆的FTP站点的统称torrent文件(扩展名为.torrent),包含了一些Bit Torrent 下载所必须的信息,有了这个文件,才可以下载最新的文件,.torrent文件通常很小,大约几百Kclient (客户端)与 trackers服务器通信,这样其他的客户端才能下载到那些发布的文件.Tracker是指运行于服务器上的一个程序,这个程序能够追踪到底有多少人同时在下载同一个文件。
BitTorrent协议规范
BitTorrent协议规范目的此规范的目的是详细介绍BitTorrent 协议规范v1.0 。
Bram 的协议规范网站/protocol.html 简要地叙述了此协议,在部分范围缺少详细行为阐述。
希望此文档能成为一个正式的规范,明确的条款,将来能作为讨论和执行的基础。
此文档规定由BitTorrent 开发者维持和使用。
欢迎大家为它做贡献,其中的内容代表当前协议,它仍由许多客户使用。
这里不是提出特性请求的地方。
如果有请求,请见邮箱列表。
应用范围本文档适用于BitTorrent 协议规范的第一版(v1.0)。
目前,这份文档应用于torrent 文件结构、用户线路协议和服务器(Tracker)HTTP/HTTPS 协议规范。
如果某个协议的修改有了新的定义,它们会被指定在协议相应的页面,而不在这里。
约定在本文档中,使用了许多约定来简明和明确地表达信息。
用户(peer)v/s 客户端(client):在本文档中,一个用户可以是任何参与下载的BitTorrent 客户端。
客户端也是一个用户,尽管BitTorrent 客户端运行在本地机器上。
本规范的读者可能会认为自己是连接了许多用户的客户端。
片断(piece)v/s 块(block):在本文档中,片断是指在元信息文件中描述的一部分已下载的数据,它可通过SHA-1 hash 来校验。
而块是指客户端向用户请求的一部分数据。
两块或更多块组成一个完整的片断,它能被校验。
实际标准:大的斜体字文本指出普通的准则在不同客户端BitTorrent 的执行,它被当作为实际标准。
为了帮助其他人找到本文档最近的修改,请填写改变日志(最后一段)。
它应包含一个简短的项目(如:一行),用来记录你每次对此文档的主要改动。
B编码主条目:BencodeB编码是一种以简洁格式指定和组织数据的方法。
支持下列类型:字节串、整数、表和字典。
字节串字节串按如下编码:<以十进制ASCII 编码的串长度>:<串数据>注意没有开始和结束的分隔符。
bt模式 协议
BT模式协议引言BT模式(BitTorrent Mode)是一种使用BitTorrent协议进行文件共享的传输模式。
BitTorrent协议是一种点对点文件分发协议,由于其高效的分布式特性,能够进行大规模文件共享,并且在互联网上得到广泛应用。
本文将介绍BT模式的基本概念、工作原理以及其在文件共享领域的应用。
概述BT模式基于BitTorrent协议,使用分布式种子技术进行文件传输。
其与传统的HTTP或FTP等协议不同,在BT模式中,任何一个参与者既是下载者(downloader),也是上传者(uploader)。
下载者通过下载一个种子文件(.torrent文件),利用种子文件中记录的Tracker服务器信息和其他下载者(对等方)进行通信,实现文件的分片下载,并且在下载的同时也对其他下载者提供上传支持。
工作原理1.种子文件准备:首先,一个上传者需要准备一个种子文件,该文件包含了待共享文件的元数据信息,包括文件名、大小、分片大小等。
种子文件的创建需要使用种子创建器进行操作,通常在上传者的本地机器上完成。
2.种子文件发布:上传者将种子文件发布到BT网络中的Tracker 服务器上。
Tracker服务器负责管理参与者的信息,包括它们的IP地址和所拥有文件的分片信息。
3.下载者获得种子:下载者通过从Tracker服务器上获取可以下载的种子文件,得知可以下载的文件以及其他参与者的信息。
4.下载者与上传者建立连接:下载者通过在BT客户端中打开种子文件,连接到Tracker服务器上列出的参与者中的一个。
下载者与该参与者进行握手,交换分片信息,并通过给定的规则选择要下载的分片。
5.文件分片下载:下载者从已连接的参与者那里下载文件分片,并在下载完成后继续下载其他分片。
6.分享和上传:下载者在成功下载分片后,成为上传者并向其他下载者提供上传支持。
下载者上传已下载的分片,以帮助其他参与者完成文件的下载。
7.文件完成:当下载者获得所有分片并完成文件下载后,BT客户端会验证文件的完整性。
第4章 BitTorrent
BitTorrentBitTorrent(简称BT)是一个内容分发协议,每个下载者在下载的同时不断向其他下载者上传已下载的数据。
而在FTP、HTTP协议中,每个下载者在下载自己所需文件的同时,各个下载者之间没有交互。
当非常多的用户同时访问和下载服务器上的文件时,由于FTP服务器处理能力和带宽的限制,下载速度会急剧下降,有的用户可能访问不了服务器。
BT协议与FTP协议不同,特点是下载的人越多,下载速度越快,原因在于每个下载者将已下载的数据提供给其他下载者下载,充分利用了用户的上载带宽。
通过一定的策略保证上传速度越快,下载速度也越快。
在很短时间内,BitTorrent协议成为一种新的变革技术。
BitTorrent是一种P2P协议。
用于在对等网络中,用户群和用户群(peer-to-peer)之间的文件分享。
并且,对于一个文件,用户群越大,下载速度就越快。
BitTorrent协议能够减少服务端和网络环境对分享大文件的影响,由于是分布式节点互传数据,某一部分的网络拥堵或服务器宕机并不会对整个传输链路造成太大的影响。
1.原理简述普通的HTTP/FTP下载使用TCP/IP协议,BitTorrent协议是架构于TCP/IP协议之上的一个P2P文件传输协议,处于TCP/IP结构的应用层。
BitTorrent协议本身也包含了很多具体的内容协议和扩展协议,并在不断扩充中。
根据BitTorrent协议,文件发布者会根据要发布的文件生成提供一个.torrent文件,即种子文件,也简称为“种子”。
.torrent文件本质上是文本文件,包含Tracker信息和文件信息两部分。
Tracker信息主要是BT下载中需要用到的Tracker服务器的地址和针对Tracker服务器的设置,文件信息是根据对目标文件的计算生成的,计算结果根据BitTorrent协议内的B编码规则进行编码。
它的主要原理是需要把提供下载的文件虚拟分成大小相等的块,块大小必须为2k的整数次方(由于是虚拟分块,硬盘上并不产生各个块文件),并把每个块的索引信息和Hash 验证码写入种子文件(.torrent)中。
BitTorrent详解
BitTorrentA technical description of the BitTorrent protocol1 IntroductionFile sharing is a phenomen that is well known in the entire community. Many people are using it, and a large amount of bandwith on the Internet is used up by different file sharing applications/protocols. CacheLogic suggests that about 30% of all Internet bandwith was used by BitTorrent at the end of 2004[1].BitTorrent is one of the most popular ways of sharing and downloading files. Podcasts are often distributed with it, as well as open source projects, such as Red Hat Linux. Besides legal distribution of files, BitTorrent is often used to illegaly share and download copyrighted material.The technology within the protocol makes it possible to distribute large amounts of data without the need of a high capacity server, and expensive bandwith. This is probably the main reason for using this protocol instead of traditional downloading from HTTP or FTP servers. For those sharing and downloading copyrighted files, BitTorrent is benificial due to the fact that it is decentralized.2 Overview of BitTorrentBitTorrent is a file sharing protocol, implementing peer-to-peer technology. The main idea is to releive a single server from heavy demand, as the number of users increase, by dividing files into smaller pieces. A piece that is downloaded by a peer is then shared for uploading by that peer. The key components in the protocol are:•Metainfo file. A metainfo file is used to describe metadata about the file(s) being shared, and the tracker, so that clients and trackers can administrate downloads. Also referred to as torrent file, and has the file ending .torrent.•Tracker. A central server keeping track of peers and seeds sharing and downloading the file(s).•Peer. A user on the network downloading the file(s), and sharing the parts that have been successfully downloaded.•Seed. Basically a peer that has the complete file or files available for sharing. At least one seed is needed in the beginning for the sharing to be possible.•Client. An application implementing the BitTorrent protocol.The procedure of sharing a file is rouhly implemented as follows:1. A metainfo file (also called torrent) containing information about the file and a centralserver called a tracker is published, usually on a web page.2.The user downloads the metainfo file, and opens it with a BitTorrent clientapplication. The client informs the tracker of its existance, and receives a list of other peers downloading or sharing the file in question.3.The peers exchange information about who has which pieces, and download thosepieces that are interesting. When a piece is successfully downloaded by a peer, it isannounced as available to other peers.4.When the complete file has been downloaded, the peer may choose to remain online,to share the file.This describes the behaviour of the original BitTorrent 1.0 protocol. Currently, there are some modifications and extensions that may differ in behaviour, but those are discussed later in the document.3 BitTorrent protocol 1.0This is a description of the original BitTorrent 1.0 protocol, designed by Bram Cohen [2], as well as some defacto standards and implementations [3]. Included in this description is the metafile structure, tracker protocol and peer wire protocol.3.1 Metainfo file structureAll data in metainfo (torrent) files are bencoded. The definition of bencoding is beyond the scope of this paper, for more information see [3]. Suffice to say, bencoding is a way to organize data. Types supported are: byte strings, integers, lists and dictionaries, where the keys in the dictionary are bencoded strings, and the values are of any bencoded type, including dictionaries.A metainfo file can be in one of two modes:•Single-file mode. One single file is described by the torrent, and there is no directory structure.•Multi-file mode. Multiple files are described, with possible directory structure described as well.A torrent file always contains a single dictionary that consists of several keys.One key is info, which is structured differently depending on the mode. In single file mode, the dictionary has following entries:•length: The length of the file in bytes•name: The name of the file•piece length: The piece length in bytes•pieces: A 20 byte SHA1 hash is calculated for each piece of the file, and all hash codes are then concatenated to one byte stringIn multi file mode the info dictionary looks as follows:•files: A list of dictionaires, each corresponding to each file. Each dictionary has the keys:o length: The length of the file in byteso path: A list of strings, where each element corresponds to a directory name, except the last string, which is the file name•name: The name of the root directory of the files•piece length: The piece length in bytes•pieces: A 20 byte SHA1 hash is calculated for each piece of the files, and all hash codes are then concatenated to one byte stringThe other key in the main dictionary is announce, and it corresponds to a string of the URL of the tracker.There are some additional parts of the metainfo file not bescrived in the official protocol description [2]. They are not required for a torrent file to be correct, but may be included if there is need for them. These are:•md5sum: In single file mode, a key directly in the info dictionary, and in multi file mode a key in each of the dictionaries in the files list. The value is a 32 byte string,representing the hexadecimal MD5 sum of each file.•announce-list: A key in the main dictionary of the torrent file. This is used for implementing multiple trackers [4]. The entry corresponding to this key is a list of list of strings, where each string is a tracker URL. Multiple trackers are described more in depth later in this document.•creation date: A key in the main dictionary. Corresponding to the key is an integer describing time when the torrent was created, in standard UNIX epoch time.•comment: A key in the main dictionary. Contains any string of text the creator of the metainfo file would like to add.•created by: A key in the main dictionary. Corresponds to a string giving the name and version of the program that created the torrent file.3.2 Tracker protocolThe tracker protocol is implemented on top of HTTP/HTTPS. This means that the machine running the tracker runs a HTPP or HTTPS server, and has the behaviour described belove:1.The client sends a GET request to the tracker URL, with certain CGI variables andvalues added to the URL. This is done in the standard way, i.e if the base URL is“/announce”, the full URL would be of this form:“/announce?var1=value1&var2=value2&var3=value3”.2.The tracker responds with a “text/plain” document, containing a bencoded dictionary.This dictionary has all the information required for the client.3.The client then sends rerequests, either on regular intervals, or when an event occurs,and the tracker responds.The CGI variables and values added to the base URL by the client sending a GET request are: •info_hash: The 20 byte SHA1 hash calculated from whatever value the info key maps to in the metainfo file.•peer_id: A 20 character long id of the downloading client, random generated at start of every download. There is no formal definition on how to generate this id, but some client applications have adapted some semiformal standards on how to generate thisid. Refer to [3] for more information.•ip: This is an optional variable, giving the IP address of the client. This can usually be extracted from the TCP connection, but this field is useful if the client and tracker are on the same machine, or behind the same NAT gateway. In both cases, the trackerthen might publish an unroutable IP address to the client.•port: The port number that the client is listening on. This is usually in the range 6881-6889.•uploaded: The amount of data uploaded so far by the client. There is no official definition on the unit, but generally bytes are used•left: How much the user has left for the download to be complete, in bytes.•event: An optional variable, corresponding to one of four possibilities:o started: Sent when the client starts the downloado stopped:Sent when the client stops downloadingo completed:Sent when the download is complete. If the download is complete at start up, this message should not be sent.o empty:Has the same effect as if the event key is nonexistant. In either case, the message in question is one of the messages sent with regular intervals.There are some optional variables that can be sent along with the GET request that are not specified in the official description of the protocol, but are implemented by some tracker servers:•numwant: The number of peers the client wants in the response.•key: An identification key that is not published to other peers. peer_id is public, and is thus useless as authorization. key is used if the peer changes IP number to prove it’s identity to the tracker.•trackerid: If a tracker previously gave its trackerid, this should be given here.As mentioned earlier, the response is a “text/plain” response with a bencoded dictionary. This dictionary contains the following keys:•failure reason: If this key is present, no other keys are included. The value mapped to this key is a human readable string with the reason to why the connection failed.•interval: The number of seconds that the client should wait between regular rerequests.•peers: Maps to a list of dictionaries, that each represent a peer, where each dictionary has the keys:o peer_id: The id of the peer in question. The tracker obtained this by the peer_id variable in the GET request sent to the tracker.o ip: The address of the peer, either the IP address or the DNS domain name.o port: The port number that the peer listens on.These are the keys required by the official protocol specification, but here as well there are optional extensions:•min interval: If present, the client must do rereqests more often than this.•warning message: Has the same information as failure reason, but the other keys in the dictionary are present.•tracker id: A string identificating the tracker. A client should resend it in the trackerid variable to the tracker.•complete: This is the number of peers that have the complete file available for upload.•incomplete: The number of peers that not have the complete file yet.3.4 Peer wire protocolThe peer wire (peer to peer) protocol runs over TCP. Message passing is symmetric, i.e. messages are the same sent in both directions.When a client wants to initiate a connection, it sets up the TCP connection and sends a handshake message to the other peer. If the message is acceptable, the receiving side sends ahandshake message back. If the initiator accepts this handshake, message passing can initiate, and continues indefinitely.All integers are encoded as four byte big-endian, except the first length prefix in the handshake.Handshake messageThe handshake message consists of five parts:• A single byte, containing the decimal value 19. This is the length of the character string following this byte.• A character string “BitTorrent protocol”, which describes the protocol. Newer protocols should follow this convention to facilitate easy identification of protocols[2].•Eight reserved bytes for further extension of the protocol. All bytes are zero in current implementations.• A 20 byte SHA1 hash of the value mapping to the info key in the torrent file. This is the same hash sent to the tracker in the info_hash variable.•The 20 byte character string representing the peer id. This is the same value sent to the tracker.If a peer is the first recipient to a handshake, and the info_hash doesn’t match any torrent it is serving, it should break the connection. If the initiator of the connection receives a handshake where the peer id doesn’t match with the id received from the tracker, the connection should be dropped.Each peer needs to keep the state of each connection. The state consists of two values, interested and choking. A peer can be either interested or not in another peer, and either choke or not choke the other peer. Choking means that no requests will be answered, and interested means that the peer is interested in downloading pieces of the file from the other peer.This means that each peer needs four Boolean values for each connection to keep track of the state.am_interestedam_chokingpeer_interestedpeer_chokingAll connections start out as not interested and choking for both peers. Clients should keep the am_interested value updated continuously, and report changes to the other peer.The messages sent after the handshaking are structured as:[message length as an integer] [single byte describing message type] [payload]Keep alive messages are sent with regular intervals, and they are simply a message with length 0, and no type or payload.Type 0, 1, 2, 3 are choke, unchoke, interested and not interested respectively. All of them have length 1 and no payload. These messages simply describe changes in state.Type 4 is a have. This message has length = 5, and a payload that is a single integer, giving the integer index of which piece of the file the peer has successfully downloaded and verified.Type 5 is bitfield. This message is only sent directly after handshake. It contains a bitfield representation of which pieces the peer has. The payload is of variable length, and consists of a bitmap, where byte 0 corresponds to piece 0-7, byte 1 to piece 8-15 etc. A bit set to 1 represents having the piece. Peers that have no pieces can neglect to send this message.Type 6 is a request. The payload consists of three integers, piece index, begin and length. The piece index decides within which piece the client wants to download, begin gives the byte offset within the piece, and length gives the number of bytes the client wants to download. Length is usually a power of two.Type 7 is a block. This message follows a request. The payload contains piece index, length and the data itself that was requested.Type 8 is cancel. This message has the same payload as request messages, and it is used to cancel requests made.Peers should continuously update their interested status to neighbours, so that clients know which peers will begin downloading when unchoked.4 New features4.1 DHT (Distributed Hash Table)Due to the extensive use of P2P file sharing systems, such as Napster, Gnutella and Freenet, more and more research in this area has been conducted to develop a more scalable and decentralized approach. Napster suffered from having a centralized directory service which led to the vulnerability for attacks. Gnutella uses query flooding which broadcasts a message over the whole network. This type of flooding is not suitable for large networks and it’s not sufficient enough to the use of file sharing.In order to avoid these problems, different systems using DHT has been developed. To mention some of them, Tapestry, Chord, Pastry and CAN [5].The difference between these systems is the routing algorithms used. Scalability is straight-forward based on the efficiency of their routing algorithms. In DHT systems, keys are produced from files, using a hash function for instance, and every node in the network holds a range of keys. Nodes have a unique ID and also possess a routing table, providing neighbor nodes. The most important functionality of DHT is the lookup(key), which gives the ID of the node having a match to the key. This gives the opportunity to get and put files based on the key. However, DHT only provides exact matches on keys. There are overlying techniques to accomplish more complex queries. There are no centralized servers containing information about nodes using the system.All routing algorithms share the same property that the unique ID shares the same namespace as the key. They differ in the way a node decides to what node the query will be sent. The algorithms take different issues in account and each has different properties. [5] •Latency between two nodes, the routing table can be optimized so that the path latency will be as small as possible.• A node is responsible for the keys closest to its unique numerical ID. The namespace is considered as a circle, where the nodes and keys are spread out. The node’s set ofneighbors consists of those that have the closest numerical ID to the node and someother nodes around the circle that are chosen in a bit more complex way. The nodethen routes a query to the node that has the longest shared prefix with the key.•The two strategies stated above uses a one dimensional key space. Another strategy is to use a d-dimensional toroidal key space, whereas a node has a hypercubal region of this key space. The neighbors of a node are the nodes that own contiguous hypercubes and the routing is done by sending the query to the node closest to the key.There is a lot of discussion concerning which one of the routing algorithms is the best. They all have their advantages, and plenty of research is made to pick out the different advantages into an optimal algorithm.4.2 Multi trackersTo avoid interruption when a tracker fails, multiple trackers can be used for one torrent. To use this feature there are an extensions to the BitTorrent 1.0 metadata format. [4] •“announce-list” – this is an addition to the standard “announce”-key. It refers to a list of list to addresses to trackers, whereas the URLs are divided into tiers. The client will ignore the standard “announce”-key if it is compatible with the multitrackerspecification.The announce-lists tiers will be accessed sequentially and all URLs in a tier must be checked before moving on to the next tier. The URLs within a tier are shuffled first, and then accessed in order. Another feature is that if a connection with a tracker was successful it will be moved up to the top of the tier.Examples:[‘announce-list’] = [ [tracker1] , [backup1] , [backup2] ]This announce-list consists of three tiers. The trackers will be chosen in the following order. First try tracker1, if no connection is made, try backup1 and backup2 respectively. The order will be the same next announce.[‘announce-list’] = [ [tracker1,tracker2,tracker3] ]The three trackers will be shuffled at start, let’s just say that it has been shuffled. If tracker1 cannot be reached, but tracker2 can, then the list would look like this:[ [tracker2,tracker1,tracker3] ]Next time, if neither tracker2 or tracker1 can be reached, but tracker3, the list would look like this:[ [tracker3,tracker2,tracker1] ][‘announce-list’] = [ [tracker1,tracker2] , [backup1] ]The first tier [tracker1,tracker2] will be shuffled at start. So tracker1 or tracker2 will always be tried before backup1, but the order of visits can be varied.4.3 EncryptionDue to the fact that BitTorrent traffic takes up around 30% of all Internet bandwidth, some ISPs have started taken countermeasures to the BitTorrent traffic. They block BT traffic, and all clients not supporting encryption will thereby not be able to use their BitTorrent software. Therefore, encryption of BitTorrent traffic was implemented in some clients to fool the ISPs blocking system. Of course, both encrypting and recognition of BitTorrent traffic, takes up resources. That’s why some developers claim encryption is a bad choice, and respectively that ISPs don’t implement this kind of blocking, also known as traffic shaping or bandwidth throttling.[6]5 References[1]Cachelogic, BitTorrent bandwidth usage/research/2005_slide06.php[2]The official protocol specification/protocol.html[3]Additional information on the BitTorrent Protocol/BitTorrentSpecification[4]Multitracker specification/tur/multitracker-spec.txt[5]Routing Algorithms for DHTs: Some Open Questions/Conferences/IPTPS02/174.pdf[6]BitTorrent End to End Encryption and Bandwidth Throttling - Part I /news.php?story=1083。
BitTorrent 协议规范
BitTorrent 协议规范(翻译)日期:2005-12-01 来源:/p2p/ 作者:p2p分发引擎字体:大中小BitTorrent 协议规范原文(英文)BitTorrent 是一种分发文件的协议。
它通过URL来识别内容,并且可以无缝的和web进行交互。
它基于HTTP协议,它的优势是:如果有多个下载者并发的下载同一个文件,那么,每个下载者也同时为其它下载者上传文件,这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的增长。
(译注:因为大量的负载被均衡到整个系统中,所以提供源文件的机器的负载只有少量增长)一个BT文件分布系统由下列实体组成:一个普通的web服务器一个静态的“元信息”文件一个跟踪(tracker)服务器终端用户的web浏览器终端下载者理想的情况是多个终端用户在下载同一个文件。
要提供文件共享,那么一台主机需要执行以下步骤:Ø运行一个tracker服务器(或者,已经有一个tracker服务器在运行了也可以)Ø运行一个web服务器,例如apache,或者已经有一个web服务器在运行了。
Ø在web服务器上,将文件扩展名.torrent 和MIME类型application/x-bittorrent关联起来(或者已经关联了)Ø根据tracker服务器的URL 和要共享的文件来创建一个“元信息”文件(.torrent)。
Ø将“元信息”文件发布到web服务器上Ø在某个web页面上,添加一个到“元信息”文件的链接。
Ø运行一个已经拥有完整文件的下载者(被成为‟origin‟,或者‟seed‟,种子)要开始下载文件,那么终端用户执行以下步骤:Ø安装BT(或者已经安装)Ø访问提供.torrent 文件的web服务器Ø点击到.torrent 文件的链接(译注:这时候,bt会弹出一个对话框)Ø选择要把下载的文件保存到哪里?或者是一次断点续传Ø等待下载的完成。
bt协议_精品文档
BT协议1. 介绍BT(BitTorrent)协议是一种用于文件共享的点对点(P2P)协议。
它允许用户通过互联网同时下载和上传文件,从而实现更快速的文件分享和传输。
BT协议最初由布拉姆·科恩(Bram Cohen)于2001年创造,它是基于分布式哈希表的文件传输协议。
BT协议基于客户端-服务器架构,其中一个用户充当服务器,称为“种子(Seed)”,其他用户则作为客户端,称为“对等体(Peer)”。
种子用户共享原始文件,其他用户通过从种子用户和其他对等体下载相同文件的不同部分来组合文件。
2. BT协议的工作原理BT协议的工作原理可以分为四个主要步骤:2.1. 创建种子文件种子文件是一个包含文件相关信息和哈希值的小文件。
种子文件通常由种子用户创建,并包含原始文件的元数据,如文件名、大小、目录结构等。
种子文件还包含一组文件块的哈希值,用于验证下载文件的完整性。
2.2. 连接到种子用户和对等体用户通过BT客户端连接到一个或多个种子用户和其他对等体进行文件共享。
种子用户将原始文件发布到互联网上,允许其他用户请求下载。
用户可以通过种子文件的URL、磁力链接或其他方式连接到种子用户。
2.3. 下载文件块一旦用户连接到种子用户和对等体,他们可以开始下载文件块。
BT 协议将文件划分为固定大小的块,通常为256KB。
用户从不同的对等体下载不同的块,通过同时下载多个块,可以实现更快的下载速度。
2.4. 合并文件当用户下载所有文件块后,他们将这些块合并成完整的文件。
合并的过程包括对文件块进行排序并验证其哈希值以确保文件的完整性。
一旦完成合并,用户可以开始使用下载的文件。
3. BT协议的优势和应用3.1. 共享性能BT协议的分布式架构允许用户同时下载和上传文件,减轻了服务器的负载压力。
它能够以高效的方式共享大型文件,使用户能够从多个来源下载文件,并且可以根据网络速度自动调整下载速度。
3.2. 文件完整性BT协议中每个文件块都有一个哈希值,可以用于验证文件的完整性。
BitTorrent协议规范_中文
BitTorrent协议规范try维基百科,自由的百科全书BitTorrent是由布莱姆·科恩设计的一个点对点(P2P)文件共享协议,此协议使多个客户端通过不可信任的网络的文件传输变得更容易。
目录1 目的2 应用范围3 约定3.1 B编码3.1.1 字节串3.1.2 整数3.1.3 表3.1.4 字典4 元信息文件结构5 服务器HTTP/HTTPS 协议6 服务器“刮”约定7 用户线路协议(TCP)7.1 概述7.2 数据类型7.3 消息流7.4 握手7.4.1peer_id7.5 消息8 算法8.1 排队8.2 超级种子8.3 片断下载策略8.4 最后阶段8.5 阻塞与最佳畅通8.6 反冷落9 相关文档10 请参阅目的此规范的目的是详细介绍BitTorrent协议规范v1.0 。
Bram 的协议规范网站/protocol.html 简要地叙述了此协议,在部分范围缺少详细行为阐述。
希望此文档能成为一个正式的规范,明确的条款,将来能作为讨论和执行的基础。
此文档规定由BitTorrent开发者维持和使用。
欢迎大家为它做贡献,其中的内容代表当前协议,它仍由许多客户使用。
这里不是提出特性请求的地方。
如果有请求,请见邮箱列表。
应用范围本文档适用于BitTorrent协议规范的第一版(v1.0)。
目前,这份文档应用于torrent 文件结构、用户线路协议和服务器(Tracker)HTTP/HTTPS 协议规范。
如果某个协议的修改有了新的定义,它们会被指定在协议相应的页面,而不在这里。
约定在本文档中,使用了许多约定来简明和明确地表达信息。
∙用户(peer)v/s 客户端(client):在本文档中,一个用户可以是任何参与下载的BitTorrent 客户端。
客户端也是一个用户,尽管BitTorrent客户端运行在本地机器上。
本规范的读者可能会认为自己是连接了许多用户的客户端。
∙片断(piece)v/s 块(block):在本文档中,片断是指在元信息文件中描述的一部分已下载的数据,它可通过SHA-1 hash 来校验。
BT合同最终出版稿
BT合同最终出版稿1. 引言本文档为BT(Bittorrent)合同的最终出版稿,旨在明确参与BT 下载和分享的各方之间的责任和权利,以确保网络资源的安全和合法使用。
2. 合同概述本合同适用于参与BT下载和分享的用户、平台运营商及相关版权单位和侵权举报方。
3. 参与主体3.1 参与者角色•用户(以下简称“用户”):指通过BT网络下载或分享资源的个人或组织。
•平台运营商(以下简称“平台”):指提供BT下载和分享平台的运营商。
•版权单位(以下简称“版权单位”):指享有资源著作权或版权的个人或组织。
•侵权举报方(以下简称“举报方”):指对BT网络上的侵权行为提出举报的个人或组织。
3.2 参与者责任3.2.1 用户责任•用户应遵守国家法律法规,不得在BT网络上分享或下载侵犯他人版权的资源。
•用户应保护个人信息安全,不得故意传播恶意软件或病毒。
•用户有义务尊重版权单位的合法权益,不得未经授权分享受版权保护的资源。
3.2.2 平台责任•平台应提供安全稳定的BT下载和分享服务。
•平台应配合版权单位的要求,采取必要措施防止侵权行为的发生。
•平台应对侵权举报方提出的举报进行合理审核,并及时采取相应措施。
3.2.3 版权单位责任•版权单位应尊重用户的合法权益,不得滥用著作权,限制用户正当使用。
•版权单位可通过平台提供的举报渠道进行资源的监控和维权。
•版权单位应与平台建立合作关系,共同维护网络版权秩序。
3.2.4 举报方责任•举报方应提供准确、详尽的侵权举报信息,确保相关资源的合法性。
•举报方应与平台建立合作关系,共同打击侵权行为,维护版权秩序。
4. 合同条款4.1 BT下载和分享规范•所有参与者应遵守国家法律法规,不得分享或下载具有明显侵权行为的资源。
•用户仅可分享自有版权或已获授权的资源,不得故意传播盗版或未经授权的作品。
•平台应对用户分享的资源进行审核,及时删除违规资源,并对违规行为追责。
4.2 侵权举报流程•举报方可通过平台提供的举报渠道提交侵权举报。
比特协议书在线阅读
比特协议书在线阅读甲方(以下简称“甲方”):_____________________地址:_____________________________________法定代表人:______________________________职务:_____________________________________联系电话:_________________________________乙方(以下简称“乙方”):_____________________地址:_____________________________________法定代表人:______________________________职务:_____________________________________联系电话:_________________________________鉴于甲方拥有比特协议书在线阅读服务的运营权,乙方希望使用甲方提供的服务,双方本着平等、自愿、公平和诚实信用的原则,经友好协商,就比特协议书在线阅读服务达成如下协议:第一条服务内容1.1 甲方同意向乙方提供比特协议书在线阅读服务,包括但不限于协议书的在线浏览、下载及相关咨询。
1.2 乙方有权在甲方提供的平台上阅读、下载甲方提供的协议书样本。
1.3 甲方应保证所提供的协议书样本内容的合法性、准确性和完整性。
第二条服务期限2.1 本协议自双方签字盖章之日起生效,有效期至________年____月____日。
2.2 协议期满前,双方可协商续签事宜。
第三条服务费用3.1 乙方应按照甲方规定的标准支付服务费用,具体金额为:__________元。
3.2 服务费用支付方式为:_______________________。
3.3 乙方应在本协议生效后____个工作日内支付首期服务费用。
第四条甲方的权利和义务4.1 甲方应保证所提供服务的稳定性和安全性。
BitTorrentDHT协议
BitTorrentDHT协议BitTorrent DHT协议BitTorrent使用一种分布的、宽松的哈希表(DHT)为无法track 的torrent存储对等点联系信息。
这样,每个peer都成为一个 tracker。
这个协议基于Kademlia在UDP上实现。
请注意文中使用的术语,以免引起混淆。
peer是一个监听在TCP 端口上,实现BitTorrent协议的客户端/服务器。
节点(node)是一个监听在UDP端口上,实现DHT协议的客户端/服务器。
DHT网络由节点组成,存储peer的位置信息。
BitTorrent客户端包含一个DHT 节点,并通过这个节点联系DHT中的其他节点,以获取其它peer的位置,这样就可以从它们那里通过BitT orrent协议下载了。
内容1 综述2 路由表3 BitTorrent协议扩展4 Torrent文件扩展5 KRPC协议5.1 联系编码5.2 请求5.3 响应5.4 错误5.4.1 错误包示列6 DHT请求6.1 ping6.1.1 示例包6.2 find_node6.2.1 示列包6.3 get_peers6.3.1 示列包6.4 announce_peer6.4.1 示例包7 脚注综述每个节点都有一个全局唯一的标识符,称为节点ID。
节点ID从160bit空间中随机选取,与BitTorrent的infohash值的空间相同。
距离度量用来比较两个节点或者节点与infohash之间的远近程度。
节点必须维护一个含有少量其他节点联系信息的路由表。
ID越靠近自身ID时,路由表越详细。
节点知道很多离它很近的节点,只知道少量离它很远地节点。
在Kademlia中,距离度量采用异或计算,结果解释成一个无符号整数。
distance (A,B)=|A ? B|值越小,距离越近。
当一个节点需要查找一个torrent的peer时,它计算torrent的infohash和本地路由表中的节点 ID的距离。
对BitTorrent通信协议的分析与检测
风靡一时的应用程序BitTorrent(BT)曾在短期内改变了因特网的流量构成,对IP网络的运营、维护和管理产生了巨大影响。
本文建立了分析BT协议的环境,通过俘获BT分组并对照BT协议规范,分析了BT通信协议的交互过程,并据此配合BT的特征字符串、特征端口及行为特征,提出了一种检测通信流中存在BT通信的方法。
1、概述传统的因特网服务如Web、FTP、DNS等均使用客户机/服务器(C/S)模式进行通信。
在通信过程中,提供服务的程序称为服务器,请求服务的程序称为客户机。
因此,在复杂通信的过程中,一个服务器很可能在另一次通信中变为客户机,反之亦然。
C/S模式的特征是:服务器是总是打开的主机,具有永久的IP地址,并可扩展为服务器池;客户机与服务器直接通信,可以间歇地与服务器连接,可以具有动态的IP地址,并且客户机彼此之间不直接通信。
C/S模式的最大特点是服务和资源集中,所有对服务请求的处理通常是由服务器完成的。
对等方到对等方(peer-to-peer,P2P)是近年来流行起来的通信模式,但实际上因特网正是基于这种理念建立起来的。
随着因特网用户和服务的增多,服务器面临的压力越来越大,P2P又重新回到了人们的视线中。
在P2P模式中,无总是打开的应用服务器,任意的端系统之间可直接通信,对等方间歇地连接,并可改变IP地址。
P2P模式的特征是:服务和资源分布化,资源不集中存储在某些设备上,而是分散存储在运行P2P程序的设备上,每一个对等方都可以为其他对等方提供服务。
例如,主机A要从网上下载一个文件a,如果以P2P模式工作,那么它工作的基本过程是:定位具有文件a的对等方,向对等方提出下载请求,并获得该文件。
值得注意的是,主机A在下载文件a的同时,可能也在为其他用户提供文件(包括文件a)下载。
根据定位文件a的方式不同,可将P2P应用方式分为3类:集中式目录、分布式查询和结合这两者的混合方式[1]。
集中式目录模式属于第一代P2P应用,使用一台大型服务器(或服务器场)来提供目录服务,其代表是Napster[2],缺点是存在单点故障、性能瓶颈和侵犯版权等问题。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
BitTorrent 是一种分发文件的协议。
它通过URL来识别内容,并且可以无缝的和web进行交互。
它基于HTTP协议,它的优势是:如果有多个下载者并发的下载同一个文 件,那么,每个下载者也同时为其它下载者上传文件,这样,文件源可以支持大量的用户进行下载,而只带来适当的负载的增长。
(译注:因为大量的负载被均衡到 整个系统中,所以提供源文件的机器的负载只有少量增长)一个BT文件分布系统由下列实体组成:一个普通的web服务器一个静态的“元信息”文件一个跟踪(tracker)服务器终端用户的web浏览器终端下载者理想的情况是多个终端用户在下载同一个文件。
要提供文件共享,那么一台主机需要执行以下步骤:?运行一个 tracker服务器(或者,已经有一个tracker服务器在运行了也可以)?运行一个web服务器,例如apache,或者已经有一个web服务器在运行了。
?在web服务器上,将文件扩展名.torrent 和MIME类型 application/x-bittorrent关联起来(或者已经关联了)?根据 tracker服务器的 URL 和要共享的文件来创建一个“元信息”文件(.torrent)。
?将“元信息”文件发布到web服务器上?在某个web页面上,添加一个到“元信息”文件的链接。
?运行一个已经拥有完整文件的下载者(被成为’origin’,或者’seed’,种子)要开始下载文件,那么终端用户执行以下步骤:?安装 BT(或者已经安装)?访问提供 .torrent 文件的web服务器?点击到 .torrent 文件的链接(译注:这时候,bt会弹出一个对话框)?选择要把下载的文件保存到哪里?或者是一次断点续传?等待下载的完成。
?结束bt程序的运行(如果不主动结束,那么bt会一直为其它人提供文件上传)各个部分之间的连通性如下:网站负责提供一个静态的文件,而把BT辅助程序(客户端)放在客户端机器上。
Trackers从所有下载者处接收信息,并返回给它们一个随机的peers的列表。
这种交互是通过HTTP或HTTPS协议来完成的。
下载者周期性的向tracker登记,使得tracker能了解它们的进度;下载者之间通过直接连接进行数据的上传和下载。
这种连接使用的是 BitTorrent 对等协议,它基于T C P。
O rigin只负责上传,从不下载,因为它已经拥有了完整的文件。
O rigin是必须的。
元文件和tracker的响应都采用的是一种简单、有效、可扩展的格式,被称为bencoding,它可以包含字符串和整数。
由于对不需要的字典关键字可以忽略,所以这种格式具有可扩展性,其它选项以后可以方便的加进来。
Bencoding格式如下:对于字符串,首先是一个字符串的长度,然后是冒号,后面跟着实际的字符串,例如:4:spa m,就是“ spa m”整数编码如下,以 ‘i’ 开始,然后10进制的整数值,最后以’e’结尾。
例如,i3e表示3,I-3e 表示-3。
整数没有大小限制。
I-0e是无效的。
除了 i0e外,所以以0起始的整数都无效。
I0e 当然表示0。
列表编码如下,以’l’开始,接下来是列表值的编码(也采用bencoded编码),最后以’e’结束。
例如:l4:spa m4:eggse 表示[‘spa m’,‘eggs’]。
字典编码如下,以’d’开始,接下来是可选的ke y s和它对应的值,最户以’e’结束。
例如:d3:cow3:m oo4:spa m4:eggse,表示{‘cow’:’m oo’,’spa m’:’eggs’},而d4:spa m l1:al:bee 表示{‘spa m’:[‘a’,’b’]}。
键值必须是字符串,而且已经排序(并非是按照字母顺序排序,而是根据原始的字符串进行排序)。
元文件是采用bencoded编码的字典,包括以下关键字:anno u nce tracker的服务器in f o 它实际上是一个字典,包括以下关键字:N a m e:一个字符串,在保存文件的时候,作为一个建议值。
仅仅是个建议而已,你可以用别的名字保存文件。
Piece length:为了更好的传输,文件被分隔成等长的片断,除了最后一个片断以外,这个值就是片断的大小。
片断大小几乎一直都是2的幂,最常用的是 256k(BT的前一个版本3.2,用的是1M作为默认大小)Pieces:一个长度为20的整数倍的字符串。
它将再被分隔为20字节长的字符串,每个子串都是相应片断的hash值。
此外,还有一个length或f iles的关键字,这两个关键字只能出现一个。
如果是length,那么表示要下载的仅仅是单个文件,如果是f iles那么要下载的是一个目录中的多个文件。
如果是单个文件,那么length是该文件的长度。
为了能支持其它关键字,对于多个文件的情况,也把它当作一个文件来看,也就是按照文件出现的顺序,把每个文件的信息连接起来,形成一个字符串。
每个文件的信息实际上也是一个字典,包括以下关键字:Length:文件长度Path:子目录名称的列表,列表最后一项是文件的实际名称。
(不允许出现列表为空的情况)。
N a m e:在单文件情况下,na m e是文件的名称,而在多文件情况下,na m e是目录的名称。
Tracker 查询。
Trakcer通过HTTP的G ET命令的参数来接收信息,而响应给对方(也就是下载者)的是经过bencoded编码的消息。
注意,尽管当前的 tracker的实现需要一个web服务器,它实际上可以运行的更轻便一些,例如,作为apache的一个模块。
Tracker G ET re qu ests ha v e the f ollowing ke y s:发送给Tracker的G ET请求,包含以下关键字:In f o_hash:元文件中in f o部分的sha hash,20字节长。
这个字符创几乎肯定需要被转义(译注:在URL中,有些字符不能出现,必须通过u nicode进行编码)Peer_id:下载者的id,一个20字节长的字符串。
每个下载者在开始一次新的下载之前,需要随机创建这个id。
这个字符串通常也需要被转义。
Ip:一个可选的参数,给出了peer的ip地址(或者dns名称?)。
通常用在origin身上,如果它和tracker在同一个机器上。
Port:peer所监听的端口。
下载者通常在在 6881 端口上监听,如果该端口被占用,那么会一直尝试到 6889,如果都被占用,那么就放弃监听。
Uploaded:已经上载的数据大小,十进制表示。
D ownloaded:已经下载的数据大小,十进制表示Le f t:该peer还有多少数据没有下载完,十进制表示。
注意,这个值不能根据文件长度和已下载数据大小计算出来,因为很可能是断点续传,如果因为检查文件完整性失败而必须重新下载的时候,这也提供了一个机会。
E v ent:一 个可选的关键字,值是started、co m pted或者stopped之一(也可以为空,不做处理)。
如果不出现该关键字,。
在一次下载刚开始的时候, 该值被设置为started,在下载完成之后,设置为co m pleted。
如果下载者停止了下载,那么该值设置为stopped。
Tracker 的响应是用bencoded编码的字典。
如果tracker的响应中有一个关键字f ail u re reason,那么它对应的是一个字符串,用来解释查询失败的原因,其它关键字都不再需要了。
否则,它必须有两个关键字:Inter v al:下载者在两次 发送请求之间的时间间隔。
Peers:一个字典的列表,每个字典包括以下关键字:Peer id,Ip,Port,分别对应peer所选择的id、ip地址或者dns名称、端口号。
注意,如果某些事件发生,或者需要更多的peers,那么下载者 可能不定期的发送请求,(downloader 通过 HTTP 的G ET 命令来向 tracker 发送查询请求,tracker 响应一个peers的列表)如果你想对元信息文件或者tracker查询进行扩展,那么需要同Bra m C ohen协调,以确保所有的扩展都是兼容的。
BT对等协议基于T C P,它很有效率,并不需要设置任何socket选项。
(译注:BT对等协议指的是peer与peer之间交换信息的协议)对等的两个连接是对称的,消息在两个方向上同样的传递,数据也可以在任何一个方向上流动。
一旦某个peer下载完了一个片断,并且也检查了它的完整性,那么它就向它所有的peers宣布它拥有了这个片断。
连接的任何一端都包含两比特的状态信息:是否choked,是否感兴趣。
C hoking是通知对方,没有数据可以发送,除非u nchoking发生。
C hoking的原因以及技术后文解释。
一 旦一端状态变为interested,而另一端变为非choking,那么数据传输就开始了。
(也就是说,一个peer,如果想从它的某个peer那里得 到数据,那么,它首先必须将它两之间的连接设置为 interested,其实就是发一个消息过去,而另一个peer,要检查它是否应该给这个家伙发送数据,如果它对这个家伙是 u nchoke,那么就可以给它发数据,否则还是不能给它数据)Interested状态必须一直被设置――任何时候。
要用点技巧才能比较好的实现这个目 的,但它使得下载者能够立刻知道哪些peers将开始下载。
对等协议由一个握手开始,后面是循环的消息流,每个消息的前面,都有一个数字来表示消息的长度。
握手的过程首先是先发送19,然后发送“BitTorrent protocol”。
19就是“BitTorrent protocol”的长度。
后续的所有的整数,都采用big-endian 来编码为4个字节在协议名称之后,是8个保留的字节,这些字节当前都设置为0。
接下来对元文件中的 in f o 信息,通过 sha1计算后得到的 hash值,20个字节长。
接收消息方,也会对 in f o 进行一个 hash 运算,如果这两个结果不一样,那么说明对方要的文件,并不是自己所要提供的,所以切断连接。
接下来是20个字节的 peer id。
这就是握手过程接下来就是以消息长度开始的消息流,这是可选的。
长度为0 的消息,用于保持连接的活动状态,被忽略。
通常每隔2分钟发送一个这样的消息。
其它类型的消息,都有一个字节长的消息类型,可能的值如下:‘choke’,‘u nchoe’,‘interested’, not interested’类型的消息不再含有其它数据了。
‘bit f ield’永远也仅仅是第一个被发送的消息。
它的数据实际是一个位图,如果downloader已经发送了某个片断,那么对应的位置1,否则置0。