GNU/Linux >> Znalost Linux >  >> Linux

Unixový soket vs TCP/IP host:port

Řešení 1:

Unixové sockety jsou o něco rychlejší, protože nemáte tcp-overhead. Pokud si uvědomíte, že tato ztráta výkonu je otázkou zatížení serveru. Pokud nemáte příliš vysoké zatížení serveru, nepoznáte to.

Pokud používáte Jails (FreeBSD) nebo nějakou jinou virtualizační technologii k oddělení např. MySQL-Server z webového serveru, často místo soketů používáte nastavení tcp/ip. Pravidla brány firewall však musí omezit přístup.

Potřebujete zjistit, zda je váš systém pod velkým zatížením, takže je zásuvka nutností, nebo se můžete zaměřit na pěkný systémový design (oddělující služby), pak by bylo lepší řešení tcp/ip.

Takže dlouhá odpověď krátká:

Ano, je tam výkonnostní rozdíl, zásuvky jsou rychlejší. Pokud netrpíte vysokou zátěží serveru, vyberte si, co se lépe hodí k návrhu vašeho systému.

Řešení 2:

Je to v podstatě kompromis mezi výkonem a flexibilitou. Unixové doménové sockety vám poskytnou o něco lepší výkon, zatímco socket připojený k localhost vám poskytne o něco lepší přenositelnost. Serverovou aplikaci můžete snadno přesunout do jiného OS pouhým změnou IP adresy z localhost na jiný název hostitele.

Soket domény Unix používá místní systém souborů k vytvoření mechanismu IPC mezi serverem a procesy klienta. Když je připojen soket domény Unix, někde v /var uvidíte soubor.

Pokud hledáte čistě řešení maximálního výkonu, možná budete chtít prozkoumat IPC se sdílenou pamětí. To je ale trochu složitější.

Řešení 3:

Výhody doménových soketů Unix.

  1. Přístup lze spravovat prostřednictvím systému uživatelských oprávnění Unix buď nastavením oprávnění na samotném soketu, nebo tak, že server přečte uživatelské jméno připojujícího se klienta.
  2. Menší šance nechtěného vystavení zásuvky vnějšímu světu. Pokud například server také provozuje webovou proxy, pak to může nechtěně povolit připojení k soketům na localhost.

Nevýhody unixových doménových socketů

  1. Nepřenosné na systémy jiné než unix.
  2. Může být nepříjemné s chrooty, vězeními a podobně

Linux
  1. Jakou techniku ​​Linux IPC použít?

  2. Účinek SO_SNDBUF

  3. Jak mohu zabít TCP port 16969 v Bash?

  1. zkontrolujte všechny otevřené zásuvky v linuxovém OS

  2. Vytvořte připojení virtuálního sériového portu přes TCP

  3. Použití localhost TCP/IP komunikace v programu - vždy bezpečné?

  1. Monitorujte provoz TCP na konkrétním portu

  2. Ukončit proces běžící na portu 80

  3. Kdy vypnout TCP SACK?