Лекція № 14
Файлообмінні мережі
Зміст
Файлообмінна мережа
Типи організації файлообмінних мереж
Файлообмінна мережа
Файлообмінна мережа — сукупна назва мереж для сумісного використання файлів. Часто в основі файлообмінних мереж лежать однорангові комп'ютерні мережі, засновані на рівноправ'ї тих, хто бере участь в обміні файлами, тобто кожен учасник одночасно є і клієнтом, і сервером
Принципи роботи
Основні принципи роботи файлообмена полягають в наступному:
- користувач викачує програму до себе на комп'ютер;
- дає доступ іншим користувачем до частини своїх ресурсів (цей процес називається «расшаріванієм», англ. sharing);
- у кожній такій програмі присутній пошук, який шукає ресурси, викладені на комп'ютерах інших користувачів для вільного викачування. Будь-який користувач, використовуючи пошук, може знайти на комп'ютері будь-якого іншого користувача ті ресурси, які він виклав у вільний доступ, і безоплатно викачати їх. А оскільки кількість користувачів таких файлообмінних програм обчислюється сотнями тисяч, а іноді навіть мільйонами, користувач напевно знайде файл, що цікавить його.
Ця технологія отримала назву P2P (pear to pear), в призлизному перекладі — децентралізована.
Типи організації файлообмінних мереж
Централізовані мережі
Не дивлячись на те, що кожен учасник файлообмінної мережі є і клієнтом і сервером, необхідна інфраструктура для об'єднання розрізнених клієнтів між собою у визначене співтовариство. У централізованих файлообмінних мережах службову інформацію зберігають сервери індексацій.
Перевагою такої мережі є відносна простота її програмування та невеликий об'єм службової інформації, що передається на сервери. Закриття мереж Napster і WINMX показало ненадійність централізованих файлообмінних мереж. Сервери індексацій можуть бути відключені з різних причин (технічний збій, розорення компанії, що ним володіє, судове рішення). У такому разі мережа перестає функціонувати. До централізованих мереж відноситься Direct Connect.
Децентралізовані мережі
Децентралізовані файлообмінні мережі функціонують без серверів індексацій. Хоча об'єм службової інформації, що передається в них більший, надійність їх набагато вище. Поки не існує способу насильно зупинити функціонування такої мережі. До децентралізованих мереж відносяться Gnutella, Overnet, Kad.
Вперше термін peer-to-peer (P2P) був використаний в 1984 компанією IBM при розробці мережевої архітектури для динамічної маршрутизації трафіку через комп'ютерні мережі з довільною топологією (Advanced Peer to Peer Networking).
Частково децентралізовані (гібридні) мережі
Поєднуючи швидкість централізованих мереж і надійність децентралізованих, використовуються гібридні схеми, в яких використовуються незалежні індексації сервери, що постійно синхронізують інформацію між собою. Таким чином, при виході з ладу одного з них, мережа продовжує функціонувати. До частково децентралізованих файлообмінних мереж відносяться eDonkey2000 OpenNap.
Огляд популярних мереж
В існуючих сьогодні файлообмінних P2P-мережах спочатку був використаний змішаний підхід — з наявністю виділених вузлів та/або серверів. Але в останні кілька років у всіх великих мережах реалізована підтримка протоколів, що забезпечують повністю автономне функціонування мережі без серверів, тобто в чистому вигляді P2P-підхід.
Сьогодні на технології P2P засновано величезну кількість популярних мережевих сервісів — від простого обміну файлами до мовного та відеозв'язку.
За деякими даними, станом на 2008 в Інтернеті більше половини всього трафіку припадало на трафік файлообмінних P2P-мереж, а розміри найбільших з них перевалили за позначку в 1 млн одночасно працюючих вузлів, що поділяють петабайт (1015 байт) інформації. Загальна кількість зареєстрованих учасників файлообмінних мереж P2P в усьому світі становить близько 100 млн.
Мережа P2P — це безліч вузлів (комп'ютерів, смартфонів тощо), які об'єднані в єдину систему і взаємодіють за допомогою протоколу P2P, який забезпечує можливість створення і функціонування мережі рівноправних вузлів.
Серед файлообмінних мереж за кількістю вузлів лідирують такі мережі, як Bittorrent, eDonkey2000, Gnutella2, Gnutella.
Bittorrent
З метою ініціалізації вузла в мережі Bittorrent клієнтська програма звертається до сервера (tracker), що надає інформацію про файли, доступні для копіювання, а також статистичну і маршрутну інформацію про вузли мережі. Сервер і після ініціалізації допомагає вузлам взаємодіяти один з одним, хоча останні версії клієнтських програм вимагають наявності серверів тільки на стадії ініціалізації.
Якщо вузол «хоче» опублікувати файл, то програма поділяє цей файл на частини і створює файл метаданих (torrent file) з інформацією про частини файлу, розташування їх і — опціонально — сервера, який буде підтримувати розповсюдження цього файлу. Перший вузол, який опублікував фото, називається розповсюджувачем (seedеr). Вузол, що бажає скопіювати файл, при копіюванні сам стає розповсюджувачем за принципом: скільки копіюю я, стільки дозволяю скопіювати з мене.
Вузли, які скопіювали весь файл, стають розповсюджувачами цього файлу і разом з вузлами, що скопіювати файл не повністю, дають можливість іншим вузлам отримувати частини файлу з кількох джерел, що прискорює копіювання.
У мережі BitTorrent використовуються протоколи Bittorrent і BitTorrent Azureus DHT. Останній заснований на модифікованому протоколі Kademlia і використовується для забезпечення роботи з файлами метаданих, не прив'язаними до серверів, для децентралізованого пошуку ресурсу по ID і присвоювання ресурсам коментарів і рейтингу. Замість BitTorrent Azureus DHT деякі клієнти підтримують аналогічний йому за функціональністю протокол BitTorrent Mainline DHT.
Найпоширеніші клієнтські програми — це Azureus, BitTorrent_client, μTorrent, BitSpirit, BitComet, BitTornado, MLDonkey.
Gnutella, Gnutella2
Gnutella — одна з перших пірінгових мереж, створена в 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.
EDonkey2000
Мережа EDonkey2000 з'явилася в 2000 році. Інформація про наявність файлів в ній публікується клієнтом на численних серверах у вигляді ed2k-посилань, що використовують унікальний ID ресурсу.
Серверне програмне забезпечення доступне для встановлення будь-яким користувачем. Сервер забезпечує пошук вузлів та інформації.
Станом на кінець 2008 року в мережі було до 200 серверів, які обслуговують одночасно близько 1 млн клієнтів, які разом використовують близько 1 млрд різних файлів. Загальне число зареєстрованих користувачів цієї мережі становить близько 10 млн.
Коли клієнт мережі EDonkey2000 копіює бажаний ресурс, він робить це одночасно з кількох джерел за допомогою протоколу MFTP (Multisource File Transfer Protocol).
Зараз інформацію про доступні файлах можна отримувати не тільки з серверів EDonkey. У 2004 до складу мережі EDonkey2000 була інтегрована мережа Overnet — повністю децентралізована мережа, що дозволяє здійснювати взаємодію між вузлами без прив'язки до серверів, для чого використовується DHT-протокол Kademlia.
Найпоширенішою для мережі EDonkey2000 клієнтською програмою з закритим кодом (версія Pro - платна) є програма eDonkey, проте існує і клієнт з відкритим програмним кодом — eMule, який, крім мережі EDonkey2000, може ввести в дію ще одну мережу P2P — Kad Network (Kademlia). Клієнт eDonkey має дуже цікаве розширення, що дозволяє копіювати метафайли.torrent, які користуються великою довірою користувачів, а також застосовувати верифікаційну інформацію з цих метафайлів для роботи з файлами власної мережі. При цьому якщо ініціалізувати завантаження файлу, що відповідає метафайлу, частини файлу, доступні у власній мережі EDonkey2000, теж включаються в список джерел для завантаження.
Така інтеграція можливостей різних мереж і додаткова верифікація сприяли розвитку мережі EDonkey2000. На неї почали переходити користувачі інших мереж — наприклад, мережі FastTreсk, що базується на протоколі FastTreсk, який реалізується, зокрема, таким популярним клієнтом, як Kazaa.
Direct Connect
Однією з найпопулярніших в Україні та Росії файлообменних мереж є Direct Connect. У цій мережі клієнти підключаються до одного чи кількох серверів для пошуку файлів, причому сервери не пов'язані між собою. Інформація про файли, доступ до яких вузол «хоче» відкрити, відсилається на сервер. Копіювання файлів відбувається безпосередньо між вузлами, як і в класичній P2P-мережі.
У клієнтську програму вбудовані можливості для спілкування учасників мережі один з одним; список файлів кожного користувача можна одержувати у вигляді деревоподібної структури папок; існує простий механізм пошуку інформації і можливість копіювання цілих каталогів.
Контрольні питання:
Що являє собою файлообмінна мережа?