FAQ: Direct-connect
Как это работает
Главная | Как это работает | Инструкция по установке и настройке | Работа с DC++ | Типичные ошибки | FAQ | Полезные клавиши
Большая часть проблем новичков в DC++ подстерегает из-за банального непонимания происходящего.
Для решения большинства проблем с режимами работы и стандартными ошибками достаточно понимать основные приципы DC++, кои и постараюсь описать далее.
Принцип работы:
Клиенты А, B и С подключены к хабу. Клиент A захотел скачать файл N.
На поисковый запрос клиенты B и C ответили что файл N находится в шаре у клиента B.
Далее начинается самое интересное:
DC++ использует входящее соединение. Это значит, что клиент А просит клиента B: «хей! я хочу файл N. я открыл для тебя порт 666. Мой адрес 192.168.1.5». Клиент B устанавливает соединение с клиентом A используя переданную информацию, после чего начинает передачу. Соединение устанавливается напрямую между клиентам минуя хаб.
Данный случай является идеальным, к несчастью в реальности нас могут подстерегать следующие проблемы:
У пользователя А установлен файрвол, который в автоматическом режиме считает все попытки установить соединение с компьютером атакой (даже встроенный в Windows файрвол делает это). Естественно игнорируя все попытки клиента B подключится. Это — типичная проблема серии: «У меня все качают а я не могу!». Решение — настроить файрвол корректно или отключить.
Пользователь А может находится за шлюзом NAT (Gateway). (см топологию С)
В этом случае все соединения устанавливаемые клиентом А обрабатываются шлюзом, но соединится с ним снаружи — невозможно без использования технологии о которой скажу ниже. Если пользователь А установит в клиенте «Активный режим работы» — возникнет таже самая проблема: Отдача файлов возможна (тк соединится с В не проблема), а получение нет. Причина — при попытке установить соединение клиент В будет использовать внешний адрес шлюза. Аналогичная проблема возникнет при использовании Ethernet ADSL модема — он выступает в качестве шлюза, выдавая пользователю «внутренний IP адрес».
Какие IP адреса типично используются провайдерами как внутренние? 192.168.*.* 10.*.*.* 172.[16-31].*.*
В этом случае также возможна следующая проблема — внутренние хабы сети прекрасно работают, а внешние нет. (Соединения между клиентами внутри сети возможны, а снаружи подключится нельзя)
Клиент обычно вопит в этот момент: «время ожидания ответа истекло».
Что делать?
вариант 1 — самый распространенный: Пользователь переходит в пассивный режим: DC++ начинает использовать ТОЛЬКО исходящие соединения:
Компьютер А посылает компьютеру В запрос (через хаб): «Хей! я хочу файл N! Открой мне порт» — «На тебе порт 666». Клиент А соединяется с Б используя эту информацию и начинает передачу. Результат — вы можете соединятся только с теми кто может принят ваш запрос. те с Активными клиентами. Связь пассив — пассив невозможна по этойже причине.
вариант 2 — настройка шлюза. Для преодоления подобный проблем была разработана технология перенаправления портов:
Шлюзу(модему) говорится примерно следующее: «все запросы на порт 666 перенаправляй на клиента А». Как итог — Клиент В теперь может совершенно спокойно соединится с А.
В настройках клиента А выставляется принудительное использование порта и ip-адреса. (вместо локального ip там указывается внешний ip шлюза)
Как работает поиск: (хотя тема подробно рассмотрена тут немного повторюсь) Если вы используете активный режим то поисковые запросы идут непосредственно пользователям. Если пассивный — поисковые запросы разруливает хаб.
Поиск и связь в активном режиме используют разные протоколы! для корректной работы, необходимо открыть для использования ОБА.
Когда поиск ничего не находит сначала, а через 10 минут находит то что искали, несмотря на то, что новые клиенты на хаб не заходили: Файл у юзера С.
Юзер А запуская поиск ищет чтото, послыая несколько запросов (+автопоиск альтернативных источников). Результат: Клиет С получает от А 6-9 запросов почти одновременно. после чего решает: «этот негодяй пытается использовать спам поиска!» бан на 2 минуты на все поисковые запросы."
