@schors, "Работа с трекером" состоит из одного HTTP GET-запроса (либо двух UDP-пакетов), где мы сообщаем серверу свой порт и хэш нужного торрента, а он отвечает списком пиров, которые раздают или получают этот торрент. Далее мы перебираем все пиры, сообщая друг другу сколько кусков файла у нас есть (количество и хэши кусков файла находятся в torrent-файле), говорим interested мы в этих кусках или uninterested, можем сделать request нужно куска и получить в ответ нужный piece, и сказать "have", когда кусок успешно получен. Метаданные в торрент-файле и запросах к трекеру кодируются в формат типдлина:данныеконец(если это список, иначе конец не нужен), P2P-сообщения — это пакет вида длина:тип:данные. Получаем pieces, сверяем хэши, складываем хорошие, выбрасываем плохие и отключаем плохих пиров. Что тут может быть непонятного?
(прочитал спецификацию первый раз только что)