Os servidores mantêm apenas um site?

Os servidores mantêm apenas um site?

Pelo que entendi, o DNS vincula o nome de domínio ao endereço IP do servidor em que o site está armazenado, isso significa que cada servidor pode conter apenas um site? Caso contrário, como chamar o endereço IP do servidor sabe qual site eu quero se houver muitos no mesmo servidor?

Responder1

Basicamente: o navegador inclui o nome do domínio na solicitação HTTP, para que o servidor web saiba qual domínio foi solicitado e possa responder de acordo.


Solicitações HTTP

Veja como acontece sua solicitação HTTP típica:

  1. O usuário fornece uma URL, no formato http://host:port/path.

  2. O navegador extrai a parte host (domínio) da URL e a traduz em um endereço IP, se necessário, em um processo conhecido comoresolução de nome. Essa tradução pode ocorrer via DNS, mas não necessariamente (por exemplo, o hostsarquivo local em sistemas operacionais comuns ignora o DNS).

  3. O navegador abre uma conexão TCP para a porta especificada, ou o padrão é a porta 80 nesse endereço IP.

  4. O navegador envia uma solicitação HTTP. Para HTTP/1.1, é assim:

    GET /path HTTP/1.1
    Host: example.com
    

    (O Hostcabeçalho é padrão e obrigatório em HTTP/1.1. Ele não foi especificado na especificação HTTP/1.0, mas alguns servidores o suportam de qualquer maneira.)

A partir daqui, o servidor web tem várias informações que pode usar para decidir qual deve ser a resposta. Observe que é possível que um único servidor web esteja vinculado a vários endereços IP.

  • O endereço IP solicitado, do soquete TCP
    • O endereço IP do cliente também está disponível, mas raramente é usado - às vezes para bloqueio/filtragem
  • A porta solicitada, do soquete TCP
  • O nome do host solicitado, conforme especificado no Hostcabeçalho pelo navegador na solicitação HTTP.
  • O caminho solicitado
  • Quaisquer outros cabeçalhos (cookies, etc.)

Como você parece ter notado, a configuração de hospedagem compartilhada mais comum atualmente coloca vários sites em uma única combinação de endereço IP:porta, deixando apenas Hosta diferenciação entre os sites.

Isso é conhecido comoHost virtual baseado em nomena terra do Apache, enquanto o Nginx os chamaNomes de servidores em blocos de servidorese o IIS prefereServidor virtual.


E quanto ao HTTPS?

HTTPS é um pouco diferente. Tudo é idêntico até o estabelecimento da conexão TCP, mas depois disso deve ser estabelecido um túnel TLS criptografado. O objetivo é não vazar nenhuma informação sobre a solicitação.

Para verificar se o servidor realmente possui este domínio, o servidor deve enviar um certificado assinado por um terceiro confiável. O navegador irá então comparar este certificado com o domínio solicitado.

Isto representa um problema. Como o servidor sabe qual certificado de host (site) enviar, se precisar fazer isso antes que a solicitação HTTP seja recebida?

Tradicionalmente, isso era resolvido com um endereço IP (ou porta) dedicado para cada site que requer HTTPS. Obviamente, isso se torna problemático à medida que começamos a ficar sem endereços IPv4.

DigitarSNI(Indicação do nome do servidor). O navegador agora passa o nome do host durante as negociações do TLS, para que o servidor tenha essas informações com antecedência suficiente para enviar o certificado correto. No lado do servidor, a configuração é muito semelhante à forma como os hosts virtuais HTTP são configurados.

A desvantagem é que o nome do host agora é passado como texto simples antes da criptografia e é essencialmente uma informação vazada. Isso geralmente é considerado uma compensação aceitável, considerando que o nome do host normalmente é exposto em uma consulta DNS de qualquer maneira.


E se você solicitar um site apenas por endereço IP?

O que o servidor faz quando não sabe qual host específico você solicitou depende da implementação e configuração do servidor. Normalmente, há um site "padrão", "catchall" ou "substituto" especificado que fornecerá respostas a todas as solicitações que não especificam explicitamente um host.

Este site padrão pode ser seu próprio site independente (geralmente mostrando uma mensagem de erro) ou qualquer outro site no servidor, dependendo da preferência do administrador do servidor.

Responder2

Eu tenho essa explicação para pessoas que não são de tecnologia.

Jack, Jill e Joe moram em um dormitório e não têm celulares.

Na lista telefônica, todos estão listados com o mesmo número. (Uma gravação)

Você disca o número e alguém atende o telefone; você diz "Gostaria de falar com Jill" e a coloca na linha.

Em vez de um registro A (um número de telefone/endereço IP) na lista telefônica, pode apenas dizer "Dormitório X", então você deve procurar mais pelo número do Dormitório X. Este é um registro CNAME.

Se Jill não estiver disponível, você poderá obter

  • 404 Jill não está aqui
  • 410 Jill está morta.
  • 301 Jill vai morar com Peter
  • 302 Jill está visitando Peter, ligue para ele

  • 400 Não consigo entender você.

  • 401 Quem é você? Qual é a senha? ou Não permitimos ligações do sexo masculino depois das 22h
  • 402 Pagamento obrigatório (tem certeza de que Jill é o nome verdadeiro dela ;-))
  • 403 Não, essa não é a senha correta.
  • 418 Jill é um bule :-)
  • 429 Jill não pode atender mais ligações.
  • 451 Você está violando sua ordem de restrição.

  • 500 Nosso sistema telefônico quebrou.

Responder3

Pelo que entendi, o DNS vincula o nome de domínio ao endereço IP do servidor em que o site está armazenado, isso significa que cada servidor pode conter apenas um site?

Primeiro, você precisa entender que existem vários conceitos distintos aqui.

  • Site, um grupo de páginas da web que formam um todo coerente.
  • Endereço IP, um endereço numérico (32 bits para IPv4, 128 bits para IPv6) usado pelo protocolo da Internet como origem ou destino do tráfego.
  • Servidor, uma máquina cuja função é atender solicitações de clientes.
  • Hostname, um nome usado para identificar uma máquina no DNS (por exemplo, "www.example.com" ou "en.wikipedia.org")

Não existe uma relação direta entre nenhuma dessas coisas. Um servidor pode ter vários endereços IP; vários nomes de host podem apontar para um endereço IP; um nome de host pode apontar para vários endereços IP. Vários sites podem estar sob o mesmo nome de host. Um site pode estar espalhado por vários nomes de host.

Caso contrário, como chamar o endereço IP do servidor sabe qual site eu quero se houver muitos no mesmo servidor?

Antigamente (HTTP 1.0 e anteriores), cada nome de host que o servidor queria tratar de maneira diferente precisava ter seu próprio endereço IP. Isso foi um desperdício.

HTTP 1.1 adicionou o Host"cabeçalho como um campo obrigatório na solicitação HTTP (IIRC alguns fornecedores já haviam suportado isso como uma extensão). Isso informava ao servidor qual nome de host havia sido solicitado e, portanto, permitia que ele servisse conteúdo diferente para nomes de host diferentes no mesmo Endereço IP. O suporte para HTTP 1.1 em clientes agora é onipresente.

Infelizmente, o SSL (mais tarde TLS) adicionou uma ruga. O estabelecimento de uma sessão SSL/TLS exige que o servidor apresente um certificado ao cliente que cubra o nome do host solicitado, mas a solicitação HTTP não chega até que a sessão SSL/TLS seja estabelecida.

É possível fazer com que um certificado cubra vários nomes de host por meio do uso do SubjectAltNamecampo ou de curingas no CommonNamecampo. No entanto, isto coloca desafios administrativos, especialmente se os nomes de anfitrião envolvidos estiverem em domínios com propriedade diferente.

Portanto, o TLS introduziu a extensão "indicação de nome de servidor" (SNI). Com esta extensão, o cliente envia o nome do host solicitado ao servidor durante o procedimento de handshake TLS. O servidor pode então apresentar o certificado apropriado. Infelizmente, embora as versões atuais de todas as principais implementações de SSL/TLS suportem SNI, demorou muito para que as versões mais antigas caíssem em desuso.

Responder4

Usando DNS, você pode atribuir quantos nomes desejar a um endereço IP individual (em seuarquivo hostsvocê pode simplesmente separar cada nome com espaços, por exemplo). Usando um servidor DNS você também podeatribuir vários endereços IP a um único nome. Não se limita a um relacionamento um a um.

Um servidor web sabe por qual site servirexaminandoA URL solicitada. Ele verifica qual domínio foi solicitado, a porta solicitada e qual protocolo foi utilizado. Isso não tem nada a ver com DNS e é tratado pelo protocolo HTTP.

informação relacionada