Mengenal HTTP/1.1: Pengertian, Manfaat, Cara Kerja, Hingga Contoh
Secara teori, HTTP adalah suatu protokol jaringan yang digunakan pada proses distribusi atau komunikasi informasi atau data antara server dengan client. Server merupakan komponen jaringan komputer yang digunakan untuk menyimpan data berskala besar. Sedangkan client dapat diartikan user yang akan mengakses situs website melalui web browser.
HTTP/1.1 menawarkan sejumlah manfaat penting yang meningkatkan efisiensi dan fleksibilitas komunikasi web. Salah satu fitur utama yang diperkenalkan adalah kontrol cache tambahan.
Pengertian HTTP/1.1
Pada tahun 1989, Timothy Berners-Lee mengembangkan HTTP sebagai standar komunikasi untuk World Wide Web. HTTP adalah protokol aplikasi tingkat atas yang memungkinkan pertukaran informasi antara komputer klien dan server web, baik lokal maupun jarak jauh.
Dalam mekanisme ini, klien mengirimkan permintaan berbasis teks kepada server dengan menggunakan metode seperti GET atau POST. Sebagai balasan, server mengirimkan sumber daya seperti halaman HTML kembali ke klien.
Sebagai contoh, ketika kamu mengunjungi situs web dengan domain www.example.com, browser web di komputer kamu akan mengirimkan permintaan HTTP dalam bentuk pesan teks seperti berikut:
1 2 |
GET /index.html HTTP/1.1 Host: www.example.com |
Permintaan ini menggunakan metode GET yang berfungsi untuk meminta data dari server yang tercantum setelah kata Host:.
Sebagai respons, server di example.com akan mengirimkan kembali halaman HTML yang diminta ke klien. Selain halaman HTML, server juga dapat mengirimkan sumber daya lain seperti gambar, stylesheet, atau file lainnya yang diperlukan oleh halaman tersebut.
Perlu dicatat bahwa tidak semua sumber daya yang dibutuhkan oleh halaman web akan dikirimkan dalam satu kali permintaan.
Proses permintaan dan respons ini akan terus berlanjut antara server dan klien sampai browser web menerima semua sumber daya yang diperlukan untuk menampilkan konten halaman secara penuh di layar kamu.
Proses ini memastikan bahwa setiap elemen halaman web dimuat dengan benar, sehingga pengguna dapat menikmati pengalaman browsing yang lancar dan komprehensif.
Manfaat HTTP/1.1
HTTP/1.1 menawarkan sejumlah manfaat penting yang meningkatkan efisiensi dan fleksibilitas komunikasi web. Salah satu fitur utama yang diperkenalkan adalah kontrol cache tambahan.
Kontrol cache ini memungkinkan penyimpanan sementara dari respons server di sisi klien, sehingga mengurangi kebutuhan untuk mengunduh data yang sama berulang kali. Hal ini tidak hanya menghemat bandwidth tetapi juga mempercepat waktu muat halaman.
Negosiasi Konten
HTTP/1.1 memperkenalkan negosiasi konten yang memungkinkan klien dan server berkomunikasi untuk menentukan format yang paling sesuai untuk ditampilkan. Misalnya, klien dapat meminta halaman dalam bahasa tertentu atau dengan jenis pengkodean tertentu, dan server akan menyesuaikan responnya sesuai permintaan ini. Hal ini sangat berguna dalam lingkungan multibahasa dan untuk memastikan kompatibilitas dengan berbagai perangkat dan preferensi pengguna.
Metode Permintaan dan Header Baru
Versi ini juga menambahkan metode permintaan HTTP baru serta dukungan untuk berbagai header HTTP baru. Metode seperti PUT, DELETE, dan OPTIONS memperluas kemampuan interaksi antara klien dan server, memungkinkan tindakan yang lebih spesifik dan kaya fitur. Header baru memberikan lebih banyak kontrol dan informasi dalam komunikasi HTTP, mendukung berbagai fungsi seperti autentikasi, pengalihan, dan informasi konten.
Reusable Connection
Salah satu peningkatan penting adalah kemampuan untuk menggunakan kembali koneksi HTTP. Dalam kasus dimana halaman web berisi banyak gambar atau elemen multimedia lainnya, koneksi yang sama dapat digunakan untuk mengunduh semua elemen ini, tanpa perlu membuat koneksi baru untuk setiap permintaan. Hal ini sangat mengurangi overhead koneksi, mempercepat pengunduhan halaman yang kaya media dan meningkatkan efisiensi secara keseluruhan.
Pipelining
HTTP/1.1 juga mendukung pipelining, yang memungkinkan klien mengirim beberapa permintaan sebelum menerima respons untuk permintaan sebelumnya. Melalui cara ini, latensi pertukaran data berkurang karena server dapat memproses beberapa permintaan secara berurutan tanpa harus menunggu respons sebelumnya selesai sepenuhnya. Hal ini mempercepat waktu pemrosesan dan membuat komunikasi lebih lancar.
Dukungan Server Co-location
Manfaat lainnya adalah kemampuan mendukung server co-location. Adanya header HTTP Host, memungkinkan HTTP/1.1 dapat mendukung banyak server yang di hosting pada domain berbeda tetapi menggunakan alamat IP yang sama. Hal ini memungkinkan penyedia hosting untuk lebih efisien mengelola sumber daya mereka dan mendukung lebih banyak situs web di server yang sama, tanpa konflik.
Cara Kerja HTTP/1.1
Berikut ini cara kerja HTTP/1.1 yang perlu kamu ketahui, antara lain :
1. Membangun Koneksi
Saat pengguna memasukkan URL di browser, browser tersebut akan memulai koneksi TCP/IP ke server web yang sesuai. Biasanya, koneksi ini menggunakan port 80 untuk HTTP dan port 443 untuk HTTPS (HTTP yang diamankan dengan SSL/TLS). Proses ini memastikan bahwa jalur komunikasi antara klien dan server telah terbentuk sebelum pertukaran data dimulai.
2. Mengirimkan HTTP Request
Setelah koneksi terbentuk, browser mengirimkan permintaan HTTP ke server. Permintaan HTTP ini terdiri dari beberapa komponen penting:
- Request Line: Berisi metode HTTP (seperti GET, POST, PUT, DELETE), URL yang diminta, dan versi HTTP. Contohnya: GET /index.html HTTP/1.1.
- Headers: Menyediakan informasi tambahan seperti tipe konten yang diinginkan, format pengkodean, dan informasi tentang klien, misalnya: User-Agent: Mozilla/5.0.
- Body: Hanya ada pada metode tertentu seperti POST dan PUT, berisi data yang ingin dikirimkan ke server.
3. Memproses Permintaan
Server menerima permintaan dari klien, kemudian memprosesnya, dan mengirimkan respons HTTP kembali ke klien. Respons HTTP terdiri dari beberapa bagian:
- Status Line: Berisi versi HTTP, kode status (misalnya, 200 OK atau 404 Not Found), dan pesan status.
- Headers: Memberikan informasi tambahan tentang respons, seperti tipe konten, ukuran konten, dan informasi caching.
- Body: Berisi konten yang diminta, seperti halaman HTML, gambar, atau data lainnya yang relevan.
4. Koneksi yang Persisten
HTTP/1.1 memperkenalkan fitur koneksi persisten secara default. Hal ini berarti bahwa koneksi TCP antara klien dan server tetap terbuka setelah satu siklus permintaan dan respons selesai, sehingga dapat digunakan kembali untuk permintaan berikutnya. Fitur ini mengurangi latensi karena tidak perlu membuat koneksi baru untuk setiap permintaan, yang sangat efisien terutama untuk halaman yang kaya dengan media.
5. Pengiriman Data dalam Potongan
HTTP/1.1 juga mendukung pengiriman data dalam potongan (chunked transfer encoding). Hal ini memungkinkan server untuk mengirimkan respons yang besar secara bertahap, yang berguna ketika server tidak tahu ukuran total konten pada awal pengiriman. Hal ini memastikan bahwa data dapat mulai dikirimkan dan diterima lebih cepat.
6. Kontrol Caching
Protokol HTTP/1.1 menyediakan kontrol caching yang lebih baik melalui header seperti Cache-Control, ETag, dan If-Modified-Since. Mekanisme caching ini membantu mengurangi beban server dan mempercepat waktu muat bagi klien dengan memungkinkan data yang sering diakses untuk disimpan secara lokal. Sehingga, klien tidak perlu mengunduh ulang data yang sama setiap kali mengunjungi halaman.
7. Negosiasi konten
HTTP/1.1 memungkinkan adanya negosiasi konten antara klien dan server untuk menentukan format respons yang terbaik berdasarkan kemampuan klien dan preferensi yang ditentukan dalam header, seperti Accept-Language dan Accept-Encoding. Melalui negosiasi konten ini, server dapat menyesuaikan respons sesuai dengan kebutuhan dan preferensi klien, seperti bahasa yang diinginkan atau format pengkodean tertentu, memastikan bahwa konten yang dikirim sesuai dengan apa yang dapat ditangani dan diharapkan oleh klien.
Contoh Penerapan HTTP/1.1
Untuk memahami cara kerja HTTP/1.1, kamu bisa melihat contoh bagaimana klien terhubung ke server untuk meminta file HTML.
Ketika server merespons dengan mengirimkan konten file tersebut, yang mungkin berisi tautan ke gambar, koneksi HTTP yang sama dapat digunakan untuk permintaan selanjutnya.
Dalam contoh ini, kamu dapat melihat bagaimana koneksi HTTP, permintaan, dan respons telah ditingkatkan dari versi protokol sebelumnya.
Permintaan Awal
Ketika pengguna memasukkan URL di browser, klien mengirimkan permintaan HTTP untuk file HTML ke server dengan menggunakan format berikut:
1 2 3 4 5 6 |
GET /index.html HTTP/1.1 Host: www.example.re User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Accept: text/html Accept-Language: en-US, en; q=0.5 Accept-Encoding: gzip, deflate |
Permintaan ini meminta halaman index.html dari server www.example.re. Header User-Agent memberi tahu server tentang jenis dan versi browser yang digunakan, sementara Accept menentukan jenis konten yang dapat diterima oleh klien.
Tanggapan Server
Server merespons permintaan tersebut dengan mengirimkan kembali halaman HTML yang diminta:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
200 OK Server: Apache Date: Thu, 01 Jan 1998 12:01:00 GMT Connection: Keep-Alive Keep-Alive: timeout=5, max=500 Content-Encoding: gzip Content-Type: text/html; charset=UTF-8 Last-Modified: Mon, 29 Dec 1997 12:15:00 GMT Transfer-Encoding: chunked <html> Welcome to the <img src=”/logo.gif”> example.re homepage! </html> |
Respons ini menunjukkan bahwa permintaan berhasil dengan kode status 200 OK. Informasi tambahan seperti tipe server (Apache), tanggal dan waktu respons, serta informasi tentang koneksi dan pengkodean konten juga disertakan. Konten halaman HTML berisi tautan ke gambar logo.gif.
Permintaan Kedua (Menggunakan Koneksi yang Sama)
Setelah halaman HTML diterima, browser kemudian menggunakan koneksi yang sama untuk meminta gambar yang direferensikan dalam halaman tersebut:
1 2 3 4 5 6 |
GET /logo.gif HTTP/1.1 Host: www.example.re User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Accept: */* Accept-Language: en-US, en; q=0.5 Accept-Encoding: gzip, deflate |
Permintaan ini meminta file logo.gif dari server yang sama. Header Accept di sini mengindikasikan bahwa klien dapat menerima berbagai jenis konten.
Tanggapan Server untuk Gambar
Server kemudian merespons permintaan ini dengan mengirimkan gambar yang diminta:
1 2 3 4 5 6 7 8 9 10 |
200 OK Age: 8450220 Cache-Control: public, max-age=315360000 Connection: Keep-Alive Content-Type: image/gif Content-Length: 5000 Date: Thu, 01 Jan 1998 12:01:01 GMT Last-Modified: Sun, 01 Jan 1995 12:01:00 GMT Server: Apache <The binary data for a 5K GIF image is included in the message body> |
Respons ini juga menunjukkan keberhasilan dengan kode status 200 OK dan menyertakan informasi tambahan tentang gambar seperti tipe konten (image/gif), ukuran konten, dan informasi caching.
Baca Juga : Rest API adalah: Perbedaan Rest API dan Restful API