como um servidor pode lidar com muitas conexões da porta 80

1

Admito que esta é uma pergunta simples, mas 20 minutos pesquisando e eu simplesmente não consigo encontrar uma resposta ... Vou enquadrar a minha pergunta com um exemplo.

digamos que eu possua www.reallypopular.com e meu website receba 100 solicitações GET por segundo. Além disso, digamos que o tempo médio para o meu servidor responder a essa solicitação GET é de 1 segundo (para o exemplo, apenas assumamos alguns processamentos no servidor). Meu entendimento de portas diria que o primeiro cliente a entrar em contato com meu servidor bloquearia qualquer outra pessoa da conexão à porta 80 por 1 segundo. Seguindo essa lógica, efetivamente apenas 1% de todos os usuários seriam realmente atendidos e o restante obteria "Porta ocupada" ou "não respondendo" ou algum erro desse tipo.

Obviamente, eu estou sentindo falta de algo, porque isso claramente não é o que está acontecendo, ao invés de propor minhas teorias sobre o porquê eu adoraria se alguém pudesse me colocar aqui ou me indicar algo que eu pudesse ler para esclarecer isso. Muito obrigado.

    
por deepee1 03.07.2011 / 07:08

2 respostas

5

A resposta pode ser encontrada em este artigo da wikipedia:

Applications implementing common services often use specifically reserved, well-known port numbers for receiving service requests from client hosts. This process is known as listening and involves the receipt of a request on the well-known port and reestablishing one-to-one server-client communications on another private port, so that other clients may also contact the well-known service port.

Além disso, do artigo sobre sockets de Berkeley na wikipedia

When an application is listening for stream-oriented connections from other hosts, it is notified of such events (cf. select() function) and must initialize the connection using the accept() function. Accept() creates a new socket for each connection and removes the connection from the listen queue.

    
por 03.07.2011 / 07:48
1

O TCP não funciona dessa maneira. Uma conexão a uma porta de outro sistema não significa que a porta não possa receber outras conexões. Do artigo da wikipedia sobre TCP :

Arriving TCP data packets are identified as belonging to a specific TCP connection by its sockets, that is, the combination of source host address, source port, destination host address, and destination port.

    
por 03.07.2011 / 07:50