Введение

Сеть обмена файлами eDonkey Network (также известная как сеть eDonkey2000 или eD2k) — это децентрализованная, преимущественно серверная, одноранговая сеть обмена файлами, созданная в 2000 году американскими разработчиками Джедом МакКейлом и Сэмом Яганом. Она лучше всего подходит для обмена крупными файлами между пользователями и обеспечения их долгосрочной доступности. Как и большинство сетей обмена файлами, она децентрализована, поскольку не имеет центрального узла; файлы также не хранятся на центральном сервере, а обмениваются напрямую между пользователями на основе принципа "от однорангового узла к одноранговому узлу". Серверная часть сети представляет собой проприетарное бесплатное программное обеспечение. Существует два семейства серверного программного обеспечения для сети eD2k: оригинальное от MetaMachine, написанное на C++, с закрытым исходным кодом и проприетарное, которое больше не поддерживается; и eserver, написанный на C, также с закрытым исходным кодом и проприетарное, хотя и доступное бесплатно для различных операционных систем и компьютерных архитектур. Семейство eserver в настоящее время активно разрабатывается и поддерживается, и по состоянию на 2008 год почти все серверы eD2k работают на этом программном обеспечении. Существует множество программ, выступающих в качестве клиентской части сети. Наиболее известны eDonkey2000, оригинальный клиент от MetaMachine, с закрытым исходным кодом, но бесплатный, который больше не поддерживается, но был очень популярен в свое время; и eMule, бесплатная программа для Windows, написанная на Visual C++ и лицензированная под GNU GPL. Изначальный протокол eD2k был расширен последующими версиями программ eserver и eMule, которые обычно работают вместе, определяя, какие новые функции должен поддерживать протокол eD2k. Однако протокол eD2k не имеет официальной документации (особенно в его текущем расширенном состоянии), и можно сказать, что на практике протокол eD2k — это то, что делают eMule и eserver вместе во время работы, а также то, как клиенты eMule взаимодействуют друг с другом. Поскольку eMule имеет открытый исходный код, его код свободно доступен для анализа работы протокола. Примеры расширений протокола eD2k включают "обмен данными между клиентами", "маскировку протокола" и поддержку файлов размером более 4 гигабайт и т. д. Другие клиентские программы eD2k, со временем, обычно следуют этому примеру, внедряя эти расширения протокола. Клиентские программы eDonkey подключаются к сети для обмена файлами. Серверы eDonkey служат узлами связи для клиентов, позволяя пользователям находить файлы в сети. Клиенты и серверы доступны для Windows, Mac OS X, Linux и других Unix-подобных операционных систем. Любой пользователь может добавить сервер в сеть, запустив серверную программу eDonkey на компьютере, подключенном к Интернету. Поскольку количество серверов и их адреса часто меняются, клиентские программы регулярно обновляют свои списки серверов.

Идентификация хэша

Файлы в сети eDonkey идентифицируются уникальным образом с помощью MD4-хэша верхнего уровня, вычисленного на основе MD4-хэш-листа файла. Это позволяет рассматривать файлы с идентичным содержимым, но разными именами, как один и тот же файл, а файлы с разным содержимым, но одинаковым именем, – как разные. Файлы разделяются на полные фрагменты размером 9 728 000 байт (9500 КиБ) плюс остаточный фрагмент, и для каждого из них вычисляется отдельная 128-битная MD4-контрольная сумма. Таким образом, при обнаружении ошибки передачи повреждается только один фрагмент, а не весь файл целиком. Более того, корректно загруженные фрагменты становятся доступными для обмена до завершения загрузки всего файла, что ускоряет распространение больших файлов по сети. Идентификационная контрольная сумма файла вычисляется путем последовательного объединения MD4-контрольных сумм фрагментов и последующего хеширования полученной последовательности. В криптографических терминах, список MD4-контрольных сумм является хэш-листом, а идентификационная контрольная сумма файла – коренным хэшем, также называемым верхним хэшем или мастер-хэшем. Из-за уязвимости MD4 к коллизионным атакам злоумышленник может создать два различных фрагмента с одинаковой контрольной суммой.

Поиск

Сеть eDonkey поддерживает поиск файлов по имени и ряду дополнительных характеристик, таких как размер, расширение, битрейт и т.д. Версии eserver Lugdunum (серверное программное обеспечение eDonkey) поддерживают сложные булевы запросы, например, 'один И два И (три ИЛИ четыре) И ("пять четыре три" ИЛИ "два один") НЕ семь'. Для упрощения поиска файлов некоторые веб-сайты публикуют контрольные суммы востребованных файлов в виде eD2k-ссылок. Некоторые из этих веб-сайтов также предоставляют списки активных серверов для обновления пользователями.

История

В 2004 году сеть eDonkey обогнала FastTrack и стала самой широко используемой сетью файлообмена в Интернете. Хотя данные меняются ежечасно, по состоянию на середину 2005 года, по оценкам, в сети одновременно находилось от двух до трех миллионов пользователей, обменивающихся от 500 миллионов до двух миллиардов файлов через 100–200 серверов. Самым популярным сервером сети в свое время был Razorback2, который обычно обслуживал около одного миллиона пользователей. Примерно 21 февраля 2006 года серверы Razorback2 были подвергнуты рейду и конфискованы федеральной бельгийской полицией. В настоящее время DonkeyServer No1 и DonkeyServer No2 вместе обеспечивают подключение для более полутора миллионов пользователей. Однако, примерно 16 июля 2007 года, оба сервера, наряду с несколькими другими, были отключены после выдачи временного судебного запрета. К 2007 году BitTorrent обогнал сеть eDonkey как наиболее широко используемую сеть файлообмена в Интернете. В 2009 году сообщалось, что eDonkey остается вторым по популярности P2P-протоколом, но его использование быстро сокращается.

Протоколы-преемники

Первоначальная сеть eDonkey опиралась на центральные серверы, управляемые пользователями, готовыми предоставить необходимую пропускную способность и ресурсы для обработки/использования диска. Такие серверы могли испытывать высокую нагрузку и, как следствие, быть более уязвимыми для атак. Чтобы решить эту проблему, MetaMachine, разработчик оригинального клиента eDonkey, разработал Overnet как преемника протокола eDonkey. Проект eMule также разработал собственную сеть Kademlia (называемую Kad), чтобы избавиться от зависимости от центральных серверов. Кроме того, eMule включает в себя возможность прямого обмена данными между клиентами (pure P2P), позволяющую клиенту с ‘High ID’ (то есть, с входящими eD2k-соединениями, не блокируемыми брандмауэром) продолжать загружать (и раздавать) файлы с большим количеством источников в течение нескольких дней, даже после полного отключения от оригинальных серверов Kad или eD2k, обрабатывавших исходные запросы. (eMule не обращается к вторичным серверам при команде отключиться от сервера). Эта возможность обмена данными предназначена для снижения нагрузки на серверы на две трети или более для файлов с большим количеством сидов, или источников (других клиентов). Оригинальный клиент eDonkey от MetaMachine не поддерживает обмен данными между клиентами.

Судебные иски против eDonkey 2000

13 сентября 2006 года MetaMachine Inc., разработчик клиента eDonkey2000, согласилась выплатить 30 миллионов долларов США, чтобы избежать возможных судебных исков от RIAA за нарушение авторских прав. В соответствии с соглашением, eDonkey должна прекратить распространение своего программного обеспечения и принять меры для предотвращения использования ранее распространенных копий для обмена файлами.

Отравление ослом

В сети eDonkey появились серверы, которые цензурируют поиск общего контента и информацию о файлах по типу (например, видео или MP3) или по ключевым словам. Ненадежный источник: дата=октябрь 2010 года. Эти серверы заявляют о большом количестве пользователей (до 1,5 миллиона), подключенных к ним, что увеличивает общее число пользователей сети до 10–13 миллионов; однако невозможно установить, сколько людей к ним действительно подключено. Такие серверы часто распространяют рекламу, маскируемую под популярные музыкальные или видеофайлы.

Серверное программное обеспечение

Основное серверное программное обеспечение, используемое для сети eD2k, известно как сервер Lugdunum. Он был создан путём обратной инженерии протокола eDonkey и переработан с нуля. (MetaMachine прекратила разработку серверного программного обеспечения eD2k и опубликовала исходный код Lugdunum в конце 2002 года, но он так и не был использован). Ненадежный источник: дата=октябрь 2010. Lugdunum расширил протокол eD2k, сохраняя обратную совместимость. Сервер Lugdunum бесплатен, но не имеет открытого исходного кода. Причина, по которой исходный код не открывается, заключается в предотвращении лёгкого создания поддельных серверов и защиты самого сервера от атак. В сентябре 2007 года на форумах веб-сайта eMule было объявлено о новом серверном программном обеспечении под названием satan edonkey server. Учитывая, что основные серверы eMule были отключены из-за судебных исков всего за несколько дней до этого, новый сервер был встречен с подозрением. Существовали опасения, что программное обеспечение может передавать информацию о клиентах неизвестным третьим лицам. Некоторые доверенные разработчики eMule получили исходный код satan edonkey server и заявили об отсутствии в нём шпионского кода. Программное обеспечение satan server было создано путём обратной инженерии протокола eDonkey. Программное обеспечение доступно в двух версиях (C++ и Java). Серверное программное обеспечение Satan eDonkey также бесплатно. Java-версия серверной части доступна в , и была написана в 2012 году.

Инструменты и библиотеки

libed2k: кроссплатформенная библиотека C++ для протокола eDonkey. Разработана под влиянием libtorrent rasterbar.