Kupuj kryptowaluty BLIKiem ⚡
Błyskawiczne wpłaty bez opłat i prowizji na giełdzie OKX.
Siema ekipa. Mam grubą rozkminę techniczną na weekend i pomyślałem, że na tym forum na luzie znajdę kogoś, kto mi to w miarę łopatologicznie wyjaśni. Chodzi mi o konkret, mianowicie jak działa system peer-to-peer w praktyce? Teoretycznie łapię, że to niby taka sieć równych sobie, bez jakiegoś głównego szefa czy centralnego huba. Ale jak to fizycznie trybi pod maską, jak odpalam lapka u siebie w pokoju na zwykłym Wi-Fi?
Większość z nas pewnie kojarzy protokół p2p głównie z torrentami. Pamiętam jeszcze stare czasy, eMule, Kazaa, te sprawy. Odpalasz taki program do wymiany plików, łączysz się z innymi ziomkami i nagle ciągniesz dane od jakiegoś gościa z drugiego końca globu, a jednocześnie wysyłasz coś komuś z sąsiedniego miasta. Ale czekajcie, skąd mój pecet w ogóle wie, że akurat ten konkretny typ ma u siebie plik, którego szukam? Przecież w prawdziwej sieci p2p z założenia brakuje głównego serwera, który by kierował ruchem i mówił hej, ten plik jest na tym komputerze. Jak to się zatem spina, że te wszystkie peer'y (węzły) się ze sobą tak szybko dogadują? Zawsze mnie to mega zastanawiało, zwłaszcza jak ściagają ludzie potężne paczki z danymi i to idzie płynnie bez zająknięcia.
Jak tak ostatnio czytam o decentralizacji w necie, to widzę, że architektura peer to peer to nie tylko pobieranie gier czy filmów, ale też cała podstawa pod krypto, blockchain czy chociażby niektóre szyfrowane komunikatory. Taki Bitcoin przecież w całości opiera się o rozproszony system peer-to-peer, no nie? Każdy zwykły użytkownik sieci to niby osobny malutki serwer i klient w jednym ciele. Tylko co się odwala, jak nagle połowa sieci pójdzie spać i wyłączy kompy? Transfery po prostu siadają? Interesuje mnie też jak wygląda kwestia prywatności w takiej bezpośredniej wymianie plików przez neta. Przecież de facto wystawiam swoje IP dosłownie na tacy każdemu innemu użytkownikowi, który akurat seeduje albo leechuje ten sam fragment pliku co ja. To chyba średnio bezpieczne?
Możecie mi jakoś na typowy chłopski rozum rozłożyć to działanie p2p na czynniki pierwsze? Jak ten cały protokół ogarnia, kto posiada jaki kawałek danych, jak to potem magicznie skleja w całość na moim dysku i czemu to jest tak bardzo polecane w stosunku do klasycznego ciągnięcia plików z normalnego serwera www? Chętnie poczytam jak to widzicie od strony technicznej. Będę mega wdzięczny za jakieś życiowe przykłady, bo suche regułki z uczelni czy z neta kompletnie do mnie nie gadają. Z góry wielkie dzięki za pomocne posty!
Kupuj kryptowaluty BLIKiem ⚡
Błyskawiczne wpłaty bez opłat i prowizji na giełdzie OKX.
Siema stary. Dobra rozkmina na weekend, bo temat niby znany, a jak przyjdzie co do czego, to mało kto ogarnia tak w stu procentach, jak działa system peer-to-peer w praktyce. Siadaj, parz melisę, bo wjeżdżamy z konkretami na totalnym luzie, bez akademickiego bełkotu z podręczników.
Pytałeś, skąd twój lapek na zwykłym domowym Wi-Fi wie, kto ma plik w architekturze peer to peer, skoro nie ma tam głównego szefa. Kiedyś, za czasów eMule czy wczesnych torrentów, sprawa opierała się o tzw. trackery. To były takie serwery-książki telefoniczne. Same w sobie nie miały żadnych plików, ale trzymały listy IPków ziomków, którzy te pliki udostępniali. Ale to wciąż był taki półśrodek. Teraz to poszło o krok dalej i lata głównie na technologii DHT (Distributed Hash Table). W wielkim uproszczeniu: ta "książka telefoniczna" jest poszatkowana i rozrzucona po wszystkich klientach w sieci p2p. Twój komp uderza do losowego sąsiada i pyta: "ej, masz namiary na gościa od tego konkretnego pliku?". Sąsiad mówi: "nie mam, ale ten typ pod tamtym adresem powinien wiedzieć coś więcej, uderzaj do niego". I tak to leci po sznurku do kłębka. Twój klient robi szybki wywiad środowiskowy i po chwili sam łączy się z odpowiednimi węzłami.
A jak wygląda bezpośrednia wymiana plików pod kątem mechanicznym i po co w ogóle tak kombinować? Zobacz, jak ściągasz plik ze zwykłego serwera www, to idzie on w jednym kawałku. Jak 10 tysięcy chłopa rzuci się na pobieranie z jednego serwera w tym samym momencie, to serwer wypluje płuca i transfer spadnie do zera. Protokół p2p to zupełnie inna bajka. Plik jest krojony na malutkie kawałeczki (tzw. chunks). Każdy z nich ma swój unikalny cyfrowy podpis (hash), więc nikt ci po drodze nie wciśnie lewego kodu z wirusem. Twój program to taki bystry kierownik budowy – ciągnie kawałek nr 1 od typa z Brazylii, kawałek nr 5 od kogoś z Warszawy, a sam od razu, w locie, wysyła te pobrane już fragmenty dalej do jakiegoś gościa w Japonii. Cała ta wesoła gromadka to tak zwany rój (swarm). Im więcej ludzi pobiera, tym rozproszony system działa sprawniej, bo jest więcej źródeł.
Co się odwala, jak nagle połowa sieci idzie spać i wyłącza pecety? Tu właśnie błyszczy działanie peer to peer. Dopóki w roju jest chociaż jedna osoba z kompletnym plikiem na dysku (seeder) albo grupa osób, które łącznie posiadają 100% wszystkich puzzli, plik żyje. Zniknięcie połowy użytkowników obniży ci transfer, bo ubywa źródeł, ale pobieranie nie zdechnie ci w połowie błędem z brakiem serwera. Twój program po prostu znajdzie inne ścieżki i dociągnie brakujące kawałki od tych, którzy jeszcze nie poszli spać. Układa puzzle na twoim dysku według hashów i magia gotowa.
No i zostaje kwestia prywatności, o którą zahaczyłeś. Masz w pełni rację. W klasycznym, surowym torrencie świecisz swoim adresem IP jak latarnia morska. Każdy podłączony do roju widzi, z kim gada. Wystawiasz się na tacy i to jest średnio bezpieczne. Dlatego teraz tak popularne są VPN-y do takich zabaw, bo robią za zasłonę dymną. Ale już np. w sieciach nakierowanych typowo na krypto i anonimowość, używa się trasowania cebulowego, gdzie ruch skacze przez losowe węzły zaszyfrowany po zęby, więc wyśledzenie kto od kogo ciągnie paczke jest mega trudne.
Ogólnie to cała ta decentralizacja to po prostu piękny majstersztyk logiki, gdzie każdy jest swoim własnym hubem. Mam nadzieję, że teraz ci się to trochę bardziej klei i łapiesz ten klimat. Jakby coś jeszcze było niejasne, to śmiało uderzaj na forum!
Kupuj kryptowaluty BLIKiem ⚡
Błyskawiczne wpłaty bez opłat i prowizji na giełdzie OKX.
Siema! Poprzednik elegancko wyjaśnił ci bazę tego, jak działa system peer-to-peer w praktyce, więc nie będę powtarzał o trackerach i hashach. Dorzucę za to swoje trzy grosze od strony czysto sprzętowej i tego, co potrafi ostro zepsuć całą tę zabawę w rozproszoną sieć.
Bo widzisz, w teorii ta cała architektura peer to peer to piękna utopia. Odpalasz program, podłączasz się do roju i leci transfer. Ale pisałeś na początku, że siedzisz na zwykłym domowym Wi-Fi, a tu często zaczynają się schody. Zastanawiałeś się kiedyś, czemu bywa tak, że w kliencie torrent widzisz pełno seedów, a pobieranie i tak stoi w miejscu jak wryte? Winny jest najczęściej NAT w twoim routerze i poblokowane porty.
Żeby dwa węzły w tej całej zdecentralizowanej zabawie mogły ze sobą w ogóle pogadać bezpośrednio, przynajmniej jeden z nich musi mieć otwarte drzwi na zewnątrz (czyli publiczne IP i odpowiednio przekierowany port). Jak obaj jesteście schowani za głębokim NAT-em od waszych dostawców neta, to choćbyście mieli te same fragmenty pliku i chcieli się nimi wymienić, wasze kompy w życiu sie nie dogadają. To jest właśnie ten moment, gdzie ta wielka wolność i bezpośrednia wymiana plików dostaje w pysk od konfiguracji routera za stówkę.
Kolejna sprawa to nasze kochane łącza asymetryczne. Typowy polski standard to na przykład 300 Mbps w dół, ale upload ucięty do nędznych 20 Mbps. Protokół p2p opiera się na tym, że każdy oddaje to, co pobrał. Jak cała ekipa w danym roju ma tak mocno zduszone wysyłanie, to ta sieć rówieśnicza ledwo zipie, nawet jak nikt nie wyłącza kompa na noc. Co więcej, twój dostawca neta często celowo przycina taki ruch (tzw. throttling), bo wie, że masowe seedowanie zapycha mu łącza.
I tak czysto na marginesie, nie myśl o P2P tylko przez pryzmat piracenia filmów i blockchaina. Microsoft używa dokładnie tej samej logiki do dostarczania aktualizacji Windowsa! Jak pobierasz gruby update, to w tle twój system potrafi dociągać kawałki kodu od kogoś dwa bloki dalej, zamiast męczyć serwery w Redmond. Launchery gier, np. od Blizzarda, też przez lata na tym latały.
Także stary, mechanika to jedno, a brutalna rzeczywistość dostawców internetu to drugie. Jak masz jeszcze jakieś rozkminy z tymi portami czy konfiguracją, to wal śmiało!