Jak działa Bittorrent?

34

Chcę dowiedzieć się więcej o bittorrentowym sposobie udostępniania plików. Jestem zaawansowanym technicznie użytkownikiem (programistą), więc zaawansowany technicznie materiał nie stanowi problemu, ale powinien być zwięzły i na temat. Potrzebuję dobrej książki / strony z zasobami, która wyjaśnia ogólną architekturę bittorrent.

Nie interesują mnie szczegóły, tylko ogólna architektura i terminologia, jak nasiona, rówieśnicy itp.

Jakieś sugestie?

odkrywca
źródło

Odpowiedzi:

29

Przegląd działania bittorrent:

  • Masz rówieśników i moduł śledzący . Wszyscy rówieśnicy w danym momencie są rojem . Zwykle sytuacja jest taka, że ​​jeden lub kilka peerów ma pełny zestaw plików i chce udostępnić go innym peerom.

  • Element równorzędny uzyskuje plik .torrent, który będzie zawierał między innymi A) skrót SHA-1 zestawu plików, B) adres URL modułu śledzącego i C) liczbę elementów, na które plik jest dzielony, a także skrót SHA-1 każdego elementu. Rozmiar elementów zależy od samego torrenta.

  • Następnie peer łączy się z modułem śledzącym, używając adresu URL określonego w torrentie. Moduł śledzący odpowiada listą rówieśników. Urządzenia śledzące mówią HTTP przez port 80 lub 443.

  • Następnie peer wybiera innego peera, korzystając z informacji z modułu śledzącego i kontaktuje się z nim bezpośrednio, aby skonfigurować sesję wymiany, próbując uzyskać kawałek. Pamiętaj, że sesje wymiany są wykonywane bezpośrednio przez partnerów, a moduł śledzący NIE jest zaangażowany w przesyłanie. Moduł śledzący dostarcza tylko informacje.

  • Gdy element równorzędny ma kawałek, weryfikuje go względem skrótu SHA-1 i zapisuje go w pliku. Następnie może zaoferować ten kawałek przy wyborze innego partnera. Kolejne sesje wymiany dotyczą „handlu” sztukami. Wierzę, że rówieśnicy zazwyczaj dadzą ci pierwszy kawałek, jeśli nie masz innych kawałków.

  • Element równorzędny co jakiś czas ponownie sprawdza moduł śledzący, aby uzyskać zaktualizowaną listę elementów równorzędnych. Rówieśnik nie musi czekać na zakończenie jednej wymiany, zanim rozpocznie kolejną, jeśli ma wiele elementów, więc gdy rówieśnik ma kilka elementów, transfer może naprawdę przyspieszyć. Dlatego torrenty zaczynają się powoli, ale szybko nabierają prędkości, gdy rówieśnik zdobywa kawałki.

  • Gdy peer ma wszystkie elementy, cały plik jest weryfikowany pod kątem wartości skrótu SHA-1 zestawu plików. Następnie staje się siewnikiem i teraz nie robi nic poza zwiększeniem dostępności zestawu plików. Rówieśnicy, którzy nie mają wszystkich elementów, są pijawkami .

  • Jeśli torrent nie ma nasion, jest martwy, chociaż jeśli istnieje kompletna kopia pliku między wszystkimi kawałkami przechowywanymi przez wszystkich równorzędnych użytkowników, w końcu dokonają wymiany, aby uzyskać między sobą kompletną kopię.

  • Skrót SHA-1 to sposób, w jaki moduł śledzący i osoby równorzędne „wiedzą”, który plik powinien mieć rój. Nazwy plików w torrentie nie są używane do identyfikacji danych. Fragmenty, które nie weryfikują się względem zmian w pliku .torrent, są wyrzucane. Rówieśnicy, którzy stale wysyłają złe elementy, są odrzucani przez innych rówieśników i ostatecznie nie będą mogli połączyć się z nikim w roju.

  • Mniejszy rozmiar elementu oznacza, że ​​torrent jest bardziej niezawodny, ponieważ rówieśnicy mogą szybciej wymieniać elementy, ale oznacza to również, że należy wymienić więcej skrótów elementów w pliku .torrent, a zatem plik .torrent może być duży.

  • Jeśli publikujesz coś za pośrednictwem BitTorrenta, najlepiej jest zaszczepić plik tak długo, jak chcesz go udostępnić. Pomogą Ci inni partnerzy, ponieważ większość oprogramowania BitTorrent implementuje algorytmy, które sprzyjają próbowaniu rozprzestrzeniania się wśród jak największej liczby rówieśników, aby zmaksymalizować połączenia równoległe. W ten sposób BitTorrent może pomóc Ci publikować rzeczy i obniżyć koszty przepustowości.

LawrenceC
źródło
1
Piękna odpowiedź! Jedna wskazówka: uważam, że nasiona wolą nasiona najrzadsze , a nie pierwsze. Nie jestem pewien, czy jest to algorytm, ale to właśnie otrzymałem od programu torrentowego podczas bałagania się ustawieniami.
Gallifreyan,
8

Na YouTube jest całkiem fajny film wyjaśniający to w wizualny sposób z tekturowymi wycięciami. Nie jest to wysoce techniczne wyjaśnienie, ale doskonale nadaje się do wyjaśniania ludziom koncepcji BitTorrent w prosty, zrozumiały sposób.

jak Bittorrent działa na YouTube

nhinkle
źródło
3
+1 Przydatne wideo. Pokazał to mojemu tacie. Potem nie miał już pytań. Zadziwiający. :)
zero2cx
2

Przegląd protokołu komunikatów równorzędnych .

Klient może używać dwóch protokołów do udostępniania informacji równorzędnym, TCP lub uTP (przez UDP). Te dane są zgodne ze specyfikacją protokołu bittorrent , komunikatami sekcji równorzędnych .

Tak więc programowo połączenie musi rozpocząć się między dwoma klientami. Po ustanowieniu połączenia (przez TCP lub uTP) klient inicjuje bittorrent handshake, który pobiera informacje zdalnego partnera (ip i port) z modułu śledzącego lub przez DHT . Ten uścisk dłoni zawiera info_hash, który identyfikuje torrent, o którym będzie to połączenie.

Zobaczmy najpierw, jak dane Torrent są obcinane przez protokół. Kawałek jest częścią danych dzielisz przez sieć. Nie mylić z blokiem , który jest fragmentem kawałka owiniętego w paczkę. Blok jest ziarnistość podzielić się kawałek za pośrednictwem pakietów, a kawałek jest ziarnistość dzielić Torrent przez rówieśników.

Kiedy połączenie się rozpoczyna, obaj klienci (klient lokalny, który nazywam LC i klient zdalny, RC ) są zdławieni i niezainteresowani . Zadławienie oznacza „Nie będę odpowiadać na żadne wiadomości, zbyt zajęty, ale mogę je wziąć pod uwagę”. Odblokowany oznacza zatem „ Odpowiem na twoje wiadomości”. Zainteresowane oznacza oczywiście, że chciałbym, żebyś miał jakieś kawałki, które masz. Dlatego stan połączenia między dwoma peerami można zdefiniować za pomocą tych czterech stanów: LC_chocked ?, LC_interested ?, RC_chocked ?, RC_interested? Ostrzegam RC , że jestem (nie) zadławiony lub (nie) zainteresowany, Muszę wysyłać mu (nie) zainteresowane i (nie) zadławione wiadomości oraz wzajemnie.

Aby poinformować się nawzajem, które elementy mają, mogą wysłać wiadomość o polu bitowym tuż po uzgadnianiu. Jak sama nazwa wskazuje, jest to ciąg bitów, w którym każdy bit jest ustawiony, 1jeśli klient ma ten szczególny kawałek , w 0przeciwnym razie.

Więc jeśli LC jest chocked i zainteresowany i RC ma unchocked go, to może on wysłać żądania wiadomości z prośbą o bloku należącego do jednego kawałka on wie LC ma dzięki bitfield wiadomości.

Gdy peer otrzyma cały kawałek , może wysłać wiadomość o kawałku, aby poinformować wszystkich jego zdalnych partnerów, aby zaktualizowali powiązane pole bitowe , które przechowują.

Jest to bardzo prosty przegląd i oczywiście nie wszystkie szczegóły są tutaj podane, takie jak algorytm dławienia itp. Jeśli chcesz więcej szczegółów, sprawdź dwa linki, które zamieściłem powyżej, w sekcji komentarzy (jako nowy użytkownik mogę mają więcej niż dwa linki w poście).

Jules Randolph
źródło