гнучкі Гнутелли

продовжую розповідь про децентралізованих p2p-мережах, які можуть чинити опір форс-мажору і насильства. Крім того, в даній статті ви познайомитеся з p2p-клієнтом, керованим через веб; можливо, цей спосіб управління спонукає кого-небудь з читачів на розробку веб-інтерфейсів додатків замість традиційних GUI.


Як реалізується децентралізація

У 1999 році був розроблений механізм першої повністю децентралізованою файлообмінної мережі, названої Gnutella. Вдаватися в історію створення, назви і т.д. не буду, хто бажає - може подивитися у Вікіпедії. Краще подивимося, як працювала оригінальна Gnutella. Спочатку в цій мережі не було якихось виділених центрів. При підключенні клієнт отримував від вузла, з яким йому вдалося з'єднатися, список з декількох активних вузлів; далі надсилається запит на пошук файлу за ключовим словом. Вузли шукали у себе відповідні запиту ресурси і якщо не знаходили їх, то пересилали запит вузлів вгору по "дереву", поки не знаходився вузол, що володіє ресурсом, або не перевищує допустиму кількість кроків. В інформатиці такий пошук називається методом розмноження запитів (query flooding). Даний метод веде до швидкого зростання числа запитів і в результаті до відмов в обслуговуванні, що і спостерігалося. Розуміючи це, розробники Gnutell'и вдосконалили алгоритм: ввели правила, відповідно до яких запити можуть пересилати вгору по "дереву" тільки обрані вузли, звані ультрапірамі, інші вузли можуть лише запитувати. Вжиті заходи, проте, не дуже поліпшили властивості цієї p2p-технології.

У 2003 р була розроблена принципово нова p2p-технологія під назвою Gnutella2. Офіційний сайт gnutella2.com, на жаль, закритий, про причини можна говорити багато, але мережу Gnutella2 живе і процвітає.

Які ж основні відмінності між Gnutella і Gnutella2? Gnutella2 ділить вузли на дві групи: власне вузли ( "листя" на сленгу Gnutell'и) і хаби. У Gnutella ультрапіри підтримують невелику кількість зв'язків з рядовими вузлами і велика кількість зв'язків з іншими вузлами мережі, як c ультрапірамі, так і з рядовими вузлами. У Gnutella2, навпаки, хаб підтримує зв'язок з великою кількістю вузлів і з невеликою кількістю інших хабів. Кожен вузол в Gnutella2 одночасно пов'язаний з двома-трьома сусідніми хабами, а то і більше, що визначається настроюванням клієнтської програми. Неважко бачити, що при цьому на кожен хаб може бути повішено ну дуже багато клієнтських вузлів. Таке топологічний відміну Gnutellа2 від Gnutellа зумовлене різними методами пошуку, кожен з яких оптимальний тільки для своєї топології мережі. Розглянемо, як працює мережа Gnutellа2.

На початку пошуку конкретний вузол, якщо в ньому список адрес хабів порожній, отримує той чи інший спосіб (руками користувача, з Інтернету, з "бортового" переліку, від спеціальних серверів) список адрес хабів і по черзі безпосередньо пов'язується з ними, відзначаючи тих, з ким вдалося зв'язатися, до тих пір, поки перелік не буде вичерпаний або поки не буде досягнутий ліміт, заданий користувачем вузла.

Кожен вузол, з'єднавшись з хабом, відсилає йому проіндексований список расшаренних файлів (але не самі файли!). Список містить хеш-коди і ключові слова, за якими ці файли можна знайти. Хаб з кожної отриманої таблиці шляхом вторинної індексації становить і зберігає загальну таблицю QRT (Query Routing Table). Якщо якийсь вузол хоче знайти файл, він посилає запити до підключеним до нього хабам; якщо хаб по QRT бачить, що запит може бути задоволений будь-якими з підключених до нього вузлами, то він повертає запит вузлу ідентифікатори вузлів, з яких запросив вузол по шматках може завантажити шуканий файл. Інакше хаб повертає список адрес інших хабів, до яких вузол повинен знову підключитися. Так як вузлу практично завжди не з усіма хабами вдається зв'язатися, то вибір нових хабів виявляється випадковим. Вибір також може бути і примусово випадковий, це залежить від того, як вузол налаштований. В інформатиці такий пошук називається методом блукань. Може виявитися, що шірококанальному клієнту недостатньо вузлів-джерел для досягнення бажаної швидкості скачування, про що він додатково сповіщає пов'язані з ним хаби, і ті знову повертають йому адреси нових хабів. Однак "апетит" клієнтського вузла завжди обмежується. Дивно, але метод блукань теоретично дозволяє користувачеві, як і метод розмноження запитів, знайти будь-який файл, якщо він тільки лежить в мережі!

Метод блукань дає ряд переваг перед методом розмноження запитів: 1) в процесі пошуку не відбувається експоненціального збільшення трафіку, 2) запитом не маршрутизируются через велику кількість вузлів, що збільшує гранулювання пошуку, 3) клієнт швидше припиняє пошук при досягненні заданого порогу. Але за все треба платити: 1) збільшується складність мережі, 2) потрібно її підтримка, 3) ускладнюється захист від атак ззовні. На щастя ці завдання виявилися розв'язуються. До речі, застаріла Gnutella все ще популярна у англомовних користувачів Інтернету, що пояснюється її неустаревающей медіаресурсами, але поступово і вірно здає свої позиції.

Тепер, коли теоретична база підведена, потрібна практика. Для Gnutella2 існує безліч клієнтів, про які можна почитати у Вікіпедії, я зупинюся лише на двох кращих: по одному для ОС Windows і ОС Лінукс, а також на те, про що в Вікіпедії не пишуть.


Ця чудова Shareaza

Найпопулярніший p2p-клієнт для Gnutella2 під ОС Windows - це, безсумнівно, Shareaza (далі "Шареаза"), яка на дату написання цієї статті була завантажена з сайту Sourceforge.net більше 43 млн разів. Існує дві "Шареази": одна версія як би комерційна, а інша поширюється вільно практично в тому вигляді, як її свого часу написав розробник Майкл Стокс, якщо не брати до уваги нових "шкірок". Історія розколу сама по собі цікава, але професійні журналісти напишуть про це краще, ніж я. Читачам, думається, цікавіше знати, що саме потрібно встановлювати на комп'ютер, щоб не потрапити в халепу.

Комерційну "Шареазу" ShareazaV6.exe "вагою" в 13 Мб з надзвичайно красивим інтерфейсом можна абсолютно безкоштовно завантажити з сайту shareaza.com, який претендує на звання офіційного. Виникає питання: якщо "Шареаза" комерційна, то чому вона безкоштовна? Все просто: це сир у мишоловці. Знайдені в Мережі файли в повному обсязі записуються на комп'ютер клієнта. Якщо ви записали файл в бібліотеку завантажених файлів, то це ще не все. Щоб цей файл повторно прочитати, потрібно підключення комп'ютера до Інтернету, так як читання файлу супроводжується додатковою інформацією, підкачувати з комерційного сервера власників продукту, а без неї файл не читається. Звичайно, знайдуться ентузіасти, які вичленувати корисне з "подарунка", але простому користувачеві таке точно не під силу. Втім, анлімітчікі можуть собі дозволити встановити комерційну "Шареазу".

Вільно поширювану "Шареазу" з російською мовою можна знайти на веб-сайті shareaza.sf.net . Завантажуйте останню стабільну версію і насолоджуйтеся. Класика! Ніяких рекламних добавок. Налаштування "Шареази" ще простіше, ніж настройка DC-клієнта, про що я писав у своїй попередній статті. Єдине, що слід відзначити: не користуйтеся майстром настройки, якщо в розділах, куди він пропонує встановити робочі директорії, мало місця. Врахуйте, що для закачувань вам воно дуже знадобиться: потрібно мати вільними десяток-другий гігабайт. Краще заздалегідь в якомусь об'ємні розділі жорсткого диска створіть файловим менеджером папки "Downloads", "Collections", "Incomplete" і скористайтеся меню "Інструменти", щоб зробити ці папки робочими.

"Шареаза" здійснює пошук в чотирьох різних p2p-мережах, забезпечуючи доступ до сотень тисяч комп'ютерів користувачів, і все це однією програмою. Ви зможете завантажувати / вивантажувати файли в наступних мережах: Edonkey, Gnutella, BitTorrent і Gnutella2. Як видно з малюнка, "Шареаза навіть має власний програвач аудіо і відео. Втім, можна підключити і зовнішній. Багато хто вважає, що кращої p2p-програми, ніж вільна" Шареаза ", для ОС Windows немає. На жаль, Windows не та ОС, яка здатна безпечно працювати безпосередньо з тисячами комп'ютерів, тому тримайте антивірус в постійній свіжості, про що "Шареаза" попереджає ще при установці.


Цей суворий Sharelin

Як би хороша "Шареаза» не була, нові віруси перш, ніж потрапляють в антивірусні бази, якийсь час безкарно гуляють по Мережі. Тому використовувати p2p-технології набагато безпечніше в ніксоподобних ОС, ніж в ОС Windows. У ніксоподобних ОС віруси, образно кажучи, "йдуть лісом", хоча цього багато хто не вірить. А дарма.

Sharelin (далі "Шарелін") - це клієнт для Gnutella2 з відкритим кодом, який, за словами його автора, можна змусити працювати практично під будь-який реалізацією "Лінукса". Не знаю, наскільки це відповідає істині, але з Ubuntu клієнт точно працює. "Шареліну" всього півтора року від народження. Продукт поширюється під ліцензією GNU GPL. Автор відомий під ніком Sav, подейкують, що це один з розробників "Шареази". Пишуть також, що "Шарелін" - це форк (відгалуження) "Шареази", в чому особисто я сумніваюся, хоча автор в свій продукт поступово додає те, що є в "Шареазе". Клієнт працює в лінуксном терміналі, звичайного графічного інтерфейсу (GUI) у нього немає. Автор вчинив оригінально - замість вбудованого GUI, як це загальноприйнято, написав для нього WUI - веб-інтерфейс, тому робота з "Шареліном" йде через який-небудь браузер. У всякому разі, через браузери Chrome і Firefox все прекрасно управляється, через Аmaya теж, але криво, через інші браузери автор не спромігся перевірити, але на форумах повідомляють, що через IE і Opera все працює добре.

"Шарелін" поширюється в исходниках на мові C ++ і призначений для більш-менш просунутих користувачів, що освоїли ази взаємодії комп'ютерних програм. Я спробую, наскільки зможу, дохідливо викласти установку з початкових кодів для тих, хто з цим стикається вперше, а також торкнуся деякі моменти настройки. При порівняно невеликих зусиллях ви отримаєте компактний клієнт мережі Gnutella2 і зможете забути про шкідливий, "косячі" під мультимедійні дані. Вихідні тексти "Шареліна" і супроводжуючі дані, включаючи значний список адрес хабів, у вигляді архіву знаходяться за адресою sourceforge.net/projects/sharelin/files . Скачаний архів потрібно помістити в домашню папку. В ОС Ubuntu під "Наутилусом" в два кліка по архіву вихідні розпрямляються і растаріваются. Для складання виконуваного файлу додатково буде потрібно скомпільована під ваш "Лінукс" бібліотека Boost C ++ і g ++ компілятор. Володарям ОС Ububntu простіше: замість скачування бібліотеки boost з boost.org і подальшої компіляції необхідно буде доустановити deb-пакети libboost-dbg, libboost-serialization-dev і zlib1g-dev, інші пакети бібліотеки boost для вашого дистрибутива автоматично підтягнуться зі сховищ. Для запуску збірки потрібно зайти в папку з растареннимі кодами і в режимі суперкористувача виконати команду make. Команда make install не потрібно. Якщо все зроблено правильно, то в папці з'явиться виконуваний файл sharelin. Попередньо текстовим редактором правимо файл sharelin.conf_sample; як правити, дивимося в коментарях всередині цього файлу. Перейменовуємо цей файл в sharelin.conf. Також дозволяємо доступ до папок incomplete і complete командами chmod і chown:

sudo chmod -R 777 / шлях / ім'я_папки

sudo chown -R user / шлях / ім'я_папки

Запуск: входимо в Інтернет, термінальної командою cd входимо в робочу папку і виконуємо ./sharelin. Якщо все нормально, то в терміналі відразу підуть повідомлення про блукання "Шареліна" в мережі Gnutella2. Якщо ні, значить в файлі конфігурації є "косяки", розбираємося. Включаємо WUI, набравши в браузері після http: // IP-адреса клієнта і через двокрапку номер порту клієнта, які ви вказали в текстовому файлі конфігурації, наприклад, http://127.0.0.1:4080.

Якщо все нормально, то через кілька секунд ви побачите сторінку, як на рис., Причому обов'язково переконайтеся, що ви підключилися до хабам, на що вказують рядки "connected".

Можна шукати файли. Для цього служить сторінка "Search". У рядок пошуку вводимо ключове слово або Magnet-посилання, вказуємо тип файлу, шукаємо. Кількість знайдених файлів відображається в розділі "Results", воно повинно бути ненульовим. Клацаємо по ключу пошуку під рядком "Criteria", вибираємо, який файл і звідки завантажувати, йдемо на сторінку "Downoads" і милуємося процесом завантаження. Складно? Можливо. Якщо "Шарелін" вам не під силу, запускайте "Шареазу" під "Лінукс" в середовищі Wine, це все ж краще, ніж ризикувати цілісністю ОС Windows.

Успішних вам пошуків і вдалих знахідок!

Михайло Гурчик, [email protected]

Які ж основні відмінності між Gnutella і Gnutella2?
Виникає питання: якщо "Шареаза" комерційна, то чому вона безкоштовна?
Складно?

Дополнительная информация

rss
Карта