Введение
Сеть обмена файлами 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 на компьютере, подключенном к Интернету. Поскольку количество серверов и их адреса часто меняются, клиентские программы регулярно обновляют свои списки серверов.
The eDonkey Network (also known as the eDonkey2000 network or eD2k) is a decentralized, mostly server based, peer to peer file sharing network created in 2000 by US developers Jed McCaleb and Sam Yagan that is best suited to share big files among users, and to provide long term availability of files. Like most sharing networks, it is decentralized, as there is no central hub for the network; also, files are not stored on a central server but are exchanged directly between users based on the peer to peer principle. The server part of the network is proprietary freeware. There are two families of server software for the eD2k network: the original one from MetaMachine, written in C++, closed source and proprietary, and no longer maintained; and eserver, written in C, also closed source and proprietary, although available free of charge and for several operating systems and computer architectures. The eserver family is currently in active development and support, and almost all eD2k servers as of 2008 run this server software. There are many programs that act as the client part of the network. Most notably, eDonkey2000, the original client by MetaMachine, closed source but freeware, and no longer maintained but very popular in its day; and eMule, a free program for Windows written in Visual C++ and licensed under the GNU GPL. The original eD2k protocol has been extended by subsequent releases of both eserver and eMule programs, generally working together to decide what new features the eD2k protocol should support. However, the eD2k protocol is not formally documented (especially in its current extended state), and it can be said that in practice the eD2k protocol is what eMule and eserver do together when running, and also how eMule clients communicate among themselves. As eMule is open source, its code is freely available for peer review of the workings of the protocol. Examples of eD2k protocol extensions are "peer exchange among clients", "protocol obfuscation" and support for files larger than 4 gigabytes, etc. The other eD2k client programs, given time, generally follow suit adopting these protocol extensions. eDonkey client programs connect to the network to share files. eDonkey servers act as communication hubs for the clients, allowing users to locate files within the network. Clients and servers are available for Windows, Mac OS X, Linux, and other Unix like operating systems. By running an eDonkey server program on a machine connected to the Internet, any user can add a server to the network. As the number of servers and their addresses change frequently, client programs update their server lists regularly.
Идентификация хэша
Файлы в сети 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.