2014-02-19 5 views
0

Я хотел знать, есть ли в установлении соединения TCP отдельные буферы, каждый из которых размером 2^16 байт выделяется для отдельных TCP-соединений для отдельных серверов?Буфер для подключения TCP

ответ

0

Да, отдельные буферы выделены для отправки и получения. Объем зарезервированной памяти первоначально зависит от конфигурации по умолчанию, и если приложение выбирает другой размер, используя set_sockopt(). Начальная зарезервированная память также растет с увеличением количества исходящих/входящих пакетов.

В Linux значения по умолчанию могут быть прочитаны/изменены с помощью sysctls.

sudo sysctl -a | grep tcp | Grep мем

net.ipv4.tcp_mem = 191133 254845 16777216

net.ipv4.tcp_rmem = 4096 16384 777216

net.ipv4.tcp_wmem = 4096 16384 16777216

Вы можете использовать setsockopt () с SO_SNDBUF и SO_RCVBUF, чтобы изменить его из приложения.

+0

У меня возникло сомнение в том, что клиент при установлении соединений TCP с разными серверами выделяет разные буферы для каждого сервера размером 2^16? –

+0

Да, да. По умолчанию он равен 2^16 по Linux, но он также настраивается. Эти буферы предназначены для каждого TCP-соединения независимо от того, является ли он одним и тем же сервером или нет. Кроме того, имейте в виду, что выделенный буфер не используется только для хранения данных. Он также используется для хранения skbuff и нескольких других вещей. – Akhil

+0

Спасибо ... это очищает мое сомнение –

0

Да и нет. Есть, конечно, два буфера, отправка и получение, но размер зависит от платформы и может быть изменен приложением.

+0

У меня возникло сомнение в том, что клиент при установлении соединений TCP с разными серверами выделяет разные буферы для каждого сервера размером 2^16? –

Смежные вопросы