BT是如何下载的

摘要: BT协议简介 一、BT下载是怎么来的? 在互联网上下载文件的方式大概有这么几种:FTP、HTTP、BT、eMule(电驴)等, 浏览器会直接支持FTP和HTTP下载,BT和eMule下载一般需要专用的下载软件的支持。 接下来分别简单介绍一下他们的区别: FTP 是 File Transfer Pro 阅读全文
posted @ 2016-06-26 23:30 duandetao 阅读(1072) 评论(0) 推荐(0) 编辑

Python边学边用--BT客户端实现之(三)Peer协议设计

摘要: 与peer建立tcp连接后,首先发送handshake消息进行握手handshake消息格式如下:一个字节0x19 + 一个字符串'BitTorrent protocol' + 8 byte 保留字节默认值为0(draft中对保留字节有定义)+ 种子文件中info 部分的sha1字,大小为20个字节 + 20个自己的peer id(从tracker获取到的peer信息大多没有peerid,这个可以使用本地的peer id)如果handshake信息协商不上,tcp连接将被关闭。BT标准BEP-3中定义了8种peer消息:消息格式为msg_len(4个字节) + msg_type 阅读全文
posted @ 2012-10-07 23:03 duandetao 阅读(3841) 评论(0) 推荐(0) 编辑

Python边学边用--BT客户端实现之(二)Peers获取

摘要: 解析完torrent文件之后,需要从Tracker服务器获取拥有每个piece的peer列表。tracker服务器使用http协议提供支持,使用get的方式获取请求内容。也有使用udp协议的,暂时还没有分析。get 格式如下:announce-url?info_hash=xxxxxxxxxxxxxxxxxxxxx,peer_id=xxxxxxxxxxxxxxxxxxxx,ip=x.x.x.x,port=xxxx,uploaded=xx,downloaded=xx,left=xx,event=xurl中各参数需要经过url扰码处理。其中,info_hash为torrent文件中info属性的va 阅读全文
posted @ 2012-10-02 20:09 duandetao 阅读(2721) 评论(1) 推荐(0) 编辑

Python边学边用--BT客户端实现之(一)BitTorrent文件解析

摘要: BitTorrent文件解析:BitTorrent文件使用bencode编码,其中包括了4种数据类型:'d' 开头表示是dict类型,'e'表示结束'l' (小写字母L)开头表示是list类型,'e'表示结束'i'开头表示是integer类型,'e'表示结束,可以表示负数以数字开头表示string类型,数字为string长度,长度与string内容以':'分割默认所有text类型的属性为utf-8编码,但是大多数BitTorrent包含codepage 和 encoding属性,指定 阅读全文
posted @ 2012-09-29 23:17 duandetao 阅读(5122) 评论(2) 推荐(0) 编辑