GNU/Linux >> Tutoriels Linux >  >> Linux

Effet de SO_SNDBUF

L'effet du réglage SO_SNDBUF l'option est différente pour TCP et UDP.

  • Pour UDP, cela définit la limite de la taille du datagramme , c'est-à-dire que tout ce qui est plus grand sera jeté.
  • Pour TCP, cela définit simplement la taille du tampon dans le noyau pour un socket donné (avec quelques arrondis à la limite de la page et avec une limite supérieure).

Puisqu'il semble que vous parliez de TCP, l'effet que vous observez s'explique par le fait que le socket est en mode bloquant , donc send(2) bloque jusqu'à ce que le noyau puisse accepter toutes vos données, et/ou que la pile réseau retire de manière asynchrone les données et les pousse vers la carte réseau, libérant ainsi de l'espace dans la mémoire tampon.

De plus, TCP est un protocole de flux , il ne conserve aucune structure de "message". Un send(2) peut correspondre à plusieurs recv(2) s de l'autre côté, et dans l'autre sens. Traitez-le comme un flux d'octets.


SO_SNDBUF configure le tampon que l'implémentation de socket utilise en interne. Si votre socket n'est pas bloquant, vous ne pouvez envoyer que jusqu'à la taille configurée, si votre socket est bloquant, il n'y a aucune limitation pour votre appel.


Linux
  1. Proxy TCP avec socat

  2. Guide pratique :programmation de sockets en Python

  3. Obtenir l'adresse MAC

  4. Programmation TCP Socket hautes performances en .NET C#

  5. Guide des sockets nommés Linux

Comment connecter NGINX à PHP-FPM à l'aide d'UNIX ou d'un socket TCP/IP

API de socket Tmux ?

Comment sécuriser le socket TCP de Docker avec TLS

Créer une connexion de port série virtuel sur TCP

Quel est l'effet de la définition d'un socket Linux - haute priorité ?

Obtenir le nombre de connexions TCP établies