Gnutella
Gnutella - повністю децентралізована файлообмінна мережа в рамках Інтернету, нащадок Napster, відрізняється принциповою відсутністю центрального сервера. Мережа формується, коли один користувач Gnutella з'єднується з іншим користувачем, після чого вони можуть обмінюватися доступною інформацією. Обмінюватися можна файлами будь-яких форматів, є безліч зручних функцій. У результаті повної децентралізації мережу практично неможливо знищити, тому що для цього буде потрібно вивести з ладу кожен вузол мережі.
Історія появи мережі Gnutella
Створення мережі ініціювала компанія America Online, використавши для цієї мети програмістів з підрозділу Nullsoft. 14 березня 2000 р. з'явилася перша версія програми, яка давала можливість користувачу шукати і обмінюватися всіма видами файлів з іншими власниками Gnutella без участі будь-яких серверів. Після того, як AOL купила медіа-конгломерат Time Warner, мережу намагалися закрити, але ці спроби провалилися. Це також спонукало творців (Джастін Френкель і Том Пеппер) мережі звільнитися з AOL, після чого вони стали самостійно розвивати цю мережу.
Механізм роботи
- Користувач завантажує програму.
- При першому запуску програми (назвемо наш вузол - A), користувач повідомляє клієнту IP-адресу одного з функціонуючих вузлів (умовно вузол B). Дана процедура може і не повторюватися в майбутньому, але при першому запуску вона обов'язкова. Це один з найбільш «слизьких" моментів в реалізації даної мережі: без адреси хоча б одного з працюючих в цей час вузла користувач не зможе підключитися. У принципі, існує цілий ряд централізованих серверів, які надають таку інформацію (connect1.gnutellanet.com: 6346, gnutella.hostscache.com та ін), але така схема вже призводить до певної централізованості.
- Програма надсилає запит вузлу B на предмет підтвердження активності.
- Вузол B підтверджує свою активність, якщо немає - див крок 2.
- Вузол А посилає вузлу B так званий Ping-запит. У цьому запиті вказується, крім іншої інформації, TTL (Time To Live) - число, що означає, скільки переходів від вузла до вузла даний запит може зробити. Зазвичай TTL дорівнює 7.
- Інші вузли, отримавши Ping-запит, посилають Pong-відповідь, в якій міститься IP-адреса відправника, номер порту і мінімальна інформація про файли у фонді обміну.
- Крім того, вузли, які отримали Ping-запит, зменшують TTL даного запиту на одиницю, і якщо TTL більше 0, а також якщо даний запит вони не отримували раніше (захист від зациклення), розсилають його своїм сусідам.
- Кожен вузол, який отримав Ping-запит, відсилає Pong-відповідь, тим же шляхом, яким цей запит отримав.
- Коли Pong-відповіді доходять до свого джерела (тобто нашого вузла А), програма складає список доступних вузлів. Як правило, цей список налічує від 2 до 10 тисяч вузлів і від 500 тисяч до мільйона файлів в обмінному фонді.
- Користувач вводить запит (наприклад, назву mp3-файлу). Програма розсилає запит на пошук файлу усіх вузлів у списку, а далі просто чекає вхідних повідомлень.
- Кожен вузол, який отримав запит на пошук, шукає в своєму фонді вказаний файл. Якщо файл не знайдений, то вузол просто не відповідає.
- Якщо файл знайдений, вузол відсилає ініціатору запиту відповідь з інформацією про файл і про себе (IP-адресу).
- Отримавши ряд відповідей, програма вибирає один з вузлів, встановлює з ним стандартне HTTP-з'єднання і завантажує файл. При цьому всі повідомлення (від Ping-запиту до скачування файлу) посилаються по HTTP, що ускладнює їх відстеження і блокування.
Деякі клієнти Gnutella працюють згідно з наведеним алгоритмом, а деякі ні. Пов'язано це з тим, що Gnutella - це, перш за все, протокол взаємодії вузлів (такий же, як HTTP), і в ньому не визначено деякі з аспектів цієї взаємодії.
Пошук в Gnutella побудований на децентралізованій технології gPulp [джерело?].
Клієнти
У цей час Gnutella є однією з найпопулярніших файлообмінних мереж [1]. Робота мережі Gnutella безперервно удосконалюється завдяки зусиллям розробників безлічі клієнтів мережі:
- Спеціалізовані
- LimeWire
- Cabos
- FrostWire
- Gtk-gnutella
- Phex
- BearShare (тільки до версії 5!)
- Qtella
- I2Phex для крипто-мережі I2P[2]
- Мультимережеві
- Shareaza
- MlDonkey
- GiFT
- KCeasy
Реакція з боку FSF
Назва Gnutella спочатку було грою слів GNU, так як розробники планували випустити вихідний код під ліцензією GNU GPL, і Nutella - марки улюбленої горіхової пасти цих розробників. Однак, ні найперша програма, ні відповідні сучасні проекти не є вільним ПЗ, включаючи використовують протокол Gnutella gtk-gnutella, mutella і gnucleus. Крім того, Фонд вільного програмного забезпечення зосереджений на волі копіювання і зміни програмного забезпечення, у той час як Gnutella - це, перш за все, мережа обміну музичними файлами. І хоча існує деякий подібність у питаннях етики копіювання програмного забезпечення і музичних записів, FSF попросила розробників Gnutella змінити назву програми для уникнення плутанини.[3]
Див. також
- Анонімні мережі
- Однорангові мережі
Примітки
- За даними на вересень 2007 рік а, мережа Gnutella є найпопулярнішою - вона використовується на 40,5% комп'ютерів, підключених до p2p -мереж, і її популярність продовжує збільшуватися.
- http://echelon.i2p/i2phex/%5Bнедоступне+посилання+з+червня+2019%5D
- html Щодо Gnutella
Посилання
- Сайт Gnutella Protocol Development - опис специфікацій протоколу Gnutella.
- Gnutelliums - Список клієнтів Gnutella для Windows, Linux / Unix, і Macintosh