GNU/Linux >> Znalost Linux >  >> Linux

Účinek SO_SNDBUF

Efekt nastavení SO_SNDBUF Tato možnost se liší pro TCP a UDP.

  • Pro UDP to nastavuje limit velikosti datagramu , tj. cokoli většího bude vyřazeno.
  • Pro TCP to pouze nastavuje velikost vnitřní vyrovnávací paměti pro daný soket (s určitým zaokrouhlením na hranici stránky as horním limitem).

Protože to vypadá, že mluvíte o TCP, účinek, který pozorujete, je vysvětlen tím, že soket je v režimu blokování , takže send(2) blokuje, dokud jádro nepřijme všechna vaše data, a/nebo síťový zásobník asynchronně odřadí data z fronty a přenese je na síťovou kartu, čímž uvolní místo ve vyrovnávací paměti.

TCP je také protokol proudu , nezachovává žádnou strukturu „zprávy“. Jeden send(2) může odpovídat více recv(2) s na druhé straně a naopak. Považujte to za byte-stream.


SO_SNDBUF konfiguruje vyrovnávací paměť, kterou implementace soketu interně používá. Pokud váš soket neblokuje, můžete odesílat pouze do nakonfigurované velikosti, pokud váš soket blokuje, není pro vaše volání žádné omezení.


Linux
  1. Úvod do firewallů

  2. Jak odeberu připojení soketu CLOSE_WAIT

  3. Vysoce výkonné programování TCP Socket v .NET C#

  1. Jak na to Linux pojmenované zásuvky

  2. Sniff doménový soket UNIX

  3. Zkoumání /dev/log

  1. Jak na to:Programování soketů v Pythonu

  2. aktivace soketu systemd vs xinetd

  3. Proč jsou < nebo > vyžadovány pro použití /dev/tcp