Um servidor distingue entre dois aplicativos de navegador que acessam os mesmos arquivos HTTP simultaneamente através de uma combinação de técnicas, girando principalmente em torno de
identificadores de cliente e
Gerenciamento de conexão :
1.
Endereços e portas IP: Cada aplicativo do navegador, mesmo na mesma máquina, se conecta ao servidor a partir de uma combinação exclusiva de endereço IP e número da porta. O endereço IP identifica a localização da rede do cliente e o número da porta distingue diferentes aplicativos em execução nessa máquina. Embora várias instâncias do navegador na mesma máquina possam compartilhar o mesmo endereço IP (da perspectiva do servidor), elas terão diferentes números de porta atribuídos às suas conexões. O servidor usa essa combinação para rastrear solicitações individuais.
2.
cabeçalhos http: As solicitações HTTP incluem cabeçalhos que contêm informações sobre o cliente e a solicitação. Os principais cabeçalhos usados para identificação incluem:
*
`user-agent`: Este cabeçalho identifica o navegador e o sistema operacional. Embora não seja perfeitamente exclusivo, ajuda a distinguir entre diferentes navegadores ou versões do navegador.
*
`conexão`: Este cabeçalho indica se a conexão deve ser mantida aberta para solicitações subsequentes (conexão persistente) ou fechada após a solicitação atual.
*
Cookies: Os cookies são pequenos dados armazenados na máquina do cliente e enviados a cada solicitação subsequente. Eles permitem que o servidor rastreie um usuário ou sessão específica em várias solicitações. Embora os cookies possam ser compartilhados nas guias, eles ainda podem ajudar a diferenciar os usuários se o gerenciamento adequado de cookies for usado.
*
Solicitar cabeçalhos: Outros cabeçalhos podem conter identificadores exclusivos atribuídos pelo aplicativo ou navegador, aumentando ainda mais a identificação.
3.
Gerenciamento de sessão: Para aplicativos da Web interativos, os servidores geralmente usam sessões. Um ID da sessão (geralmente armazenado em um cookie) é atribuído a cada usuário quando eles iniciam uma sessão. As solicitações subsequentes do mesmo usuário incluem o ID da sessão, permitindo que o servidor mantenha o estado e identifique as interações do usuário em várias solicitações.
4.
Rastreamento de conexão: O servidor mantém um pool de conexão, acompanhando conexões abertas de vários clientes. Cada conexão está associada a um identificador exclusivo (por exemplo, um descritor de soquete) que permite que o servidor processe solicitações de forma independente para cada conexão.
Em essência, o servidor age como um quadro de distribuição, recebendo solicitações de diferentes fontes (instâncias do navegador identificadas via IP:porta e cabeçalhos) e direcionando -os adequadamente com base nas informações fornecidas. Mesmo que várias solicitações cheguem simultaneamente, o servidor as processa uma a uma ou usando simultaneamente threads ou processos, mantendo o contexto de cada solicitação através das informações fornecidas na própria solicitação e em sua conexão associada.