CHUNGYUN / flylinkdc

Automatically exported from code.google.com/p/flylinkdc
0 stars 0 forks source link

Непосредственный поиск между клиентами (ADC протокол) #692

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
Как я полня, в ADC, для снижения нагрузки на 
хабы, задумывался такой поиск:
SCH
ищущий ->(UDP)->активный пользователь
ищущий ->(TCP)->HUB->(TCP)->пассивный пользователь
RES
нашедший ->(UDP)->активный пользователь
нашедший ->(TCP)->HUB->(TCP)->пассивный 
пользователь
Для обоих команд определено Contexts: F, T, C, U (и 
для RES и для SCH)
http://adc.sourceforge.net/ADC.html
Для SCH также написано:
Searching by UDP is subject to IP spoofing; can thus be used to initiate a DoS 
attack. Clients should only accept incoming UDP searches in a trusted 
environment.
Но на практике даже от подтвержденных 
пользователей по UDP запросы не идут.
Все DC клиенты вопреки протоколу пихают 
поисковые запросы хабу.
Как и на NMDC хабах, на ADC также стоят 
ограничения на частоту поиска.

В википедии непосредственный поиск между 
клиентами помечен как фишка ADC, снижающая 
трафик и нагрузку: 
http://ru.wikipedia.org/wiki/Advanced_Direct_Connect

Таким образом считаю нужным реализовать 
поиск в соответствии с протоколом, по UDP.

Original issue reported on code.google.com by gi...@ya.ru on 18 Feb 2012 at 12:45

GoogleCodeExporter commented 9 years ago
>>Но на практике даже от подтвержденных 
пользователей по UDP запросы не идут.
>>Все DC клиенты вопреки протоколу пихают 
поисковые запросы хабу.

У меня очень жёсткое ощущение что всё 
работает правильно, потому что при наличии 
пассивных пользователей на хабе им иначе 
запрос не передать, а ответят все 
пользователи уже по udp.
p.s: читать спецификацию протокола сейчас 
лень, поэтому не закрываю.

Original comment by a.rain...@gmail.com on 19 Feb 2012 at 3:42

GoogleCodeExporter commented 9 years ago
А чего читать, там всего 3 строки 
http://adc.sourceforge.net/ADC.html
Ищите "5.3.6. SCH"
Насчет пассивных, посмотрите какие запросы 
идут на хабах, в CDM отладчике хорошо видно 
BSCH и FSCH. В протоколе четко предусмотрена 
избирательная передача команд. Т.е. 
например активы отправляют BSCH, а пассивы 
уже FSCH +NAT - такой запрос получают только 
активные пользователи, т.к. пассивным его 
отправлять нет смысла, с них пассив 
всеравно не сможет ничего скачать.
Таким образом в протоколе всё 
предусмотрено, но почему-то SCH ниодин 
клиент не шлет по UDP, а шлет всё через хаб. А 
перспективы итак очень мутные, потому что в 
итоге по трафику ADC хабы выходят порядочно 
более требовательными, чем NMDC, т.к. частота 
посылок команд осталась абсолютно такая 
жа, а команды стали гораздо длиннее засчет 
передачи разных параметров, 
идентификаторов и кодировки UTF-8.
Мне кажется это просто ошибка 
разработчиков DC, которая по 
невнимательность перетекла в другие 
клиенты.

Original comment by gi...@ya.ru on 20 Feb 2012 at 2:00