Linux BT下载(3)-与Tracker交互
16lz
2021-01-22
与Tracker交互
目的
与Tracker进行交互主要有两个目的:一是将自己的下载进程通知给Tracker以便Tracker进行一些相关的统计;二是获取当前下载同一个共享文件的peer的IP地址和端口号。协议
BT客户端与tracker交互依靠的是HTTP/HTTPS协议。过程
在BT客户端解析完torrent文件信息后,建立一个HttpURLConnection连接,而这个URL地址就是torrent文件里的announce的tracker服务器地址。客户端使用HTTP协议与Tracker进行通信。Tracker通过HTTP GET方法获取请求,请求的构成为Tracker的URL后面跟一个?以及参数和值对,如 http://tk.greedland.net/ announce?paraml=value1¶m2=value2。GET请求参数
info_bash: .torrent文件中的info部分的Shal校验码,共20byte。tracker服务器可以通过它在发布列表中找到对应的记录。 peer_id: BT客户端的唯一性标志,在客户机启动时产生,共20bit。在BTV1.0中没有规定产生peer_id的算法,只能保证唯一性即可。 port: 提供上传的端口号,亦即常说的监控端口。 key: 可选。一个扩展的唯一性标志,即使改变了IP地址,也可以使用该字段标志该BT客户机。 uploaded/downloaded: 上传/下载的字节数(从客户机向tracker服务器发送“started”开始计算),服务器可以用它做流量分析。 left: 还需要下载的字节数。 compact: 压缩标志。假如值为1表示接受压缩格式的对等方列表,即用6byte表示一个对等方(前4byte表示IP地址,后2byte表示端口号)值为0表示不接受。 event: 表面客户机的状态,只是started、completed、stopped等3种中的一种。
更多相关文章
- Linux系统下用C语言获取MAC地址
- Red Hat Linux下如何修改网卡MAC地址
- 一些下载交叉编译环境的地址
- 如何使用SQL语句查到当前SQL SERVER 2000服务器的IP地址
- 如何通过HttpURLConnection得到http 302的跳转地址
- Java Android套接字连接。错误的IP地址导致应用程序停止响应
- Android利用IP地址定位城市(全世界可用)
- Android获取WIFI状态下的IP地址以及MAC地址
- Android SDK更新以及ADT更新出现问题的解决办法(附google服务器