Чтобы узнать больше о торрент-загрузке, я использовал wireshark для захвата пакетов, переданных во время загрузки. Мне удалось обнаружить, что файл разбит на несколько частей, которые принадлежат разным пирам. Также на один кусок было передано столько разных кусков одинакового размера. Идентификатор и длина фрагмента - это информация, доступная для идентификации фрагментов.

Я был в состоянии получить идентификаторы частей переданных частей. Но как мне теперь переставить эти кусочки в правильном порядке? Имеет ли значение фигуры кусок в этом отношении?

Кроме того, как торрент-клиенты собирают и хранят фрагменты? рассказывает о хеш-значениях Откуда я могу получить эти значения из пакетов, перехваченных с помощью wireshark?

2 ответа2

0

Хорошо, давайте упростим вещи.

Допустим, у вас был торрент на 100 Мб. Вы можете разбить это на 100 частей по 1 МБ (пронумерованных от 0 до 99), но это не обязательно должно быть 1 МБ, это может быть как 64 КБ, так и 16 МБ, и обычно (но не всегда) два -мощность. Каждая из этих частей состоит из кусков. Каждый кусок составляет 16 КБ. Чанк - это наименьшее количество данных, с которыми имеет дело торрент-клиент (с 1-мегабайтным фрагментом получается 64 чанка).

Клиент может запросить любой кусок, из любой части, от любого партнера, который объявил, что у него есть эта часть.

Как только клиент получит все куски для фрагмента, он будет проверять этот комбинированный фрагмент по хешу SHA1 для того фрагмента, который находится в торрент-файле (чтобы ответить на последний бит). Если он проходит, он сохраняется и помечается как «иметь» для запроса других людей, в противном случае он удаляется.

Так что да, не зная id куска, как вы узнаете, из какого он куска, и как сгруппировать его с остальной частью, а затем запустить его по хешу и затем сохранить?

0

Идентификатор фигуры имеет значение при перестановке фигур. Чтобы убедиться в этом, я создал свой собственный поток небольшого файла и разделил его на 10 частей. Затем я скачал тот же торрент из другой системы и отметил порядок загрузки фрагментов. В то же время я захватил пакеты, используя wireshark. После загрузки была закончена, я проверил have сообщения , транслируемые клиент и штучные идентификаторы в сообщениях были в том же порядке , как он был загружен. Поскольку меня сейчас не волнуют значения хешей, это решает мой вопрос.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .