标签: bittorrent

Bittorrent:IP 地址从何而来?

我正在阅读有关 Bittorrent 协议的内容,但在 Wiki 页面上找不到提到的内容。我可以理解跟踪者和发布者的作用,但从实际角度来看,我尝试联系跟踪者给我一些信息,它给了我以下信息:

7%00%00%04%82%91%F3%CA%D5%92%08%C8%7C%B0%AE%1E4%2B%E4C:0:1
Run Code Online (Sandbox Code Playgroud)

现在,开头的长字符串可能是信息哈希。作为下一步,我这样做了:

http://tracker.sometracker.com/announce?info_hash=7%00%00%04%82%91%F3%CA%D5%92%08%C8%7C%B0%AE%1E4%2B%E4C
Run Code Online (Sandbox Code Playgroud)

它给了我一个种子文件。到现在为止还挺好。Torrent 文件包含以下内容:

d8:completei0e10:downloadedi0e10:incompletei2e8:intervali1931e12:min intervali965e5:peers12:U????????^@^@e
Run Code Online (Sandbox Code Playgroud)

我去了这个网站:http://en.wikipedia.org/wiki/Torrent_file但找不到任何描述(或者可能错过了)。现在,如果我是客户端并且我得到了这个文件,我从哪里得到拥有该文件的 IP 地址列表?

bittorrent protocols

5
推荐指数
1
解决办法
229
查看次数

如何向我知道 IP 地址的 PC 发送短信?

我知道这是一个奇怪的问题,但我想知道是否有办法向我知道 IP 地址的 PC 发送短信。

例如,我正在通过 torrent 从网络上的 PC 下载文件。

通过 torrent 我可以知道这台电脑的 IP 地址,我想给拥有这台电脑的人发送一条短信。

这可能吗?

bittorrent protocols ip-address network-protocols

5
推荐指数
1
解决办法
7674
查看次数

现有 DHT 的 Hello World

我熟悉分布式哈希表 (DHT) 的工作原理。是否可以编写一个将数据存储到现有 DHT(例如 Kademlia 或 Mainline DHT)的程序?是否有一个简单的“Hello World”类型的程序可以显示最简单的方法来执行此操作?

p2p bittorrent dht

5
推荐指数
1
解决办法
1456
查看次数

bittorrent同行可以处理播种大量闲置种子

我正在考虑将bittorrent用于大数据传播问题,其中数据源是千万亿次级,用户需要高达数TB的数据.一些细节

  • 可能有数百万的种子数量
  • 洪流大小从100Mb到100Gb不等
  • 世界各地的一组稳定的集群能够充当播种者,每个集群都拥有大量的种子(平均为60%)
  • 想要平均下载几TB数据的相对少量的同时用户(少于100个).

我预计活动种子的数量与可用总量相比较小,但服务质量很重要,因此每个种子必须有几个播种机或一些推出新播种机的机制.

我的问题是,bittorrent客户可以处理播种大量的种子,其中大部分都是空闲的吗?我是否需要在群集中的种子上划分种子,或者每个节点是否可以播种它可以访问的所有种子?哪个客户会做得最好?是否有任何工具来管理播种群?

我假设跟踪器可以扩展到这个级别.

bittorrent bigdata

5
推荐指数
2
解决办法
1673
查看次数

BitTorrent:即使没有端口转发,对等方如何彼此连接?

当您使用BitTorrent下载文件时,可以从已经拥有该文件的其他人或从原始主机下载文件的一部分。下载完文件后,您也可以通过向其他人发送文件的一部分来帮助其他人下载文件。

即使对等方位于不向其转发任何传入连接的路由器后面,它们如何能够彼此连接?原始主机在某种程度上有帮助吗?

bittorrent portforwarding

5
推荐指数
1
解决办法
1295
查看次数

如何使用 python-libtorrent 获取 torrent 的对等列表?

我试过这段代码:

import libtorrent as lt
import time
ses = lt.session()
ses.listen_on(6881, 6891)
info = lt.torrent_info('test.torrent')
h = ses.add_torrent({'ti': info, 'save_path': './'})
print 'starting', h.name()
while (not h.is_seed()):
   s = h.status()
   p = h.get_peer_info()

   print lt.peer_info().ip

   sys.stdout.flush()

   time.sleep(15)

print h.name(), 'complete'
Run Code Online (Sandbox Code Playgroud)

它打印出这个:

starting test.avi
('0.0.0.0', 0)

('0.0.0.0', 0)
. 
.
.
Run Code Online (Sandbox Code Playgroud)

因此,它没有给我一个同行列表,而是给了我零。我做错了什么吗?

python bittorrent libtorrent

5
推荐指数
1
解决办法
2363
查看次数

Torrent 相关:UDP 协议上的跟踪器响应(更新 #3 - 工作)

更新 #4:添加了演示 java 片段,用于使用 UDP 并发送公告消息(记住连接是第一个!)检查下面自己的响应。

=================================================== ==

更新#3:我设法让它工作,下面介绍的方法 doConnect() 是可以的,更多信息在我自己的回复中。

=================================================== ==

我主要感兴趣的是当公告 url 的协议是 UDP 时如何下载跟踪器响应。

详细信息:这些是来自有效 torrent 文件的一些公告网址(第一个是主要的)

http://tracker.torrentbox.com:2710/announce
udp://elbitz.net:80/announce.php?passkey=362fc69de3402e8ef5794c7ecf7c58d4
udp://tracker.podtropolis.com:2711/announce
Run Code Online (Sandbox Code Playgroud)

如果协议是 HTTP,一切都会顺利,这就是我的工作方式:

String fullUrl = announceURL + "?info_hash=" + this.m_TorrentInfoHashAsURL + .. // i add the params
URL url = new URL(fullUrl);
URLConnection connection = url.openConnection();
InputStream is = connection.getInputStream();
.. //reading the stream
Run Code Online (Sandbox Code Playgroud)

如果协议是 UDP,则 URL 构造函数会抛出“java.net.MalformedURLException:未知协议:udp”

所以我想问题可以恢复为以下内容:如何从 UDP 协议上的 URL 下载响应?(希望很简单并且我没有看到数据报的东西)

更新#1:

我在网上做了一些更多的调查并得出了下面粘贴的以下结构(应该可以工作..但不行,我的意思是在本地它可以,但不能使用真正的跟踪器)

规格链接:http://www.bittorrent.org/beps/bep_0015.html

例如:这就是我创建套接字的方式,但是在有效的跟踪器上我从未收到任何响应,因此有些东西不起作用:

if full url: udp://elbitz.net:80/announce.php?passkey=362fc69de3402e8ef5794c7ecf7c58d4
this.m_TrackerHost: elbitz.net 
this.m_TrackerPort: 80 …
Run Code Online (Sandbox Code Playgroud)

java bittorrent udp http

5
推荐指数
1
解决办法
4031
查看次数

从哈希(或磁力链接)解析种子的元数据?理想情况下在python中

我正在尝试获取一个磁力链接(即magnet:?xt=urn:btih:640FE84C613C17F663551D218689A64E8AEBEABE)并为其获取元数据(标题、文件、评论,以及 .torrent 文件附带的任何其他内容)。理想情况下在python中,但我会获取任何可以获得的信息

python p2p bittorrent magnet-uri

5
推荐指数
1
解决办法
3343
查看次数

BitTorrent客户端:从跟踪器获取对等列表[Python]

我试图使用https://wiki.theory.org/BitTorrent_Tracker_Protocol从跟踪器获取同行列表

但网上提供的大多数torrent文件都使用了udp跟踪器.以上网站适用于HTTP跟踪器.使用基于HTTP的跟踪器的torrent文件会出错.(Passkey error , or hash error or user error or 404 not found response)

现在我的所有HTTP跟踪器的请求代码如下所示:

payload = urllib.urlencode(payload)
        for ann in self.torrent.announce_list:
            if("udp" not in ann[0]):
                url = ann[0]
                print "Encoded Request URL :",(url + "?" + payload)
                print "Requesting Tracker for Peer List"
                try:
                    response = urllib.urlopen(url + "?" + payload).read()
                    print "RESPONSE :",response
                except Exception, e:
                    print e
Run Code Online (Sandbox Code Playgroud)

我已经根据uTorrent使用wireshark提出的请求交叉检查了我的请求URL.他们都匹配.正确生成信息哈希.

如何从UDP和HTTP跟踪器中检索对等列表?我试图不使用像lib-torrent这样的外部库.一些指导会非常有帮助.

python p2p bittorrent get

5
推荐指数
1
解决办法
4673
查看次数

启用 DHT 时,是否每个对等点都需要成为 BitTorrent 中的节点?

每次向对等点请求特定文件时,每个对等点是否都成为 DHT 节点?还是节点独立于对等点存在?本质上,你如何成为一个节点?你可以是一个peer而不是一个节点吗?

如果问题太简单(这里是菜鸟),我很抱歉,但我无法在其他任何地方找到答案。我使用的术语与此处使用的相同。

bittorrent dht

5
推荐指数
1
解决办法
632
查看次数