Jak klienci torrent składają i przechowują elementy?


9

Zastanawiałem się, w jaki sposób elementy pobierane przez klientów torrent są przechowywane i ponownie składane? Czy używają metadanych? Wydaje się, że tak nie jest, ponieważ można je odtwarzać, jeśli są to pliki półformowane? Nie mam pojęcia, jak to się robi? Więc w zasadzie pytam, jak zorganizowane są elementy w pobranym pliku? Czy to tylko od pierwszego do ostatniego, czy też są między nimi przestrzenie buforowe?


Czy jest jakiś sposób na pobranie połowy pobranych elementów po ponownym sprawdzeniu? Moje połączenie przypomina połączenie telefoniczne ...... Więc pomóżcie.

Odpowiedzi:


19

Witamy w cudownym świecie Torrentów! Istnieje kilka elementów, które składają się na protokół Bittorrent: masz swój plik legalthing.iso i chcesz go rozdzielić jak największej liczbie osób. Tworzysz więc plik „torrent”, który opisuje legalthing.iso, i rozpowszechniasz plik torrent za pośrednictwem strony internetowej lub w dowolny inny sposób. Plik torrent może albo wskazywać bezpośrednio na twój komputer (i działałbyś jak seed) lub plik torrent może wskazywać na „tracker”, który jest serwerem, który łączy „seed” (użytkownicy z całym legalthing.iso plik już) i „rówieśnicy” (użytkownicy, którzy aktywnie pobierają plik).

Zbliżam się teraz do pytania. Sam plik legalthing.iso jest szyfrowany kryptograficznie, dzięki czemu każda osoba, która czyta plik torrent i zaczyna pobierać legalthing.iso, może sprawdzić każdy element pod kątem skrótu i ​​upewnić się, że nie pobiera fragmentu zmodyfikowanego z oryginału. Elementy, które nie przejdą kontroli skrótu, są odrzucane.

Udawaj, że jesteś komputerem, który pobiera plik, używając Bittorrent. Protokół może działać na dwa sposoby: albo pobierzesz losowe fragmenty pliku, albo najpierw pobierzesz najrzadsze fragmenty pliku. To drugie podejście ma na celu zwiększenie ogólnego „zdrowia” (dostępności) torrenta.

Co jest w aktualnym pliku torrent? Różni się w zależności od klienta, który go użył, ale ogólnie zawiera sekcję „ogłosić”, która jest adresem używanego modułu do śledzenia, oraz dużą, ogromną listę wszystkich elementów pliku, który chcesz pobrać. Każdy kawałek ma jednolity rozmiar (32 kb, 512 kb, 4 mb, naprawdę dowolny rozmiar, jaki lubisz), a każdy kawałek ma skojarzony z nim skrót. Za każdym razem, gdy rówieśnik dostaje kawałek, porównuje skrót dla tego elementu (używając kodu skrótu SHA-1) z skrótem wymienionym w pliku torrent. Tak się składa, że ​​kawałki są dobre.

Ponieważ plik torrent zawiera listę każdego pliku, który pobierasz, za każdym razem, gdy klient pomyślnie pobierze kawałek i go zaszyfruje, zapisuje go we właściwej pozycji na dysku twardym w pliku. Dlatego, jeśli pobierzesz plik 1 GB, klient odłoży pusty blok miejsca na dysku o wielkości 1 GB, aby pomieścić pliki torrent, które będziesz pobierać.

Teraz niektóre odtwarzacze wideo i inne przeglądarki plików mogą radzić sobie z „uszkodzonymi” plikami. oczywiście, częściowo pobrany torrent nie jest uszkodzony, ale brakuje mu elementów, a dla programu takiego jak VLC wygląda po prostu zepsuty. Dzięki temu VLC zrobi wszystko, co w jego mocy, aby odtworzyć wszystkie znalezione dane i dlatego mogą odtwarzać je częściowo pobrane.

Istnieje wiele bardziej skomplikowanych aspektów (Google DHT, buforowanie zapisu torrent, wszystkie te fajne rzeczy), ale to są podstawy działania Bittorrenta.


Wow, to bardzo pełna odpowiedź .... ale nigdy nie zauważyłem, że naprawdę odkłada na bok plik 1 GB? Wydaje się, że rośnie stopniowo?
Cenoc

1
@Cenoc zależy od klienta torrent, niektórzy klienci wstępnie przydzielają, inni nie, niektórzy mają dodatkowe preferencje do wstępnego przydzielania
Sathyajith Bhat

Ciekawe, więc czy na początku jest to tylko plik wypełniony zerami, a następnie, gdy częściowo pobrany plik jest sprawdzany po raz pierwszy, jest porównywany z hashami?
Cenoc

1
Jest to pusty pojemnik na ewentualny pełny plik, a ponieważ każdy element jest pobierany przez klienta, jest sprawdzany pod kątem wartości skrótu, a następnie umieszczany w odpowiednim miejscu w pojemniku, aż pełny plik zostanie ukończony.
geodave

1
Jak wspomniał Sathya, zależy to od klienta. Niektóre wstępnie przydzielą miejsce na dysku twardym dla całego pliku; zarezerwuje sporo miejsca, a inne programy nie będą mogły używać tego miejsca na dysku, dopóki plik nie zostanie pobrany. Inni klienci bittorrentów umieszczą ukończone elementy w tymczasowym miejscu przechowywania, aby zaoszczędzić miejsce na dysku, a następnie skompilują pełny plik po pobraniu wszystkich elementów. To zależy od wybranych ustawień.
geodave
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.