3

我将尝试编写简单的 BitTorrent 客户端。我当然读http://wiki.theory.org/BitTorrentSpecification。我首先分析两个客户之间的通信。我对两个字段的含义有疑问 - 以下十六进制转储中的粗体字体。


Deluge 向 rTorrent 发送的第一个数据包:

00000000 13 |。| - 协议名称长度 (1) - 0x13 = 19

00000000 42 69 74 54 6f 72 72 65 6e 74 20 70 72 6f 74 | BitTorrent 保护| - 协议名称 (19)
00000010 6f 63 6f 6c |ocol |

00000010 00 00 00 00 00 18 00 05 | ........ | - 保留的扩展字节 (8)

00000010 ab 20 ef 66 | . .f| - info_hash (20)
00000020 c8 ee de 47 99 a2 75 40 20 75 ee 7b c6 4e 2f dd |...G..u@ u.{.N/.|   


00000030 2d 44 45 31 33 33 30 2d 42 6c 78 37 6c 69 7a 7e |-DE1330-Blx7liz~| - peer_id (20)
00000040 4a 54 2e 6a |JT.j| 洪水 1.3.3

rTorrent 对 Deluge 的回答:

00000000 13 |。| - 协议名称长度 (1) - 0x13 = 19

00000000 42 69 74 54 6f 72 72 65 6e 74 20 70 72 6f 74 | BitTorrent 保护| - 协议名称 (19)
00000010 6f 63 6f 6c |ocol |

00000010 00 00 00 00 00 10 00 00 | ........ | - 保留的扩展字节 (8)

00000010 ab 20 ef 66 | . .f| - info_hash (20)
00000020 c8 ee de 47 99 a2 75 40 20 75 ee 7b c6 4e 2f dd |...G..u@ u.{.N/.|

00000030 2d 6c 74 30 43 39 30 2d b6 eb 22 ae 31 e3 89 90 |-lt0C90-..".1...| - peer_id (20)
00000040 2a 9b a9 |*... | libTorrent (rakshasa) 0.12.9

00000040 00 00 00 6e | ...n | - 消息长度?(4) - 0x6E = 110

00000040                            14 00                     | .. | - 某事 (2) - 消息 ID?

00000040 64 31 3a 65 69 30 | d1:ei0| - 编码字典(108)
00000050 65 31 3a 6d 64 31 31 3a 75 74 5f 6d 65 74 61 64 |e1:md11:ut_metad| {'e':0,
00000060 61 74 61 69 32 65 36 3a 75 74 5f 70 65 78 69 31 |atai2e6:ut_pexi1| “元数据大小”:1702,
00000070 65 65 31 33 3a 6d 65 74 61 64 61 74 61 5f 73 69 |ee13:metadata_si| 'm': {'ut_metadata': 2, 'ut_pex': 1},
00000080 7a 65 69 31 37 30 32 65 31 3a 70 69 35 30 30 39 |zei1702e1:pi5009| 'reqq': 2048,
00000090 34 65 34 3a 72 65 71 71 69 32 30 34 38 65 31 3a |4e4:reqqi2048e1:| “p”:50094,
000000a0 76 31 37 3a 6c 69 62 54 6f 72 72 65 6e 74 20 30 |v17:libTorrent 0| 'v': 'libTorrent 0.12.9' }
000000b0 2e 31 32 2e 39 65 |.12.9e |        

000000b0                     00 00 00 0c 05                  | .....| - 某事 (5) - 校验和?
4

0 回答 0