Я давно пользуюсь uTorrent. Я использовал его функцию «перепроверка силы» бесчисленное количество времени. Каждый раз меня удивляет, как uTorrent успешно определяет, какие части файла были загружены, а какие еще не загружены. Он проверяет их, даже если вы не подключены к Интернету; поэтому я предполагаю, что он не загружает никаких данных из интернета для этой проверки.
Не могли бы вы объяснить, как работает эта функция «принудительной проверки»? Я думаю, что хеш для каждого куска хранится в файле .torrent; но я не уверен, это всего лишь предположение. Я поискал в Google по ключевым словам "torrent file format", чтобы найти формат файлов .torrent, но вместо этого он дал много результатов поиска через торрент. Так что Google на этот раз не мой друг. Пожалуйста, объясни мне это.
источник
Ответы:
Насколько я понимаю, торрент-файл содержит хэш для каждого фрагмента загружаемого вами файла. Он просто проверяет хеш-значения для каждого фрагмента, который, по вашему мнению, у вас есть, на основе контрольного списка. Как и при загрузке торрента, любая часть, которая не соответствует, отбрасывается.
Более подробно, основываясь на спецификации bittorrent у вас есть загруженный файл, «длина отрезка» и «кусочки». Длина фрагмента - это размер каждого фрагмента, а фрагменты - просто сумма sha1 каждого фрагмента, добавляемая к предыдущему фрагменту для формирования длинной строки.
Для упрощения предположим, что вы предварительно распределили файл, и у вас в основном имеется большой «дополненный» файл, равный по длине исходному файлу. Во-первых, на основе длины фрагмента программа получает первые n бит файла и выполняет суммирование SHA1. Затем он сравнивает сумму файла SHA1 с соответствующей частью «частей». Если они совпадают, у нас все хорошо. Иначе, это помечено как бесполезное и отброшено.
источник