Direct Connect

Direct Connect — это частично централизованная файлообменная (P2P) сеть, в основе работы которой лежит проприетарный протокол, разработанный фирмой NeoModus.

Хабы

Клиенты подключаются к одному или нескольким серверам, т. н. хабам для поиска файлов, которые обычно не связаны между собой (некоторые типы хабов можно частично или полностью связать в сеть, используя специализированные скрипты или программу Hub-Link) и служат для поиска файлов и источников для их скачивания. В качестве хаба чаще всего используются PtokaX, Verlihub, YnHub, Aquila, DB Hub, RusHub.

Альтернативная (Правдивая?) история

Однажды простой американский школьник по имени Джонатан Хесс решил создать свою собственную P2P сеть, с блэкджеком и шлюхами, и получить профит со встроенного спама. Чтобы гениальный план свершился, в клиенте был зашит супер-секретный ключ, позволяющий использовать только родной софт. Но Джонатан знал только Visual Basic, и ключ был взломан злыми хакерами особо не напрягаясь. В память о тех славных временах остался наикривейший протокол (в котором в словах из пяти букв десять ошибок, нельзя искать два файла сразу, и еще куча фейла). В современных клиентах содержится куча костылей, чтобы эти глюки обойти. При этом про оригинальный клиент уже никто не помнит. Протокол все собираются переписать, но почти на всех хабах так и крутятся потомки глючного детища Джонатана.

Пример авторизации пользователя

Client <-> Server Communication in DC. 01-26-2003. By Sid
        ---------------------------------------------------------- 

        Client Hub Login Example
        ---------------------- 
        C = client
        H = hub 

        C>H: Connection
        H>C: $Lock <lock> Pk=<pk>|
        H>C: $HubName <hubname>|
        C>H: $Key <key>|$ValidateNick <nick>|
        C>H: $MyINFO $ALL <nick> <interest>$ $<speed>$<e-mail>$<sharesize>$
        C>H: $GetINFO <othernick> <nick>
        C>H: $GetINFO...

Пример скачки файла

        Client <-> Client Communication in DC. 11-05-2002. By aDe 
        ---------------------------------------------------------- 

        ACTIVE FILE DOWNLOAD 
        ---------------------- 
        D = downloader 
        U = uploader 
        H = hub 

        D>H: $ConnectToMe <U's username> <D's IP and port>|
        H>U: $ConnectToMe <U's username> <D's IP and port>|
        U>D: Connection
        U>D: $MyNick <U's nick>|$Lock <new lock with pk>|
        D>U: $MyNick <D's nick>|$Lock <new lock with pk>|$Direction Upload <anumber>|$Key <key for U's lock>|
        U>D: $Direction Download <anumber>|$Key <key for D's lock>|
        D>U: $Get <filepath + filename in exact case>$<start at byte (1=beginning of file)>|
        U>D: $FileLength <length of the requested file>|
        D>U: $Send|
        U>D: Data, in many chunks.
        D>U: $Send|       <- when 40906 bytes are sent, ask for more

Ссылки

Описание протокола DC

Протокол_DC (последним исправлял пользователь ASPIRIN++ 2010-05-22 02:29:13)