>>   Microsoft запустила новую версию поисковика



>>   Google следит за движениями мыши?
Протокол BitTorrent
2009 by Ghost. Сделано на конкурс. Контакты.
Протокол BitTorrent — тот самый случай, когда хочется сказать «все гениальное просто». Несмотря на всеобщее признание и многомиллионную армию пользователей, в самом протоколе лежат самые что ни на есть «родные» принципы, вроде «Я тебе — ты мне». И в тоже время, это не просто пиринговая сеть, где пользователи закачивают друг у друга расшаренные (открытые для скачки) файлы, непременно простаивая в очереди в ожидании, пока для них, наконец-то, освободится заветный слот. Напротив, это технология, позволяющая получить файл максимально быстро — зачастую быстрее, чем просто скачав его с HTTP-сервера. Большую роль здесь играют так называемые torrent-трекеры, которые изначально подразумевались лишь как координаторы процесса передачи файлов между пользователями, но впоследствии превратились в информационные порталы о расшаренных файлах с бешеной популярностью. Разобравшись во внутренней организации протокола BitTorrent, запустить трекер можно и самому.

Общие принципы работы протокола
Протокол BitTorrent был впервые представлен общественности 2 июля 2001 года, когда программист Bram Cohen опубликовал его первую реализацию на языке Python. Сейчас существует огромное количество клиентов, которыми пользуются более чем 150 миллионов пользователей BitTorrent по всему миру. Такой популярности способствуют несколько причин:

Самая высокая скорость работы по сравнению с другими пиринговыми сетями;
Отсутствие очередей, практически моментальный старт закачек;
Возможность просмотра детальной информации о скачиваемом файле (например, для музыкального альбома – это информация о битрейте, треклист, лог-файл Программы риппера, обложка), благодаря информационным сайтам, на которых выкладываются торренты;
Возможность закачки файлов по частям;
Раздача файлов происходит напрямую между пользователями, сервера лишь координируют процесс соединения и передачи файлов
Для обмена файлами пользователю необходим BitTorrent-клиент — программа, в которой реализован протокол BitTorrent. Чтобы скачать какой-либо файл, необходимо сначала найти для него так называемый torrent-файл, внутри которого содержатся специальные метаданные. Во-первых, это информация о самом файле (его хэш-сума) и, во-вторых, координаты так называемого трекера — компьютера-сервера, который координирует распространение файла. Torrent-файл может хранить информацию не об одном, а сразу множестве файлов, сохраняя сложную иерархию папок.

Прочитав из torrent-файла метаданные, клиент подсоединяется к трекеру и сообщает ему свой адрес и хэш-сумму запрашиваемого файла. На что в ответ получает адреса других пиров, скачивающих или раздающих этот же файл. Клиент подключается к ним и сразу обменивается информацией об имеющихся сегментах файла. Если кто-то из пиров готов отдавать нужные части, начинается закачка. После того, как хотя бы один сегмент скачан, клиент проверяет его контрольную сумму и оповещает всех присоединенных пиров о наличии у него этого сегмента. Процесс продолжается до полного скачивания файла.

Получается, что клиенты соединяются друг с другом, обмениваются без непосредственного участия трекера, который лишь регулярно обновляет информацию о подключившихся к обмену пирах и прочую статистику. Для эффективной работы сети BitTorrent необходимо, чтобы как можно больше клиентов были способны принимать входящие соединения. Нужно, чтобы у них были открыты следующие TCP-порты: 6881—6889. Впрочем, они могут быть изменены в случае необходимости, чтобы, например, обойти ограничения файрвола.

Что находится внутри torrent-файла?
Для распространения любого файла обязательно создается файл метаданных, в котором содержится следующая информация:

общая информацию о закачиваемом файле (имя, длина и пр.);
контрольные суммы сегментов закачиваемого файла;
URL трекера
Естественно, вручную ничего делать не надо. Всю работу берет на себя специальная программа, включенная в любой современный torrent-клиент. Именно она разбивает файл на части, размером от 64 до 4 Мб. Для каждого из кусочков высчитывается контрольная сумма (используя алгоритм SHA-1) и записывается в torrent-файл с другими метаданными. Надо сказать, что подсчет контрольных сумм является неотъемлемой частью протокола: как только пользователь скачивает сегмент какого-то файла, он тут же сверяет реальную и заявленную контрольную суммы. Таким образом, обеспечивается отсутствие ошибок на любом этапе закачки. После создания torrent-файл выкладывается в публичное место, чтобы другие пользователя могли его найти — обычно это вебсайты, связанные с трекером.

Трекеры
Несмотря на то, что трекер координирует обмен файлами между клиентами, он зачастую даже не знает, какие файлы через него передаются. Ведь пиры, обращаясь к нему, не указывают имена или даже описания, а передают только ничего не говорящие хэш-суммы. С другой стороны, трекеры уже давно перестали быть исключительно технической составляющей, необходимой для работы с системой. Практически все они сейчас имеют специальный веб-интерфейс с дополнительными функциями. Индивидуальная для каждого пользователя статистика раздач, текущее количество сидов и пиров для каждого торрента, общие объемы переданных между клиентами данных… – давно стали стандартными фишками любого torrent-трекера. И что самое главное, такой интерфейс используется как площадка для хранения и публикации новых torrent-файлов.

Доступ к трекеру может быть открытый или частный. В связи с появлением большого количество халявщиков или, иначе говоря, личеров, закачивающих в огромном количестве файлы, но ничего при этом не отдавая, появились так называемые частные трекеры. Доступ к такому – исключительно после регистрации, которая зачастую возможна только по приглашению уже зарегистрированного пользователя. Для идентификации конкретного клиента трекер использует либо IP-адрес пользователя, либо уникальный для каждого юзера пароль, добавляемый трекером в торрент-файл при его скачивании. Особенность частных трекеров – это специальная система рейтингов, учитывающая количество переданных другим пирам и скачанных себе данных. Администраторы трекера требуют поддержания некоторого минимального соотношения этих двух величин. Как результат, доступность и скорость скачивания торрентов на частном трекере обычно выше, чем на открытом.

Выбираем трекер
Существуют разные реализации torrent-трекеров, но основным языком, на котором сейчас разрабатывают подобный софт, является PHP! Одним из самых распространенных, безусловно, является TBDev/TBSource и его различные модификации, которые в огромном количестве распространяются по Сети (еще бы, ведь подогнать PHP-скрипт под себя ничего не стоит). В частности, на этом движке «крутятся» такие популярные трекеры, как what.cd и waffles.fm, BtiTracker, xbtit, AKNova, TorrentTrader. Все они требуют установленного на сервере PHP-интерпретатора и используют в качестве данных СУБД MySQL

Другая часть трекеров, появившаяся значительно ранее, была написана на компилируемых языках: XBTT, BNBT, Opentracker. Но лучше всего использовать именно PHP-реализации – TBDev/TBSource либо xbtit. В качестве примера мы возьмем модификацию TBDEV YSE.

Установка
Для установки нужно:

Веб-сервер с поддержкой PHP (например, Apache или LightTPD);
PHP версии 5.1.1 или выше;
Сервер базы данных MySQL версии 4.1 или выше, лучше 5.0;
Любая оболочка для работы с СУБД MySQL (например, phpMyAdmin или EMS SQL Manager 2007 Pro for mySQL).
Требования настолько минимальные, что для размещения торрент-трекера подойдет даже бесплатный хостинг. Однако вероятность того, что твой торрент скоро откажет или вообще будет удален, очень велика. Поэтому не скупись потратиться на платную площадку: на первых порах вполне сойдет самый обычный хостинг, цена на которые не превышает $10-15. Если дело пойдет и трекер будет набирать обороты, можно задуматься о VPS/VDS и, в конечном итоге, выделенном сервере. Единственный тонкий нюанс — это настройки PHP интерпретатора:

memory_limit = 16M

error_reporting = E_ALL ^ E_NOTICE

display_errors = On

display_startup_errors = On

log_errors = On

report_memleaks = On

short_open_tag = On

register_globals = Off

magic_quotes_gpc = Off

file_uploads = On

upload_max_filesize = 8M

allow_url_fopen = On

Сайт управляется системой uCoz