
СередньоПочатковийDevOps
У чому головна відмінність між протоколами TCP і UDP?
Коротка відповідь
TCP — це надійний протокол, орієнтований на підключення, який гарантує доставку, замовлення,
і перевірка помилок ціною накладних витрат. UDP — це простий протокол без підключення
без гарантій доставки чи замовлення, але це швидше та легше.
TCP і UDP є двома основними протоколами транспортного рівня, які працюють поверх IP. Основна відмінність: протокол TCP орієнтований на з’єднання та надійний, а UDP – без підключення та працює за принципом «запустив і забув».
TCP (RFC 9293)
- Орієнтований на підключення. Перед надсиланням даних кінцеві точки виконують тристороннє рукостискання (3WHS): SYN → SYN-ACK → ACK, синхронізуючи початкові порядкові номери.
- Надійний і впорядкований. Кожен байт отримує порядковий номер; одержувач надсилає підтвердження (ACK), втрачені сегменти передаються повторно, а дані знову збираються в початковому порядку. Цілісність перевіряється контрольною сумою. RFC 9293 стверджує, що TCP «забезпечує надійну службу потоку байтів у порядку».
- Потік байтів, без меж повідомлень. TCP передає неструктурований потік байтів: межі повідомлень не зберігаються (програма повинна створювати власні повідомлення). UDP, навпаки, є орієнтованим на повідомлення — кожна дейтаграма доставляється як окрема повна одиниця або взагалі не доставляється (одна відправка = одна отримана).
- Контроль потоку та перевантаження. TCP регулює швидкість надсилання, щоб не перевантажувати ні приймача, ні мережу.
- Компроміс: більше накладних витрат і затримки, а також більший заголовок — 20–60 байт (20 без параметрів, розширюваних за допомогою таких параметрів, як MSS, масштабування вікна, SACK).
UDP (RFC 768)
- Без підключення. Немає рукостискання; кожна дейтаграма незалежна.
- Жодних гарантій. У RFC прямо сказано, що «доставка та захист від дублікатів не гарантуються» — UDP не відновлює втрачені, дубльовані або несправні пакети.
- Виправлений 8-байтовий заголовок лише з чотирма полями: порт джерела, порт призначення, довжина, контрольна сума.
- Переваги: низька затримка та накладні витрати, а також підтримка широкомовної/групової передачі.
Коли використовувати який
- TCP: Інтернет (HTTP/HTTPS через TCP), електронна пошта, передача файлів, SSH — будь-де, де цілісність даних має значення.
- UDP: DNS-пошук, онлайн-ігри, VoIP, потокове відео в реальному часі — де швидкість важливіша, ніж один втрачений пакет.
Поширені подальші моменти
- UDP сам по собі не впорядковує дані, але програма може накладати власну логіку поверх (QUIC робить це через UDP).
- HTTP/3 працює на QUIC через UDP, тоді як HTTP/1.1 і HTTP/2 працюють через TCP.
- Контрольна сума UDP є технічно необов’язковою для IPv4 (нульове значення означає «не обчислено»), але обов’язкова для IPv6.
