TCP і UDP: чим відрізняються транспортні протоколи
TCP і UDP доставляють дані застосунків поверх IP, але мають різні властивості. TCP надає впорядкований потік байтів із підтвердженням та повторним передаванням. UDP надсилає окремі датаграми без таких гарантій на рівні транспорту. Вибір залежить від потреб застосунку.
Що робить TCP
Перед обміном даними TCP встановлює з’єднання між кінцевими точками. Сегменти нумеруються, втрачені дані можуть передаватися повторно, а застосунок одержувача бачить байти в правильному порядку. TCP також регулює потік і перевантаження, щоб відправник не переповнював одержувача й мережу. Ці властивості зручні для файлів, пошти та багатьох вебз’єднань. Вони не означають, що кожна TCP-служба має шифрування: для цього потрібен окремий захищений протокол, наприклад TLS.
Якщо частина даних загубилася, застосунок зазвичай чекає відновлення потрібного фрагмента. Це правильно для документа, який має надійти повністю, але може збільшити затримку інтерактивного потоку. TCP не знає меж повідомлень застосунку: два виклики надсилання не гарантують двох окремих читань на іншому боці. Формат повідомлень визначає сам застосунок.
Що дає UDP
UDP зберігає межі датаграм і не встановлює з’єднання так, як TCP. Сам UDP не підтверджує доставку, не впорядковує пакети й не повторює втрачені. Це не означає, що застосунок поверх UDP неодмінно ненадійний: він може сам додати потрібні підтвердження, контроль перевантаження й шифрування. DNS-запити часто використовують UDP, а QUIC побудовано поверх UDP з власними механізмами надійного передавання.
Для живого мовлення чи гри запізнілий пакет може бути менш корисним за наступний. Тому деякі застосунки воліють самі керувати втратами й затримкою, не чекаючи транспорту. Водночас вибір UDP не створює низьку затримку автоматично: перевантажена мережа затримає або втратить будь-які пакети.
Порти й практичний вибір
Обидва протоколи використовують номери портів, але TCP 443 і UDP 443 — різні кінцеві точки. Перевірка TCP-порту не доводить працездатність UDP-служби з тим самим номером. Для вебсайтів HTTP/1.1 і HTTP/2 зазвичай використовують TCP із TLS, а HTTP/3 — QUIC поверх UDP. Якщо UDP заблоковано, клієнт може повернутися до TCP-версії HTTP; точна поведінка залежить від клієнта й сервера.
Під час проєктування служби спершу перелічіть вимоги: чи потрібні гарантована доставка, порядок, межі повідомлень і контроль часу. Потім виберіть протокол і перевірте його підтримку мережею. Специфікації TCP і UDP описують властивості транспорту. Про порти читайте також у статті «Що таке мережевий порт?». Така перевірка особливо корисна перед відкриттям порту на домашньому маршрутизаторі.
