Какие существуют типы передачи данных в сети
Что проверяют
Есть ли у вас в голове карта: по каким осям вообще делится передача данных и что из этого влияет на тестирование. Вопрос широкий намеренно, интервьюер смотрит, начнёте ли вы с классификации или свалитесь в случайное перечисление протоколов. Уточнение обычно узкое: чем TCP отличается от UDP и как вы проверите потерю пакетов.
Как отвечать
Разложите по осям, а не списком:
- по установке соединения: TCP устанавливает соединение через трёхстороннее рукопожатие, гарантирует порядок и доставку, управляет потоком и перегрузкой. UDP шлёт датаграммы без гарантий и без ожидания подтверждений. QUIC поверх UDP даёт надёжность и шифрование сразу, на нём работает HTTP/3;
- по направлению: симплекс, полудуплекс, полный дуплекс;
- по числу получателей: unicast, broadcast, multicast, anycast;
- по характеру обмена на прикладном уровне: запрос и ответ (HTTP, унарный gRPC), поток от сервера (SSE, серверный стриминг gRPC), двусторонний канал (WebSocket), обмен через брокер (Kafka, RabbitMQ) с гарантиями at most once и at least once;
- по среде: проводная (Ethernet) и беспроводная (Wi-Fi, мобильные сети). Для тестировщика это источник потерь, джиттера и переключений сети.
Для QA важнее следующий шаг, как это проверять. Wireshark и tcpdump для разбора трафика, Charles или Proxyman как прокси между приложением и сервером, троттлинг в DevTools и Network Link Conditioner, tc netem для эмуляции задержек и потерь, ping и traceroute для маршрута. Назовите свои сценарии: обрыв связи в середине загрузки, переход с Wi-Fi на мобильную сеть, повтор запроса и проверка идемпотентности, поведение при таймауте.
Где спотыкаются
Сводят всё к «TCP надёжный, UDP быстрый». Дело не в скорости канала, а в отсутствии ожидания подтверждений и переотправок, и цена этому потерянные пакеты.
Называют HTTP протоколом транспортного уровня. HTTP прикладной и работает поверх TCP или QUIC.
Не связывают теорию с тестами. Знание про потери ценно тогда, когда вы можете их воспроизвести и сказать, как приложение обязано себя вести.