BitTorrent协议无法获得我的作品请求的答案

时间:2014-12-05 12:42:21

标签: bittorrent

我正在开发一个BitTorrent客户端,但我无法获得我的部分请求的答案。

为了调试,我使用Wireshark跟踪了uTorrent和传输之间的对话,并尝试在我的客户端模仿同一个对话。但它仍然无法发挥作用。

以下是我的客户端和传输之间发生的示例对话。 (我的客户端也使用-TR---前缀对等ID,这仅用于测试目的,我将对此进行更改)

缩进邮件来自传输,其他邮件是我的客户端发送的邮件。

请注意,此对话与uTorrent和传输的对话方式不完全相同,因为我的客户端尚不支持快速扩展。 (BEP 6)

(输出来自Wireshark,以--开头的行是我的评论)

00000000  13 42 69 74 54 6f 72 72  65 6e 74 20 70 72 6f 74 .BitTorr ent prot

00000010  6f 63 6f 6c 00 00 00 00  00 10 00 00 f8 9e 0d fd ocol.... ........

00000020  9c fc a8 52 d9 7a d6 af  a4 4d 8f 73 ce 70 b6 36 ...R.z.. .M.s.p.6

00000030  2d 54 52 32 38 34 30 2d  36 68 61 67 76 30 73 70 -TR2840- 6hagv0sp

00000040  34 67 37 6b                                      4g7k
-- ^ my handshake to transmission

    00000000  13 42 69 74 54 6f 72 72  65 6e 74 20 70 72 6f 74 .BitTorr ent prot

    00000010  6f 63 6f 6c 00 00 00 00  00 10 00 04 f8 9e 0d fd ocol.... ........

    00000020  9c fc a8 52 d9 7a d6 af  a4 4d 8f 73 ce 70 b6 36 ...R.z.. .M.s.p.6

    00000030  2d 54 52 32 38 34 30 2d  72 73 35 68 71 67 32 68 -TR2840- rs5hqg2h

    00000040  6e 70 68 64                                      nphd
    -- ^ transmission answers to my handshake

00000044  00 00 00 1a 14 00 64 31  3a 6d 64 31 31 3a 75 74 ......d1 :md11:ut

00000054  5f 6d 65 74 61 64 61 74  61 69 33 65 65 65       _metadat ai3eee
    -- ^ my extended handshake to transmission

    00000044  00 00 00 72 14 00 64 31  3a 65 69 31 65 31 3a 6d ...r..d1 :ei1e1:m

    00000054  64 31 31 3a 75 74 5f 6d  65 74 61 64 61 74 61 69 d11:ut_m etadatai

    00000064  33 65 65 31 33 3a 6d 65  74 61 64 61 74 61 5f 73 3ee13:me tadata_s

    00000074  69 7a 65 69 31 34 37 65  31 3a 70 69 35 31 34 31 izei147e 1:pi5141

    00000084  33 65 34 3a 72 65 71 71  69 35 31 32 65 31 31 3a 3e4:reqq i512e11:

    00000094  75 70 6c 6f 61 64 5f 6f  6e 6c 79 69 31 65 31 3a upload_o nlyi1e1:

    000000A4  76 31 37 3a 54 72 61 6e  73 6d 69 73 73 69 6f 6e v17:Tran smission

    000000B4  20 32 2e 38 34 65 00 00  00 02 05 80              2.84e.. ....
    -- ^ transmission's extended handshake and bitfield

    000000C0  00 00 00 01 01                                   .....
    -- ^ transmission unchokes me

00000062  00 00 00 01 02                                   .....
-- ^ my interested message

00000067  00 00 00 0d 06 00 00 00  00 00 00 00 00 00 00 40 ........ .......@

00000077  00                                               .
-- ^ piece request

-- no answers ...

00000078  00 00 00 0d 06 00 00 00  00 00 00 00 00 00 00 40 ........ .......@

00000088  00                                               .
-- ^ piece request again, with 10 seconds interval

-- again no answers...

00000089  00 00 00 0d 06 00 00 00  00 00 00 00 00 00 00 40 ........ .......@

00000099  00                                               .
-- ^ piece request again, with 10 seconds interval

-- no answers...

任何想法我做错了什么?

感谢。

编辑:我在发送unchoke后更新了我的客户端以发送interested,但我仍然遇到同样的问题......

1 个答案:

答案 0 :(得分:0)

问题在于我要求的片段大于洪流的总大小。

我使用的torrent有2个文件,总共12KB。然而,洪流洪流的块大小是16KB,我要求16KB,即使洪流文件只有一个,总共12 KB。

请求12KB而不是16KB后,问题就解决了。