Введение в
сети
Начиная с
версии 42.1 eMule
поддерживает
2 разных типа
сетей:
классическую
серверную eD2k
и новую
безсерверную
Kademlia.
Обе сети
обладают
примерно
одинаковой
функциональностью.
Они
позволяют
находить
пользователей
или файлы
для
скачивания.
Основы
Идентификация
файлов
Каждому
файлу
соответствует
свой хэш.
Хэш - это
комбинация
цифр и букв
для
однозначной
идентификации
файла. Хэш
не зависит
от имени
файла,
только от
его
содержимого.
Это
позволяет
находить
источники
файла
независимо
от того,
какое имя
тот или
иной
пользователь
дал файлу.
Кроме того,
файлы
разделяются
на части
размером 9.28
Мб. Для
каждой
части также
вычисляется
хэш.
Например,
600-Мб файл
будет
содержать 65
частей.
Общий хэш,
т.е. хэш
файла,
вычисляется
на основе
хэшей
частей.
Идентификация
других
клиентов
Аналогично
файлам
каждый
пользователь
сети
получает
постоянный
уникальный
пользовательский
хэш.
Процесс
идентификации
пользователей
защищен от
злоумышленников
с помощью
технологии
открытых /
закрытых
ключей.
Скачивание
данных
Важно
понимать,
что
скачивание
данных в eMule не
зависит от
выбора
сети, от
него
зависит
только
способ
поиска
файлов и
нахождение
пользователей-источников.
Как только
источник
найден, ваш
клиент
связывается
с ним, после
чего
источник
ставит вас
в очередь.
По
достижении
начала
очереди вы
начинаете
скачивать
данные.
Классическая
серверная eD2k
сеть
Подключение
к сети
Ключевым
элементом
этой сети
является
eD2k-сервер.
Каждый
клиент
должен
подключиться
к
какому-либо
серверу
чтобы войти
в сеть.
При входе в
сеть сервер
проверяет
возможность
другим
клиентам
свободно
подключаться
к вашему.
Положительный
результат
приводит к
присваиванию
вам так
называемого
High ID (высокий
уровень),
отрицательный
- к Low ID (низкий
уровень).
После того
как ID
присвоен, eMule
посылает
серверу
полный
список
ваших
файлов
обмена.
Сервер
добавляет
этот
список,
состоящий
из имён
файлов и их
хэшей, в
свою базу
данных.
Поиск
файлов
Подключившись
к сети,
клиент
может
искать
файлы по
ключевым
словам.
Поиск
бывает
локальным
или
глобальным.
Локальный
поиск
осуществляется
только на
том
сервере, к
которому вы
подключены,
поэтому он
быстрее, но
выдаёт
меньший
результат.
Глобальный
поиск
задействует
все сервера
сети,
поэтому он
дольше, но и
результат
полнее.
Каждый
сервер ищет
ключевые
слова в
своей базе
данных и
возвращает
подходящие
имена
файлов и их
хэши.
Нахождение
источников
файлов
Файлы для
закачки
могут быть
добавлены с
помощью
поиска или
специальных
ссылок ed2k://,
которые
размещают
многие
web-сервера.
После
добавления
файла в
список
Приема eMule
запрашивает
источники к
нему
сначала у
локального
(подключенного)
сервера,
потом у
всех
остальных
серверов
сети.
Сервер
производит
в своей
базе данных
поиск по
хэшу файла
и
возвращает
всех
известных
ему
клиентов,
имеющих
этот файл
для обмена.
Источники -
это другие
клиенты,
которые
обладают
хотя бы
одной
частью (9.28 Мб)
файла.
Безсерверная
сеть Kademlia
Подключение
к сети
Для
подключения
к этой сети
необходимо
знать
IP-адрес и
порт любого
уже
подключенного
клиента. В
этом случае
происходит
Самонастройка
(Boot Strap).
При входе в
сеть клиент
с помощью
других
клиентов
опрашивает
себя на
возможность
свободного
подключения.
Этот
процесс
похож на
проверку HighID/LowID
сервером.
Если вы
свободно
доступны,
то
получаете ID
(аналогично
HighID) и статус
Открыт. В
противном
случае вы
получаете
статус
Файрвол.
Начиная с
версии 44a
сеть Kademlia
поддерживает
Приятеля
для
зафайрволенных
пользователей.
Приятели
это клиенты
Kademlia со
статусом
Открыт,
работающие
как
посредники
для
соединений,
недоступных
пользователям
за
файрволом.
Поиск в
сети Kademlia
В этой сети
нет
разницы,
что вы
ищете:
имена
файлов,
источники,
других
пользователей
- процесс
выполняется
примерно
одинаково.
Здесь нет
серверов
для
хранения
данных
пользователей
и списков
их открытых
файлов, эта
работа
выполняется
каждым
подключенным
к сети
клиентом.
Иначе
говоря,
каждый
клиент
является
также
мини-сервером.
Используя
принцип
уникальности
пользовательского
хэша, в Kademlia за
каждым
пользователем
закрепляется
определенная
"ответственность".
Клиент в
сети Kademlia
работает
как сервер
для
определяемых
его хэшем
набора
ключевых
слов или
источников.
Таким
образом,
цель любого
поиска -
найти
клиентов,
ответственных
за искомые
данные. Это
осуществляется
с помощью
сложного
алгоритма
вычисления
кратчайшей
дистанции
до нужного
клиента
путем
опроса
других
клиентов.
Итоги
Обе сети
используют
абсолютно
разные
концепции
для
достижения
одинаковой
цели: поиск
файлов и
нахождение
источников.
Основная
идея Kademlia -
независимость
от серверов
и
масштабируемость.
Сервера
могут
обслуживать
ограниченное
число
клиентов, и
в случае
отказа
большого
сервера
сеть может
серьезно
пострадать.
Kademlia же
самоорганизующаяся
сеть и
автоматически
перестраивается
для
достижения
наилучшей
производительности
в
зависимости
от
количества
пользователей
и качества
их
соединений.
Следовательно,
она менее
критична к
крупным
сбоям.
Оригинал:
2004-09-12, Monk
Перевод:
21/Март/2007, kedr |