2014-01-03 4 views
1

Я знаю, что торрент-файл содержит данные о трекере и хэш числа этого торрентаtorrent-файл содержит коллекцию хэш-номера для пакетов данных?

но мой вопрос:

эти торрент-файлы содержат хеш количество всех пакетов данных относительно этого торрента или нет ? (в этом торрент-файле есть коллекция хэш-номеров для каждого пакета?)

и как эти данные структурированы в торрент-файле?

+0

Файлы Torrent не содержат _infohash_ (хэш верхнего уровня) явно. Infohash вычисляются клиентским программным обеспечением путем хеширования так называемой _infodict_ части торрент-файла. Но, да, _infodict_ включает в себя _hash list_ (поле _pieces_ информационного словаря), которое обозначает хэш-файл sha1 каждого _piece_ (а не пакета): «фигуры отображаются в строку, длина которой кратная 20. Она должна быть разделена на строки длиной 20, каждый из которых представляет собой SHA1-хэш части с соответствующим индексом ». Источник: [bep3] (http://www.bittorrent.org/beps/bep_0003.html#info-dictionary) –

ответ

2

.torrent файлы кодируются, что представляет собой простую кодировку, описанную в BEP3.

Вот упрощенный пример торрент:

{ 
'announce': 'http://bt1.archive.org:6969/announce', 
'created by': 'ia_make_torrent', 
'creation date': 1373568576, 
'info': { 
    'files': [ 
    { 'length': 12355245, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10.txt' ], }, 
    { 'length': 33979699024, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10.zip' ], }, 
    { 'length': 2821, 'path': [ 'Commodore_Amiga_TOSEC_2012_04_10_meta.xml' ], }, 
    { 'length': 378737, 'path': [ 'amiga_1000_by_macpengin.jpg' ], }, 
    { 'length': 4877, 'path': [ 'amiga_1000_by_macpengin_thumb.jpg' ], }, 
    ], 
    'name': 'Commodore_Amiga_TOSEC_2012_04_10', 
    'piece length': 4194304, 
    'pieces': '9834f2b6e0b8d9071f2d2db...776f9c910b6622f234872e8' 
    }, 
'locale': 'en', 
'title': 'Commodore_Amiga_TOSEC_2012_04_10', 
} 

Поле частей было сокращено. Он содержит все шай-1 хэшей частей, конкатенированных (он находится в двоичной форме, но представлен как здесь для возможности печати). Кусок не является прямым пакетом.

Обычно пакет будет ссылаться на IP-пакет (около 1400 байт). В дополнение к IP-адресу в качестве транспортного протокола используется TCP или uTP. Кроме того, у вас есть протокол BitTorrent, который только обменивается блоками (иногда называемыми кусками). Блок равен 16 kiB. Кусок, как правило, даже кратный 16, и даже более вероятно, равная мощность 2. Итак, сначала загружайте несколько блоков, объедините их, чтобы сформировать кусок, а затем проверьте хэш SHA-1 этой части.