Como o servidor manipula vários clientes na mesma porta? Vários soquetes ou várias portas? [fechadas]

2

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.

    
por john-13-14 10.06.2013 / 18:13

2 respostas

3

Os soquetes são identificados exclusivamente pela combinação de (ip de origem, porta de origem, ip de destino, porta de destino), portanto, o cenário A está correto.

Tire um minuto e pense nas ramificações se B for o caso. O firewall seria quase impossível se a porta de destino estivesse constantemente mudando - seria necessário haver comunicação constante entre o servidor e o equipamento de rede, com o servidor informando o firewall onde ele espera aceitar tráfego. Por esse motivo e muitos outros, isso seria um pesadelo.

    
por 10.06.2013 / 18:19
2

É muito mais fácil do que você pensa.

O servidor está escutando, digamos, a porta 80, obtém um pacote a partir de 20.xx, então sabe que o 20.xx quer algo assim e o faz e envia de volta para o 20.xx. Então 30.xx vem e pergunta na porta 80, então ele responde diretamente para 30.xx.

É isso, nada muito mais complexo.

É um pouco como se você estivesse ao telefone e ouvisse duas pessoas diferentes conversando, você pode ouvir sua esposa perguntar a que horas você está de volta e você pode responder com "cinco querido" e ouvir seus filhos gritando por você para trazer de volta sorvete e dizer "não e ir para a cama" - tudo em uma linha. Sério, essa é a melhor analogia que eu poderia pensar em desculpe:)

    
por 10.06.2013 / 18:21