查看文章 |
A BitTorrent Client Protocol Testing Report Summary
2008-06-30 13:40
本文在大量测试基础上分析常见BitTorrent客户端对BitTorrent协议的遵守情况。希望对Private Tracker 管理用户客户端起参考作用 1. 多平台 1.1 Azureus (Win, Linux, Mac OS X) 1.1.1 Azureus 2.5.0.4 没有问题,推荐 1.1.2 Azureus 3.0.5.0 没有问题,推荐 1.1.3 Azureus 3.0.5.2 没有问题,推荐 1.2 Deluge(Win, Linux, Mac OS X..) 1.2.1 Deluge 0.5.8.9 没有发现问题, 推荐 1.2.2 Deluge 0.5.9.0 没有发现问题, 推荐 1.2.3 Deluge 0.5.9.1 没有发现问题, 推荐 1.3 Transmission (Linux, Mac OS X..) 1.3.1 Transmission 1.06(5136) 在协议遵循上没有发现问题 其他问题 可重复性问题: • 不支持下载多文件种子中的部分文件, 虽然在任务details可以选择不下载某些文件,但这些依然会下载这些文件 1.4 BitTornado(Win, Linux, Mac OS X) 1.4.1 BitTornado 0.2.0 和BitTornado 0.3.18b的问题完全一样! 1.4.2 BitTornado 0.3.17 和BitTornado 0.3.18b的问题完全一样! 1.4.3 BitTornado 0.3.7 和BitTornado 0.3.18b的问题完全一样! 1.4.4 BitTornado 0.3.18b leeching时的问题 可重复性问题: • 不支持停止任务,只支持暂停任务: 虽然有停止任务选项,但其依然没有发送stopped消息 • 删除任务或退出客户端时依然没有stopped消息 • 无法下载多文件种子中的部分文件 1.5 Rufus(Win, Linux) 1.5.1 Rufus 0.6.9 在协议遵循上没有发现问题 其他问题 可重复性问题: • 错误的将tracker返回的正确信息作为错误信息显示 1.5.2 Rufus 0.7.0 在协议遵循上没有发现问题, 允许使用 1.6 总结 1.6.1 表现都不错 所有的多平台客户端在协议遵守上表现都非常不错, 同时Azureus和Deluge值得推荐 多平台客户端允许: Azureus: 2.5.0.4, 3.0.5.0, 3.5.0.2以及后续版本 Deluge: 0.5.8.9, 0.5.9.0, 0.5.9.1以及后续版本 Transmission: 1.06(5136) 以及后续版本 Rufus: 0.6.9, 0.7.0以及后续版本 2. Windows 2.1 uTorrent 2.1.1 uTorrent 1.6.1 没有任何问题, 推荐 2.1.2 uTorrent 1.7.5 没有任何问题, 推荐 2.1.3 uTorrent 1.7.6 没有任何问题, 推荐 2.1.4 uTorrent 1.7.7 没有任何问题, 推荐 2.1.5 uTorrent 1.8.0B (10364) 没有任何问题, 推荐 2.2 BitTorrent 2.2.1 BitTorrent 6.0.1 没有任何问题, 推荐 2.2.2 BitTorrent 6.0.2 没有任何问题, 推荐 2.2.3 BitTorrent 6.0.3 没有任何问题, 推荐(其实现在的BitTorrent就是uTorrent) 2.3 BitComet 2.3.1 Bitcomet 0.50 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 强制退出或删除下载任务时没有发送stopped消息 2.3.2 Bitcomet 0.57 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 不合适的agent字段信息: bittorrent/3.4.2这是Bram那份代码的客户端的agent id • 向tracker发送stopped, completed消息总是出现延迟或漏发 • 强制退出或删除下载任务时没有发送stopped消息 2.3.3 Bitcomet 0.60 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 不合适的agent字段信息: bittorrent/3.4.2这是Bram那份代码的客户端的agent id • 向tracker发送stopped, completed消息总是出现延迟或漏发 • 强制退出或删除下载任务时没有发送stopped消息 2.3.4 Bitcomet 0.70 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 不合适的agent字段信息: bittorrent/3.4.2这是Bram那份代码的客户端的agent id • 向tracker发送stopped, completed消息总是出现延迟或漏发 • 强制退出或删除下载任务时没有发送stopped消息 2.3.5 Bitcomet 0.80 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 不合适的agent字段信息: bittorrent/3.4.2这是Bram那份代码的客户端的agent id • 向tracker发送stopped, completed消息总是出现延迟或漏发 • 强制退出或删除下载任务时没有发送stopped消息 2.3.6 Bitcomet 0.90 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 不合适的agent字段信息: bittorrent/3.4.2这是Bram那份代码的客户端的agent id • 向tracker发送stopped, completed消息总是出现延迟或漏发 • 强制退出或删除下载任务时没有发送stopped消息 • 泄露passkey的隐患 2.3.7 Bitcomet 1.00 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 向tracker发送浏览器的agent信息 • 不合适的agent字段信息: bittorrent/3.4.2这是Bram那份代码的客户端的agent id • 向tracker发送stopped, completed消息总是出现延迟或漏发 • 强制退出或删除下载任务时没有发送stopped消息 • 泄露passkey的隐患 2.4 BitLord 2.4.1 BitLord 0.56 和BitLord 1.01的问题完全一样! 2.4.2 BitLord 1.01 Leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 • 不合适的agent字段信息: bittorrent/3.4.2这是Bram那份代码的客户端的agent id 2.4.3 BitLord 2.0 Beta leeching时的问题 可重复性问题: • 不支持停止任务,只支持暂停任务: 虽然写了stop, 但其实按标准来说是pause • 删除任务或退出客户端时依然没有stopped消息 • 种子全部下载完成后没有completed消息 • 向tracker发送stopped, completed消息总是出现延迟或漏发 • 无法下载多文件种子中的部分文件 • 不合适的agent字段信息: 没有提供agent字段信息 • 无法查看tracker返回的信息: 只有简单的tracker是否出错信息 其他问题 可重复性问题: 令人极为烦恼的总在最上且无法关闭的splash window广告 2.5 BitSpirit 2.5.1 BitSpirit 3.3.2.115 新版本问题过多,放弃同一系列旧版本的测试 2.5.2 BitSpirit 3.3.2.120 新版本问题过多,放弃同一系列旧版本的测试 2.5.3 BitSpirit 3.3.2.132 leeching时的问题 可重复性问题: • 公然提供作弊选项:下载完成后发送stopped消息,而不是completed消息 • 公然提供作弊选项:根据需要调整client id • 不支持停止任务,只支持暂停任务: 虽然有停止任务选项,但其依然没有发送stopped消息 • 删除任务或退出客户端时依然没有stopped消息 • 不合适的agent字段信息: bittorrent/4.1.2 这是Bram那份代码的客户端的agent id • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • 默认下载完成后做种12小时 seeding时的问题 可重复性问题: • 上传限速1.2m/s, 即使用户没有限制 2.6 BitTyrant 2.6.1 BitTyrant 1.1.1 Azureus 2.5.0 系列修改版,ms已经停止开发维护,放弃测试 2.7 FlashGet 2.7.1 FlashGet 1.9.6.1073 • 和FlashGet2.0 2.8.0.1183的问题完全一样! 2.7.2 FlashGet2.0 2.8.0.1183 leeching时的问题 可重复性问题: • 不支持停止任务,只支持暂停任务 • 删除任务或退出客户端时依然没有stopped消息 • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • 大文件种子离下载完成前出现非常低的限速 • 不合适的agent字段信息: • bittorrent/4.1.2 这是Bram那份代码的客户端的agent id • 无法查看tracker返回的信息 • 不支持过简单的文件匹配策略跳过hash检查 • 时常出现下载断流 偶尔发生: • 经常上传垃圾数据 2.8 QQDownloader 2.8.1 QQDownloader 1.7.166.202 新版本问题过多,放弃同一系列旧版本的测试 2.8.2 QQDownloader 1.8.195.202 leeching时的问题 可重复性问题: • 不支持停止任务,只支持暂停任务 • 删除任务或退出客户端时依然没有stopped消息 • 种子全部下载完成后没有completed消息 • 下载完成的任务在暂停后无法继续开始 • 默认设置为下载完成后做种30mins seeding时的问题 可重复性问题: • 上传时保持低速,并时常断流 2.9 Shareaza 2.9.1 Shareaza 2.3.1.0 不是一个合适的bittorrent客户端 2.9.2 ShareazaV4 不是一个合适的bittorrent客户端 2.10 Thunder 2.10.1 Thunder 5.7.12.493 leeching时的问题 可重复性问题: • 将下载量汇报成上传量, 保持ratio=1.0 • 种子全部下载完成后没有completed消息 • 不支持停止任务,只支持暂停任务 • 删除任务或退出客户端时依然没有stopped消息 • Left字段的参照理解错误 • 能够从tracker获取peers信息,但无法主动与peer建立连接 • 不合适的agent字段信息:bittorrent • 无法查看tracker返回的信息 • 默认设置为下载完成后做种30mins 偶尔发生: • 不传数据给其他非xunlei客户端 • 经常上传垃圾数据 seeding时的问题 可重复性问题: • 不支持分析文件完整性后继续做种也不支持简单文件匹配后继续做种 其他问题 可重复性问题: • 经常从http://xlissue110.sandai.net, 下载KanKanTop_20080314.exe, DownAndPlay_Install_080506.exe, xldc_3.6.1.13_20080519.exe等流氓程序 2.11 Tribler 2.11.1 Tribler 4.1.9 在协议遵循上没有发现问题 其他问题 可重复性问题: • 不支持下载多文件种子中的部分文件 • 无法停止任务, 打开软件即启动所有任务,除非删除 2.12 Limewire 2.12.1 Limewire 4.16.7 在协议遵循上没有发现问题 leeching时的问题 可重复性问题: • 无法查看tracker返回的信息 其他问题 可重复性问题: • 不支持下载多文件种子中的部分文件 2.12.2 Limewire 4.16.7 Pro 在协议遵循上没有发现问题 leeching时的问题 可重复性问题: • 无法查看tracker返回的信息 其他问题 可重复性问题: • 不支持下载多文件种子中的部分文件 2.13 Burst! 2.13.1 burst 3.1.0b 开发已终止, 放弃测试 2.14 Arctic Torrent 2.14.1 Arctic Torrent 1.2.3 在协议遵循上没有发现问题 leeching时的问题 可重复性问题: • 无法查看tracker返回的信息 2.15 BitSlave 2.15.1 BitSlave 0.4 ms开发已终止, 放弃测试 2.16 总结 2.16.1 bittorrent/3.4.2和bittorrent/4.1.2的问题 可以看到, windows平台下的客户端问题大同小异, 尤其几个国内的 客户端, 原因在于它们的bittorrent功能部分都修改自bram原来的bittorrent/3.4.2或bittorrent/4.1.2. 自从bram买下ludwig 的uTorrent的代码作为自己的bittorrent新核心后,原本bug众多的bittorrent3, bittorrent4系列已停止开发. 但目前uTorrent核心的bittorrent只有在windows有, Linux和Mac OS X依然只有老核心的bittorrent. 所以Windows only的客户端只允许: Bittorrent: 6.0.1, 6.0.2, 6.0.3 以及后续版本 uTorrent: 1.6.1, 1.7.5, 1.7.6, 1.7.7, 1.80B(最新没有问题的build)以及后续版本 3. Linux 3.1 KTorrent 3.1.1 KTorrent 2.2.5 leeching时的问题 可重复性问题: • 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • Left字段的参照理解错误 3.2 ctorrent 3.2.1 ctorrent leeching时的问题 可重复性问题: • 用户可选择设定peer_id和agant进行client spoof 其他问题 可重复性问题: • 选择下载多种子文件的部分文件时出现floating point exception, crash • 没有gui 3.3 qtorrent3 3.3.1 qtorrent3 2.9.1 功能极为有限,且修改自bittorrent 4.0.1, 无需再测 3.4 rtorrent 3.4.1 rtorrent 0.80/0.12 没有问题, 推荐命令行用户使用 其他问题 可重复性问题: • 没有找到选择下载多种子文件的部分文件的功能 3.4.2 rtorrent 0.81/0.12 没有问题, 推荐命令行用户使用 其他问题 可重复性问题: • 没有找到选择下载多种子文件的部分文件的功能 3.4.3 rtorrent 0.81/0.12 没有问题, 推荐命令行用户使用 其他问题 可重复性问题: • 没有找到选择下载多种子文件的部分文件的功能 3.5 总结 3.5.1 中规中矩 可以看到Linux平台下的客户端问题并没有windows平台那么多, 其中一个主要的原因是其功能不够丰富, 如,”不支持下载多文件种子的部分文件”避免了用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 和Left字段的参照理解错误, 这两个问题. Linux only的客户端只允许: rtorrent: 软件版本0.80+(libtorrent0.12以及后续版本)以及后续版本 4. Mac OS X 4.1 BitRocket 4.1.1 BitRocket 0.3.3(32) 没有问题, 允许使用 其他问题 可重复性问题: • 没有找到选择下载多种子文件的部分文件的功能 4.2 TomatoTorrent 4.2.1 TomatoTorrent 1.5.1 修改自BitTorrent 4.2 不继续测试 4.3 Bits on Wheels 4.3.1 Bits on Wheels 1.0.5 同Bits on Wheels 1.0.6 4.3.2 Bits on Wheels 1.0.6 在VMWare6下的Mac OS X 10.4.6上无法正常运行, 一直保持没有响应状态, 无法测试. 如果有人愿意提供平台将完成对其测试 4.4 总结 4.4.1 缺少测试平台 缺少测试平台, 暂未测试, 允许使用跨平台的Azureus, Deluge以及Transmission. Torrent Client 的问题所导致的问题 1. 协议相关 1.1 用户选择只下载多文件种子其中的部分文件并下载完成后没有发送无类型消息 • 其实uTorrent和BitTorrent都没有这么做,原因是他们在停止任务时会向Tracker发送无类型消息,但像Thunder, QQDownloader等等凡是: 不支持停止任务,只支持暂停任务, 删除任务或退出客户端时依然没有stopped消息 的客户端都出现问题因为tracker无法及时更新与peer建立的session的信息,若在下一次与tracker交换信息前种子被用户从客户端中终止(没有向tracker发送任何类型的消息),则此次session的上传和下载的数据不会得到记录 1.2 不支持停止任务,只支持暂停任务 • 因此tracker无法及时更新peer list(实施的上传者/下载者信息), 重新启动后需要等一段时间(40min左右)才能继续下载 • 没有stopped消息还可能导致这么一个问题:当用户的客户端与tracker 建立一个session并开始下载/上传某个种子的数据之后,若在第一次与tracker交换信息前种子被用户从客户端中暂停退出,则此次session的上传和下载的数据不会得到记录 • 暂停任务后resume客户端将与tracker继续原有session 1.3 删除任务或退出客户端时依然没有stopped消息 • 因此tracker无法及时更新peer list(实施的上传者/下载者信息), 重新启动后需要等一段时间(40min左右)才能继续下载 • 没有stopped消息还可能导致这么一个问题:当用户的客户端与tracker 建立一个session并开始下载/上传某个种子的数据之后,若在第一次与tracker交换信息前种子被用户从客户端中终止(没有向tracker发送任何类型的消息),则此次session的上传和下载的数据不会得到记录 1.4 种子全部下载完成后没有completed消息 • 因此tracker无法更新snatched list(下载列表),NHD用户也无法从其个人信息中浏览下载记录. 可以看出Thunder认为部分下载完成也是完成,但也没有complete消息 • 没有completed消息还可能导致这么一个问题:当用户的客户端与tracker 建立一个session并下载某个种子之后,若在第一次与tracker交换信息前种子已经下载完成,则tracker只能认为某用户开始下载种子,但从未真正开始,其间上传和下载的数据也不会得到记录 1.5 用户选择只下载多文件种子其中的部分文件并下载完成后会发送completed消息 • 应该在全部完成后才能发送, 系统会错误的认为用户已经全部下载完成种子,但下载量确是其中的一部分或一小部分, 系统会认为用户存在shadow leeching的作弊嫌疑 1.6 Left字段的参照理解错误 • 错误的将协议中left字段的参照理解为当前种子里所选择下载的文件, 应该是以整个种子文件的大小为参照. 由此导致两个问题: 当只选择下载一个多文件种子中的一部分文件并下载完成后,完成度被错误地标记为100%,(实则 约= 所选下载文件大小/种子索引的文件的总大小)而该peer也因此被错误标记为seeder, 实为leecher, 因为种子下载未完全 1.7 将下载量汇报成上传量, 保持ratio=1.0 • 以此欺骗方式保障其它客户端的优先选择与你建立连接,把数据传给你,极为恶劣的欺诈行为 1.8 能够从tracker获取peers信息,但无法主动与peer建立连接 • 如果你是在router或firewall后面,没有做端口映射,也就是在NHD上显示connectable: NO, 在这种情况下其他peer无法主动与你建立连接,而若你的客户端不能主动与其它peer建立连接,那么你便无法下载。即使你connectable: Yes,那也要等到其他peer的客户端在与tracker交换信息发现你后才能建立连接传输数据。 1.9 不传数据给其他非xunlei客户端 • 导致有人做种但无法下载, 发生于Azureus 2.5.0.4或uTorrent1.7.7下载时 1.10 经常上传垃圾数据 • 结果有可能被其他人的客户端ban掉,最后谁都连不上,下载没速度了 1.11 不合适的agent字段信息 • 一个合适的Torrent client 的agent信息应该与其软件名称相符合 1.12 无法查看tracker返回的信息 • 因此在出现下载或上传有问题时用户无法做出准确的判断 1.13 时常出现下载断流 • 速度一直维持0k/s, 在uTorrent 1.7.7和Azureus 2.5.0.4做种时使用其下载发生 1.14 上传时保持低速,并时常断流 • 速度一般维持在15k/s以下, 在uTorrent 1.7.7和Azureus 2.5.0.4和QQDownloader 1.8.195.202下载时发生 1.15 公然提供作弊选项:下载完成后发送stopped消息,而不是completed消息 • 此选项导致tracker无法更新snatched list,更新用户下载信息, 收到stopped消息tracker会认为client终止了此次session, 而非完成 了下载 1.16 公然提供作弊选项:根据需要调整client id • 使得tracker和其他的peers无法准确识别其客户端版本, • 其中一种client spoofing 的方式是将其他peer的id的前8个bytes加上12个随机生成的bytes作为自己的peer_id • 其真实的peer_id为 '\0\3BS' (C notation). 1.17 向tracker发送浏览器的agent信息 • BitComet 在与tracker刚开始建立连接时会向tracker发送错误的agent字段信息为:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727), 这是一个浏览器的agent, 当然需要block, 但过一段时间后BitComet会将agent字段调整为BitTorrent/3.4.2, 也就是Bram那份代码的客户端的agent id 1.18 向tracker发送stopped, completed消息总是出现延迟或漏发 • 其导致的问题参见: 用户选择只下载多文件种子其中的部分文件并下载完成后没有发送无类型消息、不支持停止任务,只支持暂停任务、删除任务或退出客户端时依然没有stopped消息 或 种子全部下载完成后没有completed消息 1.19 强制退出或删除下载任务时没有发送stopped消息 • 其导致的问题参见: 用户选择只下载多文件种子其中的部分文件并下载完成后没有发送无类型消息、不支持停止任务,只支持暂停任务、删除任务或退出客户端时依然没有stopped消息 或 种子全部下载完成后没有completed消息 2. 功能相关 2.1 泄露passkey的隐患 • BitComet的peer torrent share的功能, 在peer之间share 共享种子信息, 应此存在passkey泄露的隐患 2.2 不支持分析文件完整性后继续做种也不支持简单文件匹配后继续做种 • 因此无法在NHD上传种子,因为上传的种子需要重新下载带有个人信息的新种子才能做种 2.3 不支持过简单的文件匹配策略跳过hash检查 • 支持hash check完整性后继续做种,但不能通过简单的文件匹配策略跳过hash检查,因此当做种20~50G Blu-ray镜像前需要非常长的硬盘检查时间 2.4 大文件种子离下载完成前出现非常低的限速 • 大文件种子离下载完成前出现非常低的限速, 10k/s左右, 也许是FlashGet为了防止H&R采取的措施, 但严重影响了下载体验 2.5 下载完成的任务在暂停后无法继续开始 • 如果:客户端不支持过简单的文件匹配策略跳过hash检查不支持分析文件完整性后继续做种也不支持简单文件匹配后继续做种 ,那么已完成任务暂停后或客户端退出后无法继续做种 3. 其他 3.1 默认设置为下载完成后做种30mins • 做种时间过短,newbie用户可能因此上传不足 |
最近读者:


