В чем разница протоколов TCP и UDP
Что проверяют
Понимаете ли вы, за что платит надёжность, и можете ли назвать, где выбирают каждый.
Как отвечать
TCP это соединение с гарантиями: установка через тройное рукопожатие, нумерация байтов, подтверждения, повторная отправка потерянного, восстановление порядка, контроль перегрузки и потока. Приложение получает поток байтов ровно в том порядке, в каком его отправили.
UDP это датаграммы без соединения и без гарантий: отправил и забыл. Пакет может потеряться, продублироваться или прийти не по порядку. Зато нет рукопожатия, нет ожидания подтверждений и нет задержки на повторную отправку.
Цена надёжности это задержка. Потерянный пакет в TCP заставляет ждать повтора, и всё, что пришло после него, стоит в очереди (блокировка головы очереди). Для видеозвонка такой пакет уже не нужен, лучше пропустить кадр, чем задержать всю картинку.
Где что применяют: TCP это HTTP до второй версии включительно, почта, передача файлов, базы данных. UDP это DNS, видео и голос, игры, телеметрия, а также QUIC, на котором работает HTTP/3.
Про QUIC стоит сказать отдельно: он строится поверх UDP, но реализует надёжность и порядок в пределах каждого потока, снимая блокировку головы очереди, которая осталась в HTTP/2 поверх TCP.
Где спотыкаются
Говорят «UDP быстрее», не объясняя, за счёт чего.
Считают, что UDP не используется всерьёз.
Не знают про блокировку головы очереди, а это главный практический недостаток TCP.
Удивляются, что HTTP/3 работает поверх UDP.