eMule — это бесплатное приложение для обмена файлами по пиринговой сети для Microsoft Windows . Запущенное в мае 2002 года как альтернатива eDonkey2000 , eMule теперь подключается как к сети eDonkey , так и к сети Kad . Отличительными особенностями eMule являются прямой обмен источниками между клиентскими узлами, быстрое восстановление поврежденных загрузок и использование кредитной системы для поощрения часто загружающих пользователей. Кроме того, eMule передает данные в сжатом zlib виде для экономии полосы пропускания.
eMule написан на языке C++ с использованием Microsoft Foundation Classes . С июля 2002 года eMule является свободным программным обеспечением , выпущенным по лицензии GNU General Public License ; его популярность привела к использованию кодовой базы eMule в качестве основы кроссплатформенных клиентов aMule , JMule , xMule , а также к выпуску множества модов eMule (модификаций оригинального eMule) в Интернете.
По состоянию на октябрь 2023 года [обновлять]это пятый по количеству загрузок проект на SourceForge , с более чем 693 миллионами загрузок. [5]
Разработка была позднее возобновлена сообществом как eMule Community ; последняя стабильная версия — 0.70b. [4]
Проект eMule был начат 13 мая 2002 года Хендриком Брайткройцем (также известным как Merkur), который был недоволен исходным клиентом eDonkey2000 . Со временем к работе присоединилось больше разработчиков. Исходный код был впервые выпущен в версии 0.02 и опубликован на SourceForge 6 июля 2002 года.
eMule был впервые выпущен как двоичный файл 4 августа 2002 года в версии 0.05a. «Кредитная система» была впервые реализована 14 сентября 2002 года в версии 0.19a. Веб-сайт проекта eMule был запущен 8 декабря 2002 года.
Текущие версии (v0.40+) eMule добавили поддержку сети Kad . Эта сеть имеет реализацию протокола Kademlia , которая не полагается на центральные серверы, как сеть eDonkey , а является реализацией распределенной хэш-таблицы .
В последних версиях также была добавлена возможность поиска с использованием Unicode , что позволяет искать файлы с нелатинскими алфавитами, а также возможность искать на серверах файлы с полными источниками незавершенных файлов в сети eDonkey .
В новых версиях добавлен «Список плохих источников». Приложение добавляет IP-адрес в этот список после одного неудачного подключения. После добавления IP в «Список плохих источников» приложение рассматривает этот IP как «мертвый» IP. Недоступные IP-адреса блокируются на период времени от 15 до 45 минут. Некоторые пользователи жаловались, что это приводит к потере активных источников и, как следствие, к снижению скорости загрузки.
Другие недавние дополнения включают: возможность запуска eMule из учетной записи пользователя с ограниченными привилегиями (что повышает безопасность) и AICH (что позволяет не загружать повторно поврежденный фрагмент целиком).
В версии 0.46b добавлена возможность создания и управления файлами «eMule collection», которые содержат набор ссылок на файлы, предназначенные для загрузки в виде набора.
С 2007 года многие интернет-провайдеры использовали регулирование пропускной способности для обычных портов P2P, что приводило к снижению производительности. [6] Версия 0.47b добавляет обфускацию протокола , и eMule автоматически выбирает два случайных номера порта в мастере запуска.
Каждый файл, который передается с помощью eMule, хэшируется как список хэшей , состоящий из отдельных фрагментов по 9500 КиБ с использованием алгоритма MD4 . Хэш MD4 верхнего уровня , размер файла, имя файла и несколько вторичных атрибутов поиска, таких как битрейт и кодек, хранятся на серверах eD2k и в сети Kad без сервера .
Пользователи могут искать имена файлов в servers/kad и им предоставляются имена файлов и уникальный идентификатор, состоящий из MD4-хеша верхнего уровня для файла и размера файла, который может быть добавлен к их загрузкам. Затем клиент спрашивает серверы, где другие клиенты используют этот хеш. Серверы возвращают набор IP/портов, которые указывают местоположения клиентов, которые совместно используют файл.
Затем eMule запрашивает у пиров файл. Затем eMule будет поставлен в очередь, пока не станет доступен слот для загрузки.
После загрузки и проверки полного фрагмента размером 9 728 000 байт (9500 КиБ) загрузчик также делится этими данными, помогая другим также загрузить файл.
Также возможно, что клиент знает других клиентов, которые также делятся этим же файлом. В этом случае между клиентами происходит обмен источниками. Этот обмен известными пирами выполняется напрямую между пирами.
Более новые версии eMule поддерживают AICH ( Advanced Intelligent Corruption Handling ). Это сделано для того, чтобы сделать обработку повреждений eMule конкурентоспособной с BitTorrent . Хэши SHA-1 вычисляются для каждого 180-килобайтного фрагмента, и формируется целое дерево хэшей SHA- 1. AICH обрабатывается исключительно с помощью одноранговых исходных обменов. eMule требует 10 согласованных одноранговых узлов относительно хеша SHA-1, поэтому редкие файлы, как правило, не получают выгоды от AICH.
Пользователи, которые не могут быть доступны извне, потому что они защищены брандмауэром , находятся за устройством NAT , на котором неправильно настроена переадресация портов , или чей IP-адрес заканчивается на ноль (например, 123.45.67.0) [7], получают от серверов «Low ID». Они по-прежнему могут загружать и скачивать, но нуждаются в помощи серверов или других клиентов kad , чтобы другие клиенты могли с ними связаться. Поскольку они не могут быть уведомлены о том, что находятся перед очередью загрузки, им приходится опрашивать пиров, доступен ли слот загрузки. Поскольку они не могут подключиться ни к каким другим клиентам с низким идентификатором, они видят только 40–60% [8] клиентов, которых может видеть High ID. Их IP-адреса /порты не обмениваются между собой, что ограничивает их возможности по поиску источников с помощью чистого обмена источниками eMule P2P.
Клиент с низким ID также потребляет гораздо больше данных [9] на eserver, чем клиент с высоким ID из-за обратных вызовов lowid. Кроме того, релизер или тяжелый загрузчик, использующий мод релизера, такой как MorphXT или Xtreme, который вынужден работать с низким ID (гостиничный номер, работа), также обнаружит, что у него будет мало контроля над приоритетами загрузки (особенно powershares), поскольку серверы, по-видимому, ограничивают переадресацию соединений для каждого клиента, тем самым превращая свою очередь загрузки в ситуацию конкуренции, когда первый, кто сможет получить переадресацию и найти открытый слот, получает ее.
Кредиты не являются глобальными; они обмениваются между двумя конкретными клиентами. Система кредитов используется для вознаграждения пользователей, вносящих вклад в сеть, т. е. загружающих данные другим клиентам. Строгая система очередей в eMule основана на времени ожидания, которое пользователь провел в очереди. Система кредитов обеспечивает основной модификатор этого времени ожидания, принимая во внимание загрузку и скачивание между двумя клиентами. Чем больше пользователь загружает данные клиенту, тем быстрее он продвигается в очереди этого клиента. Модификаторы рассчитываются на основе объема переданных данных между двумя клиентами. Используемые значения можно увидеть в диалоговом окне сведений о клиенте. Чтобы просмотреть эту информацию, щелкните правой кнопкой мыши любого пользователя и выберите «Просмотреть сведения».
Все клиенты, загружающие вам файлы, вознаграждаются кредитной системой. Неважно, поддерживает ли клиент кредитную систему или нет. Неподдерживающие клиенты не предоставят вам кредитов, когда вы загружаете им файлы. Кредиты хранятся в файле clients.met. Уникальный хэш пользователя используется для идентификации клиента. Ваши собственные кредиты сохраняются клиентом, который должен вам кредит. Это предотвращает подделку кредитов. Ваши собственные кредиты не могут быть отображены.
Формула расчета официальной кредитной системы состоит из двух следующих соотношений: [10]
Затем оба соотношения сравниваются, и меньшее из них используется в качестве модификатора. Существует несколько условий:
Исключение из этого правила применяется только тогда, когда пиру назначается «слот друга» после добавления в список друзей клиента. Это автоматически назначает зарезервированный слот загрузки для этого пира, чтобы он/она мог начать загрузку независимо от кредитного рейтинга. Только один слот друга может быть зарезервирован, чтобы предотвратить любую форму злоупотребления, такую как дискриминация загрузки. [11]
eMule считается наиболее полной реализацией протокола eD2k и его расширений [ кем? ] . eMule поддерживает AICH, что делает его обработку повреждений конкурентоспособной с BitTorrent . eMule также поддерживает обмены источниками, что позволяет ему существенно снизить нагрузку на серверы и Kad. Благодаря высокому идентификатору и хорошо организованным загрузкам, предварительно полученным сервером и/или Kad, eMule может дольше поддерживать независимость одноранговых источников этих файлов после отключения от eD2k и Kad.
Как популярная программа с открытым исходным кодом, eMule имеет множество вариантов, обычно называемых модами. Некоторые моды начинались как ответвления официальных версий eMule, а затем продолжали развиваться независимо, а не модифицировали новые официальные версии. Примером такого типа мода является устаревший eMule Plus . Поскольку eMule Plus отделился до выпуска v0.30, первой официальной версии, включающей Kad, eMule Plus не поддерживает эту функцию, в основном потому, что разработка проекта была заброшена около 4 лет назад. Другие текущие моды следуют официальным выпускам eMule и выпускают собственные релизы на основе каждого нового выпуска официальной версии. Поскольку распространяемые моды обязаны публично делиться своим исходным кодом в соответствии с GNU General Public License, полезные функции, созданные разработчиками модов, могут быть быстро включены в официальную версию.
Из-за популярности и открытого исходного кода eMule некоторые третьи лица создали его модифицированные версии, которые часто содержат шпионское ПО и другие вредоносные программы. Некоторые поддельные сайты запрашивают данные кредитной карты или требуют от пользователя зарегистрироваться для платного членства. Официальный eMule бесплатен и не запрашивает такую информацию.
Эти версии обычно можно найти через вращающиеся объявления, иногда размещаемые на легальных сайтах. [12] [13]
easyMule от VeryCD — популярный клиент eMule среди китайских пользователей. Он имеет упрощенный интерфейс и не имеет некоторых расширенных настроек, доступных в стандартном клиенте eMule. Начиная с версии 1.1 он поддерживает только поиск по базе данных VeryCD, хотя внешние ссылки eD2k принимаются. Некоторые критиковали VeryCD за вводящее в заблуждение название «Dianlv» ( китайский :电驴; пиньинь : Diàn Lǘ ; букв. «Электронный осел»; обычно китайское название eDonkey или eMule) и сайт emule.org.cn, который называется «Китайский сайт Dianlv (eMule)» (电驴(eMule)中文网站). [14] [15]
29 июля 2017 года была выпущена «Community Version» eMule [16], поддерживаемая официальными пользователями форума. Эта версия доступна для загрузки в репозитории GitHub и основана на последнем официальном релизе или бета-версии, но содержит дополнительные функции и исправления ошибок, сделанные сообществом, отдавая приоритет более актуальной версии. [17]