Direct Connect

Direct Connect – aplikacja/protokół umożliwiająca współdzielenie zasobów plikowych, wykorzystująca technikę połączeń peer-to-peer. W tym celu wykorzystuje koncentratory, które zawierają podstawowe informacje do nawiązania połączenia z użytkownikiem. Twórcą tej techniki jest Jonathan Hess, założyciel firmy NeoModus.

Poza podstawowym celem aplikacji, którym jest współdzielenie zasobów udostępnionych z lokalnych dysków twardych systemów wyposażonych w aplikację klienta, innym użytkownikom sieci posiadających aplikację klienta, umożliwia on prowadzenie rozmów z innymi osobami na wybranym koncentratorze w formie tekstowego chata zbliżonego formą do IRC-a.

Protokół ADC

Działanie „Direct Connect” oparte jest na tekstowym protokole ADC. Istotą tego protokołu było stworzenie prostego rozwiązania w implementacji zarówno dla klienta, jak i koncentratora. Dzięki takiemu podejściu stworzono identyczną strukturę dla połączeń typu klient-koncentrator oraz klient-klient, znacznie upraszczając przy tym ich implementacje. Podczas tworzenia ADC wiele koncepcji zostało zaczerpnięte z DCTNG autorstwa Jana Vidara Kreysa, protokołu NMDC oraz oryginalnej idei DC Jona Hessa.

W protokole ADC wszystkie wiadomości składają się z czteroznakowych słów, w których pierwszy znak określa sposób przesłania wiadomości, a pozostałe trzy identyfikują konkretną operację. Wiadomości te kodowane są za pomocą Unicode UTF-8 w znormalizowanej postaci C (ang. Normalization Form C). Zarówno klient, jak i koncentrator ignorują źle sformułowane wiadomości, oraz muszą być przygotowane do obsłużenia 64-bitowych liczb całkowitych oraz liczb zmiennoprzecinkowych.

Adresacja klienta musi być postaci dziesiętno-kropkowej dla adresów IPv4 oraz postaci RFC 1884 dla adresów IPv6 oraz w postaci URL'a ze specyfikacja adc postaci „adc://server:port/” dla koncentratorów. Domyślnie klienty ADC udostępniają tylko pliki zhashowane za pomocą drzewa „Merkle Hash”[1].

W najbliższych planach jest stworzenie protokołu Secure ADC wykorzystującego tunelowanie TLS podczas nawiązywania połączenia.

Koncentratory

Koncentratory „Direct Connect” są centralnymi serwerami, do których podłączają się aplikacje typu klient. Ich podstawowym zadaniem jest:

  • dostarczanie informacji o użytkownikach,
  • przeszukiwanie zasobów plików udostępnionych,
  • możliwość nawiązania rozmów tekstowych z innymi użytkownikami,
  • rejestracja i autoryzacja użytkowników podczas wejścia na koncentrator.

Obecnie występuje bardzo wiele wyspecjalizowanych tematycznie koncentratorów. Aby się z nimi połączyć należy spełniać wymagania odnoszące się np. do typów oraz ilości udostępnianych zasobów. Istnieją też koncentratory dostępne np. tylko dla użytkowników sieci lokalnej lub hostów z pewnej podgrupy adresów IP.

Aplikacje klienta

Podstawowym zadaniem aplikacji klienta jest możliwość udostępniania oraz ściągania udostępnionych zasobów od innych użytkowników. W tym celu Klient nawiązuje połączenie z koncentratorem, od którego uzyskuje podstawowe dane o innych użytkownikach. Następnie nawiązywane jest połączenie [peer-to-peer] między dwoma klientami w celu rozpoczęcia transmisji danych. Każdy klient DC tworzy między innymi listę plików udostępnionych, która służy innym użytkownikom oraz wyszukiwarce zasobów do odnalezienia poszukiwanych plików.

Najbardziej powszechnie stosowanym klientem pod systemem Windows jest DC++. Ponadto można wyróżnić także wiele modyfikacji DC++:

Modyfikacje DC++ pod platformy Windows
Nazwa programuOpis
GokaDCekJeden z najbardziej popularnych klientów sieci dc. Możliwość ściągania z wielu źródeł
Zk++Najbardziej rozbudowany op klient
Zion BlueJeden z najczęściej używanych op klientów (dalej nierozwijany)
ApexDC++modyfikacja wspierająca listę PeerGuardian
CZDCjedna ze starszych modyfikacji
fulDCbardzo popularna modyfikacja DC++, nie rozwijana
SababaDCmodyfikacja umożliwiająca ściąganie danego pliku z wielu źródeł, obsługuje Kademilię
StrongDC++modyfikacja umożliwiająca pobieranie pliku z wielu źródeł jednocześnie
RSX++modyfikacja przeznaczona dla operatorów
BCDC++modyfikacja pozwalająca m.in. limitować prędkość pobierania/wysyłania
Revconnectmodyfikacja umożliwiająca ściąganie danego pliku z wielu źródeł, obsługuje Kademilię
oDC (Opera’s DC++)Jedna ze starych modyfikacji DC++. Różni się przede wszystkim oprawą graficzną. Projekt nie jest rozwijany
LDC++modyfikacja bazująca na StrongDC++
Klienty DC pod platformę Linux/Unix
Nazwa programuOpis
LinuxDC++aplikacja najściślej kompatybilna z biblioteką klienta DC++, wykorzystuje GTK
Valknut (dawniej DCGUI)graficzny klient obsługujący ściąganie wielosesyjne
MlDonkeyplatforma wieloprotokołowa, ciągle rozwijana, współpracuje z wieloma interfejsami graficznymi, posiada własny interfejs tekstowy
dctcklient tekstowy oparty na linii komend
dc_guiklient graficzny bazujący na dctc
ldccklient oparty na linii komend
microdc/microdc2klient oparty na linii komend
GtkDCgraficzny klient wykorzystujący „GTK+ widgets”
Dolda
DC#graficzny klient bazujący na Mono i GTK#
Klienty DC pod platformę MAC OS X.
Nazwa programuOpis
ShakesPeerjest aplikacja typu „open source”, kompatybilna z DC++

Istnieje także kilka klientów wieloplatformowych, są to między innymi:

Klienty DC wieloplatformowe
Nazwa programuOpis
Valknutznany głównie jako dcgui-qt, przeznaczony dla platform typu Linux i Mac OS X
Eliseklient uniezależniony od typu platformy, napisany w Javie, brak wsparcia dla protokołu NMDC

Aktualną listę modyfikacji można znaleźć w „Broadband Reports DC++ FAQ”

Aplikacje serwera

Umożliwiają one utworzenie koncentratora przez dowolnego użytkownika, którego sprzęt oraz łącze internetowe będzie w stanie obsłużyć ruch generowany do/od serwera. Obecnie dostępne jest kilka programów umożliwiających uruchomienie serwera na własnym komputerze oraz nadzór nad poprawnym funkcjonowaniem koncentratorów. W celu zapewnienia pewnej funkcjonalności koncentratorów, aplikacje te pozwalają na selekcję użytkowników np. względem adresu IP, ilości udostępnionych zasobów.

Aplikacje typu serwer
Nazwa aplikacjiSystem
PtokaXWin32, Win64, Linux
VerliHubLinux
YnHubWin32
HeXHubWin32
ADCH++Win32, Linux
AquilaLinux
DCH++Linux
DConnect DaemonLinux/Unix
DB HubLinux/Unix (następca Open DC Huba)
Open DC HubLinux/Unix
Py-DCHubWin32, Linux
ShastaHubWin32, Linux, Mac OS X (oparty na języku Java)
xHubWin32, Linux
Win VerliWin32

Przypisy

  1. Portail d’informations. open-content.net. [zarchiwizowane z tego adresu (2008-03-16)]..

Linki zewnętrzne