Оптимальный размер буфера - TCP - PullRequest
2 голосов
/ 11 июля 2011

Если я выполняю большую передачу и выполняю Flush () с шагом 4 КБ, будет ли приложение отправлять 2 полных пакета и 3-й частичный пакет, или оно будет ждать заполнения до тех пор, пока этот 3-й пакет не будет заполнен?

Итак, мой вопрос, должен ли я сбрасываться в кратных размерах полезной нагрузки пакета?

Спасибо: -)

1 Ответ

0 голосов
/ 13 июля 2011

Приложение не контролирует передачу пакетов (я предполагаю, что вы отправляете файл с использованием сокета TCP). Таким образом, пакеты отправляются в зависимости от размера окна TCP. Размер окна определяется различными факторами: MSS (максимальный размер сегмента), состояние сети (есть перегрузка или нет) и скорость вашего получателя для обработки пакетов.

Однако, давайте предположим, что 4096 байтов будут сегментированы на 1460 (1), 1460 (2) и 1176 (3) (при условии, что MSS = 1460 и размер окна = MSS (фиксированный)). Если алгоритм Nagle включен, 1460 (1) будет отправлено немедленно, потому что это первый сегмент, 1460 (2) будет отправлено немедленно, потому что = MSS и 1176 (3) будут задерживаться, пока TCP не получит подтверждение предыдущих сегментов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...