Nowa twarz Gnutelli

"Ściągajcie przez całą noc, bo jutro Napstera może już nie być". Takie tytuły pojawiały się w internetowych serwisach informacyjnych 1 marca br. Następnego dnia sędzia Marilyn Patel w sądzie okręgowym w San Francisco miała wydać kolejny wyrok w sprawie Napstera. Od niego zależało, czy firma Napster Inc. będzie mogła nadal kontynuować działalność - będąc jednak zmuszona do wprowadzenia mechanizmów blokujących możliwość ściągania utworów wskazanych przez wytwórnie płytowe - czy też będzie musiała całkowicie zamknąć swoje serwery.

Początek końca Napstera?

Wyrok - korzystny dla Napstera - zapadł ostatecznie w cztery dni później, ale nie czekając na werdykt sądu, firma już wcześniej postanowiła na własną rękę uruchomić mechanizmy odfiltrowujące z prezentowanej przez program listy plików tytuły, które wymieniane były we wcześniejszych sprawach sądowych przeciwko firmie - m.in. wytoczonych w kwietniu ubiegłego roku przez zespół Metallica i rapera Dr. Dre (zob. MI 7/2000). Docelowo zaś, zgodnie z zawartym w październiku ub.r. porozumieniem między firmą Napster i niemieckim gigantem medialnym Bertelsmann AG - właścicielem m.in. wytwórni płytowej BMG, która jest jedną z pięciu wielkich wytwórni procesujących się z Napsterem (pozostałe to Warner Music Group, EMI, Sony i Universal) - Napster ma przeistoczyć się w serwis płatny.

Według wstępnych projektów, za korzystanie z systemu płaciłoby się abonament w granicach 3-10 USD miesięcznie (w zależności od wybranego zakresu usług). Udostępniane przez użytkowników Napstera pliki MP3 byłyby w trakcie przekazywania innym użytkownikom przekształcane do specjalnego, zaszyfrowanego formatu .NAP. Odsłuchiwanie plików w tym formacie byłoby możliwe tylko poprzez wbudowany wewnętrzny odtwarzacz w nowej wersji Napstera, i dostępne wyłącznie dla użytkowników płacących abonament. Możliwość ściągnięcia niezaszyfrowanego pliku, który można byłoby skopiować do przenośnego odtwarzacza MP3 lub nagrać na płytę CD, byłaby każdorazowo dodatkowo płatna. Uzyskane w ten sposób wpływy posłużyłyby do wypłacenia tantiem wytwórniom płytowym, w zależności od liczby ściągniętych utworów należących do każdej z wytwórni. Wedle przedstawionego przez firmę Napster biznes-planu, wytwórnie płytowe miałyby łącznie otrzymywać z tego tytułu ok. 200 mln USD rocznie przez najbliższe 5 lat.

Nieodwołalnie nadchodzi zatem koniec Napstera jako źródła darmowego dostępu do wszelkiej muzyki. Wielu - głównie nastoletnim - użytkownikom tego programu obca jest jednak myśl o jakimkolwiek płaceniu za muzykę ściąganą z Internetu, stąd też ich uwaga zwraca się w kierunku innych usług i programów umożliwiających darmowe wymienianie się plikami. Choć od czasu debiutu Napstera powstało ich wiele, zdecydowanym faworytem wśród nich jest niewątpliwie Gnutella (zob. MI 8/2000) i w jej stronę najczęściej spoglądają użytkownicy myślący o rezygnacji z Napstera.

Dotychczas jednak trudno było mówić o Gnutelli jako realnej alternatywie dla użytkowników Napstera. W przeciwieństwie do prostoty i wygody tego ostatniego, który wystarczyło "włączyć i działać", programy oparte na technologii Gnutelli były dość trudne w użyciu. Abstrahując już od bardzo prymitywnego interfejsu użytkownika, który po oryginalnej Gnutelli przejęły wszystkie jej wczesne klony, podstawową niedogodnością była konieczność znalezienia i ręcznego wpisania do programu adresów IP innych węzłów sieci GnutellaNet, z którymi program ma utrzymywać połączenia. Były to zatem programy przeznaczone raczej dla zaawansowanych użytkowników; masy "zwykłych zjadaczy Windows" wolały pozostać przy Napsterze.

Sytuację tę zmieniło pojawienie się przed kilkoma miesiącami na "rynku" (słowo to ujmuję w cudzysłów, gdyż trudno mówić o rynku w sensie dosłownym w przypadku darmowych programów) nowej generacji serwentów Gnutelli - łatwością obsługi, stopniem zautomatyzowania i efektownym wyglądem ekranu w pełni dorównujących Napsterowi. Użytkownik tego ostatniego nie będzie zatem miał już kłopotów z "przesiadką".

Za najlepszy spośród tych programów - zdaniem zarówno użytkowników, jak i prasy fachowej - uważany jest BearShare, firmowany przez bliżej nieznaną firmę FreePeers Inc., który przedstawiam bliżej w dalszej części artykułu. Innymi godnymi uwagami reprezentantami nowej generacji programów zgodnych z Gnutellą są LimeWire (http://www.limewire.com/) i ToadNode (http://www.toadnode.com/). Zaletą pierwszego z nich jest wieloplatformowość - dostępne są wersje dla Windows, Macintosha, Linuxa i Solarisa, a także wersja napisana w czystej Javie, możliwa do uruchomienia w każdym systemie, w którym zainstalowana jest maszyna wirtualna Javy. ToadNode z kolei jest programem najlepiej obsługującym możliwość pracy poprzez firewall - z wykorzystaniem serwera SOCKS (o ile taki znajduje się w sieci lokalnej).

Gnutella w stroju niedźwiadka

BearShare jest niewielkim programem działającym we wszelkich 32-bitowych odmianach systemów Windows (95, 98, NT, ME, 2000), aczkolwiek we wcześniejszych wersjach tych systemów może być potrzebne doinstalowanie najnowszych wersji niektórych bibliotek systemowych, które dostępne są na stronach WWW Microsoftu lub samego BearShare. Wymagana jest także obecność w systemie przeglądarki Internet Explorer w wersji co najmniej 4.0.

Liczący sobie 1 MB plik instalacyjny można ściągnąć z głównej strony programu znajdującej się pod adresem http://www.bearshare.com/. Instalacja jest banalnie prosta - wymaga jedynie odpowiedzi na kilka pytań, z których najistotniejszym jest wskazanie właściwej szybkości naszego łącza z Internetem (rys.1). Wystarczy jeszcze tylko wybrać katalogi na dysku, których zawartość będziemy chcieli udostępniać innym użytkownikom (tu możemy po prostu zaakceptować domyślne katalogi proponowane przez program) i aplikacja jest gotowa do działania. Wszystko jest równie łatwe, jak w przypadku Napstera - a może nawet łatwiejsze, gdyż odpada etap wyboru nicka oraz hasła do zalogowania się do serwera. Dla użytkowników dbających o porządek na dysku swojego komputera (chyba każdy użytkownik powinien o to dbać?) ważny jest też fakt, że BearShare podczas instalacji nie modyfikuje niczego w rejestrze Windows ani nie umieszcza żadnych plików w katalogach systemowych (poza dodaniem swoich skrótów do menu Start).

Jak w przypadku innych nowoczesnych serwentów Gnutelli, uciążliwy proces nawiązywania połączenia z innymi komputerami w sieci GnutellaNet został zautomatyzowany. Program korzysta ze specjalnego serwera o adresie gnutellahosts.com, prowadzonego przez firmę Clip2 Inc. (http://www.clip2.com/), z którym łączy się bezpośrednio po uruchomieniu. Serwer ten jest najpopularniejszym z kilku funkcjonujących w sieci GnutellaNet tzw. host caches - serwerów, które przez cały czas monitorują stan sieci i po połączeniu się z nimi przekazują programowi listę kilkudziesięciu (obecnie liczba ta wynosi 30) adresów aktualnie aktywnych węzłów sieci.

BearShare próbuje następnie kolejno łączyć się z adresami z otrzymanej listy, wybierając połączenia o najlepszej jakości, aż do uzyskania optymalnej liczby aktywnych połączeń, ustalonej w konfiguracji programu (zależnej od zadeklarowanej szybkości łącza). Również i później podczas pracy program cały czas monitoruje aktywne połączenia i gdy któreś z nich zostanie zerwane lub jego jakość zaczyna spadać, próbuje nawiązać nowe połączenie z innym węzłem sieci. Oczywiście tak jak w starszych serwentach Gnutelli, zawsze możliwe jest ręczne wprowadzenie adresów - np. w sytuacji, gdyby nie można było uzyskać połączenia z serwerem gnutellahosts.com.

Przebieg nawiązywania połączeń jest prezentowany na ekranie "Hosts". Charakterystyczną cechą BearShare jest przedstawianie wszystkich informacji dotyczących działania programu w bardzo przejrzystej postaci graficznej. Obejmuje to m.in. sygnalizację stanu połączeń róznymi kolorami: szarym dla połączeń będących w trakcie nawiązywania, czarnym dla aktywnych, a czerwonym - odrzuconych lub zerwanych (por. rys.2). Nieco zabawnym, ale miłym akcentem jest rysunkowa interpretacja adresów domenowych komputerów, z którymi się łączymy, poprzez wyświetlanie flag państw lub znaków firmowych operatorów Internetu odpowiadających danej nazwie domeny.

Opisany proces ustanawiania połączeń może, w zależności od aktualnej sytuacji w sieci, trwać od kilku do nawet kilkunastu minut. Gdy na ekranie widnieje już kilka stabilnych połączeń, możemy przejść do ekranu wyszukiwania klikając na zakładkę "Search". Obsługa tej części programu jest oczywista - musimy wpisać nazwę (lub jej fragment) pliku, którego szukamy i poczekać, aż zapytanie rozejdzie się w sieci GnutellaNet. Przykładowy ekran z wynikami wyszukiwania przedstawia rys.3 - warto tu zwrócić uwagę na parametr "QoS" (Quality of Service), przedstawiony graficznie w postaci zielonego paska w skrajnej lewej kolumnie wykazu. Reprezentuje on oszacowaną przez program prędkość ściągania pliku z danego komputera.

Podwójne kliknięcie na dowolny ze znalezionych plików przenosi go do ekranu "Downloads" i uruchamia proces jego pobierania. Obsługa zarówno ściągania, jak i udostępniania plików jest w BearShare wysoce zautomatyzowana. Program sam ustawia w kolejkę żądania transmisji, które przekraczają ustalone w konfiguracji limity na liczbę jednoczesnych sesji (znów zależne od szybkości łącza); sam też wielokrotnie ponawia próby ściągania pliku w sytuacji, gdy docelowy komputer nie odpowiada, ma przekroczony limit sesji lub transmisja ulega zerwaniu. Możliwe jest też ustalenie ograniczenia na maksymalną szybkość pojedynczej transmisji. Wszystkie szczegóły dotyczące transmisji w jedną lub drugą stronę prezentowane są w bliźniaczych zakładkach "Downloads" i "Uploads" (rys.4). Wreszcie zakładka "Monitor" (rys.5) pozwala na śledzenie zapytań docierających do naszego komputera z sieci GnutellaNet - zerkając na pojawiające się w tym okienku nazwy możemy zatem zorientować się, czego użytkownicy Gnutelli najczęściej szukają w Sieci...

Wśród dodatkowych możliwości udostępnianych przez BearShare warto wspomnieć m.in. o filtrowaniu listy plików według określonych rozszerzeń - dotyczy to zarówno plików znalezionych w sieci w odpowiedzi na nasze zapytanie, jak i udostępnianych przez nas. Standardowa konfiguracja Gnutelli umożliwia udostępnianie jedynie niektórych, najpopularniejszych typów plików, takich jak np. różne formaty plików graficznych, dźwiękowych, wideo czy strony HTML. Z listy plików znalezionych w sieci wykluczane są z kolei pliki wykonywalne - zarówno te z rozszerzeniem .EXE, jak i .VBS, zawierające skrypty języka Visual Basic. Zabezpiecza to przed przypadkowym ściągnięciem i uruchomieniem pliku zawierającego wirusa, konia trojańskiego lub inny szkodliwy program. Oczywiście zestawy rozszerzeń tak w jednym, jak i drugim przypadku można dowolnie modyfikować, bądź całkowicie wyłączyć opcję filtrowania.

Inną ciekawą funkcją jest możliwość uruchomienia wbudowanego w program mini-serwera WWW, prezentującego listę udostępnianych przez nas plików. Funkcję tę możemy włączać lub wyłączać (standardowo jest włączona) na ekranie "Uploads" - opcja "Web Site". Gdy jest włączona, można połączyć się z naszym komputerem i ściągać pliki za pomocą zwykłej przeglądarki WWW (por. rys.6).

Jeszcze ciekawszą funkcję znajdziemy, sięgając do przygotowanego pod adresem http://bearshare.net/ specjalnego serwisu WWW dla użytkowników programu. Obok najnowszych wiadomości na temat Gnutelli i Napstera, odsyłaczy do najważniejszych stron WWW poświęconych Gnutelli oraz forum dyskusyjnego znajdziemy tam wyszukiwarkę (rys.7), pozwalającą wyszukiwać i ściągać pliki udostępniane w sieci GnutellaNet z poziomu strony WWW (wyszukiwarek takich funkcjonuje zresztą już kilka, na różnych stronach poświęconych Gnutelli). Na stronach serwisu wielokrotnie apeluje się jednak do użytkowników, aby nie ściągali plików w ten sposób, lecz zainstalowali BearShare i również sami udostępniali swoje pliki innym. "Freeloading", czyli pobieranie plików bez dawania czegokolwiek w zamian, staje się bowiem poważnym problemem sieci GnutellaNet, która - jak wszystkie systemy wymiany plików - opiera się wszak na udostępnianiu! Jeżeli w sieci zabraknie użytkowników udostępniających pliki, to nie będzie czego ściągać...

Nie ma lekko...

Nawet krótka praca z BearShare zdecydowanie przekonuje do tego programu - korzystanie z niego jest łatwe i proste, i bez wątpienia uzasadnione są powszechnie krążące w Internecie opinie, iż program ten stanie się "nowym Napsterem" dla osób rezygnujących z tego ostatniego. Jednak sytuacja nie wygląda tak różowo, jak by się mogło wydawać. Gnutelli nie grożą wprawdzie kłopoty prawne (aczkolwiek niewykluczone jest, że w przyszłości mogą takowe grozić poszczególnym jej użytkownikom, nielegalnie kopiującym pliki), ale za to sama sieć GnutellaNet staje przed poważnymi problemami technicznymi.

Technologia Gnutelli udostępniona została publicznie w momencie, gdy - wedle słów samych jej twórców - znajdowała się jeszcze w bardzo wczesnej fazie testowej, i właściwie po dziś dzień z fazy tej nie wyszła. Mimo wszystkich udogodnień zapewnianych przez nowoczesne programy, takie jak BearShare, Gnutella jest wciąż bardziej eksperymentem niż narzędziem nadającym się do regularnego, "produkcyjnego" wykorzystania. Protokół Gnutelli projektowany był z myślą o efektywnej pracy w sieci liczącej kilkaset węzłów, zaś granicą jego skalowalności według opinii autorów miała być sieć licząca ok. 5000 węzłów. Po przekroczeniu tej liczby funkcjonowanie Gnutelli mogło napotykać na poważne problemy.

Tymczasem w chwili obecnej przeciętna dzienna liczba komputerów w sieci GnutellaNet szacowana jest na około 20 do 50 tysięcy! I spodziewane problemy istotnie wystąpiły, tyle tylko, że ich charakter okazał się nieco inny od przewidywanego pierwotnie przez twórców Gnutelli.

Podstawowym problemem okazuje się być tzw. "bariera przepustowości". Pojęcie to wprowadziła wspomniana już firma Clip2, według której przekroczenie tej bariery miało miejsce około sierpnia 2000 roku. Bariera przepustowości łączy się z pojawieniem się w sieci GnutellaNet dużej liczby komputerów korzystających z łączy modemowych. Dopóki Gnutella uruchamiana była głównie na komputerach podłączonych do Internetu szybkimi łączami, sprawność sieci utrzymywała się na zadowalającym poziomie. Gdy jednak w sieci pojawiło się wiele wolnych łączy modemowych, ich przepustowość okazała się niewystarczająca do przeniesienia całego strumienia zapytań i odpowiedzi przesyłanych w sieci GnutellaNet. Węzły przyłączone przez takie łącza przestawały przesyłać informacje, przez co w całej sieci prędkość wyszukiwania ulegała znacznemu obniżeniu. W końcu dochodziło do zrywania połączeń i podziału sieci na wiele mniejszych fragmentów, nie mających kontaktu ze sobą nawzajem.

Oczywiście fragmentacja sieci GnutellaNet występuje zawsze, gdyż jest nieodłącznie wpisana w zasady jej funkcjonowania. Nigdy podłączając się do sieci GnutellaNet nie "widzimy" całej sieci, a jedynie jej część, wyznaczoną zasięgiem naszego horyzontu, czyli parametru TTL (por. artykuł w MI 8/2000). Niemniej jednak bariera przepustowości spowodowała podzielenie sieci na fragmenty dużo mniejsze, niż wynikające z horyzontu. Przed osiągnięciem bariery wielkość tej "widocznej" części sieci wynosiła zwykle w granicach od tysiąca do 4 tys. komputerów, natomiast w okresie tuż po przekroczeniu bariery zdarzało się, że sieć dzieliła się na fragmenty liczące po kilkaset, albo i kilkadziesiąt komputerów! Oczywiście pozbawiało ją to większej użyteczności.

Jednym z elementów, które pozwoliły przezwyciężyć barierę przepustowości, są wprowadzone w programach takich jak BearShare mechanizmy automatycznego wyboru połączeń o najlepszej jakości. Dzięki nim komputery przyłączone wolnymi łączami automatycznie "spychane" są na "obrzeże" sieci GnutellaNet, tzn. utrzymują połączenie tylko z jednym sąsiednim węzłem. Są zatem "ślepymi uliczkami" - nie przekazują nigdzie dalej zapytań ani odpowiedzi, w związku z czym szybkość ich działania nie jest krytyczna dla reszty sieci. Następuje zatem samoczynne przekształcanie się struktury sieci GnutellaNet do postaci składającej się z wewnętrznego, szybkiego rdzenia, złożonego z komputerów połączonych ze sobą łączami o dużej przepustowości, i zewnętrznego "naskórka", składającego się z komputerów z wolnymi łączami, z których każdy utrzymuje połączenie tylko z jednym węzłem w obrębie rdzenia.

Znakomitym uzupełnieniem takiej architektury sieci jest tzw. reflektor, opracowany przez firmę Clip2. Reflektor to program pełniący funkcję serwera proxy dla Gnutelli. Analogicznie jak serwery w3cache stosowane są do przyspieszenia ładowania stron przez przeglądarki WWW, reflektor przyspiesza pracę połączonych z nim serwentów Gnutelli, wykonując w ich imieniu wyszukiwanie w sieci i odsyłając im jedynie gotowe wyniki - a także odpowiadając za nie na kierowane do nich zapytania o pliki. Nowa generacja serwentów Gnutelli jest w pełni przystosowana do współpracy z reflektorami i zaleca się, aby użytkownicy modemowi podłączali się do któregoś z działających w sieci reflektorów zamiast bezpośrednio do sieci GnutellaNet. Niektóre reflektory dostępne są publicznie (ich listę można znaleźć na serwerze firmy Clip2), inne natomiast przeznaczone są dla określonych grup użytkowników - przykładowo, coraz większa liczba dostawców Internetu w USA zaczyna uruchamiać własne reflektory przeznaczone dla swoich klientów korzystających z połączeń dial-up.

Uzyskana w ten sposób struktura sieci, zobrazowana na rys. 8 (zaczerpniętym ze stron WWW firmy Clip2), pozwala na przywrócenie jej do stanu używalności. Warto jednak zwrócić uwagę na to, że pomimo stałego wzrostu liczby użytkowników sieci wielkość "widocznej" części sieci utrzymuje się w ostatnim czasie na względnie stałym poziomie wynoszącym ok. 1500 komputerów. Oznacza to, że w miarę powiększania się sieci GnutellaNet, każdy podłączony do niej komputer ma dostęp do coraz mniejszego procentowo fragmentu sieci. I tu pojawia się zasygnalizowany już wcześniej problem "freeloadingu". Według badań przeprowadzonych niezależnie przez centrum badawcze Xerox PARC i firmę Clip2, przed osiągnięciem bariery przepustowości tylko ok. 30% użytkowników sieci GnutellaNet udostępniało w tej sieci jakieś pliki. Obecnie liczba ta spadła do ok. 15%. Rozrastanie się sieci, przy utrzymującej się na w miarę stałym poziomie wielkości horyzontu, oznacza, że w zasięgu użytkownika będzie się znajdować coraz mniej udostępnionych plików, a zatem wyszukiwanie będzie coraz mniej efektywne! Problem ten (podobnie zresztą jak bariera przepustowości) nie występuje w systemach wykorzystujących do wyszukiwania centralny serwer (jak np. Napster), gdyż w takim systemie nawet jeżeli użytkowników udostępniających pliki będzie bardzo niewielu, i tak wszystkie udostępniane przez nich pliki będą pojawiać się w wynikach wyszukiwania. W przypadku Gnutelli rozchodzące się w sieci zapytanie może "wygasnąć" z powodu przekroczenia horyzontu, zanim dojdzie do komputera, na którym znajduje się interesujący nas plik. Wówczas w ogóle nie zobaczymy, że on istnieje!

Zupełnie innymi zagrożeniami, przed którymi stoi Gnutella, jest możliwość stosunkowo łatwego "zatkania" sieci maszynowo generowanymi bezsensownymi zapytaniami - w jednym z tekstów dostępnych na swoim serwerze WWW firma Clip2 donosi o wykryciu sporej ilości takich anomalnych zapytań w sieci GnutellaNet - jak również "złośliwe" węzły sieci, które mogą np. rozsyłać wirusy. Pod koniec lutego tego roku pojawił się wirus Mandragora, będący stosunkowo niewielkim (8 KB) programem, który po uruchomieniu podłączał się jako węzeł do sieci GnutellaNet i udzielał pozytywnej odpowiedzi na wszystkie dochodzące do niego zapytania, podszywając się pod nazwę każdego poszukiwanego pliku! Przykładowo, jeżeli użytkownik wysłał do sieci GnutellaNet zapytanie o pliki zawierające w nazwie tekst "Britney Spears", wirus odpowiadał, iż dysponuje plikiem "Britney Spears.exe". Jeżeli użytkownik ściągnął ten plik i nieopatrznie go uruchomił, jego komputer ulegał infekcji i zaczynał zachowywać się w analogiczny sposób. Na szczęście wirus nie rozpowszechnił się zbyt szeroko, m.in. ze względu na zawartą w części programów zgodnych z Gnutellą (w tym w BearShare) wspomnianą już funkcję filtrowania plików wykonywalnych.

Wszystkie przedstawione fakty skłaniają do stwierdzenia, że choć wprawdzie Gnutella "żyje, ma się dobrze i zmienia się szybko" - jak napisał w swoim artykule zamieszczonym na witrynie firmy Clip2 jej szef - to pracujący nad nią programiści mają przed sobą jeszcze wiele pracy, jeżeli ich dzieła miałyby faktycznie zastąpić Napstera. Napster - według danych podawanych przez firmę - ma przeszło 38 milionów użytkowników. Nawet jeżeli tylko połowa z nich faktycznie używa programu, i połowa z tej połowy zechce "przesiąść się" na Gnutellę po wprowadzeniu przez Napstera opłat, wciąż daje to 9,5 miliona użytkowników. Tymczasem obecną liczbę użytkowników sieci GnutellaNet szacuje się zaledwie na około 180 tysięcy. Czy Gnutella wytrzyma tak znaczny wzrost obciążenia? No cóż, na to pytanie chyba nikt w tej chwili nie jest w stanie odpowiedzieć...


Jarosław Rafa 2001. Tekst udostępniony na licencji Creative Commons (uznanie autorstwa - użycie niekomercyjne - bez utworów zależnych). Kliknij tutaj, aby dowiedzieć się, co to oznacza i co możesz z tym tekstem zrobić. W razie jakichkolwiek wątpliwości licencyjnych bądź w celu uzyskania zgody na rozpowszechnianie wykraczające poza warunki licencji proszę o kontakt e-mailem: raj@ap.krakow.pl.

Wersja HTML opracowana 4.08.2001.


Powrót do wykazu artykułów o Internecie Statystyka