...
...

Популярное введение в пиринговые сети: eMule

Что можно найти в Интернете? Странновато звучит, не правда ли? Действительно, во Всемирной паутине есть почти все. Однако это "все" иногда так спрятано, что разыскать бывает почти нереально. Стоящие вещи выкладываются редко, ссылки дохнут как мухи, а там, где есть нужный контент, стоит куча ограничений (время, скорость закачки, количество Мб в день и т.д.). Кошмар!

Введение


Решить подобные проблемы помогают P2P-сети. Вы, наверное, часто слышали это слово, однако для многих их природа до сих пор остается загадкой. Итак, что же такое P2P, или пиринговая сеть? Понятие Р2Р (peer-to-peer) подразумевает общение и передачу файлов между компьютерами в сети напрямую без посредников. Это значит, что для передачи свежего фильма от Васи к Пете не будет задействовано никаких промежуточных серверов, а значит, скорость закачки будет выше. Это далеко не единственный плюс Р2Р. Чем больше человек участвует в пиринговой сети, тем лучше. Представьте, что своими файлами обмениваются несколько миллионов человек, у каждого из которых есть хотя бы один гигабайт информации. Почти 1.000.000 Гб! Добавьте еще специальные файловые хранилища энтузиастов, огромные объемы данных на Р2Р-серверах… Миллионы гигабайт файлов. Во всей этой куче-мале есть вообще все: от свежих фильмов и музыки до исходных кодов вирусов и операционных систем. Что, потекли слюнки? Еще бы, только вот незадача. С непривычки начать пользоваться Р2Р не так просто — нужно "почувствовать" ее особую идеологию и правила. Уважаемый читатель, постараемся сегодня сделать это вместе.

На сегодняшний день существует множество Р2Р сетей: BitTorrent, Shareaza, ed2k и т.д. Наиболее распространенной является последняя. Чем более распространена пиринговая сеть, тем больше вероятность найти редкий и уникальный файл, поэтому мы с вами будем использовать именно ed2k. Для работы с Р2Р необходима специальная программа-клиент, причем для каждой сети она своя. Да-да, к сожалению, скачать файлы из пиринговой сети с помощью интернет-браузера не получится. Так что придется дополнительно скачивать Р2Р-клиент для работы. Оригинальным клиентом к ed2k является программа eDonkey2000, однако она малофункциональна и является еще и платной, поэтому практически никем не используется. К счастью, существует множество сторонних ed2k-клиентов: eMule, eDHybrid, aMule, MLDonkey и т.д. Самым лучшим из них безоговорочно является eMule. Этот некоммерческий проект с открытым исходным кодом обладает лучшей функциональностью среди всех Р2Р-клиентов. КГ уже не в первый раз пишет о пиринге и eMule. Отсылаю всех интересующихся по линку: сайт (КГ №20 за 2005 г.).

Приступим… точнее, преступим

Для начала объясню, почему и что мы преступим. Хм… В пиринговых сетях закон не писан: что хочу, то и выкладываю, что хочу, то и качаю. Это значит, что никакими авторскими правами не пахнет и близко. Так что, скачивая фильмы, музыку и пр., мы преступаем закон. Вы, наверное, не раз читали, в том числе и на страницах нашей КГ, о судебных разбирательствах с активными пользователями Р2Р. Некоторым из них даже дали немалый тюремный срок. Не беспокойтесь: у нас еще до этого еще очень далеко (в смысле судебных разбирательств), но факт нарушения закона остается фактом. Не могу удержаться, чтобы не рассказать еще об одном курьезном случае, связанном с Р2Р и произошедшем в России. Один из сотрудников государственной службы и горе-фанат Р2Р случайно выложил в сеть секретные чертежи. Оплошность заметили почти сразу: добропорядочный гражданин сообщил о доступности информации государственной важности. Файлы тут же убрали из общего доступа, сотрудника уволили, и дело с концом, однако кто знает, сколько еще подобного добра гуляет по бескрайним просторам пиринговых сетей. Так что помните: вы всегда качаете информацию исключительно на свой страх и риск. Говоря о Р2Р, нельзя не упомянуть еще об одном. Скачав файлы, ОБЯЗАТЕЛЬНО ПРОВЕРЬТЕ ИХ АНТИВИРУСОМ: вы рискуете подхватить опасную заразу. Пиринговые сети особенно грешат троянами, звонилками и прочими вредоносными программами, MyDoom, например, также распространялся через Р2Р (а сейчас там без проблем можно найти его исходник). Кстати, качая "варезный" софт, можно получить и неизвестного троянского коня, которого ваш антивирус вовсе не заметит. Впрочем, хватит вас пугать, иначе вовсе пропадет желание использовать Р2Р, и ed2k в частности. Лучше заходите на сайт и скачивайте последнюю версию программы eMule (на момент написания статьи уже была доступна 0.47a). Кстати, есть и русская версия.

Скачиваем, запускам инсталлер, раз-два, и eMule установлен у нас на компьютере. Появится окно "Первый запуск" — здесь нужно указать основные настройки для дальнейшей работы. Первое, что у нас спросят, это ник — имя, под которым вы будете представлены другим пользователям. Теперь внимание: напечатав свое виртуальное имя, обязательно добавьте в скобках слово "rus". Пример: Golovanix (rus). Без этого вас не пустят на некоторые российские серверы. Наверняка существуют и другие приставки — например, "usa" или "fin", — которые дают доступ на национальные серверы этих стран. В этом же окне можно установить птички для автоматического запуска eMule вместе с Windows и автоматического соединения при подключении к Интернету. Далее нам предложат настроить порты, через которые будет проходить Р2Р-трафик. Если не установлены прокси-серверы и брандмауэры, то оставляйте все как есть. Так или иначе, порты eMule для работы должны быть полностью открыты. Кстати, после установки многих Р2Р- клиентов антивирусы поднимают тревогу, мол, хакерская атака и пр. Не беспокойтесь: никакой хакерской атаки тут нет, просто в своей работе эти программы используют прямой доступ к IP-адресу. Это иногда не нравится антивирусным модулям. После еще нескольких окон вам предложат настроить скорость вашего интернет-соединения. Ее надо установить по возможности максимально точно, но не забывайте, что другим приложениям также нужен свободный канал. Все, с предварительной настройкой программы покончено — в дальнейшем вы без труда сможете что-то перенастроить под себя, а наш eMule готов к работе. Как я уже говорил, передача файлов между клиентами в Р2Р осуществляется без каких-либо промежуточных серверов. Тем не менее, для функционирования многих пиринговых сетей включая ed2k нужен специльный сервер, координирующий работу клиентов. Он не участвует в процессе передачи файлов, а лишь обеспечивает слаженную работу обеих сторон и поиск файлового контента. В состав eMule входит небольшой список работающих серверов, но его можно легко дополнить. Чем больше серверов будет знать наш Ослик, тем лучше. Их список содержится в специальном файле server.met, последнюю версию которого можно скачать с сайта сайт При каждом соединении eMule дополнительно выкачивает некоторое количество серверов самостоятельно из информации, полученной от других клиентов. Чтобы посмотреть список всех известных программе серверов, нажмите одноименную кнопку на панели инструментов.

При подключении к серверу вам выдается специальный ID — идентификационный номер. ID вычисляется по формуле:
ID=A+256хB+256х256хC+256х256х256хD, где A.B.C.D — это ваш IP-адрес. Дополнительно к ID приписывается одна из двух приставок: HighID или LowID. Первое — это хорошо. HighID обеспечивает полноценную и беспрепятственную работу в ed2k. А вот минусов LowID много. В первую очередь LowID получают те пользователи, у которых имеются проблемы с сетью: неправильно настроен маршрутиризатор/роутер/прокси-сервер либо порты для работы перекрываются файрволлом. Также LowID можно получить, если ваш канал сильно загружен либо перегружен сервер, к которому вы подключаетесь. Два пользователя с LowID не могут обмениваться файлами — некоторые серверы не пускают таких пользователей, некоторые вообще игнорируют или выделяют минимум скорости. В общем, LowID — это плохо. Определить ваш текущий ID проще простого. Он показывается внизу справа, кроме того, можно использовать пиктограмму глобуса в панели состояния (внизу). Глобус имеет две стрелки. Зеленый цвет стрелок означает HighID, желтый — LowID, а красный — отсутствие соединения. Прежде чем начать скачивать файлы, нужно определиться, что же будут качать у нас. Не удивляйтесь: девиз сети ed2k (и вообще большинства других пиринговых сетей): сколько отдал, столько получил. Поэтому заходите в Настройки (одноименная кнопка на панели инструментов) и далее слева в списке выбирайте пункт Папки. Видите бокс Папки обмена? Здесь можно расшаривать (открывать для общего доступа) свои директории. Сделать это проще простого: отмечаем нужные директории птичками, и дело с концом. (Небольшая подсказка: если необходимо расшарить информацию из папки с поддиректориями, выделяйте ее, удерживая клавишу Ctrl). Грубейшей ошибкой многих новичков является расшаривание содержимого всего жесткого диска. Никогда так не делайте! Есть золотое правило: открывайте только те файлы, которые хотели бы скачать сами. Это легко объяснить. Хотя ed2k — многомиллионная сеть пользователей, общение в ней происходит в основном по интересам. Предположим, вы программист — значит, вам в первую очередь интересна информация "программистской" направленности, т.е. компиляторы, компоненты и RTFM. Но вот новый альбом группы "Корни" качать вы точно не будете. Тогда какой смысл другому программисту, слушающему группу "Корни", расшаривать их новый альбом и разбазаривать драгоценный трафик не на единомышленников, а на фанатов русской поп-музыки? Правильно: никакого, поэтому тщательно отбирайте директории для расшаривания.

Что ж, предположим, вы уже определились с открытыми файлами, теперь самое время подключиться к ed2k! Для начала нужно проверить активность своего интернет-соединения, после чего нажать в eMule кнопку Соединение (желтая кнопка с молнией). Через несколько секунд eMule соединится, выдаст вам ID, а также автоматически подключится к пиринговой сети Kademlia (сокращенно Kad), которую он тоже поддерживает. Из Kad мы тоже будем качать, причем довольно много. Работа с этой сетью полностью автоматизирована, так что eMule будет вытаскивать файлы сразу из двух сетей при работе. А что, собственно, качать? — спросите вы. Правильно, прежде чем скачивать какой-либо файл из бескрайних просторов ed2k, его нужно сначала найти, а это целое дело. Нажмите в eMule кнопку Поиск, чтобы зайти в одноименный раздел. В самом простом случае достаточно набрать название нужного файла, например, Windows Vista, в графе Имя и нажать Старт. Дополнительно можно указывать тип файла и метод поиска (лучше всего использовать Глобальный). Пример: Имя: Windows Vista, Тип: Образ CD, Метод: Глобальный. Подобный запрос поможет найти iso-образ новой операционной системы от Microsoft (размер нешуточный — под 3 Гб). Если и этого покажется мало, то еще можно ограничить минимальный и максимальный размер, расширение и т.д. Интересен сам синтаксис поисковых запросов. Если вы печатаете в строке поиска Windows Vista, то в результате будут показаны только те файлы, в имени которых содержится слова и "Windows", и "Vista". Другими словами, пробел интерпретируется как логический оператор И (AND), т.е. Windows AND Vista — это то же самое. Помимо И, есть еще два оператора: ИЛИ (OR) и НЕТ (NOT). Поскольку NOT имеет больший приоритет, чем OR, в запросе нужно использовать скобки. Чтобы было понятнее, привожу два примера.

Alina Kabaeva NOT erotic — отобразятся файлы, связанные с Алиной Кабаевой, но без эротической направленности. Как и в web-поисковых системах, грамотное формирование запроса положительно влияет на результаты поиска, поэтому стоит использовать логические операторы. После того, как вы набрали нужный запрос и нажали Старт, eMule опросит все серверы на наличие необходимого файла и выведет результат. Сама процедура опроса достаточно продолжительна, особенно если известно много серверов, поэтому придется подождать, прежде чем вы увидите результат. Кстати, трафик процедура поиска тоже съедает немалый. Так или иначе, перед вами окажется список всех подходящих файлов. Можно приступать к его изучению. Во- первых, двух одинаковых файлов вы не увидите. В сети ed2k уникальность файла определяется не именем и размером, а уникальным MD4-хэшем, который генерируется для файла в момент расшаривания. Поэтому даже если два файла имеют одинаковое имя, знайте: они различны. Изучая список результатов, особое внимание нужно обращать на графу Доступность. Здесь указывается количество человек, у которых данный файл имеется хотя бы частично. Чем больше источников имеют затребованный файл, тем лучше: информация передается частями, и, соответственно, чем больше частей, тем выше будет суммарная скорость закачки. Лучше, чтобы число источников было не менее 5. Предположим, вы выбрали нужный файл, как же его закачать? Очень просто: кликните по нему два раза, и нужный файл окажется в разделе Передачи, т.е. начнет передаваться к вам на компьютер. Итак, нужные файлы найдены и поставлены на закачку, но… они не качаются! Из-за этого многие сразу же забивают на eMule и Р2Р в целом, так и не разобравшись, в чем, собственно, дело. А дело вот в чем. В данной пиринговой сети (как и во многих других) существуют такие понятия, как рейтинг и очередь. Правило простое: чем больше отдал, тем выше рейтинг. Если Вася отдаст Пете фильм "Дневной дозор", то его рейтинг у Пети значительно подрастет. В то же время рейтинг Васи у других пользователей останется неизменным, поскольку они у него ничего не загрузили. Система рейтингов ведется неспроста: рейтинг определяет ваше положение в очереди на скачивание файла. Важно то, что очередь на закачку продвигается не как в магазине, а в соответствии с тем, кто больше отдал данному клиенту информации. Если вы кликнете дважды по файлу в разделе Передачи, то увидите в выпадающем списке все источники, которые вам его отдают, а в графе Приоритет — значение QR (query rating, или ваше положение в очереди). QR напрямую зависит от рейтинга, который вы имеете у каждого источника, поэтому чем он выше, тем меньше значение QR и тем быстрее начнется закачка.

Хитрости, премудрости…

Поначалу вам придется качать без рейтинга, а это в первую очередь не радует пользователей Dial-up. В очереди придется стоять намного дольше, да и скорости будут низкими — в общем, перспектива использования eMule выглядит не радужной. Но так ли все плохо?

Специальные очки для определения QR вычисляются по формуле Очки = (Рейтинг * время_в_очереди_в_сек)/100. Вы видите, что те пользователи, у которых рейтинг невелик, будут набирать свои очки за счет времени простоя в очереди. Однако для того, чтобы стоять в ней, вовсе необязательно все время быть online! eMule устроен таким образом, что после получения QR программа разрывает соединение с удаленным компьютером: оно не нужно. В то же время, "на том конце провода" начинает начисляться QR, и, как только подойдет ваша очередь, удаленный клиент сам отправит запрос на закачку. Таким образом, после того, как вы поставили файлы на закачку, можно отключиться от Интернета и подключиться вновь через некоторое время. Не волнуйтесь: ваш источник узнает вас даже если изменится ваш IP-адрес, поскольку аутентификация в сети ed2k выполняется по User Hash — уникальному идентификатору каждого пользователя. Другой вопрос, через какое время вновь подключаться: главное — чтобы наша очередь не прошла. Если значение QR очень велико (5000-6000), стоит попробовать подключиться через 10-12 часов. Если QR меньше (порядка 1000), то повторное подключение можно предпринять часа через три-четыре. В общем, как повезет. Зато, если вам начнут передавать данные сразу 5-6 клиентов, вы будете приятно удивлены скоростью закачки. Свободная полоса соединения будет использована полностью! (Конечно, для этого нужно в настройках установить максимальную скорость на прием и минимальную на отдачу). Кстати, чтобы уж совсем "забить" свободную полосу, надо отключить службу QoS. Напомню: эта системная служба может выделять до 20% трафика по требованию, т.е. будет обеспечивать минимальную скорость для интернет-браузера, в то время как eMule будет честно стараться выжать из коннекта все. Поэтому либо отключайте данную службу, либо не используйте больше никаких сетевых приложений во время загрузки в eMule. Вы спросите, есть ли способы обойти QR и начинать качать сразу? Ответ отрицательный, хотя…

Есть такое понятие в eMule, как дружба. Предположим, файл, который вам позарез нужен, есть только у одного пользователя. Смело щелкайте по его имени правой кнопкой и одноименным пунктом меню добавляйте в друзья. После этого из того же меню посылайте ему сообщение, в котором постарайтесь его убедить включить вас в свой список друзей. Лучше всего писать на английском — самая большая вероятность, что вас поймут. Зачем все это нужно? В eMule друзья начинают закачку без очереди, т.е. друг всегда имеет наименьший QR. Для этого достаточно выставить своему другу Дружественный слот (правым кликом в окне Сообщения), однако учтите, что передачи файлов между друзьями на рейтинг не влияют. Далее: в Интернете можно встретить множество модификаций eMule, которые якобы ускоряют процесс скачивания. Это не совсем верно. Чтобы в этом убедиться, нужно углубиться в работу протокола ed2k. Регулярно eMule отправляет запросы клиентам, у которых мы что-то качаем, на предмет текущего места в очереди, обмена источниками и т.д. Каждый такой запрос он посылает раз в 10 минут. Многие клиенты устроены таким образом, что чем чаще им шлешь запросы, тем быстрее продвигаешься в очереди, поэтому все модификации делают именно так. Однако сам eMule моментально банит всех клиентов, которые посылают запросы чаще, чем раз в 10 минут. Бан — это все равно что блэк-лист, т.е. после этого мы уже не сможем вообще ничего качать у этого человека. Учтите, что оригинальная версия eMule установлена у 90% клиентов ed2k, так что подобные модификации могут серьезно повредить. И последний, самый малоэффективный, способ увеличить скорость загрузки — отключить сеть Kad. Вспомните: eMule работает с двумя пиринговыми сетями сразу — значит, мы всегда соединены с ed2k и Kad одновременно. Во время закачки файла через ed2k через Kad может вестись поиск на вашем компьютере, что немного забивает канал. Отключив Kad, мы освободим какую-то часть трафика, но многого все равно не выиграем.

Напоследок

Напоследок полезный совет: если вам придется переустанавливать систему, обязательно скопируйте файлы preferences.dat и cryptkey.dat (директория Emule\config). В них содержится информация о вашем User Hash и рейтинге. После новой установки замените ими оригинальные файлы — в противном случае вы потеряете все рейтинги!
Подведем итог: в этой статье вы познакомились с принципами работы eMule и пиринговой сети ed2k. Если тема пиринговых сетей вам интересна, напишите мне об этом на e-mail. Возможно, в свет выйдут еще несколько статей о P2P. Удачи!

Для справки: Kad устроена по другой иерархии, нежели ed2k. В данной сети каждый клиент сам по себе является сервером, т.е. все равны. Для подключения к Kad достаточно знать адрес хотя бы одного клиента. Он передаст адреса известных ему пользователей, те пользователи — известных им, и пошло-поехало. Так мы очень быстро наберем огромный список клиентов. Каждому из них в Kad присваивается универсальный номер — ID. Однако этот ID — не просто случайное число. В нем зашифрована информация о файлах, которых у вас больше всего. Т.е., если у вас полно видеоклипов, то благодаря вашему ID у вас будут качать только видеоклипы. Все это обеспечивают сложные математические алгоритмы. При поиске в Kad используется такое понятие, как дистанция. Дистанция характеризует сетевое расстояние до клиента, т.е. его доступность, скорость канала, тематику файлов и т.д. Благодаря этому поисковый запрос отправляется только на ближайшие серверы, оттуда — на ближайшие к ним и т.д. — аналогично схеме подключения. Получается крайне эффективная система поиска.

На официальном сайте я нашел описание основных файлов eMule ( сайт ). Предлагаю вам краткий перевод:

known.met — здесь сохранена вся информация обо всех файлах, с которыми когда-либо доводилось работать Мулу (расшаренные, загруженные и те, которые качаются в данный момент); содержатся их названия, размеры, статистика, адреса и хэши.
clients.met — информация обо всех пользователях, которые когда-либо что-либо качали или отдавали пользователю;
servers.met — содержит все известные серверы;
emfriends.met — список друзей;
preferences.ini — содержит все настройки Мула (часть из них доступна только из этого файла);
ipfilter.dat — содержит информацию об ip-фильтре;
preferences.dat — содержит хэш пользователя;
sharedir.dat — содержит пути до всех расшаренных директорий;
staticservers.dat — содержит информацию о постоянных (статических, не меняющих IP и постоянно работающих) серверах;
adresses.dat — если в нем указан адрес файла server.met (URL или путь на диске), то каждый раз при загрузке eMule будет обновлять свой список оттуда;
cryptkey.dat — содержит в себе ключ RSA для безопасной аутентификации.

Алексей Голованов, AlekseyGolovanov@mail.ru

© Компьютерная газета

полезные ссылки
Оффшорные банковские счета