GNU/Linux >> Tutoriales Linux >  >> Linux

Efecto de SO_SNDBUF

El efecto de configurar SO_SNDBUF la opción es diferente para TCP y UDP.

  • Para UDP, esto establece el límite en el tamaño del datagrama , es decir, cualquier cosa más grande será descartada.
  • Para TCP, esto solo establece el tamaño del búfer en el kernel para un socket determinado (con cierto redondeo al límite de la página y con un límite superior).

Dado que parece que está hablando de TCP, el efecto que está observando se explica porque el socket está en modo de bloqueo , entonces send(2) bloques hasta que el núcleo pueda aceptar todos sus datos, y/o la red apila los datos de forma asíncrona y los empuja a la tarjeta de red, liberando así espacio en el búfer.

Además, TCP es un protocolo de flujo , no conserva ninguna estructura de "mensaje". Uno send(2) puede corresponder a múltiples recv(2) s en el otro lado, y al revés. Trátelo como flujo de bytes.


SO_SNDBUF configura el búfer que la implementación del socket usa internamente. Si su socket no bloquea, solo puede enviar hasta el tamaño configurado, si su socket bloquea, no hay limitación para su llamada.


Linux
  1. Cómo:Programación de sockets en Python

  2. Introducción a los cortafuegos

  3. ¿Cómo elimino una conexión de enchufe CLOSE_WAIT?

  4. Programación TCP Socket de alto rendimiento en .NET C#

  5. Obtener el número de conexiones TCP establecidas

Cómo conectar NGINX a PHP-FPM usando UNIX o TCP/IP Socket

¿Api del zócalo de Tmux?

Cómo proteger el socket TCP de Docker con TLS

¿Cuál es el efecto de configurar un socket de Linux:alta prioridad?

activación de socket systemd frente a xinetd

¿Por qué se requieren < o > para usar /dev/tcp?