Molto approssimativamente: un sistema Linux parla UNIX. Ti dà la possibilità di eseguire programmi UNIX offrendo le syscalls open()
, malloc()
, socket()
ecc. Ecc.
Un server web come nginx parla in HTTP - implementa i comandi GET / PUT / POST ecc. che usi per la navigazione in Internet o per l'esecuzione di applicazioni REST.
UNIX è estremamente potente, ma non contiene tutte le funzionalità del mondo. È semplicemente molto più efficiente sviluppare e installare un sistema operativo e programmi applicativi separatamente rispetto a scrivere uno, estremamente enorme, sistema che fa tutto. Se UNIX fosse incluso con tutti i programmi che possono eseguire su UNIX, sarebbe di dimensioni pari a 1000 GB e richiederà un mese per l'installazione. Nessuno lo vuole, quindi scendiamo a compromessi distribuendo separatamente i sistemi operativi e le applicazioni, e ognuno può scegliere le applicazioni che realmente desiderano.
Il fatto che entrambi siano chiamati "server" è confuso, ma alla fine "server" significa nient'altro che un componente espone funzionalità che altri componenti o utenti possono utilizzare per creare componenti ancora più intelligenti. Sotto questa prospettiva, praticamente tutto il software è un server di qualche tipo. Ad esempio, le applicazioni REST si basano sui servizi offerti dai server Web e dai browser, pertanto la gerarchia può essere suddivisa in tre livelli o anche più.