Ответ 1
Операционная система предоставляет каждому соединению сокетов очередь отправки и получения. Вот где байты сидят до тех пор, пока что-то на уровне приложения не обработает их. Если очередь приема заполняется, ни один подключенный клиент не может отправлять информацию до тех пор, пока в очереди не будет свободного места. Вот почему приложение должно обрабатывать запросы как можно быстрее.
Если вы находитесь в системе * nix, вы можете использовать netstat для просмотра текущего количества байтов в очередях отправки и получения. В этом примере в очереди приема есть 0 байтов и 240 байтов в очереди отправки (ожидающих отправки ОС).
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 240 x.x.x.x:22 x.x.x.x:* LISTEN
В Linux вы можете проверить размер по умолчанию и максимально допустимый размер очередей отправки/получения с файловой системой proc:
Receive:
cat /proc/sys/net/core/rmem_default
cat /proc/sys/net/core/rmem_max
Send:
cat /proc/sys/net/core/wmem_max
cat /proc/sys/net/core/wmem_default