Контакти

Що таке P2P? Технології Peer-to-Peer — із попелюшки до принцеси Технологія peer to

І поки ми тут сидимо і думаємо, куди розмістити свою рекламу, в Пало-Альто відбувається щось дивне. Там співробітники маленького магазину Hassett Ace Hardware, що продає господарське обладнання, показують, як може стати життям давня мудрість про те, що люди створені не для накопичення, а для обміну.

Це називається "Ремонт-кафе". Щовихідних під боком біля магазину відкривається майданчик, де будь-яка людина може безкоштовно відремонтувати будь-що. Але при цьому йому доведеться зробити свій внесок у те, що відбувається на цьому майданчику. Поки менеджер магазину займається звичайним продажем, п'ять інших співробітників організовують натовпи охочих «полагодити» людей, залучаючи їх до інших ремонтів.

Усі діляться знаннями, порадами та гарним настроєм. Продажі йдуть у гору (для ремонту часто потрібні детальки, які треба купити в магазині). За квітень силами округу було відремонтовано близько 130 «одиниць техніки», у тому числі гігантський садовий лавовий фонтан та 200-річна швейна машинка. Кожен, хто відремонтувався на майданчику Hassett Ace Hardware, отримує прапорець для велосипеда з логотипом компанії. І його із задоволенням беруть, тому що класне обслуговування - річ страшенно приємна і незабутня.

Така економіка взаємовигоди отримала в маркетингових кулуарах ім'я peer-to-peer або "рівний рівному". Вона будується не тільки на грошах, а й на високому ступені емоційного задоволення, а у разі маленьких магазинів на зразок Hassett Ace Hardware ще й на вибудовуванні майже інтимних стосунків із клієнтами. Ходять чутки, що цю технологію вже обнюхують такі гіганти, як Pepsi, Chevrolet і Unilever.

«Ми дізналися цікаву річ: молоді покупці, перш ніж прийти в салон за авто, вишукують у соціальних мережах сторінки наших продавців, щоб вивчити їхні інтереси та знайти людину, близьку за духом. Вони його знаходять і радяться з ним, тому що знають – допомога буде більш дружньою, ніж менеджерською» — каже Крісті Ленді, менеджер з маркетингу General Motors. Навіть експертна думка може бути предметом взаємовигідного обміну.

При побіжному знайомстві з літературою виявляється безліч різних тлумачень поняття Peer-to-Peer, що відрізняються в основному спектром особливостей, що включаються.

Найсуворіші визначення «чистої» одноранговій мережі трактують її як повністю розподілену систему, у якій всі вузли є абсолютно рівноправними з погляду функціональності та завдань. Такому визначенню не відповідають системи, засновані на ідеї «супервузлів» (вузлів, що виконують роль локальних міні-серверів, що динамічно призначаються), наприклад Kazaa (хоча це не заважає її широкому визнанню в якості мережі P2P, або системи, яка використовує деяку централізовану серверну інфраструктуру для виконання підмножини допоміжних завдань: самоналаштування, управління репутаційним рейтингом тощо).

Згідно з більш широким визначенням, P2P є класом додатків, які використовують ресурси, - жорсткі диски, цикли процесора, контент, - доступні на краю хмари Інтернету. У той же час воно підходить і для систем, що застосовують для свого функціонування централізовані сервери (таких як SETI@home, системи миттєвих повідомлень або навіть сумнозвісна мережа Napster), а також різних програм з області grid-обчислень (решітчастих обчислень).

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

У той же час багато хто схожий на думку, що головні для архітектури P2P такі характеристики:

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

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

Тут саме час поміркувати про особливості обчислень у grid- та P2P-системах. І ті й інші представляють два підходи до розподілених обчислень з використанням ресурсів, що розділяються, у великомасштабному комп'ютерному співтоваристві.

Обчислювальні грати - це розподілені системи, які передбачають великомасштабне координоване використання та поділ географічно розподілених ресурсів, що базуються на постійних стандартизованих сервісних інфраструктурах та призначені переважно для високопродуктивних обчислень. При розширенні ці системи починають вимагати вирішення проблем самоконфігурування та стійкості до збоїв. У свою чергу, P2P-системи спочатку орієнтовані на нестабільність, змінну кількість вузлів у мережі, стійкість до відмов та самоадаптацію. Наразі розробники в області P2P створили в основному вертикально інтегровані додатки та не дбали про визначення загальних протоколів та стандартизованих інфраструктур для взаємодії.

Однак у міру розвитку технології P2P та використання більш складних додатків, таких як розподіл структурованого контенту, спільна робота на ПК та мережеві обчислення, очікується конвергенція P2P- та grid-обчислень.

Класифікація P2P-додатків

Архітектури P2P використовувалися для багатьох додатків різних категорій. Наведемо короткий опис деяких із них.

Комунікації та співробітництво.Ця категорія включає системи, що забезпечують інфраструктуру для прямих, зазвичай у режимі реального часу, комунікацій та співробітництва між рівноправними комп'ютерами. Прикладами можуть бути чат і служба миттєвих повідомлень.

Розподілені обчислення.Метою цих систем є об'єднання обчислювальних можливостей рівноправних вузлів на вирішення завдань з інтенсивними обчисленнями. Для цього завдання розбивається на низку невеликих підзадач, які розподіляються по різних вузлах. Результат їх роботи повертається потім хосту. Приклади таких систем - проекти SETI@home, genome@home та інших.

Системи бази даних.Значних зусиль було витрачено на розробку розподілених баз даних, заснованих на P2P-інфраструктурі. Зокрема, була запропонована локальна реляційна модель (Local Relational Model), яка передбачає, що набір всіх даних, що зберігаються в P2P-мережі, складається з несумісних локальних реляційних баз даних (тобто не задовольняють заданим обмеженням цілісності), взаємозалежних за допомогою « посередників», які визначають трансляційні правила та семантичні залежності між ними.

Розподіл контенту.До цієї категорії належать більшість сучасних P2P-мереж, що включають системи та інфраструктури, розроблені для поділу цифрової аудіовізуальної інформації та інших даних між користувачами. Спектр таких систем для розподілу контенту починається від відносно простих додатків для прямого поділу файлів і простягається до складніших, які створюють розподілені середовища зберігання, що забезпечують безпеку та ефективну організацію, індексацію, пошук, оновлення та вилучення даних. Як приклади можна навести пізню мережу Napster, Gnutella, Kazaa, Freenet та Groove. Надалі ми зосередимо увагу саме на цьому класі мереж.

Розподіл контенту в мережах P2P

У типовому випадку такі системи утворюють розподілене середовище зберігання, в якому можна виконати публікацію, пошук та вилучення файлів користувачами цієї мережі. У міру ускладнення в ній можуть з'являтися нефункціональні особливості, такі як безпека, анонімність, рівнодоступність, масштабованість, а також управління ресурсами та організаційні можливості. Сучасні технології P2P можна класифікувати в такий спосіб.

Програми P2P.До цієї категорії входять системи розподілу контенту, що базуються на технології P2P. Залежно від призначення та складності їх доречно поділити на дві підгрупи:

  • системи обміну файламипризначені для простого одноразового обміну між комп'ютерами. У таких системах створюється мережа рівноправних вузлів та забезпечуються засоби для пошуку та передачі файлів між ними. У типовому випадку це «легковажні» додатки з якістю обслуговування «у міру можливості» (best effort), які не дбають про безпеку, доступність та живучість;
  • системи для публікації та зберігання контенту. Такі системи надають середовище розподіленого зберігання, в якому користувачі можуть публікувати, зберігати та розподіляти контент, при цьому підтримуються безпека та надійність. Доступ до такого контенту контролюється, і вузли повинні мати відповідні привілеї для його отримання. Основними завданнями таких систем є забезпечення безпеки даних та живучості мережі, і найчастіше їхня головна мета полягає у створенні засобів для ідентифікованості, анонімності, а також управління контентом (оновлення, видалення, контроль версій).
  • визначення адреси та маршрутизація.Будь-яка P2P-система розподілу контенту спирається на мережу рівноправних вузлів, усередині якої вузли та контент повинні ефективно локалізуватися, а запити та відповіді - маршрутизуватися, і при цьому забезпечуватись відмовостійкість. Для виконання цих вимог було розроблено різні інфраструктури та алгоритми;
  • забезпечення анонімності. P2P-базовані інфраструктурні системи мають розроблятися з метою забезпечення анонімності користувача;
  • репутаційний менеджментУ мережах P2P відсутній центральний орган для управління репутаційною інформацією про користувачів та їхню поведінку. Тому вона розташовується на безлічі різних вузлів. Щоб гарантувати її безпеку, актуальність і доступність у всій мережі, необхідно мати складну інфраструктуру управління репутаціями.

Локалізація та маршрутизація розподілених об'єктів у мережах P2P

Функціонування будь-якої P2P-системи розподілу контенту спирається на вузли та з'єднання між ними. Ця мережа утворюється поверх і незалежно від базової (у типовому випадку IP) і тому часто називається оверлейною. Топологія, структура, ступінь централізації оверлейної мережі, механізми локалізації та маршрутизації, які в ній використовуються для передачі повідомлень та контенту, є вирішальними для роботи системи, оскільки вони впливають на її стійкість до відмов, продуктивність, масштабованість і безпеку. Оверлейні мережі розрізняються за рівнем централізації та структурою.

Централізація.Хоча найсуворіше визначення передбачає, що оверлейні мережі повністю децентралізовані, практично цього не завжди дотримуються, і зустрічаються системи з тим чи іншим ступенем централізації. Зокрема, виділяють три їх категорії:

  • повністю децентралізовані архітектури.Всі вузли в мережі виконують однакові завдання, діючи як сервери та клієнти, і не існує центру, що координує їхню активність;
  • частково централізована архітектура.Базис тут той самий, що й у попередньому випадку, однак деякі з вузлів відіграють важливішу роль, діючи як локальні центральні індекси для файлів, що поділяються локальними вузлами. Способи присвоєння таким супервузлам їхньої ролі в мережі в різних системах варіюються. Важливо, однак, відзначити, що ці супервузли не є єдиною точкою відмови для мережі P2P, оскільки призначаються динамічно і у разі відмови мережа автоматично передає їх функції іншим вузлам;
  • гібридні децентралізовані архітектуриУ таких системах є центральний сервер, який полегшує взаємодію між вузлами за допомогою управління директорією метаданих, що описує файли, що зберігаються на них. Хоча наскрізна взаємодія та обмін останніми може здійснюватися безпосередньо між двома вузлами, центральні сервери полегшують цей процес, переглядаючи та ідентифікуючи вузли, що зберігають файли.

Очевидно, у цих архітектурах є єдина точка відмови – центральний сервер.

Мережева структурахарактеризує, чи створюється оверлейна мережа недетерміновано (ad hoc), у міру того як додаються вузли та контент, або базується на спеціальних правилах. З точки зору структури мережі P2P поділяються на дві категорії:

  • неструктуровані.Розміщення контенту (файлів) у яких не пов'язані з топологією оверлейной мережі, у випадках його необхідно локалізувати. Механізми пошуку варіюються від методів грубої сили, таких як лавинне поширення запитів способами «спочатку вшир» (breadth-first) або «спочатку вглиб» (depth-first) - доки бажаний контент не буде знайдений, до більш софістичних стратегій, що передбачають використання методу випадкового блукання та індексацію маршрутів. Механізми пошуку, які застосовуються в неструктурованих мережах, мають очевидний вплив на доступність, масштабованість та надійність.

Неструктуровані системи найбільше підходять для мереж з непостійним числом вузлів. Прикладами є Napster, Gnutella, Kazaa, Edutella та інші;

  • структуровані.Поява таких мереж у першу чергу була пов'язана зі спробами вирішити проблеми масштабованості, з якими спочатку зіткнулися неструктуровані системи. У структурованих мережах оверлейна топологія суворо контролюється, і файли (або покажчики на них) розміщуються у певних місцях. Ці системи, по суті, забезпечують відповідність між контентом (скажімо, ідентифікатором файлу) та його розташуванням (наприклад, адресою вузла) у формі розподіленої маршрутної таблиці, тому запити можуть бути ефективно спрямовані вузлу з шуканим контентом.

Структуровані системи (до них ставляться Chord, CAN (Content Addressable Network), Tapestry та інших) надають масштабовані рішення пошуку по точному збігу, т. е. для запитів, у яких відомий точний ідентифікатор потрібних даних. Їх недоліком є ​​складність управління структурою, необхідна ефективної маршрутизації повідомлень серед з змінним числом вузлів.

Мережі, що займають проміжне положення між структурованими та неструктурованими, мають назву слабоструктурованих. Хоча дані про локалізації контенту в них вказуються не повністю, вони сприяють пошуку маршруту (типовий приклад такої мережі - Freenet).

Тепер обговоримо детальніше оверлейні мережі з погляду їх структури та ступеня централізації.

Неструктуровані архітектури

Почнемо з повністю децентралізованих архітектур(Див. наведене вище визначення). Найцікавішим представником таких мереж є Gnutella. Подібно до більшості P2P-систем, вона будує віртуальну оверлейну мережу з власним механізмом маршрутизації, дозволяючи своїм користувачам розділяти файли. У мережі відсутня якась централізована координація операцій, і вузли з'єднуються один з одним безпосередньо за допомогою ПЗ, яке функціонує як клієнт, і як сервер (його користувачів називають servents - від SERVers + cliENTS).

Як базовий мережевий протокол Gnutella застосовує IP, тоді як комунікації між вузлами визначаються протоколом прикладного рівня, що підтримує чотири типи повідомлень:

  • Ping- Запит до певного хосту з метою оголосити про себе;
  • Pong- відповідь на повідомлення Ping, що містить IP-адресу, порт запитаного хоста, а також кількість і розміри файлів, що розділяються;
  • Query- пошуковий запит. До нього входять рядок пошуку та мінімальні швидкісні вимоги до відповідного хосту;
  • Query Hits- відповідь на запит Query, включає IP-адресу, порт і швидкість передачі хоста, кількість знайдених файлів і набір їх індексів.

Після приєднання до мережі Gnutella (за допомогою зв'язку з вузлами, виявленими в базах даних, таких як gnutellahosts.com) вузол надсилає повідомлення Ping якимось зв'язаним з ним хостам. Ті відповідають повідомленням Pong, ідентифікуючи себе, і надсилають повідомлення Pingсвоїм сусідам.

У неструктурованій системі, подібної до Gnutella, єдиною можливістю локалізувати файл є недетермінований пошук, оскільки у вузлів не було способу припустити, де він знаходиться.

Спочатку в архітектурі Gnutella використовувався лавинний (або широкомовний) механізм для розподілу запитів Pingі Query: кожен вузол направляв отримані повідомлення всім своїм сусідам, а відповіді йшли зворотним шляхом. Щоб обмежити потоки повідомлень у мережі, всі вони містили в заголовку поле Time-to-Live (TTL). На транзитних вузлах значення цього поля зменшувалося, і коли воно досягало значення 0 повідомлення видалялося.

Описаний механізм реалізовувався за допомогою присвоєння повідомленням унікальних ідентифікаторів ID та наявності у хостах динамічних маршрутних таблиць з ідентифікаторами повідомлень та адресами вузлів. Коли відповіді містять такий самий ID, як і вихідні повідомлення, хост звертається до маршрутної таблиці, щоб визначити, яким каналом направити відповідь для розриву петлі.

Мал. 1. Приклад механізму пошуку у неструктурованій системі

Якщо вузол отримує повідомлення Query Hit, в якому зазначено, що файл, що шукається, знаходиться на певному комп'ютері, він ініціює завантаження за допомогою прямого з'єднання між двома вузлами. Механізм пошуку наведено на рис. 1.

Частково централізовані системибагато в чому подібні до повністю децентралізованих, але вони використовують концепцію супервузлів - комп'ютерів, яким динамічно присвоюється завдання обслуговування невеликої частини оверлейної мережі за допомогою індексування та кешування файлів, що містяться в ній. Вони вибираються автоматично, виходячи з їхньої обчислювальної потужності та смуги пропускання.

Супервузли індексують файли, що розділяються приєднаними до них вузлами, і як proxy-сервери виконують пошук від їхнього імені. Тому всі запити спочатку надсилаються до супервузлів.

Частково централізовані системи мають дві переваги:

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

Частково централізованою системою є мережа Kazaa.

Мал. 2 ілюструє приклад типової P2P-архітектури з гібридною децентралізацією.На кожному клієнтському комп'ютері зберігаються файли, що поділяються з рештою оверлейної мережі. Всі клієнти з'єднані з центральним сервером, який керує таблицями даних про зареєстрованих користувачів (IP-адреса, пропускна здатність каналу тощо) і списків файлів, що є у кожного користувача і розділяються в мережі поряд з метаданими файлами (наприклад, ім'я, час створення тощо).

Комп'ютер, який хоче увійти до спільноти, приєднується до центрального сервера і повідомляє йому про файли, що містяться на ньому. Клієнтські вузли надсилають запити про них серверу. Той шукає в індексній таблиці і повертає список користувачів, у яких вони знаходяться.

Перевага систем з гібридною децентралізацією полягає в тому, що вони просто реалізуються, а пошук файлів виконується швидко та ефективно. До основних недоліків слід зарахувати вразливість для контролю, цензури та правових дій, атак і технічних відмов, оскільки контент, що розділяється, або, принаймні, його опис керується однією організацією, компанією або користувачем. Більше того, така система погано масштабується, тому що її можливості обмежуються розміром БД сервера та його здатністю відповідати на запити. Прикладом у разі може бути Napster.

Структуровані архітектури

Різноманітні структуровані системи розподілу контенту використовують різні механізми для маршрутизації повідомлень та знаходження даних. Ми зупинимося на найбільш знайомій українським користувачам – Freenet.

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

Freenet – типовий приклад повністю децентралізованої слабоструктурованої системи розподілу контенту. Вона функціонує як однорангова мережа, що самоорганізується, збираючи в пул дисковий простір комп'ютерів, що не використовується, з метою створення спільної віртуальної файлової системи.

Файли Freenet ідентифікуються за допомогою унікальних двійкових ключів. Підтримуються три типи ключів, найпростіший з них базується на застосуванні хеш-функції до короткого дескриптивного текстового рядка, який супроводжує будь-який файл, який зберігається в мережі його власником.

Кожен вузол мережі Freenet управляє своїм власним локальним сховищем даних, роблячи його доступним для читання та запису іншими, так само як і динамічну таблицю маршрутизації, що містить адреси інших вузлів і файлів, що зберігаються ними. Щоб знайти файл, користувач надсилає запит, що містить ключ і непряме значення часу життя, виражене за допомогою максимально допустимої кількості пройдених транзитних вузлів (hops-to-live).

Freenet використовує такі типи повідомлень, кожне з яких включає ідентифікатор вузла (для виявлення петель), значення hops-to-live та ідентифікатори джерела та одержувача:

  • Data insert- Вузол, що містить нові дані в мережу (у повідомленні знаходяться ключ і дані (файл));
  • Data request- запит певного файла (до нього входить ключ);
  • Data reply- відповідь, коли файл знайдено (до повідомлення включається файл);
  • Data failed- Помилка в пошуку файлу (вказуються вузол і причина помилки).

Для приєднання до Freenet комп'ютери перш за все визначають адресу одного або більше існуючих вузлів, а потім надсилають повідомлення Data insert.

Щоб помістити новий файл у мережу, вузол спочатку обчислює його двійковий ключ і надсилає повідомлення Data insertсобі. Будь-який вузол, який отримав таке повідомлення, спочатку перевіряє, чи вже не використовується цей ключ. Якщо ні, то він шукає найближчий (у сенсі лексикографічної відстані) у своїй маршрутній таблиці та надсилає повідомлення (з даними) відповідному вузлу. За допомогою описаного механізму нові файли розміщуються на вузлах, які вже володіють файлами з подібними ключами.

Це триває доти, доки не вичерпається ліміт hops-to-live. Таким чином, файл, що розповсюджується, розміститься більш ніж на одному вузлі. У той самий час все вузли, залучені до процесу, оновлять свої маршрутні таблиці - такий механізм, з якого нові вузли анонсують свою присутність у мережі. Якщо межа hops-to-liveдосягнуто без колізії значень ключів, повідомлення "все коректно" буде доставлено назад до джерела, інформуючи його, що файл поміщений у мережу успішно. Якщо ключ вже використовується, вузол повертає існуючий файл, ніби саме він був запрошений. Таким чином, спроба заміни файлів призведе до їх поширення далі.

При отриманні вузлом запиту на файл, що зберігається на ньому, пошук зупиняється і дані направляються до його ініціатора. Якщо файлу немає, вузол передає запит до сусіднього, на якому він з великою ймовірністю може знаходитися. Адреса знаходиться в маршрутній таблиці за найближчим ключем, і т. д. Зауважимо, що тут наведено спрощений алгоритм пошуку, що дає лише загальну картину функціонування мережі Freenet.

На цьому ми, мабуть, закінчимо досить конспективний огляд технологій P2P і торкнемося теми використання їх у бізнесі. Нескладно виділити ряд переваг P2P-архітектури перед клієнт-серверною, які будуть потрібні в діловому середовищі:

  • висока надійність та доступність додатків у децентралізованих системах, що пояснюється відсутністю єдиної точки відмови та розподіленим характером зберігання інформації;
  • краща утилізація ресурсів, чи це пропускна здатність каналів зв'язку, цикли процесора або місце на жорстких дисках. Дублювання робочої інформації також суттєво знижує (але не виключає повністю) потребу у резервному копіюванні;
  • простота розгортання системи та легкість використання за рахунок того, що одні й ті самі програмні модулі виконують і клієнтські, і серверні функції - особливо коли йдеться про роботу в локальній мережі.

Потенційні можливості мереж P2P виявилися настільки великі, що Hewlett-Packard, IBM та Intel ініціювали створення робочої групи з метою стандартизувати технологію для застосування у комерційних цілях. У новій версії ОС Microsoft Windows Vista буде вбудовано кошти для колективної роботи, що дозволяють ноутбукам розділяти дані з найближчими сусідами.

Перші прихильники цієї технології, такі як аерокосмічний гігант Boeing, нафтова компанія Amerada Hess і сама Intel, кажуть, що її використання зменшує необхідність придбання високорівневих обчислювальних систем, включаючи мейнфрейми. Системи P2P можуть також послабити вимоги до пропускної спроможності мережі, що важливо для компаній, у яких виникають проблеми.

Intel почала використовувати технологію P2P у 1990 р., прагнучи знизити витрати на розробку чіпів. Компанія створила власну систему, названу NetBatch, яка об'єднує понад 10 тис. комп'ютерів, надаючи інженерам доступ до глобально розподілених обчислювальних ресурсів.

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

Потенціал технологій P2P привернув увагу та венчурного капіталу. Так, Softbank Venture Capital інвестував 13 млн дол. у компанію United Device, що розробляє технології для трьох ринків: обчислення для біотехнологічної індустрії, якість обслуговування (QoS) та навантажувальні тести для Web-сайтів, а також індексування контенту на базі методу «черв'ячного» пошуку , що використовується поряд машин в Інтернеті.

У будь-якому разі вже сьогодні очевидно п'ять областей успішного застосування мереж P2P. Це розділення файлів, розділення програм, забезпечення цілісності систем, розподілені обчислення та взаємодія пристроїв. Немає сумнівів, що незабаром їх стане ще більше.

Безкоштовний P2P-клієнт з відкритим кодом для роботи з мережею Direct Connect. Дозволяє вільно завантажувати файли, розшаровані іншими користувачами цієї мережі.

Про пірингові мережі (p2p)

Мережа Direct Connect за своєю структурою чимось нагадує той самий BitTorrent.

ХабХаб (англ. hub, маточина колеса, центр) - вузол мережі.

Трекер- сервер мережі BitTorrent, що координує клієнтів.

Тут теж немає централізованої системи пошуку, а здобуття права знайти який-небудь файл, необхідно відвідати одне із спеціальних серверів – хабів (аналогічно трекерам на BitTorrent).

З'єднавшись із хабом, Ви отримаєте список користувачів, підключених до нього. Проте з'єднання може статися, якщо Ви не розшарили (не виклали для скачування) потрібного обсягу інформації. Зазвичай від 2 до 10 Гб.

Якщо з'єднання все ж таки відбулося, то Ви маєте можливість або ввести на пошук ім'я файлу, що цікавить Вас, або вести пошук вручну, заходячи до кожного користувача.

Принцип роботи мережі має бути загалом зрозумілий. Тепер почнемо розгляд самого клієнта для Direct Connection.

Установка StrongDC++

Завантаживши архів з програмою, запускаємо файл, що виконується, і програма встановиться в папку «Program files» на вашому комп'ютері.

Якщо в кінці установки Ви не прибрали відповідну галочку, програма автоматично запуститься.

Ця версія вже російською мовою, але якщо Ви завантажили англійську версію, то русифікувати програму можна за допомогою відповідного файлу з розширенням xml, що лежить у нашому архіві з програмою.

Коли русифікатор завантажений, його потрібно встановити. Для цього вибираємо в меню налаштувань програми пункт «Appearance» та у полі Language fileнатисніть кнопку «Browse», щоб вибрати розташування файлу sDC+++russian.xml(Назва файлу русифікатора).

Після проведення всіх маніпуляцій перезапустіть програму та отримайте повнофункціональну російську версію!

Налаштування StrongDC++

Тепер налаштуємо вже російську версію Strong DC++.

Нік- Унікальне ім'я в системі.

У меню "Загальні" слід вказати свій нік, E-mail, а також швидкість віддачі файлів. Поле "Опис" можна залишити порожнім (це типу Ваш коментар).

IP-адреса- цифрова адреса комп'ютера в мережі, наприклад: 192.0.3.244.

У «Налаштуваннях з'єднання» можна вказати свою IP-адресу та деякі інші дані. Зверніть увагу на «Налаштування вхідних з'єднань».

Краще використовувати пасивне з'єднання через фаєрвол (інакше файли інших користувачів у Вас не відображатимуться).

Проксі-сервер- Проміжний сервер.

Трафік вихідних з'єднань можна перенаправити на проксі сервер, а можна залишити безпосередньо (швидкість буде вищою).

Потім виберемо пункт «Скачка» та налаштуємо папки для скачки за замовчуванням та для зберігання тимчасових файлів.

А тепер - найголовніше! Потрібно розшарити свої файли. Для цього заходимо в меню «Мої файли (кулі)» і у вікні, що відкрилося праворуч, вибираємо ті файли і папки, до яких Ви хочете відкрити доступ.

Після того, як Ви оберете будь-який файл, у Вас з'явиться наступне вікно прогресу.

Початок роботи з StrongDC++

Після закінчення хешування файлів, можна вже приступати до безпосередньої роботи з програмою. Натисніть кнопку «OK» унизу і перед Вами з'явиться головне вікно програми.

Для того щоб розпочати пошук потрібних файлів, насамперед доведеться підключитися до одного з численних хабів.

Для цього слід натиснути кнопку «Інет хаби» на панелі інструментів, а далі вибрати один зі списків інет хаб-листів та натиснути кнопку «Оновити».

Користувач(англ. user) - Користувач.

Якщо Ви знаєте ім'я необхідного Вам хаба чи конкретного користувача, то простіше здійснювати пошук, використовуючи фільтр.

Коли потрібний хаб знайдено, можна переходити до нього, двічі клацнувши лівою кнопкою миші за назвою. Якщо обсяг розшарених Вами даних відповідає вимогам хаба, Ви побачите приблизно таке вікно:

Зверніть увагу на наявність закладок під головним вікном. За допомогою цих закладок Strong DC++ здійснюється вся навігація. Керувати закладками можна натисканням правої кнопки миші.

Інтерфейс StrongDC++

Основний простір займає чат дуже вигідна річ. Він буде корисний, починаючи з того, щоб «просто побалакати», до можливості дізнатися в інших, де знайти ту чи іншу інформацію, якщо пошук не допоміг.

Праворуч від чату знаходиться перелік користувачів, які зараз присутні на хабі. Кольори, якими написані імена користувачів, несуть додаткову інформацію.

Ручний пошук файлів для скачування

Розглянемо взаємодію за допомогою ручного пошуку. Біля кожного користувача є індикатор кількості розшарованих файлів. Якщо у Вас не дуже висока швидкість з'єднання, то краще вибирайте тих, у кого менший обсяг файлів.

Тепер, коли в «Статусі» з'явиться сигнал про те, що список файлів завантажено, внизу відкриється ще одна закладка, на якій можна буде подивитися, які файли знаходяться на комп'ютері у вибраного користувача.

Щоб завантажити вибраний файл, натисніть на ньому правою кнопкою миші та виберіть – Завантажити.

Так само ми робимо, користуючись пошуком. У пошуковому рядку вводимо назву потрібного нам файлу та чекаємо.

Після закінчення пошуку внизу Ви побачите список користувачів, які мають цей файл. Ви вибираєте одного з них, підключаєтеся до нього та завантажуєте потрібні дані.

Висновки

Незважаючи на численні переваги мережі DC++, існують деякі недоліки. Саме їх два. Неможливість завантаження файлу, якщо відключилося джерело (той, хто має цей файл). І другий недолік - це, іноді, дуже довга черга на завантаження.

В цілому ж система дуже цікава, а зручною її робить використання програми StrongDC++.

P.S. Дозволяється вільно копіювати та цитувати цю статтю за умови вказівки відкритого активного посилання на джерело та збереження авторства Руслана Тертишного.

P.P.S. Попередниками мережі P2P були FTP-сервери, до яких найзручніше підключатися за допомогою цієї програми:
FTP-клієнт FileZilla https://www..php

Peer-to-peer технології

Виконала:

студентка 1 курсу ФМФ магістратури

Кулаченко Надія Сергіївна

Перевірив:

Чернишенко Сергій Вікторович

Москва 2011


Вступ

У міру розвитку Інтернету все більший інтерес у користувачів викликають технології обміну файлами. Більш доступна, ніж раніше, Мережа та наявність широких каналів доступу дозволяють значно простіше знаходити та закачувати потрібні файли. Не останню роль у цьому процесі відіграють сучасні технології та принципи побудови угруповань, які дозволяють будувати системи, дуже ефективні з точки зору як організаторів, так і користувачів файлообмінних мереж. Отже, дана тема нині є актуальною, т.к. постійно з'являються нові мережі, а старі або припиняють роботу, або модифікуються та покращуються. За деякими даними, зараз в Інтернеті більше половини всього трафіку припадає на трафік файлообмінних пірингових мереж. Розміри найбільших з них перевалили за позначку в мільйон вузлів, що одночасно працюють. Загальна кількість зареєстрованих учасників таких файлообмінних мереж у всьому світі становить близько 100 млн.

Peer-to-peer (англ. рівний рівному) - давній принцип японських самураїв та утопічних соціалістів. Він набув справжньої популярності наприкінці ХХ століття. Зараз цей принцип використовують мільйони користувачів інтернету, розмовляючи з друзями з далеких країн, завантажуючи файли у користувачів, з якими ніколи не були знайомі.

Peer-to-peer (P2P) технології є однією з найпопулярніших тем на сьогоднішній день. Популярність, досягнута за допомогою таких програм як Skype, Bittorrent, DirectConnect та список таких програм можна продовжувати і продовжувати, підтверджує потенціал peer-to-peer систем.

У цій роботі я розгляну окремі принципи функціонування ресурсів цієї тематики, принципи функціонування популярних пірингових мереж, які активно застосовуються для обміну файлами, а також проблеми їх використання.


1. Napster і Gnutella – перші пірингові мережі

Перша пірингова мережа Napster з'явилася в 1999 році і відразу стала відома всьому Інтернет-спільноті. Автором клієнта був вісімнадцятирічний Шон Феннінг. Napster об'єднав тисячі комп'ютерів із відкритими ресурсами. Спочатку користувачі Napster обмінювалися mp3 файлами.

Napster дозволяв створити інтерактивне розраховане на багато користувачів середовище для деякого специфічного взаємодії. Napster надає всім підключеним до нього користувачам можливість обмінюватися музичними файлами у форматі mp3 практично безпосередньо: центральні сервери Napster забезпечують можливість пошуку на комп'ютерах всіх підключених до них користувачів, а обмін відбувається в обхід центральних серверів за схемою user-to-user. Велика частина записів, що циркулюють у середовищі, що сформувалося навколо Napster, захищена законом про авторські права, проте поширюється безкоштовно. Napster спокійно проіснував п'ять місяців, ставши дуже затребуваним сервісом.

7 грудня Асоціація індустрії звукозапису Америки (RIAA) подала на компанію Napster до суду за "пряме та опосередковане порушення копірайту".

Зрештою, Napster спершу продався якійсь європейській фірмі, а потім взагалі був закритий.

Gnutella – була створена у 2000 р програмістами фірми Nullsoft як наступниця Napster. Вона функціонує досі, хоча через серйозні недоліки алгоритму користувачі в даний час віддають перевагу мережі Gnutella2. Ця мережа працює без сервера (повна децентралізація).

При підключенні клієнт отримує від вузла, з яким йому вдалося з'єднатися, список із п'яти активних вузлів; їм надсилається запит на пошук ресурсу за ключовим словом. Вузли шукають у себе відповідні запиту ресурси і, якщо не знаходять їх, пересилають запит активним вузлам вгору "деревом" (топологія мережі має структуру графа типу "дерево"), поки не знайдеться ресурс або не буде перевищено максимальну кількість кроків. Такий пошук називається розмноженням запитів (query flooding).

Зрозуміло, що така реалізація веде до експоненційного зростання кількості запитів і на верхніх рівнях “дерева” може призвести до відмови в обслуговуванні, що й спостерігалося неодноразово практично. Розробники вдосконалили алгоритм, запровадили правила, відповідно до якими запити можуть пересилати вгору “деревом” лише певні вузли - звані виділені (ultrapeers), інші вузли (leaves) можуть лише запитувати останні. Введена також система вузлів, що кешують.

У такому вигляді мережа функціонує і зараз, хоча недоліки алгоритму та слабкі можливості розширюваності ведуть до зменшення її популярності.

Недоліки протоколу Gnutella ініціювали розробку принципово нових алгоритмів пошуку маршрутів та ресурсів та призвели до створення групи протоколів DHT (Distributed Hash Tables) – зокрема, протоколу Kademlia, який зараз широко використовується у найбільших мережах.

Запити в мережі Gnutella пересилаються TCP або UDP, копіювання файлів здійснюється через протокол HTTP. Останнім часом з'явилися розширення для клієнтських програм, що дозволяють копіювати файли UDP, робити XML-запити метаінформації про файли.

У 2003 р. був створений принципово новий протокол Gnutella2 і перші клієнти, що його підтримують, які були зворотносумісні з клієнтами Gnutella. Відповідно до нього деякі вузли стають концентраторами, інші є звичайними вузлами (leaves). Кожен звичайний вузол має з'єднання з одним-двома концентраторами. А концентратор пов'язаний із сотнями звичайних вузлів та десятками інших концентраторів. Кожен вузол періодично пересилає концентратору список ідентифікаторів ключових слів, за якими можна знайти ресурси, що публікуються даним вузлом. Ідентифікатори зберігаються у загальній таблиці на концентраторі. Коли вузол “хоче” знайти ресурс, він посилає запит по ключовому слову своєму концентратору, останній або знаходить ресурс у таблиці і повертає ID вузла, що має ресурсом, або повертає список інших концентраторів, які вузол знову запитує по черзі випадковим чином. Такий пошук називається пошуком за допомогою методу блукань (random walk).

Примітною особливістю мережі Gnutella2 є можливість розмноження інформації про файл у мережі без копіювання самого файлу, що дуже корисно з огляду на відстеження вірусів. Для пакетів, що передаються в мережі, розроблений власний формат, схожий на XML, що гнучко реалізує можливість нарощування функціональності мережі шляхом додавання додаткової службової інформації. Запити та списки ID ключових слів надсилаються на концентратори UDP.

2. P2P технології. Принцип «клієнт-клієнт»

Однорангова, децентралізована чи пірингова (від англ. peer-to-peer, P2P - рівний рівному) мережа - це оверлейная комп'ютерна мережу, заснована на рівноправності учасників. У мережі відсутні виділені сервери, а кожен вузол (peer) є як клієнтом, і сервером. На відміну від архітектури клієнт-сервера, така організація дозволяє зберігати працездатність мережі за будь-якої кількості та будь-якого поєднання доступних вузлів. Учасниками мережі є бенкети.

Вперше термін peer-to-peer був використаний у 1984 р. компанією IBM для розробки мережевої архітектури для динамічної маршрутизації трафіку через комп'ютерні мережі з довільною топологією (Advanced Peer to Peer Networking). У основі технології лежить принцип децентралізації: все вузли у мережі P2P рівноправні, тобто. кожен вузол може одночасно виступати як ролі клієнта (отримувача інформації), і у ролі сервера (постачальника інформації). «Це забезпечує такі переваги технології P2P перед клієнт-серверним підходом, як відмовостійкість при втраті зв'язку з кількома вузлами мережі, збільшення швидкості отримання даних за рахунок копіювання одночасно з кількох джерел, можливість поділу ресурсів без прив'язки до конкретних IP-адрес, величезна потужність мережі загалом та інших.»[2]

Кожен із рівноправних вузлів взаємодіє безпосередньо лише з деяким підмножиною вузлів мережі. У разі необхідності передачі файлів між вузлами мережі, що неконтактують безпосередньо, передача файлів здійснюється або через вузли-посередники, або за тимчасово встановленим прямим з'єднанням (воно спеціально встановлюється на період передачі). У своїй роботі файлообмінні мережі використовують свій власний набір протоколів та ПЗ, який несумісний з протоколами FTP та HTTP і має важливі вдосконалення та відмінності. По-перше, кожен клієнт такої мережі, завантажуючи дані, дозволяє підключатися до нього іншим клієнтам. По-друге, P2P-сервери (на відміну HTTP і FTP) не зберігають файлів для обміну, які функції зводяться переважно до координації спільної роботи користувачів у цій мережі. Для цього вони ведуть своєрідну базу даних, у якій зберігаються такі відомості:

Яка IP-адреса має той чи інший користувач мережі;

Які файли розміщені у якогось клієнта;

Які фрагменти яких файлів де знаходяться;

Статистика того, хто скільки скачав собі та дав скачати іншим.

Робота в типовій файлообмінній мережі будується так:

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

Якщо потрібний файл є та знайдено, сервер віддає клієнту IP-адреси інших клієнтів, у яких цей файл було знайдено.

Клієнт, який запросив файл, встановлює «пряме» з'єднання з клієнтом або клієнтами, які мають потрібний файл, і починає його завантажувати (якщо клієнт не відключений у цей час від мережі або не перевантажений). При цьому в більшості мереж P2P можливе скачування одного файлу відразу з декількох джерел.

Клієнти інформують сервер про всіх клієнтів, які до них підключаються, та файли, які ті запитують.

Сервер заносить у свою базу даних хтось що скачав (навіть якщо завантажені файли не повністю).

Мережі, створені на основі технології Peer-to-Peer, також називаються пірінговими, однорангові або децентралізовані. І хоча вони використовуються зараз в основному для поділу файлів, існує ще багато інших областей, де ця технологія теж успішно застосовується. Це телебачення та аудіотрансляції, паралельне програмування, розподілене кешування ресурсів для розвантаження серверів, розсилка повідомлень та статей, підтримка системи доменних імен, індексування розподілених ресурсів та їх пошук, резервне копіювання та створення стійких розподілених сховищ даних, обмін повідомленнями, створення систем, стійких до атак типу "відмова в обслуговуванні", розповсюдження програмних модулів.


3. Основні уразливі сторони P2P

Реалізація та використання розподілених систем мають не лише плюси, а й мінуси, пов'язані з особливостями забезпечення безпеки. Отримати контроль над такою розгалуженою та великою структурою, якою є мережа P2P, або використовувати прогалини у реалізації протоколів для власних потреб – бажана мета для хакерів. До того ж, захистити розподілену структуру складніше, ніж централізований сервер.

Така величезна кількість ресурсів, що є в мережах P2P, важко шифрувати/дешифрувати, тому більшість інформації про IP-адреси та ресурси учасників зберігається і пересилається в незашифрованому вигляді, що робить її доступною для перехоплення. При перехопленні зловмисник не тільки отримує власне інформацію, але також дізнається і про вузли, на яких вона зберігається, що також небезпечно.

Лише останнім часом у клієнтах більшості великих мереж ця проблема стала вирішуватись шляхом шифрування заголовків пакетів та ідентифікаційної інформації. З'являються клієнти з підтримкою технології SSL, впроваджуються спеціальні засоби захисту інформації про місцезнаходження ресурсів та ін.

Серйозна проблема - поширення "хробаків" та підробка ID ресурсів з метою їх фальсифікації. Наприклад, у клієнті Kazaa використовується хеш-функція UUHash, яка дозволяє швидко знаходити ID для великих файлів навіть на слабких комп'ютерах, але при цьому залишається можливість підробки файлів і запису зіпсованого файлу, що має той же ID.

Щоб впоратися з описаною проблемою, клієнти повинні користуватися надійними хеш-функціями (“деревами” хеш-функцій, якщо файл копіюється частинами), такими, як SHA-1, Whirlpool, Tiger, і тільки для вирішення маловідповідних завдань - контрольними сумами CRC. Для зменшення обсягів даних і полегшення їх шифрування можна застосувати компресію. Для захисту від вірусів потрібно мати можливість зберігати ідентифікуючу метаінформацію про "хробаки", як це, зокрема, зроблено в мережі Gnutella2.

Інша проблема – можливість підробки ID серверів та вузлів. За відсутності механізму перевірки справжності службових повідомлень, що пересилаються, наприклад, за допомогою сертифікатів, існує можливість фальсифікації сервера або вузла (багатьох вузлів). Оскільки вузли обмінюються інформацією, підробка деяких із них призведе до компрометації всієї мережі чи її частини. Закрите програмне забезпечення клієнтів і серверів не є вирішенням проблеми, оскільки є можливість для реінжинірингу протоколів і програм (reverse engineering).

Частина клієнтів тільки копіюють чужі файли, але не пропонують нічого копіювання іншим (leechers).

У московських будинкових мережах на кількох активістів, які роблять доступними більше 100 Гбайт інформації, припадає близько сотні, що викладають менше 1 Гбайт. Для боротьби із цим використовуються різні методи. У eMule застосовано метод кредитів: скопіював файл – кредит зменшився, дозволив скопіювати свій файл – кредит збільшився (xMule – кредитна система із заохоченням поширення рідкісних файлів). У мережі eDonkey стимулюється розмноження джерел, у Bittorrent реалізована схема "скільки блоків файлу отримав, стільки віддав" тощо.


4. Деякі пірингові мережі

4.1 DirectConnect

пірінгова мережа torrent однорангова

Direct Connect - це частково централізована файлообмінна (P2P) мережа, основу роботи якої лежить особливий протокол, розроблений фірмою NeoModus.

NeoModus була заснована Джонатаном Хессом (Jonathan Hess) у листопаді 1990 року як компанія, яка заробляла на adware-програмі "Direct Connect". Першим стороннім клієнтом став "DClite", який ніколи повністю не підтримував протокол. Нова версія Direct Connect вже вимагала простого ключа шифрування для ініціалізації підключення, цим він сподівався блокувати сторонні клієнти. Ключ був зламаний і автор DClite випустив нову версію своєї програми, сумісної із новим програмним забезпеченням від NeoModus. Незабаром код DClite був переписаний, і програма була перейменована в Open Direct Connect. Крім усього іншого, її інтерфейс став багатодокументним (MDI), і з'явилася можливість використовувати плагіни для файлообмінних протоколів (як у MLDonkey). Open Direct Connect також не мав повної підтримки протоколу, але з'явився під Java. Трохи пізніше почали з'являтися й інші клієнти: DCTC (Direct Connect Text Client), DC++ та ін.

Мережа працює в такий спосіб. Клієнти підключаються до одного або кількох серверів, так званих хабів для пошуку файлів, які зазвичай не пов'язані між собою (деякі типи хабів можна частково або повністю зв'язати в мережу, використовуючи спеціалізовані скрипти або програму Hub-Link) і служать для пошуку файлів та джерел для їх скачування. Як хаб найчастіше використовуються PtokaX, Verlihub, YnHub, Aquila, DB Hub, RusHub. Для з іншими хабами використовуються т.зв. dchub-посилання:

dchub://[ ім'я користувача ]@[ IP або Домен хаба ]:[ порт хаба ]/[шлях до файлу]/[ім'я файлу]

Відмінності від інших P2P-систем:

1. Зумовлені структурою мережі

· Розвинений розрахований на багато користувачів чат

· Сервер мережі (хаб) може бути присвячений певній темі (наприклад, музиці конкретного напрямку), що дозволяє легко знаходити користувачів з необхідною тематикою файлів

· Присутність привілейованих користувачів - операторів, які володіють розширеним набором можливостей управління хабом, зокрема, що стежать за дотриманням користувачами правил чату та файлообміну

2. Залежні від клієнта

· Можливість завантажувати цілі директорії

· Результати пошуку не тільки за назвами файлів, а й за каталогами

· Обмеження на мінімальну кількість розшарованого матеріалу (за обсягом)

· Підтримка скриптів з потенційно безмежними можливостями як на стороні клієнта, так і на стороні хаба (вірно не для будь-яких хабів і клієнтів)

Автори клієнта DC++ розробили для вирішення специфічних проблем принципово новий протокол, який називається Advanced Direct Connect (ADC), мета якого - підвищення надійності, ефективності та безпеки файлообмінної мережі. 2 грудня 2007 вийшла остаточна версія протоколу ADC 1.0. Протокол продовжує розвиватися та доповнюватися.

4.2 Bit Torrent

BitTorrent (букв. англ. «бітовий потік») – пірінговий (P2P) мережевий протокол для кооперативного обміну файлами через Інтернет.

Файли передаються частинами, кожен torrent-клієнт, отримуючи (завантажуючи) ці частини, водночас віддає (закачує) їх іншим клієнтам, що знижує навантаження і залежність від кожного клієнта-джерела та забезпечує надмірність даних. Протокол був створений Бремом Коеном, який написав перший torrent-клієнт «BitTorrent» мовою Python 4 квітня 2001 року. Запуск першої версії відбувся 2 липня 2001 року.

Для кожної роздачі створюється файл метаданих із розширенням.torrent, який містить таку інформацію:

URL-трекера;

Загальну інформацію про файли (ім'я, довжину тощо) у цій роздачі;

Контрольні суми (точніше, хеш-суми SHA1) сегментів файлів, що роздаються;

Passkey користувача, якщо він зареєстрований на даному трекері. Довжина ключа встановлюється трекером.

Не обов'язково:

Хеш-суми файлів повністю;

Альтернативні джерела, що працюють не за протоколом BitTorrent. Найбільш поширена підтримка про web-сидов (протокол HTTP), але допустимими також є ftp, ed2k, magnet URI.

Файл метаданих є словником у форматі bencode. Файли метаданих можуть розповсюджуватися через будь-які канали зв'язку: вони (або посилання на них) можуть викладатися на веб-серверах, розміщуватися на домашніх сторінках користувачів мережі, розсилатися електронною поштою, публікуватися в блогах або стрічках RSS. Також є можливість отримати info частину публічного файлу метаданих безпосередньо від інших учасників роздачі завдяки розширенню протоколу "Extension for Peers to Send Metadata Files". Це дозволяє обійтися публікацією лише магнет-посилання. Отримавши якимось чином файл із метаданими, клієнт може розпочинати скачування.

Перед початком завантаження клієнт під'єднується до трекера за адресою, вказаною в торрент-файлі, повідомляє йому свою адресу та хеш-суму торрент-файлу, на що у відповідь клієнт отримує адреси інших клієнтів, які завантажують або роздають цей файл. Далі клієнт періодично інформує трекер про перебіг процесу та отримує оновлений список адрес. Цей процес називається оголошенням (англ. Announce).

Клієнти з'єднуються один з одним і обмінюються сегментами файлів без безпосередньої участі трекера, який зберігає інформацію, отриману від підключених до обміну клієнтів, список самих клієнтів та іншу статистичну інформацію. Для ефективної роботи мережі BitTorrent необхідно, щоб якомога більше клієнтів могли приймати вхідні з'єднання. Неправильне налаштування NAT або брандмауера може завадити цьому.

При з'єднанні клієнти одночасно обмінюються інформацією про наявні в них сегменти. Клієнт, який бажає завантажити сегмент (лічер), надсилає запит і, якщо другий клієнт готовий віддавати, отримує цей сегмент. Після цього клієнт перевіряє контрольну суму сегмента. Якщо вона збіглася з тією, що записана в торрент-файлі, то сегмент вважається успішно завантаженим, і клієнт повідомляє всіх приєднаних бенкетів про наявність у нього цього сегмента. Якщо ж контрольні суми різняться, то сегмент починає завантажуватися заново. Деякі клієнти банять тих бенкетів, які надто часто віддають некоректні сегменти.

Таким чином, обсяг службової інформації (розмір торрент-файлу та розмір повідомлень зі списком сегментів) безпосередньо залежить від кількості, а отже, і розміру сегментів. Тому при виборі сегмента необхідно дотримуватися балансу: з одного боку, при великому розмірі сегмента обсяг службової інформації буде меншим, але у разі помилки перевірки контрольної суми доведеться завантажувати ще раз більше інформації. З іншого боку, при малому розмірі помилки не такі критичні, оскільки необхідно заново завантажити менший обсяг, зате розмір торрент-файла і повідомлень про наявні сегменти стає більше.

Коли завантаження майже завершено, клієнт входить у особливий режим, званий end game. У цьому режимі він запитує всі сегменти, що залишилися, у всіх підключених бенкетів, що дозволяє уникнути уповільнення або повного «зависання» майже завершеного закачування через кілька повільних клієнтів.

Специфікація протоколу не визначає, коли саме клієнт має увійти до режиму end game, проте існує набір загальноприйнятих практик. Деякі клієнти входять в цей режим, коли не залишилося незапитаних блоків, інші - поки кількість блоків, що залишилися, менша за кількість переданих і не більше 20. Існує негласна думка, що краще підтримувати кількість очікуваних блоків низьким (1 або 2) для мінімізації надмірності, і що при випадковому запиті менший шанс отримати дублікати одного і того ж блоку.

Недоліки та обмеження

· Недоступність роздачі - якщо немає користувачів, що роздають (сидів);

· Відсутність анонімності:

Користувачі незахищених систем і клієнтів з відомими вразливістю можуть бути атаковані.

Можливо дізнатися адреси користувачів, які обмінюються контрафактним контентом та подати на них до суду.

· Проблема лікерів - клієнтів, які роздають набагато менше, ніж скачують. Це призводить до падіння продуктивності.

· Проблема чітерів - користувачів, що модифікують інформацію про кількість завантажених даних.

Персоналізація – протокол не підтримує нік, чат, перегляд списку файлів користувача.


Висновок

Сучасні пірингові мережі зазнали складної еволюції і стали багато в чому досконалими програмними продуктами. Вони гарантують надійну та високошвидкісну передачу великих обсягів даних. Вони мають розподілену структуру і не можуть бути знищені при пошкодженні кількох вузлів.

Технології, випробувані у пірингових мережах, застосовуються зараз у багатьох програмах з інших областей:

для швидкісного поширення дистрибутивів опенсорсних програм (з відкритим кодом);

Для розподілених мереж передачі даних, таких як Skype та Joost.

Проте системи обміну даними часто використовуються у протиправній сфері: порушуються закон про авторські права, цензура тощо. Можна сказати наступне: розробники пірингових мереж чудово розуміли, навіщо ті будуть використовуватися, і подбали про зручність їх використання, анонімність клієнтів та невразливість системи загалом. Програми та системи обміну даними часто відносять до «сірої» зони інтернету – зони, в якій порушується законодавство, але довести винність причетних до порушення осіб чи складно, чи неможливо.

Програми та мережі обміну даними знаходяться десь на околиці інтернету. Вони не користуються підтримкою великих компаній, іноді їм взагалі ніхто не сприяє; їх творці, як правило, хакери, яким не до вподоби інтернет-стандарти. Програми обміну даними не люблять виробники брандмауерів, маршрутизаторів та подібного обладнання, а також інтернет-провайдери (ISP) – «хакерські» мережі відбирають у них значну частину дорогоцінних ресурсів. Тому провайдери намагаються всіляко витіснити та заборонити системи обміну даними або обмежити їхню діяльність. Однак у відповідь на це творці систем обміну даними знову починають шукати протидії і часто досягають відмінних результатів.

Реалізація та використання розподілених систем мають не лише плюси, а й мінуси, пов'язані з особливостями забезпечення безпеки. Отримати контроль над такою розгалуженою та великою структурою, якою є мережа P2P, або використовувати прогалини у реалізації протоколів для власних потреб – бажана мета для хакерів. До того ж, захистити розподілену структуру складніше, ніж централізований сервер.

Така величезна кількість ресурсів, що є в мережах P2P, важко шифрувати/дешифрувати, тому більшість інформації про IP-адреси та ресурси учасників зберігається і пересилається в незашифрованому вигляді, що робить її доступною для перехоплення. При перехопленні зловмисник не тільки отримує власне інформацію, але також дізнається і про вузли, на яких вона зберігається, що також небезпечно.

Лише останнім часом у клієнтах більшості великих мереж ця проблема стала вирішуватись шляхом шифрування заголовків пакетів та ідентифікаційної інформації. З'являються клієнти з підтримкою технології SSL, впроваджуються спеціальні засоби захисту інформації про місцезнаходження ресурсів та ін.

Серйозна проблема - поширення "хробаків" та підробка ID ресурсів з метою їх фальсифікації. Наприклад, у клієнті Kazaa використовується хеш-функція UUHash, яка дозволяє швидко знаходити ID для великих файлів навіть на слабких комп'ютерах, але при цьому залишається можливість підробки файлів і запису зіпсованого файлу, що має той же ID.

В даний час виділені сервери та вузли періодично обмінюються між собою інформацією, що верифікує, і при необхідності додають підроблені сервери/вузли в чорний список блокування доступу.

Також ведеться робота зі створення проектів, що поєднують мережі та протоколи (наприклад, JXTA – розробник Білл Джой).


Список літератури

1. Ю. Н. Гуркін, Ю. А. Семенов. «Файлообмінні мережі P2P: основні принципи, протоколи, безпека» // «Мережі та Системи зв'язку», №11 2006

06/02/2011 17:23 http://www.ccc.ru/magazine/depot/06_11/read.html?0302.htm

2. А. Гризунова Napster: історія хвороби InterNet magazine, number 22 06/02/2011 15:30 http://www.gagin.ru/internet/22/7.html

3. Сучасні комп'ютерні мережі Реферат 06/02/2011 15:49 http://5ballov.qip.ru/referats/preview/106448

4. 28/01/2011 16:56 http://ua.wikipedia.org/wiki/Peer-to-peer

5. http://style-hitech.ru/peer-to-peer_i_tjekhnologii_fajloobmjena

28/01/2011 15:51

МГОУ Peer-to-peer технології Виконала: студентка 1 курсу ФМФ магістратури Кулаченко Надія Сергіївна Перевірив: Чернишенко Сергій Вікторович

Одна з перших пірингових мереж, створена в 2000 р. Вона функціонує досі, хоча через серйозні недоліки алгоритму користувачі в даний час віддають перевагу мережі Gnutella2.

При підключенні клієнт отримує від вузла, з яким йому вдалося з'єднатися, список із п'яти активних вузлів; їм надсилається запит на пошук ресурсу за ключовим словом. Вузли шукають у себе відповідні запиту ресурси і, якщо не знаходять їх, пересилають запит активним вузлам вгору "деревом" (топологія мережі має структуру графа типу "дерево"), поки не знайдеться ресурс або не буде перевищено максимальну кількість кроків. Такий пошук називається розмноженням запитів (query flooding).

Зрозуміло, що така реалізація веде до експоненційного зростання кількості запитів і на верхніх рівнях “дерева” може призвести до відмови в обслуговуванні, що й спостерігалося неодноразово практично. Розробники вдосконалили алгоритм, запровадили правила, відповідно до якими запити можуть пересилати вгору “деревом” лише певні вузли - звані виділені (ultrapeers), інші вузли (leaves) можуть лише запитувати останні. Введена також система вузлів, що кешують.

У такому вигляді мережа функціонує і зараз, хоча недоліки алгоритму та слабкі можливості розширюваності ведуть до зменшення її популярності.

Недоліки протоколу Gnutella ініціювали розробку принципово нових алгоритмів пошуку маршрутів та ресурсів та призвели до створення групи протоколів DHT (Distributed Hash Tables) – зокрема, протоколу Kademlia, який зараз широко використовується у найбільших мережах.

Запити в мережі Gnutella пересилаються TCP або UDP, копіювання файлів здійснюється через протокол HTTP. Останнім часом з'явилися розширення для клієнтських програм, що дозволяють копіювати файли UDP, робити XML-запити метаінформації про файли.

У 2003 р. був створений принципово новий протокол Gnutella2 і перші клієнти, що його підтримують, які були зворотносумісні з клієнтами Gnutella. Відповідно до нього деякі вузли стають концентраторами, інші є звичайними вузлами (leaves). Кожен звичайний вузол має з'єднання з одним-двома концентраторами. А концентратор пов'язаний із сотнями звичайних вузлів та десятками інших концентраторів. Кожен вузол періодично пересилає концентратору список ідентифікаторів ключових слів, за якими можна знайти ресурси, що публікуються даним вузлом. Ідентифікатори зберігаються у загальній таблиці на концентраторі. Коли вузол “хоче” знайти ресурс, він посилає запит по ключовому слову своєму концентратору, останній або знаходить ресурс у таблиці і повертає ID вузла, що має ресурсом, або повертає список інших концентраторів, які вузол знову запитує по черзі випадковим чином. Такий пошук називається пошуком за допомогою методу блукань (random walk).

Примітною особливістю мережі Gnutella2 є можливість розмноження інформації про файл у мережі без копіювання самого файлу, що дуже корисно з огляду на відстеження вірусів. Для пакетів, що передаються в мережі, розроблений власний формат, схожий на XML, що гнучко реалізує можливість нарощування функціональності мережі шляхом додавання додаткової службової інформації. Запити та списки ID ключових слів надсилаються на концентратори UDP.

Ось перелік найбільш поширених клієнтських програм для Gnutella і Gnutella2: Shareaza, Kiwi, Alpha, Morpheus, Gnucleus, Adagio Pocket G2 (Windows Pocket PC), FileScope, iMesh, MLDonkey



Сподобалася стаття? Поділіться їй