Интернет магазин китайских планшетных компьютеров



Компьютеры - EDonkey2000 (сеть) - Межсерверные соединения

02 апреля 2011


Оглавление:
1. EDonkey2000 (сеть)
2. Загрузка
3. Межсерверные соединения
4. ED2K Ссылка
5. Lugdunum server



Периодически серверы связываются друг с другом на короткое время. Во время этого сеанса связи сервер, объявляя о своём существовании, посылает список всех других известных ему серверов. Таким образом, серверы поддерживают список других активных серверов. Когда клиент подключается к серверу, сервер может выдать ему список известных ему серверов.

Хеш-алгоритм ed2k

Файлы в сети eDonkey идентифицируются благодаря использованию корневой MD4-хеш суммы MD4-сумм кусочков файла. Это позволяет считать одинаковыми файлы с разными названиями, но одинаковым содержимым, и различать файлы с разным содержимым, но одинаковым названием.

  1. Файлы делятся на равные кусочки по 9,728,000 байт и остаток.
  2. Для каждого кусочка вычисляется 128-битная MD4-хеш сумма.
  3. Если размер файла кратен 9,728,000 байтам, то есть размер остатка равен 0, всё равно рассчитывается сумма для этого пустого остатка.
  4. Затем все рассчитанные суммы объединяются в один единый массив и рассчитывается MD4-хеш сумма всего этого массива. Эта сумма является корневой MD4-суммой — и идентификатором в сети eDonkey.
  5. Если размер файла меньше 9,728,000 байт, то хеш-список не составляется, а идентификатором файла служит MD4-хеш сумма всего файла.

Существует второй вариант алгоритма вычисления контрольной суммы файлов, дающих другой результат для файлов, размер которых кратен размеру секции, то есть с размерами 9,728,000 байт, 19,456,000 байт и т. д. Оригинальный алгоритм содержит ошибку, благодаря которой, для файлов, кратных 9,728,000 байт, добавляется контрольная сумма пустой секции. Эту особенность учитывают в расчётах далеко не все программы. В edonkey2000 с версии v0.5.0 до версии v1.4.3 эта «особенность» исправлена.

Отличия от оригинального алгоритма в следующем:

  1. Если размер файла меньше или равен 9,728,000 байт, то в качестве идентификатора используется MD4 сумма всего файла.
  2. Если размер файла кратен 9,728,000 байт, то контрольная сумма «пустого» остатка не добавляется.

Различия алгоритмов столь минимальны, что позволяет рассчитать обе суммы одновременно — практически без потери производительности. Вторая версия суммы для таких «особенных» файлов может быть указана, например, в комментариях.

Вот, например, контрольные суммы для файлов, состоящих из одних нулевых кодов для разных «вариантов» алгоритма. Получить их можно, например, такой командой bash для unix систем:

for i in 1 2 3;do dd if=/dev/zero of=zero$i bs=9728000 count=$i;done
Размер файла "Оригинальный" алгоритм ed2k "Исправленный" алгоритм ed2k Сумма MD5
9,728,000 fc21d9af828f92a8df64beac3357425d d7def262a127cd79096a108e7a9fc138 0a62f20c78368021785dbb79b826d26c
19,456,000 114b21c63a74b6ca922291a11177dd5c 194ee9e4fa79b2ee9f8829284c466051 d01f6501678711bdaf6ef11237117c95
29,184,000 1932517fb346b94b5fbdcab55bf92169 9a68abb94d13f1e6ea13e968279652d7 fc0548e86e6106b68ffc248d871b8c2a


Просмотров: 4505


<<< Direct Connect
FastTrack >>>