Розробка гнучкої системи інтерактивної взаємодії для підтримки спільного навчання на основі платформи Microsoft.net

дипломная работа

2.3 Протоколи обміну даними та особливості організації P2P мереж

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

Рис. 2.3 Розподіл ключів ресурсів по вузлах мережі. Пошук ресурсу

На рис. 2.3 приведений приклад чистої P2P мережі, створеної по протоколу DHT Kademlia. На рисунку до мережі, здатної підтримувати максимум 16 вузлів і 16 ресурсів, підєдналися 7 вузлів (чорні кухлі), що розділяють 12 ресурсів (номери в білих прямокутниках). Вузлам привласнені відповідні ID, ресурсам привласнені ключі. Ключі разом з адресами вузлів (адреси на малюнку не показані), що опублікували їх, рівномірно розподілені між вузлами мережі. На рисунку зображено, які ключі зберігаються і на яких вузлах.

Вузол з ID 0 хоче знайти ресурс, відповідний ключу 14, для цього посилає запит на пошук. Запит проходить певний маршрут і досягає вузла, на якому знаходиться ключ 14. Далі вузол ID 14 пересилає вузлу ID 0, адреси всіх вузлів, що володіють ресурсом, відповідним ключу 14.

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

Багато адміністраторів прагнуть заблокувати або відфільтрувати інформаційні потоки файлообменных мереж, наприклад, BitTorrent. Це достатньо легко зробити. Першим байтом в поле даних ТСР-сегменту є код 19 (=0х13), за яким слідує 19 байтів даних BitTorrent. Використовуючи цю сигнатуру, можна блокувати такий потік даних або привласнити йому потрібний пріоритет.

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

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

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

Одна з перших пірінгових мереж, Gnutella, була створена в 2000 році. Мережа функціонує дотепер, хоча із-за серйозних недоліків алгоритму користувачі зараз віддають перевагу мережі Gnutella2. Клієнт, що підключився, одержує від вузла, з яким йому вдалося зєднатися, список з 5 активних вузлів, посилає їм запит на пошук ресурсу по ключовому слову. Вузли шукають у себе відповідні запиту ресурси і, якщо не знаходять, пересилають запит своїм активним вузлам вгору по дереву, поки не знайдеться ресурс або не буде перевищене максимальне число кроків. Такий пошук називається розмноженням запитів. За допомогою протоколу також відстежується, щоб топологія створюваної мережі вузлів мала деревовидну структуру графа.

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

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

Запити в мережі Gnutella пересилаються по tcp або udp, копіювання файлів відбувається за допомогою протоколу http. Останнім часом зявилися розширення для клієнтських програм, що дозволяють копіювати файли по udp, робити xml-запити метаінформації про файли.

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

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

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

Мережа EDonkey2000 зявилася в 2000 році. Інформація про наявність файлів публікується клієнтом на численних серверах у вигляді ed2k посилань, що використовують унікальний ID ресурсу. Серверне ПО доступно для установки будь-яким користувачем. Сервер забезпечує пошук вузлів і інформації. Зараз в мережі є від 100 до 200 серверів, обслуговуючих одночасно близько мільйона користувачів, що використовують близько мільярда різних файлів. Загальна кількість зареєстрованих користувачів складає близько 10 мільйонів. Коли клієнт копіює бажаний ресурс, він копіює його одночасно з декількох джерел за допомогою MFTP (Multisource File Transfer Protocol).

В даний час інформацію про доступні файли можна одержувати не тільки з серверів eDonkey. З 2004 року до складу мережі EDonkey2000 інтегрована мережа Overnet - повністю децентралізована мережа, що дозволяє здійснювати взаємодію між вузлами без привязки до серверів, для чого використовується DHT протокол Kademlia.

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

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

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

Тому користувачам залишилася тільки можливість використовувати локальні пірінгові мережі. Найбільш зручною для цього виявилася мережа Direct Connect (DC).

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

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

Делись добром ;)