Як кажуть сказав TCP то кажи і UDP)
Протоколи для QA - UDP
І так)
Як TCP - це “акуратний хлопець”, який перепитує кожне слово, то UDP - це той, хто просто кричить фразу через дорогу і не чекає, почули ви її чи ні.
UDP - максимально простий, швидкий, але без будь-яких гарантій доставки.
І саме тому багато систем, які працюють у реальному часі, будуються саме на ньому.
Що я маю вам сказати
UDP не встановлює з’єднання.
Немає ніякого SYN → SYN-ACK → ACK.
Ти просто береш пакет і відправляєш його на потрібний порт.
Доставиться?
Може так, може ні.
Але зате швидко.
Працює UDP, просто
Немає підтверджень
Сервер не каже “я отримав твій пакет”.
Якщо загубився - значить загубився.
Немає повторних передач
UDP не робить retransmission.
Якщо треба повтор - це має вирішувати застосунок, а не протокол.
Немає контролю потоку
Сервер не попросить “повільніше”.
Що відправиш - те й прилетить (або не прилетить).
Пакети можуть приходити не по порядку
Order - це проблема застосунку, не протоколу.
От якраз UDP дуже багато де юзають - хотя він не надійний, але є коли надійність непотрібна)
це якраз там, де швидкість важливіша за точність:
Аудіо/відео трафік
Велика затримка гірша, ніж пропущений пакет.
VoIP
Трохи пропав голос - окей. Затримка на секунду - катастрофа.
Онлайн-ігри
Гравця “подергало” - краще, ніж отримати дані на пів секунди пізніше.
DNS
Запит маленький, простий і якщо пропав - просто шлеться знову.
Скажете як перевіряти і на що треба звертати увагу?
І саме тут починається цікаве.
UDP створює дуже “дивні” баги, бо немає жодної гарантії, що ти бачиш повну картину.
Типові проблеми це
Перервані голосові/відео кадри
Пакет дропнувся і все - назад не прийде.
Різна якість на різних мережах
На Wi-Fi ок, на мобільному - повний розрив.
Пакети приходять не по порядку
У real-time це виглядає як ривки, фрізи, перекручування звуку.
Рандомні втрати під навантаженням
UDP не регулює швидкість → мережа сама починає відкидати надлишок.
Тестувати просто але тут без мережевих тулів ніяк.
Подивитись, чи взагалі летять UDP-пакети:
sudo tcpdump -i eth0 udp -w udp_trace.pcap
Подивитись у Wireshark:
чи є packet loss
чи є jitter (різкі стрибки затримок)
чи пакети приходять out-of-order
Створити навантаження:
iperf3 -u -b 5M -c host
Так можна побачити, як система поводиться при втраті пакетів.
Перевірити MTU
Дуже часто UDP “ламається” просто через fragmentation.
Мій поінт яки до вам)
UDP - це мінімум гарантій, максимум швидкості.
І якщо TCP - це стабільність, то UDP - про те, як система поводиться у реальному світі, де мережа недосконала.
Саме тому тестувати UDP-сервіси - це завжди робота не тільки з API або UI, а й з мережею, середовищем і умовами передачі трафіку.
Хочете чи ні - але без розуміння UDP важко тестувати VoIP, відеодзвінки, стрімінг, ігри, DNS і купу сучасних real-time сервісів.
Всім гарного дня і настрою.
Note: Відео для вас для повного розуміння як працює наглядно)))