Permintaan HTTP yang dipermasalahkan sebenarnya tidak valid kecuali browser sedang berbicara dengan perantara (proxy).
Contoh Anda akan terlihat sedikit lebih seperti berikut ini jika browser berbicara dengan server web secara langsung:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Sekarang, untuk menempatkan ini dalam perspektif, pertimbangkan model OSI:
Kami memiliki 3 sistem dalam aksi:
- Seorang klien yang menjalankan browser
- Sebuah web server yang melayani situs
- Sebuah DNS server mengetahui alamat IP dari situs
Protokol yang terlibat adalah, dari bawah ke atas (set relevan minimum untuk OP):
Komunikasi HTTP dilakukan melalui protokol TCP (TCP ada di atas protokol IP) sementara komunikasi DNS, dalam hal ini, dilakukan melalui protokol UDP (UDP juga di atas protokol IP).
Berikut ini urutan komunikasi singkatnya:
The klien , menjalankan browser, meminta DNS server untuk A
rekor www.pippo.it
, menggunakan protokol UDP.
1.1. Pada klien, ini adalah sistem operasi yang melakukan bagian penyelesaian dan berbicara kembali ke browser --- browser tidak pernah berbicara ke server DNS secara langsung, melainkan melalui OS dengan memanggil gethostbyname () atau getaddrinfo yang lebih baru () . Pada Windows, urutan di mana OS menyelesaikan alamat kemungkinan ditentukan oleh sesuatu seperti ini , sedangkan di Linux prioritas penyelesaian ditentukan oleh/etc/nsswitch.conf
The DNS Server , menggunakan protokol UDP, merespon dengan klien dengan catatan alamat / IP, jika ada
The client membuka koneksi TCP pada port 80 dari server web dan menulis teks berikut:
Permintaan HTTP:
GET /hello.htm HTTP/1.1
Host: www.pippo.it
Anda bisa meniru hal yang sama dengan melakukan sesuatu seperti ini di konsol atau command prompt Anda:
> telnet www.pippo.it 80
Trying 195.128.235.49...
Connected to www.pippo.it.
Escape character is '^]'.
GET /hello.htm HTTP/1.1
Host: www.pippo.it
diikuti oleh dua baris kosong. Jika konten yang diminta ada, server web akan mencetaknya di layar. Jika ada browser di sisi lain, teks respons akan diuraikan oleh browser, dan semua tag, tautan, skrip, dan gambar disajikan dalam apa yang kita sebut halaman web.
Pada kenyataannya ada beberapa perincian lebih lanjut, misalnya browser dapat menyimpan alamat IP jika Anda sudah mengunjungi beberapa domain, sehingga penyelesaian DNS menjadi tidak perlu. Juga, browser modern dapat mencoba untuk menyelesaikan sebelum Anda benar-benar membutuhkannya ( DNS prefetching ) untuk mempercepat penelusuran Anda.
Selain itu, komputer Anda mungkin memiliki catatan statis dalam hosts
file. Jika catatan cocok dengan permintaan, entri statis lokal akan digunakan terlebih dahulu dan tidak ada server DNS yang pernah dihubungi. Ini dapat dikonfigurasi, dan belum tentu benar, tetapi ini adalah default pada sistem operasi yang saya kenal.