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:
GET / HTTP/1.1
Host: apple.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
Seperti apa tajuknya jika Anda menggunakan alamat IP-nya:
GET / HTTP/1.1
Host: 17.142.160.59
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.5) Gecko/20091102 Firefox/3.5.5 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Pragma: no-cache
Cache-Control: no-cache
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.