Nagle объединяет небольшие записи при неподтверждённых данных; TCP_NODELAY отключает это ожидание. TCP_CORK в Linux удерживает неполные сегменты, чтобы приложение могло собрать крупную отправку.
В чём разница между алгоритмами сетевой буферизации Nagle's Algorithm (TCP_NODELAY) и TCP_CORK? В каких случаях бэкендер должен принудительно отключить алгоритм Нагла для обеспечения минимальной задержки?
Nagle объединяет небольшие записи при неподтверждённых данных; TCP_NODELAY отключает это ожидание. TCP_CORK в Linux удерживает неполные сегменты, чтобы приложение могло собрать крупную отправку.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Nagle объединяет небольшие записи при неподтверждённых данных; TCP_NODELAY отключает это ожидание. TCP_CORK в Linux удерживает неполные сегменты, чтобы приложение могло собрать крупную отправку.
Для интерактивного обмена мелкими сообщениями Nagle вместе с delayed ACK способен добавить задержку. TCP_NODELAY полезен, если измерения показывают такую проблему и нельзя просто объединить связанные записи. TCP_CORK подходит для подготовки заголовка и большого тела, но его нужно своевременно снимать. Ни одна опция не отменяет congestion control, сетевые очереди и задержку сервера. Не включайте все настройки одновременно без понимания их взаимодействия.
Источник: man7.org.