Search
Write a publication
Pull to refresh

Структура eMule пакетов

Сами eMule пакеты делятся на две группы: унаследованные от eDonkey и дополни тельные eMule пакеты. Сегодня только на eDonkey или на eMule пакетах никакой клиент работать не может — сервера и клиенты уже используют микс из eDonkey и eMule пакетах.
Протокол eMule поддерживает пакеты TCP (коммуникации между клиентом и сервером а также между клиентами, самый большой трафик идет на базе TCP пакетов) и UDP(поддержка сети: пинг серверов, проверка существования файла у пира и т.п.).
Используемые порядок записи чисел в пакетах является little-endian.

TCP пакеты


Каждый пакет начинается с идентификатора протокола, размером в один байт:
  • 0xE3 — eDonkey пакет
  • 0xC5 — eMule пакет
  • 0xD4 — сжатый пакет

Далее следует размер пакета в байтах как целое число на 4 байта, в размер пакета не входит идентификатор пакета, сам размер и код операции.
Код операции имеет размер в один байт и используется для идентификации назначении пакета.
Далее следует сам контент пакета в зависимости от кода операции пакета.
Пример:
0xE3 0x00 0x00 0x00 0x03 0x01 0x01 0x02 0x03
Протокол eDonkey(0xE3), размер пакета 3 байта, код операции 0х01 и сам контент пакета (0х01 0х02 0х03).
Сжатый пакет отличается от других пакетов тем что контент сжатый ZLib алгоритмом, сжимаются пакеты только если получатель поддерживает сжатие и если пакет имеет больше 900 байт и если сжатый пакет имеет размер меньше чем начальный пакет.

UDP пакеты


UDP пакеты имеют более простую структуру, у них нет поля с размером пакета.
Первый байт идентифицирует протокол:
  • 0xE3 — eDonkey пакет
  • 0xC5 — eMule пакет

Далее идёт код операции размером в один байт и сам контент пакета.
Пример:
0xC5 0x20 0xA0 0xB0 0xC0

Протокол пакета eMule(0xC5), код операции 0х20 и сам контент пакета 0xA0 0xB0 0xC0.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.