Beberapa server web, ketika diakses menggunakan alamat IP mereka, mengembalikan kesalahan yang tidak memungkinkan akses alamat IP langsung.
Saya sudah lama bertanya-tanya bagaimana cara kerjanya. Maksud saya, bukankah browser selalu menyelesaikan alamat IP dan menghubungkannya? Bukankah "Akses alamat IP langsung" hanya melewatkan DNS? Bagaimana server jarak jauh bahkan tahu Anda melewatkan DNS?
networking
dns
apache-http-server
ip
http
Joseph A.
sumber
sumber
Jawaban:
Untuk menjawab pertanyaan Anda tentang bagaimana ia mengetahui , itu ada hubungannya dengan apa yang browser Anda kirim ke server.
Anda benar bahwa sistem selalu mengatasinya ke alamat IP, tetapi browser mengirim URL yang Anda coba akses di header HTTP.
Berikut adalah contoh tajuk yang saya temukan daring, dimodifikasi agar seolah-olah Anda menggunakan Firefox di Windows dan mengetik
apple.com
di bilah alamat:Seperti apa tajuknya jika Anda menggunakan alamat IP-nya:
Keduanya akan dikirim ke alamat IP yang sama melalui soket, tetapi browser memberi tahu server apa yang diakses.
Mengapa? Karena server web dengan alamat IP yang sama dapat meng-host beberapa situs dan memberikan halaman berbeda untuk masing-masing situs. Itu tidak dapat membedakan siapa yang ingin halaman mana dengan alamat IP karena mereka semua memiliki halaman yang sama - tetapi itu bisa membedakan mereka dengan header HTTP.
sumber
host
header. Lihat contoh ini .Dengan protokol HTTP 1.1 (versi HTTP 1.0 sebelumnya telah usang cukup lama, jadi tidak mungkin digunakan oleh versi browser terbaru),
host
header diperkenalkan. Untuk HTTP 1.1, itu adalah baris tajuk yang diperlukan yang harus dikeluarkan oleh browser . Nama domain disertakan oleh browser di baris itu, misHost: example.com
. Jadi server web tahu situs web mana yang ingin diakses browser dari baris itu. Karena server web mungkin mendukung lusinan situs web, baris itu penting untuk menentukan situs web mana yang dihuni oleh halaman yang diminta. Andaikata peramban ingin mengakses halaman beranda untuk situs di example.com, ia mengeluarkan baris berikut ke server ketika terhubung ke server:Baris itu menentukan keinginan browser untuk mendapatkan dokumen root, yaitu, "/" untuk situs web. Jika Anda ingin mengakses
/somedir/testpage.html
,GET /somedir/testpage.html
akan berada di baris "get". Baris akan diikuti oleh baris di bawah ini:Jadi jika server web mendukung situs web example.com, someothersite.com, yetanothersite.org, dll., Ia tahu bahwa ia harus mengembalikan halaman utama untuk example.com. Jika tidak mendapatkan baris itu, atau tidak memiliki nama domain yang terdaftar di
Host
baris itu, ia tidak tahu beranda situs web mana yang harus dikembalikan. Jadi, ia mungkin mengembalikan pesan kesalahan, atau mengembalikan halaman beranda untuk situs "default" untuk server.Anda dapat mengeluarkan perintah yang sama dengan masalah peramban menggunakan protokol telnet , misalnya,
telnet example.com 80
dari prompt shell Linux atau jendela Apple OS X Terminal , untuk menyambung ke port HTTP default, port 80 - lihat Menguji akses ke situs web menggunakan Putty untuk langkah-langkah untuk melakukannya dengan Putty pada sistem Windows.sumber
Ini karena
Host:
tajuk HTTP. Ini cukup berguna untuk meng-hosting beberapa situs pada alamat IP yang sama. Misalnya, http://www.k7dxs.net/ dan http://www.philipgrimes.com/ keduanya memiliki alamat IP yang sama. Namun, karenaHost:
tajuk, mereka dapat menampilkan dua situs yang berbeda.Untuk HTTPS, seperti yang ditunjukkan @Toothbrush, mereka menggunakan Indikasi Nama Server TLS karena header Host adalah bagian dari permintaan terenkripsi, dan server tidak tahu sertifikat mana yang akan ditawarkan tanpa ini.
Eksperimen yang menyenangkan: Dapatkan Data Tamper untuk Firefox (Saya belum dapat menemukan yang setara untuk Chrome) dan mulai merusak. Buka http://slipstation.com/ dan edit
Host:
tajuk dalam permintaan untuk menjadi http://www.zombo.com/ . Anda akan melihat situs web yang mungkin dikenal di mana segala sesuatu mungkin terjadi.sumber
Server web dapat dikonfigurasikan untuk hanya menerima koneksi ke domain atau subdomain tertentu. Bisa jadi hosting beberapa domain.
Apa yang dilakukan server web ketika alamat IP langsung digunakan dapat dikonfigurasi. Dalam kasus Apache, secara default akan pergi ke vhost pertama bernama dari situs yang diaktifkan, yang diurutkan secara alfa-numerik.
Ini adalah bagian paling relevan dari dokumentasi Apache yang saya temukan, setelah pencarian cepat:
https://httpd.apache.org/docs/current/vhosts/name-based.html
sumber