LXF70:Что за штука...

Материал из Linuxformat.

Перейти к: навигация, поиск

PDTP

И какое же отношение имеет программа Post-Diploma Training Programme к свободному ПО?

Никакое — это новый четырехбуквенный акроним, не имеющий ничего общего с дипломами. На самом деле, он расшифровывается как Peer Distributed transfer Protocol (Распределенный протокол передачи данных между равноправными узлами) и представляет собой продвинутую систему передачи файлов с распределением ширины канала между многими клиентами.

Возможно, я чего не понимаю, но это очень похоже на BitTorrent.

Действительно, это так, и если быть совсем честным, PDTP весьма близок к BitTorrent по смыслу и по дизайну. Однако, между ними оказалось достаточно различий для того, чтобы заставить разработчиков начать все с нуля. Таким образом, если вы знаете, как работает BitTorrent, то уже находитесь на полпути к пониманию PDTP.

Так это дальнейшее улучшение BitTorrent?

Некоторые сторонники Java считают, что их язык является дальнейшим улучшением C++, поскольку при его создании Sun исправила все ошибки в дизайне C++. С другой стороны, сторонники C++ скажут вам, что и в самой Java хватает изъянов. истина состоит в том, что очень сложно усовершенствовать одну часть чего-то, не попортив другую.

Так значит, PDTP не идеален?

Пожалуй, основным признаком несовершенства PDTP можно назвать стремление разработчиков подметить, что их детище написано не на Python, как BitTorrent, а потому должно быть быстрее. Это действительно так, однако, если вы — не счастливый обладатель 486-го компьютера, то вряд ли почувствуете разницу. Python хорошо переносим, что дает ему большое преимущество над C — языком, на котором написан PDTP.

Конечно, вопрос выбора языка — не самый значимый в общей структуре вещей?

Ну, мы можем на это надеяться. В любом случае, между PDTP и BitTorrent существуют куда более глубокие отличия.

Например?

Давайте сначала вспомним, как работает BitTorrent. Возьмем гипотетический файл, fc4dvd.iso, и поместим его на некоторый web-сервер. Эта штука занимает 4Гб и пользуется определенной популярностью, так что скоро наш бедный канал переполнится и желающим загрузить файл придется возвращаться назад с пустыми руками. BitTorrent решает эту проблему созданием трекера — сервера, который отслеживает пользователей, загружающих тот или иной файл и распределяющего нагрузку между ними.

То есть сам файл хранится на трекере, а не на web-сервере?

Нет. Исходный файл остается на месте, но желающие скачать его направляются к трекеру. Первый пользователь начинает загрузку непосредственно с сервера. Второго клиента трекер направляет и к серверу, и к уже подключенному первому пользователю, который делится с ним тем, что успел получить. Чем больше клиентов, тем выше скорость передачи данных.

А как трекер узнает, у какого пользователя искать нужный кусочек файла?

Когда клиент подключается, трекер посылает ему (по HTTP) информацию о других пользователях, загружающих тот же файл. Клиент, в свою очередь, использует эти сведения для установки дополнительных каналов. Здесь BitTorrent проявляет некоторую сообразительность: в первую очередь загружаются наименее популярные части файла, так что общее распределение остается равномерным. По мере получения кусочков файла, клиент сообщает об этом серверу, так что другие пользователи знают, у кого искать нужную часть мозаики.

Спасибо за разъяснение. Что еще плохого в BitTorrent, кроме python? Зачем нужен PDTP?

BitTorrent был разработан таким образом, чтобы обеспечивать масштабируемость загрузки, то есть раздавать файл сразу тысячам пользователей. Размер передаваемой секции составляет 256Кб, так что время на ее получение по широкополосному каналу не превышает десяти секунд. Таким образом, если ISO-образ нашего DVD-диска хочет скачать 1000 человек, мы по-прежнему имеем 1000 HTTP-запросов каждые 10 секунд, поскольку пользователям необходимо сообщать трекеру информацию о своем статусе. Сотня запросов в секунду — неплохая нагрузка для большинства серверов и излишняя трата трафика сама по себе, а что если у нас будет 100 000 страждущих? здесь BitTorrent терпит полное фиаско — вместо недоступного web-сервера мы получаем недоступный трекер.

И как PDTP борется с этим?

Подобно тому, как BitTorrent распределяет загрузку файлов между многими пользователями, PDTP передает разным машинам функции трекера. Эти трекеры общаются как с клиентами, так и друг с другом, что повышает эффективность использования канала.

Ага, значит клиенты PDTP отличаются от клиентов BitTorrent?

Помимо того, что одни написаны на C, а другие на Python, особых отличий нет. Вся соль — в используемом ими протоколе.

Продолжайте…

Хорошо. В отличие от весьма примитивных torrent-файлов, используемых BitTorrent, формат PDTP базируется на XML, что позволяет добавлять различные мета-данные. Хотите знать, какой кодек нужен для просмотра загруженного вами фильма? Или интересуетесь именем автора и альбомом, в который входит только что скачанная композиция?

Но скачивать музыку — это же пиратство!

Это зависит от того, где вы живете и что загружаете. В любом случае, XML — это здорово…

Да, но XML вряд ли сделает жизнь легче. самое приятное в стандартах — то, что их много и есть из чего выбрать, правда?

Конечно, но разработчики движутся в сторону поддержки схемы Dublin Core Metadata, так что вы сможете обмениваться метаданными со многими приложениями. Вам также будет проще искать в сети нужные файлы…

Я не думаю, что скачивание по BitTorrent столь распространено…

Действительно, вы правы. В основном, это связано со сложностью настройки BitTorrent — он ориентирован на индивидуальные файлы. PDTP, напротив, разрабатывался в качестве альтернативы FTP и HTTP для популярных закачек и, подобно FTP-серверу, поддерживает концепцию вложенных каталогов и файлов. Одной из обещанных функций является возможность использовать простенький сценарий, который автоматически индексирует директорию и делает ее доступной он-лайн.

Это выглядит гораздо проще, но разве размещение нескольких файлов на одном сервере не означает, что он будет быстрее перегружен запросами?

В самой простой конфигурации PDTP это верно. Конечно, имея множество трекеров, вы можете обслуживать куда больше клиентов, что приведет к куда более быстрой перегрузке сервера, чем в случае BitTorrent. Однако, PDTP позволяет распределить нагрузку на файловый сервер, создав секционный прокси-сервер.

Подождите, я запутался в терминологии. есть сервер, файловый сервер, прокси-сервер — и все они «сервера»!

Несмотря на сходство технологий, PDTP использует отличную от BitTorrent терминологию, что изначально привносит некоторую путаницу. Вы уже знаете, что такое клиент — это мы, те кто загружает файлы. Сервер PDTP — это то, что обычно называется трекером. Он следит за тем, какие клиенты подключены, какими данными они располагают и обеспечивает обязательный минимум трафика, который должен отдать клиент. Естественно, эта величина зависит от того, сколько было загружено. Концентратор PDTP (PDTP hub) хранит файлы, передаваемые по сети и является ее своеобразной вершиной — вот почему он был назван концентратором!

Концентратор поддерживает описания (в формате XML), так что любой может узнать, какие файлы доступны и выяснить их контрольную сумму. Кроме этого, есть секционный прокси-сервер (piece proxy), который распределяет нагрузку на концентратор, а также стандартный прокси-сервер. Задача последнего — обеспечивать доступ к сети для клиентов, находящихся за брандмауэрами.

Стойте, раньше вы ничего не говорили о контрольных суммах!

Только потому, что эта мера предосторожности соответствует здравому смыслу. Передавать большой файл через интернет очень сложно, а много маленьких, которые потом должны без проблем собраться в единое целое — намного труднее. BitTorrent решает эту проблему с помощью алгоритма Secure Hash Algorithm (SHA1) и генерирует контрольную сумму для каждой части файла, что позволяет подтвердить ее корректную доставку. PDTP идет еще дальше и применяет стандарт Digital Signature Standard (DSS) для криптографической защиты содержимого секции.

Похоже, это создаст приличную нагрузку на процессор. А я думал, что PDTP — это быстро…

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

А как же «дыры», связанные с двоичными протоколами? Недавно в ASN.1 было найдено две больших уязвимости!

Верно, потому PDTP и не использует ASN.1. Сложность данного протокола — не только благодатная почва для всякого рода брешей в безопасности, но и причина замедления работы, а PDTP, как вы помните, должен действовать быстро. С другой стороны, двоичный протокол усложняет разработку, однако, создатели PDTP решили эту проблему, выпустив специальную клиентскую библиотеку.

Нечто такое, что могут использовать все…

..не вникая в тонкости протокола. Да, это именно так. Библиотека возьмет на себя все вопросы по проверке и обработке данных, поступающих по бинарному протоколу, а разработчику предоставит лишь «обертку», помогающую не испачкать ручки. Помимо прочего, это значит, что программисты могут выбрать Python или любой другой язык, тогда как ядро системы всегда будет использовать быстрый C.

Я вижу слишком много слов «будет», «должен», «обещается» — ничего конкретного. Почему?

PDTP по-прежнему находится в стадии разработки. Видите ли, BitTorrent удовлетворяет текущие нужды: все больше домашних пользователей имеют скоростные каналы подключения к интернету, так что узкое место смещается от них к серверам, которые просто не выдерживают такого наплыва клиентов. BitTorrent позволил людям загружать популярные файлы и его дизайн очень прост. Конечно, он эволюционировал и обрастал новыми функциями, но подход к разработке оставался неизменным — автор делал последовательные улучшения над тем, что уже используется. Создатели PDTP стараются включить весь функционал в исходную версию, что требует очень много времени. Как сказал однажды Линус Торвальдс: «Никто не должен брать на себя большой проект. Начните с маленького, тривиального проекта, и никогда не ожидайте, что он вдруг вырастет, иначе вам придется начинать проектирование заново».

То есть PDTP приходилось перестраивать?

Он не начинался как маленький проект, это уж точно. Команда планировала выпустить первую milestone-версию на DefCon 12 прошлым летом, но не справилась с такой задачей. Многие части системы до сих пор находятся в состоянии «пре-альфа» — в них есть код, его можно использовать, но он еще не готов к публичному показу. Кое-что уже вошло в фазу альфа-тестирования, однако, чтобы хоть одна часть была по настоящему полезной, необходимо довести до ума весь проект. Некоторые вещи, например, поддержка IPv6, до сих пор отсутствуют. Поддержка IPv4 уже имеется, и не так трудно добавить IPv6 — сложно обеспечить взаимодействие между хостами, использующими разные версии IP. Эта возможность может быть добавлена в первоначальную версию, но скорее всего, будет отложена.

Вообще-то этот материал называется «Что такое PDTP», а не «Чем будет PDTP когда-нибудь»!

Да, но мы хотим использовать возможность и обратить внимание на новые интересные технологии. иначе, как вы сможете выделиться среди друзей?

Справедливо. Так вы ищете себе помощников?

Каждый, кто знаком с C и сетевым программированием, может присоединиться к нам, даже если вся помощь будет состоять в запуске кода и перечислении неработающих частей. Мы используем лицензию Apache License, одобренную OSI, так что будьте готовы предоставить результаты своей работы на тех же условиях. Где можно найти спецификацию, чтобы начать работу? Черновой вариант доступен по адресу http://PDTP.org/protocol.php, но к моменту написания данной статьи работа над ним еще не завершена. Например, разработчики все еще ожидают выдачи им фиксированного номера порта в IANA (Internet Assigned Numbers Authority). За исключением этого, разработчики могут загрузить спецификацию и начать программирование, не дожидаясь выпуска нашей клиентской библиотеки.

То есть команда занимается только клиентской библиотекой, оставив прочее третьим лицам?

Конечно же, нет! Серверный компоненты: концентратор, сервер и секционный прокси-сервер активно разрабатываются основной командой PDTP. Этот проект называется Squall и вы можете найти его по адресу: http://squall.sourceforge.net. Они также занимаются программой, построенной на клиентской библиотеке и называющейся Skyfire. Она базируется на Qt и поэтому является кроссплатформенной. Помимо Linux, одного из главных приоритетов, поддерживаются Windows, BSD, Mac OS X и Solaris.

По-моему, достаточно технических деталей. Чем PDTP будет отличаться от BitTorrent с точки зрения практического применения?

Первое, что заметит большинство людей — это архитектура, ориентированная на каталоги, а не на отдельные файлы. Сайты вроде Sourceforge, MySQL.com и PHP.net используют устаревшую систему зеркал, которая требует от вас пойти на сайт, выбрать файл, перейти на другой сайт, зависящий от вашего географического местоположения и, наконец, получить желаемое. Это не только трата времени, это еще и трата ресурсов: пока один сервер обслуживает тысячу пользователей, другие вполне могут крутить SetI@Home или что-то еще в этом роде. PDTP исключает человеческий фактор. Вместо того, чтобы выбирать нужное зеркало, каждый клиент обслуживается сразу всеми зеркалами и другими пользователями. Это не только сокращает время, необходимое дистрибьюторам для зеркалирования информации, но также экономит деньги и повышает скорость.

Похоже, все находится под контролем. Это конец BitTorrent?

Нет. На самом деле, BitTorrent постепенно меняется и решает многие из отмеченных проблем. В мае этого года, Брэм Коэн (создатель BitTorrent) представил на всеобщее обозрение новую версию, поддерживающую закачки без трекеров, то есть обеспечивающую децентрализацию. Это было одной из основных проблем масштабируемости BitTorrent — и причиной для создания PDTP, медленная разработка которого привела к таким результатам. Планируются другие улучшения, например, поиск torrent’ов без трекеров прямо из Firefox. Это жаркое время для BitTorrent, но важно помнить, что все улучшения в нем инкрементальны. Пользователи могут наслаждаться работой с существующей системой, не дожидаясь обновлений. В PDTP все не так.

PDTP всего лишь старается вытеснить BitTorrent?

В мире существует множество подобных систем: GNunet, Rodi, Mute и другие — есть из чего выбрать. Rodi особенно интересен, поскольку с его помощью можно достичь анонимности, отгородившись от сервера другими клиентами. То есть, клиент A, вместо того, чтобы загрузить нечто с сервера B, просит клиента C сделать это за него. Таким образом, B никогда не узнает IP-адрес A. Конечно, это тоже не панацея: все, что требуется от RIAA (или других блюстителей прав) — создать побольше клиентов C и просматривать трафик.

Постойте: BitTorrent не анонимен?

Нет, также как и PDTP. Слышите звуки сирен за окном?

Я невиновен!

Скажите это судье. BitTorrent и PDTP не разрабатывались для обеспечения анонимности и вряд ли когда-то смогут это делать. К слову сказать, это не так уж и нужно: не пытайтесь скачать «Месть ситхов», и вам не потребуется скрывать свое истинное лицо. Да, загрузка нелегальных материалов из сети упростится, но это то, чего разработчики BitTorrent и PDTP хотят в последнюю очередь. Они и так едва избегают судебного преследования — не хватало только добавить функции, которые играют на руку пиратам.

А как же свобода слова? Мои права? Я уверен, про это что-нибудь сказано в Декларации о правах человека!

Думаю, здесь вы должны решать сами. Если вы загружаете легальные вещи, прекрасно — никто не следит за людьми, скачивающими Fedora или Mandriva. Вы просто, извините, не интересны. Но если вы стремитесь не заплатить кому-то за проделанную работу и загружаете материалы, охраняемые авторским правом, подумайте еще раз: PDTP вам тут не помощник.

И что мне делать, если эта программа еще не выпущена?

Вы можете загрузить одну из ночных сборок прямо из репозитария PDTP. Клиентская библиотека доступна по адресу: http://svn.PDTP.org/snapshots/libpdtp-snapshot.tgz, а серверные компоненты — с http://svn.PDTP.org/snapshots/squall-snapshot.tgz. Если у вас установлен Subversion (о том, как это сделать, читайте в « Руководстве»), вы можете попробовать самую свежую версию, просто выполнив команду

svn co http://svn.PDTP.org/svn/libpdtp 

или

svn co http://svn.PDTP.org/svn/squall

Желающие помочь проекту должны связаться с ведущим разработчиком. Его адрес — tarcieri@pdtp.org.

У PDTP есть какие-то специальные зависимости?

Прежде всего, помните, что код находится в стадии «преальфа», так что его никто особо не чистил. Вам точно придется установить libcrypto, поскольку эта библиотека обеспечивает поддержку DSS. За дополнительной информацией обращайтесь в чудесный раздел FAQ на сайте http://PDTP.org.

Личные инструменты
  • Купить электронную версию
  • Подписаться на бумажную версию