P2P

Матеріал з Вікі ЦДУ
Перейти до: навігація, пошук
200px-P2P-network.svg.png

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

Історія

Сама технологія Р2Р існує з часів виникнення USENET та FidoNet. USENET (1979 р.) — розподілена мережа, що забезпечує спілкування у групах новин. Обмін файлами відбувався за допомогою телефонних ліній, зазвичай протягом ночі, тому що це було дешевше. Таким чином не було ефективного способу централізації. FidoNet, як і USENET, — децентралізована, розподілена мережа для обміну повідомленнями, що була створена у 1984 році Томом Дженнінгсом як засіб для обміну повідомленнями між користувачами різних BBS.

Популяризація і перше покоління peer-to-peer мереж почалися разом із створенням мережі Napster. Napster почав стикатися із проблемами з законом. Мережа мала виділений центральний сервер і, як стверджувалося, хоча сама система безпосередньо не є порушенням законодавства, проте її існування сприяє цьому. У травні 1999 Napster надав кінцевим користувачам можливість роздавати та обмінюватись їх улюбленою музикою безпосередньо з іншими кінцевими користувачами. Кількість користувачів Napster в лютому 2001 складала 26.4 мільйона. У цей час з'явилося багато клонів Napster. Всі мали однакову архітектуру: один центральний сервер з великою кількістю клієнтів. Центральний сервер полегшував зв'язки клієнта та пошук. Як тільки бажана пісня була знайдена, сервер забезпечував прямий зв'язок між двома клієнтами, так вони могли передавати файли. Після появи Napster було створено мережу EDonkey2000. Перевага eDonkey над Napster полягала у тому, що мережа дозволяла проводити зкачування різних частин одного файлу, одночасно із різних учасників мережі, які його надають. Іншою перевагою eDonkey було те, що згодом, серверне забезпечення набуло функціональності міжсерверного зв'язку, що дозволило виконувати пошук інформації на учасниках мережі що були під'єднані до різних серверів. Незважаючи на названі переваги, через використання центральних серверів, ця мережа не була чистою peer-to-peer мережою.

Друге покоління пірінгових мереж характеризується відсутністю центральних серверів та, при цьому, принциповою можливістю пошуку серед учасників мережі. Проте алгоритми пошуку у мережах другого покоління мали характер «хвильового» розповсюдження запитів та були не дуже ефективними. Джастін Франкел вирішив створити мережу без центрального індексного сервера - Gnutella. Найкращими прикладами мереж другого покоління є Gnutella, Kazaa або Emule з Kademlia, серед яких лише Kazaa ще має центральний сервер для реєстрації.

Третє покоління P2P мереж характеризується децентралізованою структурою, та принципово новими алгоритмами пошуку, які базуються на ключовому понятті розподіленої хеш-таблиці (Distributed hash table), що допомагають вирішувати проблему масштабування, обираючи різні вузли, щоб індексувати певні значення хеш-функції (які використовуються, щоб ідентифікувати файли), дозволяючи швидкий та ефективний пошук будь-якого файлу у мережі. Починаючи з версії 4.2.0 офіційного BitTorrent клієнта, в ньому реалізована функція безтрекерної роботи, яка базується на протоколі Kademlia. У таких системах трекер доступний децентрально, на клієнтах-учасниках мережі, у формі розподіленої хеш-таблиці.

P2P мережа

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

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

Децентралізовані P2P використовують розподілені реєстри. Ці системи, в свою чергу, можуть бути поділені на повністю децентралізовані і гібридні мережі. Різниця між ними полягає в тому які ролі грають вузли мережі.

Частково децентралізовані (гібридні) мережі

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

Переваги P2P

Основні переваги P2P-мереж полягають у тому, що вони:

  • Не вимагають спеціального адміністрування (zero administration approach);
  • Володіють можливостями самоорганізації та адаптивності; піри здатні вільно приєднуватися та покидати мережу, P2P-системи оброблюють ці події автоматично;
  • Можуть об'єднувати і використовувати величезні обчислювальні ресурси та ресурси для збереження даних, так як кожен вузол в системі P2P приносить певні ресурси як наприклад обчислювальна потужність або пам'ять. У програмах, які потребують величезну кількість цих ресурсів, як наприклад intensive моделювання або розподілені файлові системи, природно використовувати P2P, щоб залучити ці ресурси. Розподілені обчислювальні системи, як наприклад SETI@Home, distributed.net, і Endeavours — очевидні приклади цього підходу. Об'єднуючи ресурси тисяч вузлів, вони можуть виконувати важкі з точки зору кількості обчислень функції;
  • Конфіденційні; Використовуючи структуру P2P, в якій дії виконуються локально, користувачі можуть уникати необхідності передавати будь-яку інформацію про себе до кого-небудь іншого. FreeNet — яскравий приклад того, як анонімність може вбудуватися в додаток P2P. Він пересилає повідомлення через інші вузли, щоб забезпечити неможливість вистежування початкового автора. Це збільшує анонімність, використовуючи імовірнісні алгоритми таким чином, щоб походження не можливо було легко відстежити аналізуючи трафік у мережі;
  • Динамічні; системи P2P припускають, що оточення надзвичайно динамічне. Тобто, ресурси, як наприклад вузли, з'являються та зникають із системи безперервно. У випадках комунікації, як наприклад мережі для обміну повідомленнями, використовуються так званий «список контактів», щоб інформувати користувачів, коли їхні друзі стають доступними. Без цього, потрібно було би, щоб користувачі «опитували» партнерів, посилаючи періодичні повідомлення. У випадку розподілених обчислень, як наприклад distributed.net і SETI@home, система повинна пристосуватись до заміни учасників. Тому вони повинні повторно видавати завдання для обчислення іншим учасникам, щоб гарантувати, що робота не втрачена, якщо попередні учасники відпадають від мережі, поки вони виконували крок обчислення.

Класифікація P2P систем

З точки зору структури однорангові децентралізовані мережі діляться на дві основні категорії: структуровані і неструктуровані.

Можлива класифікація P2P-мереж за різними характеристиками

У структурованих мережах P2P, таких, наприклад, як Chord, точно визначені і мережева архітектура і розміщення даних. Системи на основі таких мереж забезпечують відповідність між даними (наприклад, ідентифікатор файлу) і його розташуванням (наприклад, адреса вузла) у формі розподіленої хеш-таблиці (Distributed Hash Table, DHT) таким чином, що запити можуть бути ефективно спрямовані вузлу із шуканим змістом. Системи на основі таких мереж є добре масштабованими. Їх недоліком є складність управління структурою мережі, що забезпечує ефективну маршрутизацію повідомлень в середовищі зі змінним числом вузлів.

У неструктурованих мережах P2P, таких як Gnutella, не існує ніяких правил, що визначають місце розташування збережених даних, а топологія мережі довільна. Механізми пошуку можуть бути різними - від найпростіших (наприклад, лавинне поширення запитів способами "спочатку вшир" (breadth-first) або "спочатку вглиб" (depth-first) до тих пір поки шукані дані не будуть знайдені), до більш складних методів, наприклад, з використанням методу випадкового блукання та індексації маршрутів. Механізми пошуку, що застосовуються у неструктурованих мережах, мають очевидний вплив на доступність, надійність і масштабованість, яку в таких мережах складніше забезпечити. Проте, неструктуровані системи більше підходять для мереж із непостійною кількістю вузлів.

Можуть бути різні комбінації властивостей розподілу/пошуку даних і властивостей оверлейної топології. Наприклад, в мережі Freenet і оверлейна топологія і розташування/пошук даних здійснюються імовірнісним чином на основі деяких припущень; в мережі Symphony оверлейна топологія визначена імовірнісним чином, а розташування даних визначено точно. Мережі такого типу, що займають проміжне положення між структурованими і неструктурованими, часто називають слабоструктурованими. Існують і інші характеристики, на основі яких можна класифікувати P2P-системи. Зокрема, вони можуть бути поділені на ієрархічні і неієрархічні в залежності від того, чи є оверлейна мережа ієрархією. Більшість повністю децентралізованих систем мають плоскі оверлейні мережі і є неієрархічними системами. Усі гібридні системи і деякі повністю децентралізовані системи, таких як Kelips, є ієрархічними. Неієрархічні системи дозволяють забезпечити балансування навантаження і високу стійкість. Ієрархічні системи забезпечують гарну масштабованість, можливість використовувати неоднорідність вузлів для підвищення ефективності роботи мережі і оптимальну маршрутизацію. Існують також багатошарові оверлейні мережі. Структура оверлейних P2P-мереж є предметом інтенсивних досліджень.

У структурованих оверлейних мережах вузли спільно підтримують маршрутну інформацію про те, як досягти будь-якого вузла. У порівнянні з неструктурованими мережами, структуровані забезпечують існування верхньої межі для кількості повідомлень, необхідної для знаходження будь-якого об'єкта в мережі. Це особливо важливо при пошуку об'єктів, які запитуються рідко. Щоб забезпечити детерміністську маршрутизацію, піри розміщуються у віртуальному адресному просторі. У кожного піру є локальна таблиця маршрутизації, яка використовується алгоритмом передачі. Таблиця маршрутизації піру иніціалізується, коли він приєднується до мережі, використовуючи спеціальну процедуру початкового завантаження. Піри періодично обмінюються інформацією про зміни у таблиці маршрутизації. У більшості випадків структурованих оверлейних мереж вузли і ресурси спільно використовують один і той же простір ідентифікаторів і відображаються на цей простір за допомогою узгоджених хеш-функцій. При цьому використовується заснована на ключах маршрутизація, при якій пір із даними та ідентифікатором зберігає ресурси з ключами, близькими його ідентифікатору в сенсі зазначеного вище загального простору. Для реалізації відповідного алгоритму часто використовуються розподілені хеш-таблиці. Прикладами систем, що використовують структуровані оверлейні мережі є: Chord, CAN, Pastry, Tapestry, Kademlia, Viceroy, P-Grid, SkipNet.

Графи неструктурованих оверлейних мереж, як правило, мають структуру, що збігається або близька за властивостями до випадкових графів, безмасштабних (зі статичним розподілом ступенів вузлів) графів, або графів "малого світу". Важливою частиною досліджень неструктурованих мереж є побудова оптимальних властивостей графу для них та розробка децентралізованих алгоритмів формування та підтримки цих властивостей і характеристик при динамічно змінюваному складу пірів та збережених даних. Прикладами систем, що використовують неструктуровані оверлейні мережі є: Freenet, Gnutella, FastTrack, BitTorrent, UMM, Gia, Phenix.

Особливу групу неструктурованих P2P-мереж, що активно розробляються і досліджуються останнім часом, представляють так звані біотехнологічні мережі або, інакше кажучи, мережі з агент-орієнтованою архітектурою. Біотехнологічні рішення характеризуються високим ступенем адаптивності і реактивності поведінки, внутрішньою підтримкою неоднорідності мережі, природно-розподіленим характером функціонування, стійкістю до відмови компонентів і можливістю самоорганізації. В останній час стає очевидним, що такий підхід є дуже перспективним кандидатом на те, щоб вирішити проблему динамічної зміни P2P-мережі і управління топологією оверлейної мережі. Рішення на основі стайного інтелекту, а саме, на основі колективної поведінки колонії мурах або рою бджіл, забезпечують масштабованість через комунікацію, що досягається за допомогою механізму стігмергії (англ. - stigmergy), тобто спонтанну непряму (через середовище проживання) взаємодію між індивідами зграї. Прикладами систем, що використовують біотехнології для розробки агент-орієнтованої архітектури P2P-мереж є: BlantAnt, AntOM, Self-Chord.

Велику увагу при дослідженнях і розробках P2P оверлейних мереж, особливо неструктурованих, включаючи біотехнологічні, приділялась розробці алгоритмів ефективного розміщення і пошуку даних, а також поширення і обробки запитів на їх отримання. До теперішнього часу розроблено безліч таких алгоритмів і їх модифікацій та адаптацій для різних оверлейних топологій і конкретних реалізацій мереж. Загальною основою для аналізу оверлейних топологій і алгоритмів пошуку даних є теорія складних мереж. Зокрема, у багатьох випадках розробники прагнуть отримати оверлейні мережі з властивостями "малого світу", одним з найважливіших властивостей яких є мала середня відстань між вузлами і малий діаметр мережі (найбільша відстань між вузлами). Більш точний вираз цієї властивості полягає в наступному: для регулярної решітки середня відстань між вузлами зростає як ступінь числа вузлів, а для мережі з властивостями малого світу істотно повільніше - логарифмічно. Необхідно відзначити, що крім малої середньої довжини шляху між вузлами ще однією загальною відмітною властивістю мереж з властивостями "малого світу" є висока ступінь кластеризації, що забезпечує локальну стійкість мережі: існування локальних обхідних шляхів при виході з ладу будь-якого вузла мережі. В рамках теорії складних мереж розглядають не тільки статистичні, але і динамічні мережі, для опису структури яких необхідно враховувати принципи їх еволюції, що важливо для розуміння механізму утворення оверлейних P2P-мереж різних типів. При розробці архітектури оверлейної P2P-мережі необхідно враховувати, що її вузли збігаються з вузлами фізичної мережі Інтернет. Тому топологічні аспекти будуть неминуче корелювати із властивостями фізичної мережі. Зокрема може виявитися, що побудована оверлейна мережа погано узгоджується із базовою фізичною (так звана, проблема "topology mismatching"). Такі взаємозв'язки вивчаються в теорії просторово-вкладених складних мереж.

P2P файлообмінні мережі

Існують два великі класи мереж зберігання та обміну даних:

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

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

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

Основними завданнями, що повинні вирішувати децентралізовані сховища приватних даних є:

  1. Безпечне зберігання даних на географічно розділених ресурсах із забезпеченням приватності (ізольованості) інформації і гнучкого управління правами доступу до неї;
  2. Забезпечення надійності і стійкості зберігання, тобто збереження (самовідновлення) інформації при виникнені помилок, або збоїв у системі;
  3. Забезпечення постійної доступності інформації, що означає стійкість системи в цілому при виході з ладу деякого її сегмента;
  4. Надання зручного доступу користувачів до даних, контроль і облік зберігання даних, причому засоби контролю і обліку також повинні мати високий ступінь надійності (зокрема, високим ступенем захисту від несанкціонованного проникнення та зміни контрольно-облікової інформації), а також відмовостійкості;
  5. Можливість масштабування системи зберігання та нарощування (у разі необхідності) її функціональних можливостей без перебудови всієї системи.

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

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

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

P2P мережі розподілених обчислень

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

Протоколи P2P та програми для роботи з ними

Найбільш популярними протоколами файлообміну є BitTorrent для трекерів і DC++ для локальних мереж провайдерів. Перевагою (або недоліком) BitTorrent перед тією ж DC++ є безумовне пряме рейтингування користувачів, що спонукає їх не лише завантажувати, але і роздавати файли, а також більш правильне "розмиття" файлу по пірах (завжди завантажується найрідкісніша частина файлу в першу чергу). Крім того, BitTorrent нормально співіснує з NAT’ом.

DirectConnect — P2P-протокол для обміну інформацією. Основою DC-мережі є «хаби» — сервери, що не пов'язані між собою, до яких підключаються інші користувачі. Тобто на комп'ютер ставиться спеціальна програма - DC-кліент, в якому вказується які папки зробити "загальнодоступними", після чого він підключається до загального сервера в локальній мережі, і через сервер дозволяє побачити інші комп'ютери підключені до нього.

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

Висновки

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

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

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


Комп'ютерні мережі