Como um subdomínio é passado para o servidor da web?

12

Eu sei que o dns resolve um endereço como exemplo.com para um endereço IP como 11.22.33.44, mas estou um pouco confuso sobre como os subdomínios são resolvidos; portanto, quando você digita http://subdomain.example.com , o que realmente é passado para o servidor em 11.22.33.44? Em outras palavras, example.com = 11.22.33.44, mas subdomínio.exemplo.com/caminho = ???

O "subdomínio" e o "caminho" são passados ​​como cabeçalhos http ou mapeados no URL de alguma forma, ou o quê?

Desde já, obrigado.

Edit: Se eu estou entendendo corretamente, BloodPhilia diz que subdomínio.exemplo.com é realmente um domínio diferente que, em princípio, poderia resolver para um IP totalmente diferente. Mas, se é assim, o que dizer de hosts que têm um grande número de subdomínios (que parecem), mas que na verdade são mapeados para algum caminho no site. Por exemplo, o blogspot hospeda milhões de blogs e todos se parecem com isso:

aaa.blogspot.com
bbb.blogspot.com
...millions more...
yyy.blogspot.com
zzz.blogspot.com

Esses claramente não são subdomínios com seus próprios IPs, mas sim alguns mapeamentos como aaa.blogspot.com -> www.blogspot.com/aaa, mas como isso é feito? O que realmente é passado para o servidor da web em blogspot.com?

Joshua Frank
fonte

Respostas:

18

Domínios, Subdomínios, Sub-Sub domínios e Sub (x) -sub-subdomínios (criados os dois últimos!), São tratados exatamente da mesma maneira pelo DNS para um usuário final e um servidor da web.

Por exemplo, o servidor DNS pode retornar resultados diferentes para domain.com, www.domain.comou mysite.domain.com.

Agora, como você provavelmente sabe, existem muito mais domínios do que IPs no mundo.

Por esse motivo, os servidores usam algo conhecido como "Cabeçalhos de host" para exibir o conteúdo correto.

Não importa o que você realmente solicita, sua máquina trata tudo da mesma maneira - ele pesquisará no DNS a qual IP deve se conectar e, uma vez conectado, enviará o cabeçalho do host como parte da solicitação. O servidor da Web envia de volta o conteúdo que foi configurado para enviar de volta.

Uma boa ferramenta para teste / aprendizado / diagnóstico é o Wfetch, que pode ser baixado aqui .

Aqui está um exemplo dos cabeçalhos enviados ao acessar superuser.com

texto alternativo

Aqui está a configuração para os cabeçalhos de host no IIS (um servidor da web):

texto alternativo

(Imagem daqui )

Se você estava interessado, Serverfault.com e Superuser.com estão no mesmo IP e esta é a técnica usada para separar os sites e exibir conteúdo diferente.

Para mais informações sobre o assunto, leia o artigo da Wikipedia sobre Hospedagem Virtual .

(Eu sei que você entende o básico, mas achei que seria bom falar um pouco mais para que qualquer pessoa no Google possa aprender um pouco, se quiser!)

Editar

Portanto, como no seu exemplo, eu acho que alguém do tamanho de um blogspot provavelmente tem uma entrada DNS curinga (uma entrada curinga retorna o mesmo resultado para qualquer consulta) que aponta para um balanceador de carga, o balanceador de carga a enviará para muitos servidores da web diferentes que provavelmente não possuem um site separado por cabeçalho de host, mas, em vez disso, um único site / script no qual o endereço digitado (cabeçalhos de host ou não) é analisado e extrai o conteúdo correto de sua CDN.

Embora também seja possível (mas improvável) que eles simplesmente tenham alguns milhares de entradas por ip, o ip leva a alguns servidores e eles simplesmente têm uma entrada para cada site que possui um cabeçalho de host correspondente.

William Hilsum
fonte
1
Agradável! Nota lateral: o fato de dois sites compartilharem um endereço IP não significa necessariamente que eles sempre estejam hospedados na mesma máquina. De fato, um balanceador de carga também pode espiar esses cabeçalhos e delegar em máquinas diferentes. (Para Super User et al também ver New York Data Center do Stack Overflow , que eu realmente não ler-me embora ...)
Arjan
@ Arjan +1 bom ponto ... Eu mencionei balanceadores de carga, mas obviamente poderia ser apenas o (s) IP (s) de um (s) balanceador (s) de carga e, em seguida, eles dividiram as solicitações em vários servidores.
William Hilsum
1
Marcado como resposta para informações detalhadas e links para outras pesquisas. Obrigado!
Joshua Frank
6

De fato, se dois domínios tiverem o mesmo endereço IP, o servidor dependerá do navegador para especificar o domínio solicitado. Como :

GET / HTTP/1.1
Host: data.stackexchange.com
Arjan
fonte
3

Subdomínios não é a palavra certa. Geralmente, um subdomínio é um domínio por si só, então sub.example.com é passado primeiro para o DNS; se nenhum registro específico for encontrado para esse subdomínio, a solicitação será passada para o IP do domínio principal. (example.com) Nesse servidor, a solicitação é feita novamente e o servidor agirá de acordo.

Em outras palavras, uma solicitação para example.com não difere realmente de uma solicitação para sub.example.com.

BloodPhilia
fonte
Acho que talvez não esteja entendendo algo importante aqui. Deixe-me editar e esclarecer minha pergunta. Obrigado.
Joshua Frank
Você está dizendo que, se sub.example.comnão resolver, o endereço IP de example.comseria usado? Eu acho que os navegadores não fazem isso. (A menos que haja algum registro DNS curinga, mas então o subdomínio seria realmente resolver, eu diria.)
Arjan
1

O subdomínio.exemplo.com não resolve para 11.22.33.44 - para fins da sua pergunta, normalmente ele possui seu próprio registro DNS A e resolve para um endereço diferente.

É possível permitir que o subdomínio resolva para o mesmo endereço que o domínio pai e ainda armazene páginas diferentes, mas se você fizer isso, deverá hospedar os dois sites no mesmo servidor da Web e precisar contabilizá-lo na configuração do servidor. A maneira como você explica isso depende do tipo de servidor da Web que você está executando.

Joel Coehoorn
fonte
1
Você está dizendo que, no meu exemplo de blogspot, "xyz.blogspot.com" não terá entrada de dns dedicada, portanto o dns procurará "blogspot.com" e o encontrará em 11.22.33.44. Mas ele enviará todo o URL "xyz.blogspot.com" como o campo do host, e cabe ao servidor analisar isso e enviar a página xyz para o navegador?
Joshua Frank
Sim está certo.
Joel Coehoorn
nslookup dummy.example.comproduz server can't find dummy.example.com- como isso combina o acima então? (Como para o exemplo, em @ comentário de Josué?)
Arjan
desculpe, você ainda precisa de um registro A para o seu subdomínio - apenas pode fornecer o mesmo IP, se desejar.
Joel Coehoorn
Então eu estou confuso novamente. Se houver milhões de subdomínios xyz.blogspot.com, eles nem todos podem ter registros A, então como é realizado o roteamento? E a configuração do registro A é do lado do servidor. Estou interessado em saber como o cliente saberia, com um URL, se o xyz é um subdomínio adequado ou algo mapeado no servidor. Em particular, é sempre seguro armazenar em cache um IP por um tempo, porque você sabe que x.domínio.com e y.domínio.com estão no mesmo servidor ou você nunca pode saber apenas olhando o URL?
Joshua Frank