如何从比特流中收集统计数据?

4
我希望能够在尽可能少地下载任何内容的情况下,从新的比特流种子中收集文件传播的统计数据。我需要知道哪个对等方拥有哪些部分(以制作基于文件的统计数据),仅知道种子和下载者的数量或百分比是不够的。稍后当有很多对等方时,我需要下载数据以确定其内容。这部分可以使用普通的种子客户端完成。
我没有计划自己实现协议,所以我查看了2个实现:libtorrent和ktorrent的libbtcore。但两者都无法在未下载时收集数据,因为没有连接的对等方可用。Libtorrent更简单,但ktorrent的注释更好。
我看到3种可能性:
  • 使用专门用于此目的的应用程序。是否有这样的应用程序?
  • 修改一个种子实现以满足我的需求。是否有人熟悉它们?从哪里开始?
  • 实现协议的一个小子集。只需定期查询对等方拥有的内容。这可行吗?还是程序需要支持几乎完整的协议?
你推荐什么?
1个回答

3

这是一个老问题,但也许这个答案对其他人有用。

  • 使用专门的应用程序来实现。有吗?

据我所知没有。

  • 修改一个种子实现以实现我的需求。有人熟悉它们吗?从哪里开始?

我只熟悉BitTornado核心(例如在ABC中使用)。它是用Python编写的,但是它的架构混乱。

但是,您可以选择任何实现并开始剥离不必要的功能。

  • 实现协议的一小部分。只需定期询问同行他们拥有什么。这可行吗,还是程序需要支持几乎完整的协议?

请注意,您无法“询问”同行他们拥有什么。另一方会在希望时通知您其拥有的块(因此是而不是)。在BitTorrent握手之后,同行可以发送一组片段的位域。之后,它可能会发送HAVE消息,通知您它已获得新的片段。还要注意,同行可能会谎报他们所拥有的块。例如超级种子同行和像BitThief这样的freeriding客户端。

如果要实现协议的一小部分,则至少需要实现BitTorrent握手消息,最好是扩展握手消息。后者允许您接收(和发送)uTorrent PEX消息。 PEX对于快速发现其他同行很有用。

为了进行统计信息收集,您还需要支持位域和HAVE消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接