Direct Client-to-Client

Direct Client-to-Client (DCC) – protokół pozwalający na bezpośrednie połączenie przez internet dwóch użytkowników bez jakichkolwiek serwerów pośredniczących oraz obustronną transmisję danych. DCC obejmuje zarówno negocjacje połączenia, jego inicjalizację, jak i samą obsługę transferu danych.

DCC został pierwotnie stworzony na potrzeby usługi IRC. W ramach IRC DCC umożliwia przesyłanie plików (DCC SEND i DCC GET), czat między dwiema osobami bez pośrednictwa serwera IRC (DCC CHAT), jest także wykorzystywany przez serwery plików (DCC fserve).

Odmiana tego protokołu jest także zaadaptowana do sieci wymiany plików typu P2P.

DCC w IRC edytuj

Z punktu widzenia protokołu IRC, DCC jest dodatkową warstwą CTCP, gdyż zestawianie łącza DCC między klientami odbywa się za pośrednictwem komend wysyłanych przez CTCP. Po zestawieniu łącza transmisja i sterowanie odbywa się już całkowicie bez pośrednictwa serwera IRC, aż do czasu zerwania połączenia. Standardowy protokół zestawienia łącza DCC wymaga posiadania stałego numeru IP z tzw. zwrotnym DNS. Stąd usług DCC nie da się realizować, gdy pracuje się spod dynamicznych lub niezarejestrowanych numerów IP.

Podstawowy mechanizm DCC został stworzony w ramach prac nad programem ircII i nie planowano go jako usługi, która by miała być stosowana powszechnie i stanowić część ogólnej specyfikacji protokołu IRC, jednak z czasem stał się on standardem, który został adaptowany do większość bardziej rozbudowanych klientów IRC.

W podstawowym standardzie DCC dopuszczalne są następujące typy połączeń:

  • CHAT – realizowane jest sekwencyjne przesyłanie od klienta do klienta kolejnych linii tekstu – mówiąc prościej umożliwia to po prostu rozmowę prowadzoną z pominięciem serwera IRC – aczkolwiek może też być używane do innych celów
  • SEND – realizowane jest ciągłe, strumieniowe przesyłanie danych od klienta do klienta – co w praktyce umożliwia przesyłanie plików, ale też możliwe jest wysyłanie tą drogą strumieni danych multimedialnych.

Szyfrowane DCC edytuj

Niektóre klienty IRC umożliwiają przesyłanie tekstów i plików za pomocą szyfrowanych protokołów, takich jak np. SSL. Obsługa szyfrowych połączeń jest jednak różna, w różnych klientach, stąd zwykle tego rodzaju komunikacja jest możliwa tylko w przypadku gdy obie strony używają tego samego lub przynajmniej kompatybilnego oprogramowania. Czasami problem niekompatybilności klientów daje się rozwiązać przez wybranie jednej, umówionej wcześniej metody szyfrowania i zainstalowanie odpowiedniego skryptu lub wtyczki rozszerzającej możliwości klienta.

Jednym z rozwiązań, zaimplementowanym w m.in. programie kVirc oraz jako wtyczka mIRC jest poszerzenie protokołu DCC o komendy, które nazywają się tak samo jak oryginalne, z dodaną literą „S” na początku, jest to zatem odpowiednio: SCHAT, SSEND, SACCEPT itd.

Innym rozwiązaniem jest stosowanie normalnych komend z dodatkowym mechanizmem uzgadniania protokołu szyfrowania już po nawiązaniu połączenia. Po nawiązaniu połączenia DCC CHAT, klienty wymieniają automatycznie komunikaty informujące się nawzajem o przejściu na szyfrowany protokół, po czym dopiero następuje właściwa transmisja danych.

Zagadnieniem ustandaryzowania procedur szyfrowych w ramach protokołu DCC zajmuje się projekt DCC2, który pracuje nad stworzeniem nowej wersji DCC.

Pasywne i aktywne DCC edytuj

Przy normalnym połączeniu DCC strona zgłaszająca chęć uzyskania połączenie komendą „SEND” lub „CHAT” staje się jej stroną aktywną, biorącą na siebie zestawienie łącza, czyli spełniającą dla drugiej strony funkcję serwera. Z tego powodu nie posiadając stałego adresu IP nie można z tej usługi skorzystać. Ten sam problem stwarza korzystanie z mechanizmu NAT, czy zapory sieciowej niepozwalającej na połączenia przychodzące z zewnątrz.

Aby choć częściowo obejść ten problem, niektóre klienty IRC posiadają mechanizmy pozwalające zestawić łącze w trybie pasywnym. Działa to zwykle tak, że klient, który się łączy wysyła komendę CTCP, która po drugiej stronie uruchamia normalną procedurę nawiązania połączenia DCC, dzięki czemu strona inicjująca i akceptująca połączenie zamieniają się rolami. System ten może działać tylko wtedy, gdy strona akceptująca ma stały numer IP.

Mechanizm pasywnego DCC nie jest ustandaryzowany. Do najczęściej spotykanych należą:

System 100-121
jest on stosowany w mIRCu i paru innych klientach i jest chyba najbardziej popularny – polega on na wysyłaniu komendy /CTCP 100 nick dla połączenia CHAT i /CTCP 120 nick dla połączenia SEND – wadą tego rozwiązania jest konieczność wcześniejszego uzgodnienia adresu i numeru portu dla połączenia strony pasywnej.
System RDCC
w systemie tym inicjujący wysyła komendę /RDCC funkcja gdzie „funkcja” to „c” dla „CHAT” i „s” dla „SEND”, a przyjmujący odpowiada komendą RDCC 0 numer_IP numer_portu – dzięki czemu strona inicjująca dostaje informację na jakim porcie i spod jakiego numeru IP ma oczekiwać połączenia.

Serwery plików edytuj

Istnieją dwa mechanizmy dystrybucji plików, oparte na DCC, umożliwiające przekształcenie klienta IRC w rodzaj serwera plików działającego podobnie jak FTP.

Mechanizm o nazwie fSERVe zostało pierwotnie zaadaptowanie w programie mIRC – dla innych programów jest ono jednak dostępne w postaci skryptu lub wtyczki. Obsługuje ono typowo do 5 połączeń naraz i działa na zasadzie kombinacji DCC CHAT i DCC SEND. Przez DCC CHAT wysyłane są listy plików i komendy uruchamiające transfer, zaś sam transfer plików odbywa się przez tradycyjny mechanizm DCC, z fSERVem jako stroną czynną. W zasadzie każdy właściciel mIRCA, posiadający stały numer IP może w dość prosty sposób (poprzez okno dialogowe) uruchomić tę usługę. Słabość mechanizmów zabezpieczających mIRCa powoduje jednak, że jest to potencjalnie ryzykowne przedsięwzięcie.

Drugim tego rodzaju systemem jest skrypt XDCC pierwotnie napisany w 1994 r. do programu ircII. XDCC zostało dołączone do BitchXa i paru innych klientów obsługujących język skryptowy ircII. XDCC oferuje znacznie więcej możliwości niż fSERVe – może być skonfigurowane tak aby komendy wyświetlające listy plików i uruchamiające transfer mogły być wysyłane w formacie „/CTCP komenda”, „/msg komenda” lub przez DCC CHAT. XDCC obsługuje też system katalogowy plików, po którym można „wędrować” przy pomocy komend znanych z DOSa (DIR, CD itp.) XDCC jest bardzo popularną metodą rozpowszechniania tzw. warezu – czyli bibliotek legalnie i nielegalnie rozprowadzanych programów i plików multimedialnych.

Bibliografia edytuj

Linki zewnętrzne edytuj