O servidor que está escutando na porta 80 não precisa lidar com vários processos. Os daemons TCP simples de anos anteriores só podiam lidar com uma conexão por vez. Você pode emular esse comportamento com um programa como netcat
escutar em uma porta específica e tentar conectar duas máquinas a ela. Um entra, o outro ricocheteia sem uma conexão. Esses daemons são praticamente inúteis, para que você nunca mais os veja.
Para algo como um servidor web, ele está ouvindo diretamente na porta. É importante lembrar que ele está no topo da biblioteca de soquetes do sistema operacional. Quando uma nova conexão é estabelecida, a biblioteca de soquetes passa o novo soquete para o software do servidor da web. Nesse ponto, o software do servidor da web possui algumas opções.
Uma possibilidade é que ele passe o objeto socket para um novo thread no mesmo processo. Sempre que ocorrer uma comunicação nesse soquete, esse thread o manipulará. O processo pai medeia quais threads estão ativos a qualquer momento, o que pode ser muito.
Outra possibilidade é que ele gere um novo processo e passe o objeto de soquete para o processo. Pelo que entendi, agora o sistema de soquete do sistema operacional medeia a comunicação entre esses processos filhos e seus destinos. O processo pai ainda tem algum controle sobre os processos, como matar os pendurados e outras comunicações entre processos.
Qual dessas abordagens é mais eficiente depende do sistema operacional. IIRC, o Apache pode ser executado nos dois modos.
Em essência, a biblioteca de soquetes fornece um nível de processamento paralelo ao servidor da web. Ele pode lidar com várias conexões simultâneas, transferindo dados ativamente, enquanto aceita novas conexões.
Para um navegador que pode ativar várias tentativas de conexão com um servidor da Web, a fim de melhorar o tempo de carregamento, o paralelismo também se aplica à extremidade do navegador, isso é uma coisa boa e maravilhosa. O navegador mantém o controle do estado da página durante o carregamento, e as várias tentativas de conexão que ele gera fazem parte do processo.
recv()
em cada processo.