На TCP-потоке сервер->клиент все пакеты от сервера имеют установленный флаг PSH. Является ли старый добрый Nagle ответственным за установку этого флага?
решение1
Флаг push ( PSH
или P
) устанавливается хостом-отправителем. Если отправляющее приложение использует запись или отправку 100 байт, каждый пакет будет иметь PSH
установленный. Если отправитель отправляет 2000 байт, он будет отправлен двумя пакетами, и второй будет иметь флаг PSH
, предполагая стандартный размер кадра 1500.
Флаг push указывает принимающему хосту, что полученные данные следует немедленно передать принимающему приложению.
решение2
Установка Push Flag обычно контролируется не отправляющим приложением, а отправляющим уровнем TCP. Большинство современных стеков TCP/IP устанавливают бит PSH в конце буфера, предоставленного send() .
Источник: Уменьшение задержки для TCP за счет отсутствия ожидания флага Push
решение3
Постоянная установка бита P — это стандартное правильное, но неэффективное поведение, которое можно увидеть в старых стеках TCP.