ПРОДОЛЖЕНИЕ Если какой-то канал вам более не нужен, его можно закрыть аналогично страницам поиска - щёлкнув крестик вверху справа у закладки. Слева, в списке пользователей, нажимая на них правой кнопкой, можно организовывать с ними приват. Про остальные функции IRC можно почитать на любом тематическом сайте, отличаются они не особенно сильно. Документацию именно по Муловскому IRC можно найти на freshirc.com.
Настройки.
Я пропущу разделы "Сообщения" и "Статистика", т. к. в "Статистике" и так всё понятно, а меню сообщения реально нужны только в отдельных случаях, которые я пока не рассматривал. Обычное же общение через "Сообщения" достаточно просто для того что бы отдельно про него рассказывать (послать сообщение пользователю можно щелкнув по нему правой кнопкой на странице "Передачи"; при этом открывается окно чата, аналогичное IRC). Пойду по всем настройка подряд по пунктам.
Основные. Тут всё предельно просто - лишних комментариев вряд ли требуется. Так же здесь можно изменить ник и настроить запуск вместе с Windows, если вы этого не сделали при первой загрузке.
Дисплей. Исключительно визуальные параметры, позволяет менять шрифты, цвета и прочее.
Соединение. Здесь уже интересней. Позволяет выставить скорость, пределы на отдачу/загрузку, поменять порты (что в общем случае не нужно), указать сети, с которыми работать (должны быть отмечены обе галки), изменить максимальное число соединений и т. д. Там имеется кнопка "Помощник", нажимая на которую вы увидите окно, аналогичное тому, что было при первом запуске - там можно указать лишь наиболее важные параметры, такие как соединение и операционную систему, остальное eMule настроит сам, исходя из этих данных.
Прокси. Нужно, если вы хотите/используете прокси. Вещь в общем случае не нужная, так что этот пункт мы опустим.
Сервер. Ряд не особо важных и достаточно очевидных настроек. Не сильно критично, поставите ли вы обновление списка серверов при включении или обновление списка серверов при соединении с сервером - главное, что бы они обновлялись хотя бы каким-нибудь образом. Остальное не столь важно (на связь оно так же не влияет, поскольку обновление в любом случае идёт только при установке соединения, что случается не так часто, да и сами списки достаточно маленькие по объёму). Единственное, что может вызвать непонимание - это безопасное соединение. Если вдруг при соединении с сервером вы получаете LowID, то если у вас указано безопасное соединение, вы будете пытаться подключаться к другим серверам. Если же соединение небезопасно, то вы так и продолжите работать с LowID (хотя проверки всё равно идут регулярно). Вообще LowID просто так присваивается достаточно редко - данная опция опять же не критична.
Папки. Уже рассматривал. Установка расшаренных директорий, временной папки и папки для скачивания. Кстати, временная папка и папка для скачивания расшарены всегда по определению.
Файлы. Опять же вполне очевидные настойки, не влияющие напрямую на скорость и качество скачивания.
Уведомления. Настройка звуковых сигналов и всплывающих сообщений. Я обычно настраиваю для начала нового чата и нового сообщения.
Статистика. Если Мул отжирает много ресурсов, здесь можно замедлить сбор статистики, чем уменьшить загрузку процессора. Даже на средних компьютерах это не критично.
IRC. Настройка IRC-сервера, ника, прочих настроек IRC.
Безопасность. Здесь можно запретить соединения для пользователей с низким ID. Так же можно запретить соединения по конкретным IP-адресам, если вспомнить, каким образом генерируются эти самые ID. Так же имеется фильтр сообщений, который не будет пропускать сообщения, содержащие в себе перечисленные строки (несколько строк разделяются с помощью "|"). Аналогичный фильтр можно выставить и для комментариев к файлам. Опция "запуск eMule без привилегий Админа" доступна только в системах семейства NT (куда относится так же Windows 2000 и XP), хотя с ней имеется ряд проблем - в таком режиме Мул частенько начинает глючить, по большей части интерфейсом. Про безопасную идентификацию расскажу позже.
Планировщик. Ещё одна настолько же полезная вещь, как и категории. Позволяет задавать изменение настроек eMul'а по расписанию. Понадобиться может только в том случае, если у вас Инет работает по расписанию, когда в зависимости от времени суток надо менять скорость, порты, адреса, сервера и прочее. Достаточно редкая ситуация. Создавать задачи достаточно просто. Единственное, что может вызвать затруднение - это задание действия для конкретного времени. Делается это с помощью правого клика по окну "действия".
Web сервер. Вот это классная штука. Позволяет установить на ваш компьютер web-сервер для удалённого управления Мулом. Включается простым нажатием на флажок "включён". После вводите пароль и можете пользоваться. Веб-сервер будет иметь адрес http://ваш_ip:порт/. Если IP-адрес у вас динамический, то можно воспользоваться одной из следующих служб:
http://directory.google.com/Top/Computers/Software/Internet/
Servers/Address_Management/Dynamic_DNS_Services/
Они позволяют привязать к компьютеру адрес вида "домен.сервис.com", IP которого будет соответствовать вашему компьютеру и который будет меняться, если меняется ваш IP. Тогда по конкретному адресу вы всегда сможете управлять своим Мулом. Управление достаточно простое - веб-интерфейс практически полностью дублирует сам Мул.
Установленный флажок gzip-сжатия указывает на то, что сервер должен поддерживать сжатие трафика. Нужная вещь, которая поддерживается любым браузером и позволяет повысить скорость передачи, уменьшив объёмы передаваемых данных. Шаблон emule.tmpl содержит непосредственно шаблон для веб-интерфейса. Другие шаблоны можно найти в сети или самому сделать, но это уже вещь исключительно оформительская.
Опция "гость" открывает гостевой доступ до вэб-интерфейса, для него можно создать отдельно пароль. Пользователь, зашедший под гостем, может видеть всю информацию о Муле, но менять ничего не в силах. Следующий пункт MobileMule подключает утилиту, с помощью которой управлять Мулом можно с через мобильный телефон, поддерживающиуй Яву.
Другие настройки. Здесь целая куча опций, не вошедших в остальные пункты, большая часть которых достаточно очевидна и не вызывает вопросов. Остановлюсь только на некоторых.
Макс. число соединений за 5 sec: по умолчанию стоит 20. Увеличивать рекомендуется только в том случае, если имеется хороший канал Интернет, такой как LAN.
Макс. полуоткрытых соединений: наибольшее количество соединений, которые открыты, но не используются в данный момент. Официальная рекомендация разработчиков eMule не делать это значение больше 9 для Windows XP SP2. Для остальных систем рекомендуется устанавливать это значение в 50. Вообще максимальное число полуоткрытых соединений влияет на скорость обмена источниками - чем меньше значение, тем медленнее будет идти обмен. В то же время после завершения обмена источниками, за счёт такого жёсткого запрета, скачивание будет идти быстрее, т. к. на эти соединения не будет потерь.
Использовать кредитную систему: должна быть включена. Когда кредитная система работает, в вашей очереди пользователи продвигаются тем быстрее, чем больше они отдали вам. Это логично - давать больше выкачивать тем, кто вам полезен. С учётом того, что у тех, кто отдаёт вам, с большой степенью вероятности работает такая же система (а она работает по умолчанию во всех eMule-клиентах и в ряде других), это окажет хорошее влияние на ваши собственные закачки.
Фильтр сервера и клиентов LAN IP: запрещает соединение с вами пользователей, IP которых не является IP Интернета. Если вы сами находитесь внутри локальной сети, то отключить её просто необходимо, иначе не сможете обмениваться с другими пользователями вашей сети (а даже если сеть небольшая, это достаточно полезно). В общем же случае данная опция защищает вас от появления некорректных источников. Пользователи, которые сами сидят в локалке, да ещё на кривых клиентах, могут по ошибке отправлять вам источники с указанием локального IP, который для вас значить ничего не будет. Не особо критичная настройка, но лучше оставить по умолчанию.
Показать дополнительный контроль: при установленном флажке появляется ряд дополнительных возможностей Мула. К включению обязательна, но рассказывать про расширенные функции я буду опять же несколько позже.
Отключить проверку ЗДФ для разгрузки CPU: эту опцию никогда не стоит включать. Особенно, если работаете в режиме дополнительного контроля. ЗДФ - это "запрошен другой файл". Если проверку отключить, то вы и знать не будете, что у вас такое происходит. В режиме дополнительного контроля всеми этими ЗДФ можно достаточно эффективно управлять, а CPU загружается не так уж и сильно. В английском варианте ЗДФ выглядит как "A4AF" (Asked For Another File, "for" часто на письме пишется просто как "4", поскольку и то и другое имеет одинаковое произношение).
Отключить скачивание с PeerCache: PeerCache это система, которая позволяет ускорить закачку и уменьшить трафик. Если у вашего провайдера несколько пользователей качают один файл (одновременно или в разное время - не важно), то этот файл у провайдера кэшируется и дальнейшее скачивание ведётся уже не из Интернета, а из кэша провайдера. Это и быстрее и дешевле, однако, должно поддерживаться на уровне самого провайдера. Какая ситуация с PeerCache происходит в России, автору не известно. В любом случае работающй PeerCache в Муле хуже не сделает - отключать его смысла нет.
Безопасная запись .met/.dat: это файлы закачек. Ставить рекомендую максимально защищённый способ записи, а не только при выключении компьютера. Несмотря на то что существует целый ряд утилит для восстановления закачек после сбоев (например, отключения электричества), от их применения как-то легче не становится. Установка же максимальной защиты гарантирует вам, что после скачивания полугиговова куска он у вас не пропадёт после непредвиденной перезагрузки.
Подробности.
Описание интерфейса и настроек Мула закончено и теперь пора перейти к теории функционирования самой сети. Может показаться, что это уже ненужное углубление в детали, однако, понимание механизмов eD2k и Kad сильно упрощает работу с P2P.
Когда я сам только поставил Мула, меня больше всего интересовали вопросы рейтинга (где его посмотреть? где посмотреть чужой рейтинг? по каким критериам их сравнивать?), а так же вопросы разрыва соединения (останутся ли мои очки закачек после отключения от сети? останусь ли я в очереди или придётся жать эти тысячи позиций и дальше?). С этих вопросов я и начну.
При первом же запуске eMule генерирует User Hash - уникальный идентификатор пользователя, по которому другие клиенты в дальнейшем cмогут вас узнавать. После выхода на некоторое время из сети, даже если поменяется IP-адрес, при установлении соединения с другим клиентом, ваш Мул будет отправлять свой User Hash, и по нему клиент вас "вспомнит". Про каждого известного пользователя eMule хранит информацию в своих файлах. Перегружать описание конкретными файлами мне сейчас не хочется - полный список используемых файлов я помещу в конце статьи в Приложении I.
Такого понятия как "Рейтинг" в глобальном понимании не существует, и посмотреть его, соответственно, нельзя. eMule считает рейтинг всех пользователей, которые что-то отдали вам или взяли у вас, независимо от других клиентов. Если я отдал клиенту "A" 10 мегабайт, то мой рейтинг для него будет достаточно высок. В то же время я могу иметь низкий рейтинг у клиента "B", которому я не отдал ничего. Как именно считается рейтинг, зависит исключительно от реализации клиента (где-то такой системы вообще нет) и его настроек. Что касается настроек, то в eMule их всего две: либо рейтинги используются, либо нет.
В последних версиях система такая: вначале вычисляется "соотношение" (это кривой русский перевод, в оригинале это звучит как "модификатор"). Для его получения вначале вычисляют два рейтинга:
R1 = ( Upload * 2 ) / Download
R2 = SQRT ( Upload + 2 )
Здесь Upload - это сколько пользователь отдал информации (в мегабайтах), Download - сколько скачал сам (в мегабайтах), SQRT - корень квадратный. В качестве модификатора выбирается наименьшая из этих двух оценок, округлённая до десятых по правилам арифметики. Здесь есть ряд НО:
1). Если в общей сложности было закачано меньше 1 Мб, модификатор устанавливается в единицу.
2). Если пользователь ещё ничего сам не скачивал, модификатор устанавливается в десятку.
3). Если пользователь ещё ничего не качал и не закачивал, модификатор устанавливается всё равно как 1.
4). Максимальное значение модификатора - 10. Минимальное - 1. Если полученные значения выходят за эти диапазоны, то они понижаются/повышаются до единицы/десяти соответственно.
С помощью модификатора вычисляется непосредственно Рейтинг. Изначально он равен 100, умноженный на модификатор и, если пользователь не поддерживает расширенный протокол eMule, делит Рейтинг пополам. Если в окне "файлы обмена" вы устанавливаете файлам приоритеты, то если он запросил файл, приоритет которого низкий/высокий, то и рейтинг его соответственно тоже понижается/повышается. Множители, на которые умножается рейтинг в зависимости от приоритета, такие: 0.2, 0.6, 0.7, 0.9 и 1.8 для "очень низкого", "низкого", "нормального", "высокого" и "очень высокого" соответственно. В ранних версиях эти множители отличаются (вообще в предыдущих версиях eMule рейтинг вычислялся несколько по другим правилам, но таких клиентов сейчас пренебрежимо мало).
Как только пользователь запрашивает у вас какой-либо файл, для него начинают считаться Очки по формуле:
Очки = ( Рейтинг * время_в_очереди_в_сек ) / 100
Порядок, кто в каком будет у вас скачивать, определяется количеством очков - у кого их больше, тот и качает. Естественно, что тот, у кого выше Рейтинг, будет набирать очки быстрее и продвигаться по очереди соответственно тоже быстрее. Само QR показывает положение пользователя в очереди исходя из распределения Очков, и в вычислениях никакого участия не принимает.
Существенный момент, который относится к основным вопросам, которые я оговорил в начале. После получения значения QR от клиента, ваш Мул разрывает с ним соединение - оно не нужно. Как только ваша очередь подходит, сам клиент отправляет вам запрос на закачку. Если вы разорвали соединение и потом вернулись снова, то ваш Мул опять посылает запрос источнику и, даже если у вас сменился IP, источник узнаёт вас по вашему хэшу и сообщает вашу позицию в очереди. Ничего никуда не пропадает (только если свою очередь вы не пропустили).
Теперь пару слов о сетях. Сами закачки идут непосредственно с чужих компьютеров и сеть, которая используется, тут не причём - она нужна только для поиска. eD2k основана на серверной моделе. Есть ряд серверов, подсоединяться можно к любому. После подсоединения сервер выдаёт пользователю ID (назначение которого - различать High и Low; так же ID хранит в себе IP-адрес, формулу генерации ID я приводил выше).
При подключении к eD2k-серверу, eMule отправляет ему информацию о своих расшаренных файлах. Сервер заносит пользователя и его файлы в свою базу источников. Теперь при поиске, если кто-то ищет файл с именем, которое имеется у вас, он выведет вас как источник и отправит страждущему ваш IP-адрес. На этом роль eD2k заканчивается.
Иная ситуация с Kad. В Kademli'и каждый клиент сам по себе является сервером. Какого-либо "главного" сервера не существует - все равны. Для подключения к сети надо знать хотя бы одного клиента, который имеет подключение. Он в свою очередь передаёт адреса других клиентов, те третьих и пошло-поехало. Каждому клиенту (он же сервер) присваивается ID. В этом случае ID это уже не просто число - оно содержит в себе информацию о том, списком источников на какие файлы в основном располагает данный пользователь. Если человек собирает видеоклипы, очевидно, его ID будет содержать информацию о том, что клипы лучше всего искать через него. Углубляться в математические алгоритмы, которые это всё реализуют я не буду, по крайней мере в этой статье.
При получении списка KAD-серверов учитывается иерархия, называемая в eMule дистанцией. Естественно, что отправить запрос на поиск по тысяче адресов как минимум неэкономно, поэтому запрос отправляется только на "ближайшие" сервера, которые в свою очередь отправляют запросы на ближайшие для них и так далее и так далее. При этом учитывается скорость соединения, основная тематика источника и прочее - это материал отдельной статьи, не меньшей по объему, чем эта.
В любом случае назначение сети Kademlia, так же, как и eD2k, исключительно в поиске источников. Отличие Kad в том, что для её функционирования не требуется серверов, но недостатка в последних пока не наблюдается. Если через сеть Kad кто-то ищет что-то у вас, то у вас это отобразится в окне Kad в таблице "поиски в данный момент". Делать с ними ничего нельзя.
Если посмотреть на странице "передачи" в графу "размер" для источников, то там можно увидеть одну из четырёх надписей для каждого клиента: eD2k server, Kad, "обмен" или "пассивный". Надпись указывает на способ, которым был найден этот источник. С Kad и eD2k и так всё понятно; обмен означает, что вы узнали про этот источник в результате опроса других источников, "пассивный" - источник сам к вам постучался за каким-то файлом, и у него оказалась требуемая часть.
После получения списка источников от сервера или из Kad, идёт опрос каждого из них на наличие ещё неизвестных источников (это в случае если закачка запущена). От новых источников вы получаете новые списки и так продолжается, пока источники не "иссякнут". Подключение к какой-либо из сетей при этом не обязательно - можно вообще отрубить eD2k и Kad - закачек это не остановит, и новые источники по-прежнему будут искаться.
Следующий важный момент - это хэш. Каждый файл разбивается Мулом (и другими клиентами - это стандарт eD2k и Kad) на блоки по 9.28 Мб. От каждого блока вычисляется хэш-функция по алгоритму MD4. Когда хэши каждого блока подсчитаны, от всех хешей вместе взятых вычисляется опять же MD4-хэш, который в совокупности с размером и является идентификатором файла. Ссылки на ed2k файлы выглядят следующим образом:
ed2k://|file|name|size|fh|/
С установленным Мулом браузер может обрабатывать такие ссылки так же как и обыкновенные. Здесь file - ключевое слово, обозначающее то, что это именно файл, а не что-то другое (аналогичные ссылки бывают для серверов, источников, списков серверов и пр.), name - имя файла как есть, size - размер файла в байтах, fh - хэш файла. Сам хэш файла официально (в оригинале) называется "File Hash", хэши для конкретных блоков "Part Hashes". Эти самые Part Hashes можно добавлять в ed2k ссылку:
ed2k://|file|name|size|fh|p=ph_1:ph_2:...:ph_n|/
Part Hashes отделяются друг от друга двоеточиями. Полный набор Part Hashes называется Hashset (в ссылках можно указывать только полный Hashset, указание только отдельных Part Hashes не допускается).