Pertanyaan berikut ini dapat menjadi titik awal yang baik: apa yang terjadi saat Anda mengetik www.google.com di peramban Anda? Dengan kata lain, bagaimana peramban Anda mengetahui cara berpindah dari nama domain, seperti google.com, ke halaman web yang Anda cari? Mari kita cari tahu.

  • Model Klien-Server

Internet terdiri dari dua jenis perangkat: klien dan server. Klien meminta sumber daya atau layanan, dan server menyediakan sumber daya dan layanan tersebut. Saat Anda mengunjungi situs web dengan browser, situs web tersebut bertindak sebagai klien dan meminta halaman web dari server web. Server web kemudian akan mengirimkan halaman web tersebut ke browser Anda

Halaman web tidak lain hanyalah kumpulan sumber daya atau berkas yang dikirim oleh server web. Misalnya, paling tidak, server akan mengirim berkas teks yang ditulis dalam Hypertext Markup Language (HTML) ke peramban Anda, bahasa yang memberi tahu peramban Anda apa yang harus ditampilkan. Sebagian besar halaman web juga menyertakan berkas Cascading Style Sheets (CSS) untuk mempercantiknya. Terkadang halaman web juga berisi berkas JavaScript (JS), yang memungkinkan situs untuk menganimasikan halaman web dan bereaksi terhadap masukan pengguna tanpa melalui server. Misalnya, JavaScript dapat mengubah ukuran gambar saat pengguna menggulir halaman dan memvalidasi masukan pengguna di sisi klien sebelum mengirimkannya ke server.

Terakhir, peramban Anda mungkin menerima sumber daya tertanam, seperti gambar dan video. Peramban Anda akan menggabungkan sumber daya ini untuk menampilkan halaman web yang Anda lihat.

Server tidak hanya mengembalikan halaman web kepada pengguna. API web memungkinkan aplikasi untuk meminta data dari sistem lain. Hal ini memungkinkan aplikasi untuk berinteraksi satu sama lain dan berbagi data dan sumber daya dengan cara yang terkendali. Misalnya, API Twitter memungkinkan situs web lain untuk mengirim permintaan ke server Twitter guna mengambil data seperti daftar tweet publik dan penulisnya.

  • Sistem Nama Domain

Bagaimana browser dan klien web lainnya mengetahui tempat menemukan sumber daya ini? Setiap perangkat yang terhubung ke internet memiliki alamat Protokol Internet (IP) unik yang dapat digunakan perangkat lain untuk menemukannya. Namun, alamat IP terdiri dari angka dan huruf yang sulit diingat manusia. Misalnya, format alamat IP lama, IPv4, terlihat seperti ini: 123.45.67.89. Versi baru, IPv6, terlihat lebih rumit: 2001:db8::ff00:42:8329.

Di sinilah Domain Name System (DNS) berperan. Server DNS berfungsi sebagai buku telepon untuk internet, menerjemahkan nama domain menjadi alamat IP. Saat Anda memasukkan nama domain di peramban, server DNS harus terlebih dahulu mengubah nama domain menjadi alamat IP. Peramban kita bertanya kepada server DNS, “Di alamat IP manakah domain ini berada?”

  • Port Internet

Setelah peramban Anda memperoleh alamat IP yang benar, peramban akan mencoba untuk terhubung ke alamat IP tersebut melalui sebuah port. Port adalah pembagian logis pada perangkat yang mengidentifikasi layanan jaringan tertentu. Kami mengidentifikasi port berdasarkan nomor port-nya, yang dapat berkisar dari 0 hingga 65.535.

Port memungkinkan server untuk menyediakan beberapa layanan ke internet pada saat yang bersamaan. Karena ada konvensi untuk lalu lintas yang diterima pada port tertentu, nomor port juga memungkinkan server untuk meneruskan pesan internet yang masuk dengan cepat ke layanan terkait untuk diproses. Misalnya, jika klien internet terhubung ke port 80, server web memahami bahwa klien ingin mengakses layanan webnya

Secara default, kami menggunakan port 80 untuk pesan HTTP dan port 443 untuk HTTPS, versi HTTP terenkripsi.

  • Permintaan dan Respons HTTP

Setelah koneksi terbentuk, browser dan server berkomunikasi melalui HyperText Transfer Protocol (HTTP). HTTP adalah serangkaian aturan yang menentukan cara menyusun dan menginterpretasikan pesan internet, dan cara klien web dan server web bertukar informasi.

Saat browser Anda ingin berinteraksi dengan server, browser akan mengirimkan permintaan HTTP ke server. Ada beberapa jenis permintaan HTTP, dan dua yang paling umum adalah GET dan POST. Berdasarkan konvensi, permintaan GET mengambil data dari server, sedangkan permintaan POST mengirimkan data ke server. Metode HTTP umum lainnya meliputi OPTIONS, yang digunakan untuk meminta metode HTTP yang diizinkan untuk URL tertentu; PUT, yang digunakan untuk memperbarui sumber daya; dan DELETE, yang digunakan untuk menghapus sumber daya.

Berikut adalah contoh permintaan GET yang meminta server untuk halaman berandawww.google.com:

“GET / HTTP/1.1 Host: www.google.com User-Agent: Mozilla/5.0 Accept: text/html,application/xhtml+xml,application/xml Accept-Language: en-US Accept-Encoding: gzip, deflate Connection: close”

Mari kita bahas struktur permintaan ini, karena Anda akan melihat banyak permintaan seperti ini di buku ini. Semua permintaan HTTP terdiri dari baris permintaan, tajuk permintaan, dan isi permintaan opsional. Contoh sebelumnya hanya berisi baris permintaan dan tajuk.

Baris permintaan adalah baris pertama dari permintaan HTTP. Baris ini menentukan metode permintaan, URL yang diminta, dan versi HTTP yang digunakan. Di sini, Anda dapat melihat bahwa klien mengirimkan permintaan HTTP GET ke beranda www.google.com menggunakan HTTP versi 1.1.

Baris sisanya adalah header permintaan HTTP. Header ini digunakan untuk menyampaikan informasi tambahan tentang permintaan ke server. Hal ini memungkinkan server untuk menyesuaikan hasil yang dikirim ke klien. Dalam contoh sebelumnya, header Host menentukan nama host dari permintaan tersebut.

Header User-Agent berisi sistem operasi dan versi perangkat lunak dari perangkat lunak yang meminta, seperti peramban web pengguna. Header Accept, Accept-Language, dan Accept-Encoding memberi tahu server format respons yang harus digunakan. Dan header Connection memberi tahu server apakah koneksi jaringan harus tetap terbuka setelah server merespons.

Anda mungkin melihat beberapa header umum lainnya dalam permintaan. Header Cookie digunakan untuk mengirim cookie dari klien ke server. Header Referer menentukan alamat halaman web sebelumnya yang ditautkan ke halaman saat ini. Dan header Authorization berisi kredensial untuk mengautentikasi pengguna ke server.

Setelah server menerima permintaan, server akan mencoba memenuhinya. Server akan mengembalikan semua sumber daya yang digunakan untuk membangun halaman web Anda dengan menggunakan respons HTTP. Respons HTTP berisi beberapa hal: kode status HTTP untuk menunjukkan apakah permintaan berhasil; header HTTP, yang merupakan 37 bit informasi yang digunakan browser dan server untuk berkomunikasi satu sama lain tentang autentikasi, format konten, dan kebijakan keamanan; dan isi respons HTTP, atau konten web sebenarnya yang Anda minta. Konten web dapat mencakup kode HTML, lembar gaya CSS, kode JavaScript, gambar, dan banyak lagi.