Архитектура ядра буфера приема стека TCP в Linux 3.0 - PullRequest
1 голос
/ 04 февраля 2012

(Linux 3.0, x86_64)

Если я на некоторое время перестану звонить recv (2) через подключенный tcp-сокет, а другой хост продолжит отправку данных, чем предположительно этипринимается и буферизируется ядром, поэтому в следующий раз, когда я вызову recv, он быстро вернется со всеми ожидающими данными.

Мой вопрос: насколько велик этот приемный буфер и как он работает?Существуют ли соответствующие настройки ядра или сокета, которые я могу использовать для настройки его поведения?Что делает стек tcp, когда заполняется?

1 Ответ

2 голосов
/ 04 февраля 2012

Буфер приема можно изменить с помощью setsockopt(SO_RCVBUF). Размер по умолчанию контролируется tcp_rmem sysctl. Если буфер заполнится, стек перестанет расширять окно приема, которое он предлагает, на другую сторону, заставив другой размер прекратить отправку данных, пока в буфере не останется места.

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