Serwer nasłuchujący na porcie 80 NIE MUSI obsługiwać wielu procesów. Proste demony TCP starszych lat mogły obsługiwać tylko jedno połączenie na raz. Możesz naśladować to zachowanie, mając program taki jak netcat
nasłuch na określonym porcie i spróbuj podłączyć do niego dwie maszyny. Jeden wejdzie, drugi odbije się bez połączenia. Te demony są w większości bezużyteczne, więc już ich nie widzisz.
W przypadku czegoś takiego jak serwer WWW nasłuchuje bezpośrednio na porcie. Należy pamiętać, że znajduje się on nad biblioteką gniazd systemu operacyjnego. Po ustanowieniu nowego połączenia biblioteka gniazd przekazuje zupełnie nowe gniazdo do oprogramowania serwera WWW. W tym momencie oprogramowanie serwera WWW ma pewne opcje.
Jedną z możliwości jest to, że przekazuje obiekt gniazda do nowego wątku w tym samym procesie. Ilekroć komunikacja odbywa się przez to gniazdo, ten wątek sobie z tym poradzi. Proces nadrzędny pośredniczy w tym, które wątki są aktywne w danym momencie, co może być dużo.
Inną możliwością jest to, że rozpędza nowy proces i przekazuje obiekt gniazda do procesu. Jak rozumiem, teraz system gniazdowy systemu operacyjnego pośredniczy w komunikacji między tymi procesami potomnymi a ich celami. Proces nadrzędny nadal ma pewną kontrolę nad procesami, takimi jak zabijanie zawieszonych i inna komunikacja między procesami.
To, które z tych podejść jest bardziej wydajne, zależy od systemu operacyjnego. IIRC, Apache może działać w dowolnym trybie.
Zasadniczo biblioteka gniazd zapewnia poziom równoległego przetwarzania do serwera WWW. Może obsługiwać wiele jednoczesnych połączeń aktywnie przesyłających dane, a wszystko to przy jednoczesnym akceptowaniu nowych połączeń.
W przypadku przeglądarki, która może rozdzielić wiele prób połączenia z serwerem sieciowym w celu skrócenia czasu ładowania, równoległość dotyczy również końca przeglądarki, jest to dobra i cudowna rzecz. Przeglądarka śledzi stan strony podczas wczytywania, a wszystkie próby połączenia, które wykręca, są częścią tego procesu.
recv()
w każdym procesie.