Gnutella
Gnutella to sieć służąca do wymiany plików przez internet, wykorzystywana przede wszystkim do wymiany muzyki, filmów i oprogramowania. Jest to rodzaj sieci peer-to-peer, ponieważ działa bez centralnego serwera, a pliki są wymieniane bezpośrednio między jej użytkownikami. Pierwszy kliencki program dla tej sieci został napisany przez Justina Frankla i Toma Peppera z firmy Nullsoft na początku roku 2000, krótko po zakupie tej firmy przez AOL. W tym samym roku 14 marca program został udostępniony z serwera firmy Nullsoft. Nie ujawniono wtedy jeszcze kodu źródłowego tego programu i nie ustalono na jakiej licencji program jest rozpowszechniany. Następnego dnia AOL zablokował możliwość ściągnięcia programu ze względu na obawy prawne i jednocześnie zakazał dalszych prac nad nim. Jednak projekt Gnutelli nie przepadł i po kilku dniach został opublikowany na licencji GNU General Public License, co pozwoliło na realizowanie programów opartych na tym protokole. Otwartość tego projektu, możliwość pisania i wyboru wielu programów klienckich stało się główną siłą napędową tej sieci. Jest to alternatywne i w pełni rozproszone rozwiązanie w stosunku do częściowo scentralizowanych sieci takich jak FastTrack, czy zupełnie scentralizowanych takich jak Napster. Popularność Gnutelli wzrosła po zamknięciu serwera Napster na początku 2001 roku. Zasada działania sieci opiera się na kręgu użytkowników tzw. węzłów, którzy zainstalowali programy Gnutelli. Programy te po uruchomieniu włączają się do sieci i poszykują przynajmniej jednego użytkownika z podobnym programem. Używają do tego rozmaitych metod, między innymi przygotowaną uprzednio listę działających węzłów dołączonych do wersji instalacyjnej programu. Można również użyć listy serwerów dostępnej w internecie lub wykorzystać program IRC. Jeżeli przynajmniej jeden węzeł działa, to po połączeniu prześle nam własną listę działających serwerów. Gdy zaś użytkownik chce coś wyszukać, to wysyła zapytanie do każdego komputera-serwera z którym jest w danej chwili aktywnie podłączony. Zazwyczaj liczba węzłów z którymi użytkownik jest podłączony jest niewielka, ale każdy węzeł przekazuje dalej zapytanie, co oznacza, że teoretycznie powinno ono dotrzeć do każdego użytkownika podłączonego do sieci Gnutella. Jeżeli rezultat zapytania jest pozytywny, to węzeł który zawiera dany plik kontaktuje się już bezpośrednio z użytkownikiem, który zapytanie wydał, po czym następują negocjacje transferu, a później pobieranie pliku się rozpoczyna. Jeżeli poszukiwany plik znajduje się u więcej niż jednego użytkownika, to możemy ściągać różne kawałki tego pliku z różnych węzłów, zwiększając tym samym prędkość transferu. Największą zaletą Gnutelli jest jej prawdziwa decentralizacja co powoduje, że nie ma praktycznie możliwości jej wyłączenia. Nie można wyłączyć tej sieci poprzez wyłączenie któregoś lub nawet większej ilości węzłów. Oznacza to, że dopóki będzie co najmniej dwóch użytkowników, to Gnutella będzie funkcjonować.