Що таке TCP
Transmission Control Protocol, TCP (укр. протокол управління передачею) — це мережевий протокол, який інтернетом передає дані з пристрою на веб-сервер. Він задіюється при кожному надсиланні електронного листа, перегляді онлайн-відео та завітанні на сайт.
Цей тип протоколу встановлює "рукостискання", або підтвердження зв'язку — це триступеневий процес, який перед передачею даних встановлює надійне з'єднання між двома пристроями — клієнтом і сервером.
TCP — це транспортний протокол. Він встановлює зв'язок між одержувачем та відправником і підтримує його під час передачі даних, щоб доставити їх у повному обсязі. TCP — один з найпоширеніших протоколів транспортного рівня, на ньому базується багато основних протоколів прикладного рівня.
Плюси протоколу TCP
Протокол TCP має ряд переваг:
- Це стандартизований транспортний протокол, вбудований в операційні системи та мережеві стеки, тож його перевагою є широка сумісність.
- Під час передачі протокол перевіряє отримані дані на наявність помилок, таким чином забезпечується коректне доправляння даних до адресата.
- Протокол TCP оптимізує і змінює швидкість передачі даних залежно від можливостей приймача.
- Він підтверджує, що дані досягли місця призначення, а якщо перша передача не вдалася, він виконає повторну.
Загалом TCP підтримує багато програм, служб та пристроїв, якими ми щодня користуємося, що робить його універсальним протоколом.
Мінуси протоколу TCP
Разом з перевагами протокол TCP має й деякі недоліки:
- Протокол TCP витрачає ресурси на контрольні повідомлення, підтвердження та логіку повторної передачі. У порівнянні з UDP це може знизити продуктивність при передачі невеликих пакетів та даних, що потребують швидкої передачі.
- TCP використовує більше пропускної здатності, ніж UDP, і працює повільніше.
- Якщо навіть невелика кількість даних втрачається під час передачі, TCP може не завантажити наступну інформацію. Наприклад, якщо на сайті не вдається завантажити один елемент (зображення чи відео), інші дані сайту також можуть не завантажуватися.
- В локальних чи персональних мережах протокол TCP працює посередньо.
В яких ситуаціях використовується TCP
Протокол TCP використовується для програм, які потребують надійної та точної передачі даних, як-от браузер (HTTP/HTTPS) та електронна пошта (SMTP, POP3, IMAP). Протокол особливо підходить для додатків, які вимагають високої цілісності даних при впорядкованій доставці без втрат.
Наведемо деякі варіанти використання:
- Передача файлів (FTP, SFTP). При передачі файлів протокол TCP гарантує, що весь файл буде доставлений за призначенням без пропущень та пошкодження даних.
- Онлайн-банкінг та фінансові операції. Протокол TCP забезпечує надійність, необхідну для безпечної передачі конфіденційних фінансових даних.
- Віртуальні приватні мережі (VPN). Протокол TCP може використовуватися в VPN для створення безпечних, стабільних комунікаційних тунелів.
Що таке UDP
User Datagram Protocol, UDP, перекладається як “протокол датаграм користувача”. У порівнянні з TCP мережевий протокол UDP менш надійний, але швидший. Це робить його придатним для ситуацій, коли швидкість має вирішальне значення, наприклад, для потокової передачі чи онлайн-ігор.
На відміну від TCP, UDP не має технології рукостискання. Натомість він надсилає пакети даних без попереднього встановлення з'єднання або перевірки готовності одержувача. Ця відсутність зворотного зв'язку дозволяє UDP працювати швидше, ніж TCP, що робить його особливо корисним для потокового телебачення та онлайн-ігор, де швидкість доставлення важливіша за цілісність даних.
Плюси UDP
Протокол UDP має низку переваг:
- UDP має менший фіксований заголовок (8 байт порівняно з TCP (20 байт)), що зменшує споживання обчислювальних ресурсів.
- Протокол UDP доставляє дані, навіть якщо деякі пакети загубилися дорогою, тобто втрата пакета не призведе до порушення всієї передачі.
- Одна передача UDP може бути надіслана кільком одержувачам одночасно за допомогою функцій трансляції та багатоадресної передачі.
- Передача даних за протоколом UDP відбувається швидше і ефективніше, ніж за іншими протоколами, зокрема TCP.
Найважливішою перевагою UDP для користувачів є те, що він не вимагає налаштування з'єднання або підтвердження зв'язку перед надсиланням даних. Це знижує затримку, що вкрай важливо для додатків стрімінгу. Якщо вам потрібен швидкий протокол, то UDP — найкращий вибір.
Мінуси UDP
Разом зі швидкістю та продуктивністю UDP має й деякі недоліки:
- Протокол UDP не перевіряє, чи досяг пакет даних свого адресата.
- Якщо маршрутизатору потрібно встановити пріоритет одного пакета даних над іншим, він, швидше за все, обере пакет TCP, а не UDP.
- Протокол UDP не надсилає дані в певній послідовності, тому пакети можуть надходити в будь-якому порядку.
UDP належить до категорії ненадійних протоколів, тобто він не гарантує доставку або порядок передачі даних. У ньому також відсутня система контролю перевантаження, і він більш вразливий до кіберзагроз, як-от DDoS-атак та спуфінгу. Такі фактори роблять його непридатним для деяких програм, наприклад, для файлообміну. По суті, UDP жертвує цілісністю даних заради швидкості та зручності, що робить його менш надійним для користувачів.
Для чого використовується UDP
Протокол UDP використовується для залежних від швидкості програм стрімінгу, де допустима втрата декількох пакетів заради меншої затримки. Якщо вашою метою є швидкість, а не цілісність даних, UDP — ідеальний варіант.
Наведемо деякі варіанти використання:
- Онлайн-ігри. Швидкість протоколу UDP має вирішальне значення для передачі дій гравця та стану гри в режимі реального часу, адже миттєво можливо реагувати, попри те, що деякі пакети будуть втрачені.
- Пошук DNS (система доменних імен). Протокол UDP дозволяє швидко відправляти DNS-запити і відповіді без витрати ресурсів на встановлення з'єднання, що допомагає ефективно знаходити доменні імена.
- Сервіси SNMP (простий протокол мережевого управління). Протокол UDP забезпечує ефективний моніторинг і керування мережевими пристроями завдяки швидкому односторонньому зв'язку.
- Багатоадресне передавання. Протокол UDP ефективний для одночасного надсилання даних кільком одержувачам, що робить його корисним для розповсюдження ринкових даних або інших сценаріїв трансляції.
Відмінності у роботі протоколів TCP та UDP
Основна відмінність між протоколами TCP та UDP полягає в співвідношенні надійності та швидкості. Протокол TCP більш надійний, ніж UDP, оскільки він повністю і послідовно передає пакети даних з пристрою на веб-сервер. Протокол UDP працює швидше і споживає менше обчислювальної здатності, адже надсилає дані без постійних перевірок, але це не гарантує доставку пакетів.
Принцип дії протоколу TCP
Протокол TCP працює в три етапи: встановлює з'єднання, передає дані (де дані розбиваються на сегменти, передаються з порядковими номерами і підтвердженнями, а у разі втрати — передаються повторно) і завершує з'єднання.
Ось як цей процес виглядає на практиці:
Встановлення з'єднання
- 1.Сегмент SYN (синхронізації). Клієнт надсилає сегмент SYN на сервер, ініціюючи з'єднання та вказуючи початковий порядковий номер.
- 2.Сегмент SYN-ACK (синхронізація-підтвердження). Сервер відповідає сегментом SYN-ACK, підтверджуючи SYN клієнта і надаючи свій власний порядковий номер.
- 3.Сегмент ACK (підтвердження). Клієнт відправляє сегмент підтвердження ACK назад на сервер, підтверджуючи SYN-ACK і встановлюючи з'єднання для передачі даних.
Пересилання даних
- 1.Сегментація. Для передачі дані розбиваються на менші блоки — сегменти.
- 2.Нумерація. Кожному сегменту присвоюється порядковий номер, щоб дані надійшли до одержувача в правильній послідовності.
- 3.Підтвердження та повторна передача. Одержувач надсилає відправнику підтвердження про отримані сегменти. Якщо відправник не отримує підтвердження протягом встановленого часу, він повторно передає втрачений сегмент.
- 4.Управління передаванням. Механізм розсувного вікна управляє обсягом переданих даних, щоб запобігти перевантаженню одержувача даними.
Завершення з'єднання
- 1.Сегмент FIN (завершення). Програма сигналізує про закінчення передачі даних, відправляючи сегмент FIN.
- 2.Підтвердження ACK для завершення FIN. Одержувач надсилає сегмент підтвердження ACK для підтвердження сегмента FIN.
- 3.Другий сегмент FIN. Щоб завершити з'єднання в протилежному напрямку, одержувач може надіслати інший сегмент FIN, який потім буде підтверджено відправником. Також з'єднання може бути перервано односторонньо ("напівзакриття").
Послідовна передача даних полегшує керування потоком, запобігає перевантаженню, а також дозволяє виявлення та виправлення помилок. Тобто дані, що передаються по протоколу TCP, з більшою ймовірністю дійдуть до адресата в повному обсязі.
Принцип дії протоколу UDP
Протокол UDP виконує таку ж роботу, що і протокол TCP, але без унікальних ідентифікаторів та порядкових номерів. Він передає дані не безперервним потоком, а у вигляді дискретних пакетів — датаграм. Це не гарантує впорядкованість пакетів і не дозволяє повторно передавати втрачені дані. Його заголовок містить порти джерела та призначення, довжину дейтаграми та контрольну суму. Протокол UDP практично не виправляє помилки і не піклується про втрачені пакети.
Ось як цей процес виглядає на практиці:
Сторона відправника
- 1.Упаковка даних. Програма надсилає дані для передачі за протоколом UDP.
- 2.Додавання заголовка UDP. Рівень UDP додає заголовок, що містить:
- 1.Порт джерела: визначає порт програми-відправника.
- 2.Порт призначення: визначає порт програми-приймача.
- 3.Довжина: довжина датаграми UDP, що містить заголовок та дані.
- 4.Контрольна сума: використовується для базового виявлення помилок, що дозволяє одержувачу перевірити цілісність даних.
- 3.Передача даних на рівні IP. Датаграма UDP передається на рівень інтернет-протоколу (IP).
- 4.Інкапсуляція IP. Рівень IP додає власний заголовок із IP-адресами джерела та призначення, створюючи пакет IP.
- 5.Передача через мережу. Потім пакет IP передається мережею хосту призначення.
Сторона приймача
- 1.Прийом пакетів. Вузол призначення отримує IP-пакет.
- 2.Видалення заголовка IP. Видаляється заголовок IP і витягується дейтаграма UDP.
- 3.Обробка заголовка UDP. Рівень UDP перевіряє цілісність дейтаграми за допомогою контрольної суми.
- 4.Доставка до програми. Потім датаграма UDP пересилається відповідній програмі на основі номера порту призначення в заголовку.
- 5.Обробка програмою. Приймаюча програма обробляє дані. Протокол UDP не гарантує доставку та послідовність, тому пакети можуть загубитися дорогою, прийти не в порядку або дублюватися.
Відсутність перевірок якості доставлення у протоколі UDP дозволяє йому відправляти дані набагато швидше, ніж протокол TCP, адже ресурси не витрачаються на встановлення з'єднання і перевірку правильності надходження пакетів. Недоліком такого підходу є те, що швидкість, низька затримка та ефективність важливіші за надійну, впорядковану та безпомилкову доставку даних, що для деяких програм може бути неприпустимо.
Основні відмінності між TCP та UDP
Основна відмінність між TCP і UDP полягає в тому, що UDP працює швидше, адже не потрібно дозволяти повторне надсилання або підтверджувати отримання даних. Тому UDP швидше встановлює з'єднання та передає дані. Разом з тим, виникає питання щодо того, наскільки UDP безпечний.
Розгляньмо детальніше, чим відрізняються TCP та UDP:
| Особливість | UDP | TCP |
|---|---|---|
Тип підключення | Не підтверджує налаштування з'єднання перед відправкою даних | Підтверджує встановлення з'єднання, потребує “рукостискання” |
Надійність | Ненадійний, немає гарантії доставки пакетів, немає повторної передачі втрачених даних | Надійний, гарантує доставку та повторно передає втрачені пакети |
Впорядкування даних | Не нумерує послідовність пакетів, дані можуть надходити не в порядку | Гарантує впорядковану доставку пакетів даних |
Управління потоком | Управління потоком відсутнє, пакети відправляються без будь-якого контролю над перевантаженням мережі | Керує потоком за допомогою технології розсувного вікна, щоб запобігти перевантаженню |
Швидкість та споживання обчислювальних ресурсів | Швидший, споживає менше ресурсів, адже відсутнє підтвердження підключення та виправлення помилок | Повільніший через керування підключеннями, перевірку помилок та управління потоком даних |
Порівняння протоколів UDP та TCP щодо їх використання з VPN часто призводить до висновку, що OpenVPN найкраще працює на порту UDP, хоча його можна налаштувати для роботи на будь-якому порту.
Отже, відповідь на питання, який протокол краще, UDP чи TCP, залежить від того, для чого їх використовувати. Якщо потрібна швидка та постійна передача даних, краще використовувати UDP. В іншому випадку TCP — це стабільний і надійний протокол передачі даних, який не втрачає їх по дорозі.
Який з протоколів швидший: UDP чи TCP?
Протокол UDP зазвичай працює швидше, ніж TCP, оскільки він не виконує процедури налаштування з'єднання та перевірки надійності, як це робить TCP, зокрема повторну передачу та послідовну, нумеровану доставку пакетів.
В результаті UDP працює швидше, ніж TCP, але при цьому більш схильний до помилок. TCP надсилає дані послідовно, тобто він витрачає ресурси на управління потоком. Це робить зв'язок більш безпечним і точним, але зменшує швидкість через постійне листування між відправником та одержувачем.
Який з протоколів безпечніший: UDP чи TCP?
Хоча жоден з протоколів не має опції шифрування, TCP більш надійний, адже гарантує цілісність даних та низьку вірогідність їх пошкодження. Протокол UDP, навпаки, надає пріоритет швидкості, а не надійності, що може призвести до втрати або надходження даних у неправильній послідовності.
Однак надійність та цілісність даних (повторна передача, впорядкування) — це не те саме, що безпека. Механізми надійності TCP забезпечують цілісність даних у безпечних умовах, але не замінюють шифрування та автентифікацію. Справжня безпека даних забезпечується такими протоколами, як TLS (поверх TCP) або інтегрований захист в QUIC (поверх UDP).
З яким протоколом сумісний OpenVPN: TCP чи UDP?
OpenVPN сумісний як з TCP, так і з UDP. Який з них краще, залежить від ситуації застосування. OpenVPN — це протокол VPN з відкритим кодом, який використовується багатьма провідними VPN-провайдерами, включаючи NordVPN.
UDP буде кращим протоколом для онлайн-ігор, трансляцій та IP-телефонії (VoIP). Дарма, що один чи два пакети даних можуть дорогою загубитися, суттєвого впливу на з'єднання в цілому це не матиме. А от використання TCP для таких сервісів може призвести до затримки (особливо якщо ви підключені до серверів на іншому кінці світу), що може повністю зіпсувати роботу. Тому OpenVPN за протоколом TCP рекомендується для статичних цілей, як-от відправка електронної пошти, перегляд сайтів і передача файлів. Тож налаштовуючи VPN, важливо вибрати протокол, який найкраще відповідає наявним потребам. У застосунку NordVPN можна переключатися між OpenVPN, UDP та TCP.
Який протокол використовує NordVPN?
NordVPN прагне забезпечити оптимальний процес виходу в інтернет без шкоди для швидкості, тому за замовчуванням у наших додатках обрано протокол UDP. Ми рекомендуємо спочатку спробувати протокол UDP і, лише якщо виникнуть проблеми — перейти на TCP.
Як у NordVPN змінити UDP на TCP (для користувачів Windows):
- 1.Перейдіть в розділ «Налаштування», натиснувши на значок шестерінки в правому верхньому куті.
- 2.Виберіть «Додатково» в меню зліва.
- 3.У розділі «Протокол» виберіть TCP.
Як у NordVPN змінити UDP на TCP (для користувачів macOS):
- 1.Відкрийте панель «Налаштування» у верхньому лівому куті або на панелі меню знайдіть NordVPN та виберіть «Налаштування» (гаряча клавіша за замовчуванням: Cmd+,).
- 2.За замовчуванням буде включений параметр «Підключення: віддавати перевагу UDP над TCP». Поставте позначку, щоб його вимкнути.
Якщо після цього впаде швидкість інтернету, спробуйте кілька прийомів, щоб збільшити швидкість VPN.
Онлайн-безпека з одного кліку.
Залишайтеся в безпеці з провідною в світі мережею VPN