GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Auswirkung von SO_SNDBUF

Die Auswirkung der Einstellung SO_SNDBUF Die Option ist für TCP und UDP unterschiedlich.

  • Für UDP setzt dies die Grenze für die Größe des Datagramms , d. h. alles, was größer ist, wird verworfen.
  • Für TCP legt dies nur die Größe des In-Kernel-Puffers für einen gegebenen Socket fest (mit einer gewissen Rundung zur Seitengrenze und mit einer Obergrenze).

Da es so aussieht, als würden Sie über TCP sprechen, erklärt sich der von Ihnen beobachtete Effekt dadurch, dass sich der Socket im Blockiermodus befindet , also send(2) blockiert, bis der Kernel alle Ihre Daten akzeptieren kann, und/oder der Netzwerkstapel Daten asynchron aus der Warteschlange nimmt und sie auf die Netzwerkkarte schiebt, wodurch Speicherplatz im Puffer freigegeben wird.

Außerdem ist TCP ein Stream-Protokoll , behält es keine "Nachrichten"-Struktur bei. Ein send(2) kann mehreren recv(2) entsprechen s auf der anderen Seite und umgekehrt. Behandeln Sie es als Byte-Stream.


SO_SNDBUF konfiguriert den Puffer, den die Socket-Implementierung intern verwendet. Wenn Ihr Socket nicht blockiert, können Sie nur bis zur konfigurierten Größe senden, wenn Ihr Socket blockiert, gibt es keine Beschränkung für Ihren Anruf.


Linux
  1. Tmux-Socket-API?

  2. Gewusst wie:Socket-Programmierung in Python

  3. Rufen Sie die Anzahl der hergestellten TCP-Verbindungen ab

  4. Systemd-Socket-Aktivierung vs. xinetd

  5. Unix-Socket vs. TCP/IP-Host:Port

TCP-Proxying mit socat

So verbinden Sie NGINX mit PHP-FPM über UNIX oder TCP/IP Socket

So sichern Sie den TCP-Socket von Docker mit TLS

Socket-Optionen anzeigen

Erstellen Sie eine virtuelle serielle Portverbindung über TCP

Was bewirkt das Setzen eines Linux-Sockets - hohe Priorität?