Описание Протокола ADC, Advanced Direct Connect Protocol |
Здравствуйте, гость ( Вход | Регистрация )
Описание Протокола ADC, Advanced Direct Connect Protocol |
2.6.2009, 22:01
Сообщение
#21
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
Структурированное описание протокола Advanced Direct Connect (ADC), под управлением которого уже работают некоторые хабы.
Ссылка на оригинальное описание: По мере написания, в содержании будет появляться ссылка на соответствующий пост. Делаю тему закрытой, дабы структурировано всё описать. 1. Введение 2. История версий 3. Структура протокола 3.1. Основное 4. Файлы 4.1. Имена файлов и структура 5. Команды характеристики BASE 5.1. Клиент – Хаб взаимодействие 6. Примеры 6.1. Связь Клиент – Хаб 7. Стандартные дополнения/расширения 7.1. TIGR - поддержка TTH (Tiger Tree Hash) |
|
|
14.3.2011, 15:10
Сообщение
#22
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
INF
Синтаксис: Код INF separator sid (separator param)+ Направления: F, T, C Стадии: IDENTIFY, NORMAL Описание: Данная команда призвана помочь получить обновлённую информацию о клиенте. При её получении, соответствующие параметры добавляются или обновляются. Имя каждого параметра определяется при помощи двух символов, за которыми следуют данные, определяющие значение этого параметра. Значение того или иного параметра может быть стёрто путём отсылки одного только названия параметра (без данных). Клиенты должны игнорировать неизвестные им параметры. Большинство из параметров данной команды интересны только при клиент-хаб соединении. При соединении клиент-клиент данная команда в основном используется только для идентификации. Хабы могут требовать или игнорировать какие-либо или все параметры. Многие из параметров, такие как шара и версия клиента, носят чисто информативный характер и должны быть взяты как есть, ибо их очень легко можно подделать. Однако, клиенты должны стремиться отсылать точные данные о себе для обеспечения общей целостности всей системы, так как неверная информация может раздражать некоторых людей. Для обновления каких-то параметров достаточно отослать только эти изменения, а не все параметры. Параметры: Параметры Имя: ID Тип: base32 Описание: CID клиента (необходим для соединения клиент-клиент). Имя: PD Тип: base32 Описание: PID клиента. Хабы должны проверять, что TigerHash(PID) == CID и удалять это поле прежде чем рассылать остальным клиентам. Данный параметр не должен отсылаться при соединении клиент-клиент. Имя: I4 Тип: IPv4 Описание: IPv4 адрес без порта. Пустой адрес (0.0.0.0) означает, что хаб должен заменить его реальным IP адресом клиента. Хабы должны проверять соответствие между IP адресом в данном параметре и реальным IP адресом клиента чтобы избегать DDoS атак. Клиенты могут отсылать пустой адрес, а могут отсылать правильный IP адрес. Каждый клиент, который поддерживает прямое соединение TCPv4 (актив) должен отослать TCP4 в параметре SU. Имя: I6 Тип: IPv6 Описание: IPv6 адрес без порта. Пустой адрес (: означает, что хаб должен заменить его реальным IP адресом клиента. Каждый клиент, который поддерживает прямое соединение TCPv6 (актив) должен отослать TCP6 в параметре SU. Имя: U4 Тип: целое число Описание: UDP порт клиента. Все клиенты, которые поддерживают входящие UDPv4 пакеты должны отсылать UDP4 в параметре SU. Имя: U6 Тип: целое число Описание: UDP порт клиента. Все клиенты, которые поддерживают входящие UDPv6 пакеты должны отсылать UDP6 в параметре SU. Имя: SS Тип: целое число Описание: размер расшаренных данных в байтах Имя: SF Тип: целое число Описание: число расшаренных файлов Имя: VE Тип: строка Описание: идентификатор клиента и версии (рекомендуется короткий идентификатор и точный номер версии) Имя: AP Тип: строка Описание: идентификатор клиента (application) Имя: US Тип: целое число Описание: максимальная скорость закачки (байт/сек) Имя: DS Тип: целое число Описание: максимальная скорость скачки (байт/сек) Имя: SL Тип: целое число Описание: максимальное число одновременных закачек (слоты) Имя: AS Тип: целое число Описание: автоматический скоростной предел слота (байт/сек). Клиент держит открытым слот до тех пор, пока скорось загрузки не превысит указанную величину Имя: AM Тип: целое число Описание: минимальное количество одновременных загрузок (автоматических режим) Имя: EM Тип: строка Описание: E-mail адрес Имя: NI Тип: строка Описание: ник (или имя хаба). Хаб должен гарантировать, что указанный ник уникален на хабе вплоть до регистра. Правильным считается ник, в котором все символы с юникодами больше 32, хотя хабы могут сами регулировать запрещённые символы в нике и выдавать соответствующее сообщение Имя: DE Тип: строка Описание: описание. Правильным считается описание, в котором все символы с юникодами больше либо равны 32 Имя: HN Тип: целое число Описание: число хабов, на которых клиент является незарегистрированным пользователем в NORMAL состоянии Имя: HR Тип: целое число Описание: число хабов, на которых клиент является зарегистрированным (должен отправить пароль) пользователем в NORMAL состоянии Имя: HO Тип: целое число Описание: число хабов, на которых клиент является оператором в NORMAL состоянии Имя: TO Тип: строка Описание: признак получения RCM/CTM команд при установке связи клиент-клиент Имя: CT Тип: целое число Описание: Тип клиента. 1 - бот, 2 - зарегистрированный, 4 - оператор, 8 - супер юзер, 16 - владелец хаба, 32 - сам хаб (используется при отсылке INF команды самим хабом) Имя: AW Тип: целое число Описание: состояние клиента. 1 - away, 2 - расширенный away - не заинтересован в чате хаба (хабы могут не рассылать массовые сообщения клиентам с таким флагом) Имя: SU Тип: строка Описание: список характеристик, разделённых запятой. Данный параметр служит для уведомления о характеристиках соединенного клиента Имя: RF Тип: строка Описание: URL для перенаправления (хаб или веб страница) Замечание: Обычно только один IP адрес (I4 or I6) используется для всех соединений. Нужно проявлять осторожность при приёме соединений с неизвестного IP. Только проверенным пользователям можно разрешать использовать различные IP адреса. Если пренебречь проверкой соответствия IP, то хаб может быть использован для организации DDoS атак. Когда хаб получает данную команду на стадии IDENTIFY, он должен проверить параметры PD и ID, и либо перейти на стадию VERIFY, отослав команду PAS, либо перейти на стадию NORMAL, отослав собственную информацию командой INF (если это не было сделано раньше), затем отослать команды INF всех подключенных клиентов на стадии NORMAL, и в последнюю очередь отослать всем команду INF соединенного клиента. После того как хаб отослал свою команду INF, в параметре NI будет название хаба, в параметре VE - название платформы хаба и версия, и в параметре DE - топик хаба (описание хаба). Когда клиент получает данную команду при соединении клиент-клиент на стадии IDENTIFY, он должен сопоставить параметры ID и TO, отосланные в команде INF и перейти на стадию NORMAL. Примеры: Код IINF AAAA VEверсия\sхаба NIназвание\sхаба DEописание\sхаба Код BINF AAB3 IDWYCH3RE46Z3JX3J3P3P33NYMVQSSBNVERQTNFVA NIник SL5 SS184304078130 SF1339 HO0 VEApexDC++\s1.3.6 US65536 SUNAT0 I410.10.10.10 HN7 HR1 FS4
|
|
|
14.3.2011, 15:10
Сообщение
#23
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
MSG
Синтаксис: Код MSG separator sid (separator pm-sid)? separator text (separator ME1)? (separator PM sid)? Направления: F, T Описание: Сообщение чата. Клиент, который получает сообщение должен заключить ник в символы <>, для однотипного отображения. Параметры: Для отсылки личного сообщения указывается параметр pm-sid - это SID клиента, которому предназначено сообщение. Это поле должно содержать реальный SID если это нормальный личный разговор. ME1 - сообщение должно быть отображено как /me в IRC ("*nick text") TS1234567890 - unix время отправки сообщения Примеры: Сообщение чата: Код BMSG AAAA Всем\sпривет Сообщение от третьего лица в чат: Код BMSG AAAA слушает\sхорошую\sмузыку ME1 Сообщение в личку: Код EMSG AAAA AAAB привет PMAAAA Сообщение от третьего лица в личку: Код EMSG AAAA AAAB слушает\sхорошую\sмузыку ME1 PMAAAA
|
|
|
14.3.2011, 15:11
Сообщение
#24
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
SCH
Синтаксис: Код SCH separator sid (separator param)+ Направления: F, T, C, (U) Описание: Команда поиска. Каждый параметр данной команды состоит из имени и значения, следующего за именем. Имя параметра состоит из 2 символов (арабские буквы верхнего регистра и/или цифры). Клиенты должны игнорировать неизвестные параметры и производить поиск так, как будто они не передавались. Если все параметры для клиента являются неизветсными, то клиент должен проигнорировать команду и не искать ничего. Параметры: Параметры Имя: AN, NO, EX Описание: поисковый запрос, где AN - означает "и" т.е. включать (and), NO - не включать (and not), EX - расширение. Поиск указанного файла (а также пути к нему) должен осуществляться регистронезависимым образом по подстроке, которая указана в параметре AN, при этом из результатов поиска нужно удалить результаты, которые содержат подстроку, указанную в параметре NO, и в конце оставить результаты с указанным в параметре EX расширением (если этот параметр указан). Параметр EX должен быть без символа '.' спереди Имя: LE Описание: верхняя граница размера файла (в байтах) Имя: GE Описание: нижняя граница размера файла (в байтах) Имя: EQ Описание: точный размер файла (в байтах) Имя: TO Описание: метка. Используется клиентом для того чтобы отличать один поиск от другого. Если этот параметр присутствует с команде поиска, то клиент, получивший эту команду, должен скопировать этот параметр в свою команду с ответом (результатом поиска) Имя: TY Описание: тип поиска. Если этот параметр не указан, то любой тип поиска, иначе 1 - поиск файла, 2 - поиск директории Замечание: Поиск по UDP может подменять IP адрес, и поэтому может быть средством для DDoS атаки. Поиск по UDP следует разрешать только для проверенных клиентов. Примеры: Пассивный поисковый запрос: Код FSCH AABO +TCP4-NAT0 TOauto TRI5YBDRKG6KEDTVZ6ABZDYSVURSSRUHKUHWZILGA Активные поисковые запросы: Код BSCH AAAA TRTVHBXNPAJVRUDNCTJQ5CEACEG2JDEJNAYMH343Y TO3179684286
BSCH AACG TOauto TRQQHYGSUGZ5TWAOJWQNJ6RNA34T6LOSZSBHQ7V4Y BSCH AACQ TRGTVC3IRS6J6QI2DXPFFAPFC6IQ7UAZ6AISSUEQY TOauto |
|
|
14.3.2011, 15:11
Сообщение
#25
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
RES
Синтаксис: Код RES separator sid (separator param)+ Направления: F, T, C, U Описание: Команда для отсылки результатов поиска. Команда построена по подобию команды INF. Клиенты должны отдавать в этой команде имя файла, sid, размер и метку, а также могут отдавать какие-то дополнительные параметры если таковые доступны. На пассивный поиск каждый клиент в ответ может отсылать до пяти результатов, на активный - до десяти. При пассивном поиске команда отсылается клиенту через хаб, при активном - напрямую. Пассивность клиента определяется из параметра SU команды INF. Параметры: Параметры Имя: FN Описание: полное имя файла в шаре (включая путь к файлу) Имя: SI Описание: размер в байтах Имя: SL Описание: текущее доступное число слотов Имя: TO Описание: метка |
|
|
14.3.2011, 15:12
Сообщение
#26
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
CTM
Синтаксис: Код CTM protocol separator port separator token Направления: F, T Описание: Запрос на активное соединение (ConnectToMe). Используется активными клиентами для соединения с такими же активными клиентами или для ответа на RCM команду. Только активные TCP клиенты могут отсылать эту команду. token - это строка, которая идентифицирует входящее соединение и должна присутствовать в команде INF соединяемого клиента. Клиенты не должны принимать входящие соединения, если до этого не была послана данная команда. protocol - это произвольная строка, которая указывает на протокол для соединения. В случае соединения по протоколу ADC 1.0 эта строка должна иметь вид "ADC/1.0". Если протокол поддерживается клиентом, то в ответ на RCM должны быть скопированы параметры token и protocol. Если протокол не поддерживается, то должна быть отправлена команда DSTA, которая указывает на возникшую ошибку. |
|
|
14.3.2011, 15:12
Сообщение
#27
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
RCM
Синтаксис: Код RCM protocol separator token Направления: F, T Описание: Команда на пассивное соединение (Reverse CTM). Пассивный клиент запрашивает соединение с активным клиентом. |
|
|
14.3.2011, 15:13
Сообщение
#28
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
GPA
Синтаксис: Код GPA data Направления: F Стадии: VERIFY Описание: Команда на запрос пароля. Параметр data - это не менее 24 случайных символов (в base32 кодировке) |
|
|
14.3.2011, 15:13
Сообщение
#29
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
PAS
Синтаксис: Код PAS password Направления: T Стадии: VERIFY Описание: Команда для отсылки пароля. Пароль (в кодировке utf-8) следует за случайными данными, которые получены при помощи SID и конвертированы в base32. Если проверка пароля прошла успешно, хаб переводит клиента на стадию NORMAL. |
|
|
14.3.2011, 15:14
Сообщение
#30
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
QUI
Синтаксис: Код QUI sid Направления: F Стадии: IDENTIFY, VERIFY, NORMAL Описание: Команда, которая указывает на то, что клиент с указанным sid ушёл с хаба. Если SID принадлежит клиенту, которому отсылается данная команда, то это должно означать, что к данному клиенту были приняты какие-то меры (дроп, кик, бан, перенаправление). Хаб не должен посылать клиенту какие-либо данные после того как он отослал ему команду QUI. Команда может содержать следующие параметры: ID - SID палача (например того, кто кикнул) TL - время бана в секундах (Time Left). -1 - постоянный бан MS - причина RD - адрес перенаправления DI - любой клиент который имеет этот параметр в QUI должен закрыть все соединения с другими клиентами Примеры: Код IQUI AAAA
|
|
|
14.3.2011, 15:14
Сообщение
#31
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
GET
|
|
|
14.3.2011, 15:15
Сообщение
#32
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
GFI
|
|
|
14.3.2011, 15:15
Сообщение
#33
|
|
RusHub team lead Группа: Модераторы Сообщений: 4 030 Регистрация: 20.6.2008 Из: г. Королёв (Моск. обл.) Пользователь №: 46 Спасибо сказали: 1708 раз |
SND
|
|
|
Похожие темы
|
Сейчас: 26.11.2024, 20:53 |