Bagaimana subdomain dilewatkan ke server web?

12

Saya tahu bahwa dns menyelesaikan alamat seperti example.com ke alamat IP seperti 11.22.33.44, tapi saya sedikit bingung tentang bagaimana subdomain diselesaikan, sehingga ketika Anda mengetik http://subdomain.example.com , apa yang sebenarnya diteruskan ke server di 11.22.33.44? Dengan kata lain, example.com = 11.22.33.44, tetapi subdomain.example.com/path = ???

Apakah "subdomain" dan "jalur" dilewati sebagai header http, atau dipetakan dalam url dengan cara tertentu, atau apa?

Terima kasih sebelumnya.

Sunting: Jika saya mengerti dengan benar, BloodPhilia mengatakan bahwa subdomain.example.com sebenarnya adalah domain yang berbeda yang pada prinsipnya dapat menyelesaikan ke IP yang sama sekali berbeda. Tetapi jika demikian, lalu bagaimana dengan host yang memiliki sejumlah besar (apa yang tampak seperti) subdomain, tetapi yang sebenarnya memetakan ke beberapa jalur di situs. Misalnya, blogspot menampung jutaan blog, dan semuanya terlihat seperti ini:

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

Itu jelas bukan subdomain dengan IP mereka sendiri, melainkan pemetaan seperti aaa.blogspot.com -> www.blogspot.com/aaa, tetapi bagaimana hal ini dilakukan? Apa yang sebenarnya diteruskan ke server web di blogspot.com?

Joshua Frank
sumber

Jawaban:

18

Domain, Subdomain, Sub-domain, dan Sub (x) -sub-subdomain (dibuat dua terakhir!), Diperlakukan dengan cara yang persis sama oleh DNS untuk pengguna akhir dan server web.

Misalnya, server DNS dapat mengembalikan hasil yang berbeda untuk domain.com, www.domain.comatau mysite.domain.com.

Sekarang, seperti yang mungkin Anda ketahui, ada lebih banyak domain daripada IP di dunia.

Karena itu, server menggunakan sesuatu yang dikenal sebagai "Host Host" untuk melayani konten yang benar.

Tidak masalah apa yang sebenarnya Anda minta, mesin Anda memperlakukan semuanya dengan sama - mesin itu akan mencari DNS apa yang harus disambungkan, dan setelah terhubung, ia akan mengirim header host sebagai bagian dari permintaan. Server web kemudian mengirimkan kembali konten yang telah dikonfigurasi untuk dikirim kembali.

Alat yang baik untuk pengujian / pembelajaran / diagnosis adalah Wfetch, dapat diunduh di sini .

Berikut adalah contoh header yang dikirim saat mengakses superuser.com

teks alternatif

Berikut adalah konfigurasi untuk header host di IIS (server web):

teks alternatif

(Gambar dari sini )

Jika Anda tertarik, Serverfault.com dan Superuser.com menggunakan IP yang sama dan ini adalah teknik yang digunakan untuk memisahkan situs dan menyajikan konten yang berbeda.

Untuk lebih banyak membaca tentang masalah ini, Anda mungkin ingin membaca artikel Wikipedia tentang Hosting Virtual .

(Saya tahu Anda memahami dasar-dasarnya, tetapi saya pikir akan lebih baik untuk mengatakan sedikit lebih banyak sehingga siapa pun yang mempelajari hal ini bisa belajar sedikit jika mereka mau!)

Edit

Jadi, Sebagai contoh Anda, saya akan menebak bahwa seseorang sebesar blogspot kemungkinan besar memiliki entri DNS wildcard (Entri wildcard mengembalikan hasil yang sama untuk permintaan apa pun) yang menunjuk ke load balancer, load balancer kemudian akan mengirimkannya untuk banyak webservers berbeda yang mungkin tidak memiliki situs terpisah per header host, tetapi sebaliknya satu situs / skrip yang diketikkan alamatnya (header host atau tidak) diuraikan, dan menarik konten yang benar dari CDN mereka di sana dan kemudian.

Meskipun, itu juga mungkin (tetapi tidak mungkin) bahwa mereka hanya memiliki beberapa ribu entri per ip, ip mengarah ke beberapa server dan mereka hanya memiliki entri untuk setiap situs yang memiliki header host yang cocok.

William Hilsum
sumber
1
Bagus! Catatan: fakta bahwa dua situs web berbagi alamat IP tidak berarti mereka selalu dihosting di mesin yang sama. Sebuah penyeimbang beban mungkin sebenarnya juga mengintip ke header ini dan mendelegasikan ke mesin yang berbeda. (Untuk Pengguna Super dkk. Lihat juga Pusat Data New York Stack Overflow , yang sebenarnya tidak saya baca sendiri ...)
Arjan
@Arjan +1 poin bagus ... Saya menyebutkan load balancers, tapi itu bisa jelas hanya IP (s) dari load balancer (s), dan kemudian mereka membagi permintaan ke banyak server.
William Hilsum
1
Ditandai sebagai jawaban untuk informasi terperinci dan tautan ke yang diteliti lebih lanjut. Terima kasih!
Joshua Frank
6

Memang, jika dua domain memiliki alamat IP yang sama, server bergantung pada browser untuk menentukan domain yang diminta. Seperti :

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

Subdomain bukan kata yang tepat. Biasanya subdomain adalah domain sendiri sehingga sub.example.com diteruskan ke DNS terlebih dahulu, jika tidak ada catatan khusus yang ditemukan untuk subdomain ini, permintaan tersebut diteruskan ke IP domain teratas. (example.com) Di server itu permintaan dibuat lagi dan server akan bertindak sesuai.

Dengan kata lain, permintaan untuk example.com tidak benar-benar berbeda dari permintaan ke sub.example.com.

BloodPhilia
sumber
Saya pikir mungkin saya tidak memahami sesuatu yang penting di sini. Izinkan saya mengedit dan mengklarifikasi pertanyaan saya. Terima kasih.
Joshua Frank
Apakah Anda mengatakan bahwa jika sub.example.comtidak menyelesaikan, alamat IP example.comakan digunakan? Saya pikir browser tidak melakukan itu. (Kecuali ada beberapa catatan DNS wildcard, tapi kemudian subdomain akan benar-benar menyelesaikan, saya katakan.)
Arjan
1

Subdomain.example.com tidak menyelesaikan ke 11.22.33.44 - untuk tujuan pertanyaan Anda, biasanya ia memiliki catatan DNS A sendiri dan diselesaikan ke alamat yang berbeda.

Dimungkinkan untuk mengizinkan subdomain menyelesaikan ke alamat yang sama dengan domain induk dan masih membuat halaman-halaman yang berbeda, tetapi jika Anda melakukannya, Anda harus meng-host kedua situs pada server web yang sama dan memerlukan akun untuk itu pada konfigurasi server Anda. Cara Anda menghitung ini tergantung pada jenis server web yang Anda jalankan.

Joel Coehoorn
sumber
1
Apakah Anda mengatakan bahwa, dalam contoh blogspot saya, "xyz.blogspot.com" tidak akan memiliki entri dns khusus, jadi dns akan mencari "blogspot.com" dan menemukannya di 11.22.33.44. Tetapi itu akan mengirim seluruh url "xyz.blogspot.com" sebagai bidang host, dan terserah server untuk mengurai ini dan mengirim halaman xyz ke browser?
Joshua Frank
Ya itu betul.
Joel Coehoorn
nslookup dummy.example.comhasil server can't find dummy.example.com- bagaimana cocok dengan yang di atas itu? (Adapun contoh dalam komentar @ Joshua?)
Arjan
maaf, Anda masih membutuhkan data A untuk subdomain Anda - hanya saja ia dapat memberikan IP yang sama jika Anda mau.
Joel Coehoorn
Lalu aku bingung lagi. Jika ada jutaan subdomain xyz.blogspot.com, mereka tidak dapat memiliki semua catatan A, jadi bagaimana cara mencapai rute? Dan konfigurasi catatan A adalah sisi server. Saya tertarik pada bagaimana klien akan tahu, diberi url, apakah xyz adalah subdomain yang tepat atau sesuatu yang memetakan sisi server. Secara khusus, apakah pernah aman untuk men-cache IP untuk sementara waktu, karena Anda tahu bahwa x.domain.com dan y.domain.com berada di server yang sama, atau bisakah Anda tidak pernah tahu hanya dengan melihat url?
Joshua Frank