fbpx

Каталог статей

Каталог статей для размещения статей информационного характера

Технології

Що за штуковина UDP? Майбутнє BitTorrent, і Інтернету в цілому

Підлогу Хадсон пробує пояснити, чому модифікації в мережевих протоколах можуть зробити BitTorrent «хитріше» — чи решті Інтернет повільніше.
Собі добрий вечір! Приємно дізнатися про хитрощі, прискорюють завантаження мого лінукса!
Завантаження дистрибутивів. Ось-ось, як раз це і допоможе мені роз’яснити суть змін. Значитися, почнемо. Жили-були динозаври…
Е-е, а не прокрутити чи вперед?
…а потім з’явився Інтернет! І Гвинт Серф кинув погляд на нього, і сказав: це добре. І було два головних способи відправки даних — TCP і UDP.
Як-то ми не туди рухаємось. Я відправляю свої дані електричної поштою, відсутність всяких там UDP. А TCP — це не антибіотик?
Треба думати, ми говоримо про різні речі. Пораскиньте розумом: поштові повідомлення — це всього лише текст. Яким чином, по-вашому, він приходить до одержувачів?
Ну, щодо цього я в курсі: SMTP, POP3, IMAP і парочка інших абревіатур. Вони-то і чаклують з відправкою і отриманням пошти.
Ну так, проте вони просто додають кілька рядків з мета-даними про ваших листах. А як же повідомлення знаходять шлях в Інтернеті?
…TCP?
Вже тепліше.
TCP і UDP?
Гаряче! Якщо зовсім просто, ваш лист загортається в SMTP (так званий «прикладний рівень», тому що він містить інформацію для поштових програм), далі в TCP або UDP (т. зв. «транспортний рівень», бо здійснює передачу з точки A в точку B). Технічно, всі ці дані потім загортаються ще в один шар, Internet Protocol, або просто «IP», званий «Інтернет-рівнем», він відповідає за фактичну доставку повідомлення з глобальних каналах зв’язку.
Ну у вас і технояз. По мені, антибіотики все ж простіше…
Та я намагаюся дрібніші роз’яснити, чесно! Суть в тому, що існує два методи відправки пакетів даних по Інтернету, TCP і UDP. Обидва протоколу загортаються в IP, а ви використовуєте або TCP/IP, або UDP/IP.
А в чому різниця? Треба вибрати Інтернет-протокол?
Ні, все йде через IP, однак при кожному підключенні потрібно вибирати між UDP і TCP.
Як це — вибирати? До цих пір мене не просили!
Ну, добре, не вам — це програми вибирають UDP або TCP, в залежності від типу даних, що пересилаються. Бачте, UDP — протокол невигадливий, він відправляє дані від A до B, і його не турбує, що буде далі: в якому вигляді дані доберуться до точки призначення та доберуться взагалі. Іншими словами, якщо відіслані три пакета, 1, 2 і 3, то до одержувачу вони можуть прибути у вигляді 3, 2, 1. А трапляється і так, що пакет 2 доставлений, а 1 і 3 загубилися в ефірі! Коротше кажучи, відправив і забув.
Ах, ось чому я не отримав пошти минулого тижня!
Почекайте, я не договорив. TCP дуже розрізняється від UDP, адже цей протокол створює з’єднання і зберігає його відкритим, поки не будуть доставлені всі дані. Протокол автоматично перевіряє, чи всі дані прибутку в цілості, а при потребі навіть повторює відправку. Якщо щось переплуталося (скажімо, прийшло 3, 2, 1 замість 1, 2, 3), TCP дочекається, поки вся передача не завершиться в правильному порядку, а додаток (поштовий клієнт, наприклад) в процесі не бере участь.
Розумно придумано. Мабуть, це UDP втратив мою пошту…
Жодним чином. Адже TCP ручається за доставку даних (якщо сигнал до відправника не доходить, підключення буде просто обірвані), і його застосовують для доставки по Інтернету важливих відомостей — а власне, web-трафіку, пошти, FTP, SSH та подібних протоколів. У всіх цих випадках втрата найдрібнішого шматочка даних вводить в непридатність усе інше — якщо ви завантажили 100 MB файл, а 14 КБ інформації з нього посіяв UDP, то файл марний!
Стоп… якщо TCP вже такий чудовий, навіщо тоді потрібен UDP?
Потім, що часом втрата шматочка інформації ролі не грає. Ось, скажімо, VoIP. Якщо ми розмовляємо через Інтернет по телефону, і зв’язок перервався лише на секунду, TCP застопориться і зажадає повтору репліки, поки все не дійде до вас в кращому вигляді. UDP просто перестрибне цю секунду і продовжить собі трансляцію. При прослуховуванні радіо TCP взагалі може перервати підключення, тільки і всього. UDP набагато простіше і ідеально підходить для випадків, коли безперервність з’єднання важливіше точності трансляції. Уявіть, що стало б з онлайн-репортажами про усіляких зустрічах президентів, якщо б замість TCP використовували UDP!
Проте всі ці TCP/UDP, начебто, вже не новинка. Навіщо ж говорити про них зараз?
Через BitTorrent. Зараз у цій системі використовується TCP, а значить, відбувається перевірка збереження поданих даних.
І правильно, невже немає? Адже кому надобны, припустимо, 99,9% файлу?
Безсумнівно, але зараз будь-Torrent-клієнт точно в курсі, що він повинен отримати в результаті закачування і, при необхідності, запросить відсутня.
І вони перейдуть на UDP і збільшать швидкість? Краса!
Не поспішайте. Одне з достоїнств TCP — його здатність повідомляти про недоотримання даних, а у випадку значної втрати — зменшувати швидкість передачі, щоб не перевантажувати мережу. У UDP нічого такого немає: він буде продовжувати відправку, навіть якщо лінія буде забита геть. Якщо швидкість передачі по мережі знижується, то TCP-програми (пошта, веб тощо) зменшать хід, а UDP-додатки будуть також шпарити відчайдушно, лише б відстрілятися.
А хіба торренти не становлять солідну частину нинішнього Інтернет-трафіку? В такому випадку, перехід призведе до уповільнення!
Потенційно — так. Змушені обирати між UDP, заповнюють мережу, і уповільненням web, пошти та інших важливих служб, Інтернет-провайдери неминуче убавят пріоритет трафіку UDP. А це, в свою чергу, призведе до уповільнення VoIP , ігрових сполук, відео-трансляцій та інших UDP-програм.
Жахливо! Чи можна якось зробити BitTorrent трішки хитріший?
Над цим б’ються розробники UDP: вони хочуть долучити до протоколу деякі функції TCP (зокрема, контроль непрохідності мережі). Перевірка цілісності доставки UDP не потрібна, але визначати прохідність каналу протокол навчиться не гірше TCP, і виграють від цього всі.
Стануть торренти швидше?
Можливо. Але якщо розробники BitTorrent досягнуть своєї мети, зменшивши обсяг даремно витрачається Інтернет-трафіку, то і весь Інтернет прискориться. Не забувайте, що TCP вже 35 років, він «дорослий», і якщо новоспечена UDP-протокол BitTorrent (UTP) його переможе, це буде щось! Невеликий, але цінний бонус: бридкі TCP-повідомлення, примусово закривають BitTorrent-з’єднання, розсилаються деякими інтернет-провайдерами (ComCast, це про вас!), з UDP перестануть працювати.
Ура! Біжу відчувати…
Не поспішайте: поки вся ця система проходить бета-тестування. Вона постане в наступній офіційної версії клієнта BitTorrent; потрібно також, щоб ця версія була встановлена і на інших комп’ютерах, з якими ви з’єднуєтеся.
Клієнтів BitTorrent не так вже й багато, і більшості користувачів доведеться чекати наступного циклу оновлення дистрибутивів (а разом з ними і додатків). Виходить, що завантажити оновлений дистрибутивчик через UDP ми з вами зможемо не раніше, ніж через шість місяців.