Gnutella

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

Історія появи мережі Gnutella

Створення мережі ініціювала компанія America Online, використавши для цієї мети програмістів з підрозділу Nullsoft. 14 березня 2000 р. з'явилася перша версія програми, яка давала можливість користувачу шукати і обмінюватися всіма видами файлів з іншими власниками Gnutella без участі будь-яких серверів. Після того, як AOL купила медіа-конгломерат Time Warner, мережу намагалися закрити, але ці спроби провалилися. Це також спонукало творців (Джастін Френкель і Том Пеппер) мережі звільнитися з AOL, після чого вони стали самостійно розвивати цю мережу.

Механізм роботи

  1. Користувач завантажує програму.
  2. При першому запуску програми (назвемо наш вузол - A), користувач повідомляє клієнту IP-адресу одного з функціонуючих вузлів (умовно вузол B). Дана процедура може і не повторюватися в майбутньому, але при першому запуску вона обов'язкова. Це один з найбільш «слизьких" моментів в реалізації даної мережі: без адреси хоча б одного з працюючих в цей час вузла користувач не зможе підключитися. У принципі, існує цілий ряд централізованих серверів, які надають таку інформацію (connect1.gnutellanet.com: 6346, gnutella.hostscache.com та ін), але така схема вже призводить до певної централізованості.
  3. Програма надсилає запит вузлу B на предмет підтвердження активності.
  4. Вузол B підтверджує свою активність, якщо немає - див крок 2.
  5. Вузол А посилає вузлу B так званий Ping-запит. У цьому запиті вказується, крім іншої інформації, TTL (Time To Live) - число, що означає, скільки переходів від вузла до вузла даний запит може зробити. Зазвичай TTL дорівнює 7.
  6. Інші вузли, отримавши Ping-запит, посилають Pong-відповідь, в якій міститься IP-адреса відправника, номер порту і мінімальна інформація про файли у фонді обміну.
  7. Крім того, вузли, які отримали Ping-запит, зменшують TTL даного запиту на одиницю, і якщо TTL більше 0, а також якщо даний запит вони не отримували раніше (захист від зациклення), розсилають його своїм сусідам.
  8. Кожен вузол, який отримав Ping-запит, відсилає Pong-відповідь, тим же шляхом, яким цей запит отримав.
  9. Коли Pong-відповіді доходять до свого джерела (тобто нашого вузла А), програма складає список доступних вузлів. Як правило, цей список налічує від 2 до 10 тисяч вузлів і від 500 тисяч до мільйона файлів в обмінному фонді.
  10. Користувач вводить запит (наприклад, назву mp3-файлу). Програма розсилає запит на пошук файлу усіх вузлів у списку, а далі просто чекає вхідних повідомлень.
  11. Кожен вузол, який отримав запит на пошук, шукає в своєму фонді вказаний файл. Якщо файл не знайдений, то вузол просто не відповідає.
  12. Якщо файл знайдений, вузол відсилає ініціатору запиту відповідь з інформацією про файл і про себе (IP-адресу).
  13. Отримавши ряд відповідей, програма вибирає один з вузлів, встановлює з ним стандартне 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]

Див. також

Примітки

  1. За даними на вересень 2007 рік а, мережа Gnutella є найпопулярнішою - вона використовується на 40,5% комп'ютерів, підключених до p2p -мереж, і її популярність продовжує збільшуватися.
  2. http://echelon.i2p/i2phex/%5Bнедоступне+посилання+з+червня+2019%5D
  3. html Щодо Gnutella

Посилання

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.