Eu tenho um desentendimento sobre alguma teoria de rede e porque não consegui encontrar uma resposta definitiva online (a maioria dos recursos são teoria e teoria, etc., sem exemplos concisos). Estou perguntando aqui.
Supondo que eu tenha um servidor com IP 10.10.10.10
que atende na porta 80 e dois clientes com IP 20.20.20.20
e IP 30.30.30.30
respectivamente, quando os dois clientes se conectam ao servidor na porta 80, o que acontece?
Isso ...
O servidor
A. aceita conexão na porta 80 para os dois clientes e cria dois sokets:
server IP: 10.10.10.10
server port: 80
client IP: 20.20.20.20
client port: whatever port client 1 used to connect
e
server IP: 10.10.10.10
server port: 80
client IP: 30.30.30.30
client port: whatever port client 2 used to connect
então, quando novos pacotes chegam na porta 80 dos clientes, eles são enviados para o soquete apropriado com base no IP e na porta do cliente?
Ou ...
O servidor
B. só aceita conexões na porta 80 e aloca outras portas para comunicação com os clientes à medida que os clientes se conectam? Então, agora ainda temos dois sockets criados, mas assim:
server IP: 10.10.10.10
server port: random free port
client IP: 20.20.20.20
client port: whatever port client 1 used to connect
e
server IP: 10.10.10.10
server port: another random free port
client IP: 30.30.30.30
client port: whatever port client 2 used to connect
enquanto a porta 80 permanece livre para aceitar outras conexões?
Então, qual é?
Me desculpe se a pergunta parece estúpida ou nova, mas eu achei ambas mencionadas online e ambas não podem ser verdadeiras. Estou pensando que os outros têm a mesma confusão e uma resposta clara e concisa aqui pode ser muito útil.