Come viene passato un sottodominio al server web?


12

So che dns risolve un indirizzo come example.com in un indirizzo IP come 11.22.33.44, ma sono un po 'confuso su come vengono risolti i sottodomini, in modo che quando digiti http://subdomain.example.com , cosa effettivamente viene passato al server alle 11.22.33.44? In altre parole, esempio.com = 11.22.33.44, ma sottodominio.esempio.com/percorso = ???

"Sottodominio" e "percorso" vengono passati come intestazioni http o mappati nell'URL in qualche modo, o cosa?

Grazie in anticipo.

Modifica: se sto capendo correttamente, BloodPhilia afferma che sottodominio.esempio.com in realtà è un dominio diverso che in linea di principio potrebbe risolversi in un IP completamente diverso. Ma se è così, allora che dire degli host che hanno un numero enorme di (che sembrano) sottodomini, ma che in realtà mappano su un percorso sul sito. Ad esempio, blogspot ospita milioni di blog e sembrano tutti così:

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

Questi chiaramente non sono sottodomini con i propri IP, ma piuttosto una mappatura come aaa.blogspot.com -> www.blogspot.com/aaa, ma come si ottiene? Cosa viene effettivamente passato al server Web su blogspot.com?

Risposte:


18

Domini, sottodomini, sottodomini e sotto (x) -sub-sottodomini (costituiti gli ultimi due!), Sono trattati esattamente allo stesso modo dal DNS a un utente finale e un server web.

Ad esempio, il server DNS può restituire risultati diversi per domain.com, www.domain.como mysite.domain.com.

Ora, come probabilmente saprai, ci sono molti più domini che IP nel mondo.

Per questo motivo, i server utilizzano qualcosa noto come "Header host" per servire il contenuto corretto.

Non importa ciò che effettivamente richiedi, la tua macchina tratta tutto allo stesso modo: cercherà su DNS a quale IP dovrebbe connettersi e, una volta connesso, invierà l'intestazione host come parte della richiesta. Il server web quindi invia nuovamente il contenuto che è stato configurato per rispedirlo.

Un buon strumento per test / apprendimento / diagnosi è Wfetch, che può essere scaricato qui .

Ecco un esempio delle intestazioni inviate durante l'accesso a superuser.com

testo alternativo

Ecco la configurazione per le intestazioni host in IIS (un server web):

testo alternativo

(Immagine da qui )

Se eri interessato, Serverfault.com e Superuser.com sono sullo stesso IP e questa è la tecnica utilizzata per separare i siti e offrire contenuti diversi.

Per ulteriori informazioni sull'argomento, potresti voler leggere l'articolo di Wikipedia sull'hosting virtuale .

(So ​​che capisci le basi, ma ho pensato che sarebbe bello dire qualcosa in più in modo che chiunque lo stia imparando un po 'se lo desidera!)

modificare

Quindi, come per il tuo esempio, immagino che qualcuno grande come blogspot abbia molto probabilmente una voce DNS jolly (una voce jolly restituisce lo stesso risultato per qualsiasi query) che punta a un bilanciamento del carico, il bilanciamento del carico quindi lo invierà a molti server Web diversi che probabilmente non hanno un sito separato per intestazione host, ma invece un singolo sito / script su cui l'indirizzo digitato (intestazioni host o meno) viene analizzato e estrae lì il contenuto corretto dalla loro rete CDN.

Sebbene, sarebbe anche possibile (ma improbabile) che abbiano semplicemente qualche migliaio di voci per ip, l'ip conduce a pochi server e hanno semplicemente una voce per ogni sito che ha un'intestazione host corrispondente.


1
Bello! Nota a margine: il fatto che due siti Web condividano un indirizzo IP non significa necessariamente che siano sempre ospitati sullo stesso computer. Un bilanciamento del carico potrebbe infatti anche sbirciare in queste intestazioni e delegare a macchine diverse. (Per Super User et al. Vedi anche il New York Data Center di Stack Overflow , che non mi sono davvero letto ...)
Arjan,

@Arjan +1 buon punto ... Ho citato i bilanciatori del carico, ma ovviamente potrebbe essere solo l'IP di un bilanciamento del carico, e quindi hanno diviso le richieste su molti server.
William Hilsum,

1
Contrassegnato come risposta per informazioni dettagliate e collegamenti a ulteriori ricerche. Grazie!
Joshua Frank,

6

Infatti, se due domini hanno lo stesso indirizzo IP, il server si affida al browser per specificare il dominio richiesto. Come :

GET / HTTP/1.1
Host: data.stackexchange.com

3

Sottodomini non è la parola giusta. Di solito un sottodominio è un dominio a sé stante, quindi sub.example.com viene passato prima al DNS, se non viene trovato alcun record specifico per questo sottodominio, la richiesta viene passata all'IP del dominio principale. (esempio.com) Su quel server la richiesta viene nuovamente fatta e il server agirà di conseguenza.

In altre parole, una richiesta a example.com non differisce in realtà da una richiesta a sub.example.com.


Penso che forse non sto capendo qualcosa di importante qui. Vorrei modificare e chiarire la mia domanda. Grazie.
Joshua Frank,

Stai dicendo che se sub.example.comnon si risolve, example.comverrà utilizzato l'indirizzo IP di ? Penso che i browser non lo facciano. (A meno che non ci sia un record DNS con caratteri jolly, ma il sottodominio potrebbe effettivamente risolversi, direi.)
Arjan

1

Sottodominio.esempio.com non si risolve in 11.22.33.44 - ai fini della domanda in genere ha il proprio record DNS A e si risolve in un indirizzo diverso.

È possibile consentire al sottodominio di risolversi allo stesso indirizzo del dominio principale e comunque di server su pagine diverse, ma in tal caso è necessario ospitare entrambi i siti sullo stesso server Web e necessitare di un account nella configurazione del server. Il modo in cui lo rendi conto dipende dal tipo di server web che stai utilizzando.


1
Stai dicendo che, nel mio esempio di blogspot, "xyz.blogspot.com" non avrà una voce DNS dedicata, quindi DNS cercherà "blogspot.com" e lo troverà su 11.22.33.44. Ma invierà l'intero URL "xyz.blogspot.com" come campo host e spetta al server analizzarlo e inviare la pagina xyz al browser?
Joshua Frank,

Sì, è giusto.
Joel Coehoorn,

nslookup dummy.example.comrese server can't find dummy.example.com- come corrisponde allora a quanto sopra? (Come nell'esempio nel commento di @ Giosuè?)
Arjan,

scusa, hai ancora bisogno di un record A per il tuo sottodominio - è solo che può dare lo stesso IP se vuoi.
Joel Coehoorn,

Quindi sono di nuovo confuso. Se ci sono milioni di sottodomini xyz.blogspot.com, non possono avere tutti i record A, quindi come viene eseguito il routing? E la configurazione di un record è lato server. Sono interessato a come il cliente dovrebbe sapere, dato un url, se xyz è un sottodominio corretto o qualcosa che è mappato sul lato server. In particolare, è mai sicuro memorizzare nella cache un IP per un po ', perché sai che x.domain.com e y.domain.com si trovano sullo stesso server o non puoi mai sapere solo guardando l'URL?
Joshua Frank,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.