Що за штуковина 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-программы (пошта, web і ін.) Зменшать хід, а UDP-приложения шпаритимуть відчайдушно, аби відстрілятися.

А хіба торренти не складають солідну частину нинішнього Інтернет-трафіку? У такому разі, перехід приведе до уповільнення!

Потенційно — так. Примушені обирати між UDP, що заповнює мережу, і уповільненням web, пошти і інших важливих служб, Інтернет-провайдери неминуче збавлять пріоритет UDP-трафика. А це, у свою чергу, приведе до уповільнення VOIP, ігрових з'єднань, відео-трансляцій і інших UDP-программ.

Жахливо! Чи можна абияк зробити Bittorrent трішки хитріше?

Над цим і б'ються розробники UDP: вони хочуть залучити протоколу деякі функції TCP (зокрема, контроль непрохідності мережі). Перевірка цілісності доставки UDP не потрібна, але визначати прохідність каналу протокол навчиться не гірше TCP, і виграють від цього все.

чи Стануть торренти швидше?

Можливо. Але якщо розробники Bittorrent доб'ються своєї мети, зменшивши об'єм Інтернет-трафіку, що даремно витрачається, то і весь Інтернет прискориться. Не забувайте, що протоколу TCP вже 35 років, він «дорослий», і якщо новоспечене UDP-протокол Bittorrent (UTP) його переможе, це буде щось! Невеликий, але цінний бонус: бридкі TCP-сообщения, примусово закриваючі BitTorrent-соединения, що розсилаються деякими інтернет-провайдерами (Comcast, це про вас!), З UDP перестануть працювати.

Ура! Біжу випробовувати.

Не поспішаєте: поки вся ця система проходить бета-тестування. Вона з'явиться в наступній офіційній версії клієнта Bittorrent; потрібно також, щоб ця версія була встановлена і на інших комп'ютерах, з якими ви з'єднуєтеся.

Клієнтів Bittorrent не так вже багато, і більшості користувачів доведеться чекати наступного циклу оновлення дистрибутивів (а разом з ними і додатків). Виходить, що завантажити оновлений дістрібутівчик через UDP ми з вами зможемо не раніше, ніж через шість місяців.