Как клиенты потока повторно собирают и хранят части?

Я задавался вопросом, как части загружаются клиентами потока, сохранил и повторно собрался? Они используют метаданные? Это кажется дело обстоит не так, так как каждый может играть их, если они - половина сформированных файлов? У меня нет подсказки, как это сделано? Так в основном я спрашиваю, как части в загруженном файле организованы? Это просто от начала до конца или является там промежуточными пространствами буфера?

9
задан 11.06.2011, 19:31

1 ответ

Добро пожаловать в замечательный мир Потоков! Существует несколько частей, которые включают протокол Bittorrent: у Вас есть свой файл, legalthing.iso, и Вы хотите распределить его как можно большему количеству людей. Таким образом, Вы создаете файл "потока", который описывает legalthing.iso, и Вы распределяете файл потока через веб-сайт или любой другой способ, которым Вам нравится. Файл потока может или указать непосредственно на Ваш компьютер (и Вы действовали бы как семя), или файл потока может указать на "средство отслеживания", которое является сервером, который уже соединяет "семена" (пользователи с целым legalthing.iso файлом) и "коллеги" (пользователи, которые активно загружают файл).

Получение ближе к вопросу теперь. Сам файл, legalthing.iso, криптографически хешируется так, чтобы каждый человек, который читает файл потока и начинает загружать legalthing.iso, мог проверить каждую часть по хешу и удостовериться, что они не загружают часть, это было изменено из оригинала. Отбрасываются части, которые приводят проверки хеша к сбою.

Теперь притворитесь, что Вы - компьютер, загружающий файл, с помощью Bittorrent. Протокол может работать один из двух путей, или Вы загрузите случайные части файла, или Вы будете загружать самые редкие части сначала. Этот последний подход должен увеличить полное "здоровье" (доступность) потока.

Таким образом, что находится в фактическом файле потока? Это варьируется на основе клиента, используемого для создания его, но обычно это содержит "объявить" раздел, который является адресом средства отслеживания, которое Вы используете, и большой огромный список всех частей файла, который Вы хотите загрузить. Каждая часть имеет универсальный размер (32 Кбита, 512 КБ, 4 МБ, действительно любой размер, который Вы любите) и каждой части связали хеш с нею. Каждый раз, когда коллега получает часть, она сравнивает хеш для той части (использующий хэш-код SHA-1) с хешем, перечисленным в файле потока. Это - то, как это выясняет, что части хороши.

Начиная со списков файлов потока каждая часть файла, который Вы загружаете, каждый раз Ваш клиент успешно, загружает часть и хеширует ее, она пишет часть в правильное положение на жестком диске в файле. Вот почему, если Вы загрузите файл на 1 ГБ, то клиент отложит пустой блок пространства на Вашем диске, это составляет 1 ГБ в размере, для размещения частей потока, которые Вы будете загружать.

Теперь некоторые видеоплееры и другие средства просмотра файла могут иметь дело с "поврежденными" файлами. конечно, полузагруженный поток не повреждается, но он пропускает части и к программе как VLC, это просто выглядит поврежденным. Таким образом, VLC сделает лучшее, которое он может для проигрывания безотносительно данных, которые он может найти, и вот почему они могут играть, в то время как частично загружено.

Существуют партии более сложные аспекты (google DHT, буферизация записи потока, весь этот забавный материал), но это - основы того, как Bittorrent работает.

19
ответ дан 07.12.2019, 13:12

Теги

Похожие вопросы