> Есть ли у TCP и UDP операция подтверждения доставки (Go)

Уровень: senior · Роль: backend · Язык: Go · Категория: Технические вопросы

Компании: Avito

Стек: Go

> Пример ответа

У TCP есть встроенная операция подтверждения доставки - это механизм ACK (acknowledgment). После отправки сегмента данных получатель отправляет обратно пакет с подтверждением (ACK), содержащий номер следующего ожидаемого байта. Если отправитель не получает ACK в течение тайм-аута, он повторно отправляет данные. Это гарантирует надёжную доставку.

У UDP такой операции нет. Протокол не предусматривает ни подтверждений, ни повторных передач, ни контроля целостности потока. UDP - это "fire-and-forget": отправитель просто посылает дейтаграмму, и не знает, дошла ли она. Если нужна гарантия доставки поверх UDP, её реализуют на прикладном уровне (например, в протоколах вроде QUIC или при ручном добавлении ACK в коде).

Пример на Go для иллюстрации: при использовании net.ListenUDP вы не получите автоматического подтверждения - только сырые данные. Для TCP же net.Listener и conn.Read/conn.Write работают с подтверждениями на уровне стека.

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью