Skip to content

Catatan http

Semua tulisan
06 Nov 20269 menit bacahttp · web-development · networking · explainer · httpsBaca dalam:ENID

HTTP Dijelaskan: Cara Browser Berkomunikasi dengan Web

Setiap halaman web diawali percakapan singkat antara browser dan server. Ini cara kerja HTTP, dari status code dan header sampai HTTPS, caching, dan HTTP/3.

Rak server biru gelap di pusat data. Foto oleh panumas nikhomkhai di Pexels.

Setiap kali kamu membuka halaman web, mengklik tautan, atau mengirim formulir, browser kamu sedang berbincang sebentar dengan sebuah server. Percakapan itu mengikuti seperangkat aturan bernama HTTP, Hypertext Transfer Protocol. HTTP sudah menjadi cara utama perpindahan informasi di World Wide Web sejak diperkenalkan pada 1990, diawali dengan satu method saja, GET (IETF).

Artikel ini menjelaskan percakapan itu dengan bahasa sederhana: seperti apa bentuk request dan response, apa arti angka pada status code, bagaimana HTTPS melindungi pertukaran data, dan mengapa versi protokol yang lebih baru membuat web terasa jauh lebih cepat.

Poin Penting

  • HTTP adalah protokol request dan response: browser meminta sesuatu, server menjawab dengan status code, header, dan body.

  • HTTP sendiri bersifat stateless, jadi cookie dan session adalah lapisan yang mengingat siapa kamu di antara request.

  • HTTPS adalah HTTP yang dibungkus enkripsi TLS, dan browser modern mengharapkannya: trafik HTTP di port 80 sebaiknya dialihkan ke HTTPS di port 443.

  • Caching memungkinkan browser dan CDN memakai ulang response, dan ini salah satu kemenangan terbesar untuk kecepatan halaman.

  • HTTP/2 melakukan multiplexing banyak request dalam satu koneksi, dan HTTP/3 berjalan di atas QUIC, bukan TCP, sehingga menekan delay koneksi lebih jauh.

Apa Itu HTTP?

HTTP adalah protokol di lapisan aplikasi untuk mengambil resource seperti dokumen HTML, gambar, stylesheet, dan script. Ia berjalan di atas koneksi transport, biasanya TCP, dan mengikuti pola sederhana: client mengirim request, server mengirim response.

Protokol ini lahir di CERN. Tim Berners-Lee mengusulkan sistem hypertext pada Maret 1989, dan versi pertama, HTTP/0.9, muncul pada 1991 hanya dengan method GET dan tanpa header sama sekali (SSD Nodes). HTTP/1.0 didefinisikan oleh RFC 1945 pada Mei 1996, lalu HTTP/1.1 menyusul lewat RFC 2068 pada Januari 1997, kemudian RFC 2616 pada Juni 1999. Definisi modernnya ada di RFC 9110, yang diterbitkan pada Juni 2022 sebagai Internet Standard 97, dan mendefinisikan semantik yang dipakai bersama oleh HTTP/1.1, HTTP/2, dan HTTP/3 (IETF).

Satu sifat membentuk hampir semua hal lain tentang HTTP: ia stateless. Seperti yang ditulis MDN Web Docs, tidak ada kaitan antara dua request berurutan pada koneksi yang sama. Server memperlakukan setiap request secara mandiri, sehingga server tetap sederhana dan mudah diskalakan, dan apa pun yang butuh ingatan, seperti session login, ditangani oleh cookie atau token yang dikirim bersama setiap request.

Anatomi Request dan Response

Sebuah request punya empat bagian. Baris pertama berisi method, path, dan versi, misalnya GET / HTTP/1.1. Lalu ada header, pasangan key-value seperti Host dan Accept yang menjelaskan request tersebut. Baris kosong memisahkan header dari body opsional, yang membawa data untuk method seperti POST.

Response mencerminkan bentuk yang sama. Baris pertamanya berisi versi, status code tiga digit, dan frasa alasan singkat, misalnya HTTP/1.1 200 OK. Header menyusul, lalu body opsional berisi konten sebenarnya. MDN Web Docs menunjukkan contoh response dengan Content-Length 29769 byte, yang memberi tahu client persis berapa banyak data yang harus diterima.

Sebelum semua itu terjadi, browser harus menemukan servernya. Pencarian itu adalah tugas DNS, yang mengubah nama domain menjadi alamat IP. Kalau kamu ingin gambaran lengkap langkah itu, baca DNS Dijelaskan: Cara Internet Menemukan Situs Web.

HTTP Method: Kata Kerja di Web

Method memberi tahu server apa yang ingin dilakukan client terhadap sebuah resource. Yang umum dipakai adalah:

  • GET: mengambil resource. Aman dan idempotent, artinya tidak mengubah apa pun dan pengulangan menghasilkan hasil yang sama.

  • POST: mengirim data untuk diproses, seperti formulir atau unggahan file.

  • PUT: mengganti resource sepenuhnya dengan data yang dikirim.

  • PATCH: menerapkan perubahan sebagian pada resource.

  • DELETE: menghapus resource.

  • HEAD: seperti GET, tetapi hanya mengembalikan header, berguna untuk memeriksa apakah resource berubah.

  • OPTIONS: menanyakan method dan fitur apa saja yang didukung server untuk sebuah resource.

GET dan POST mengerjakan sebagian besar pekerjaan sehari-hari. Sisanya penting terutama saat kamu membangun atau memakai API, dan itulah sebabnya mereka sering muncul di REST API Dijelaskan: Cara Kerja API Web.

Status Code: Arti Tiga Angka Itu

Setiap response membawa status code, dan digit pertamanya menunjukkan kategorinya:

Rentang kode

Arti

Contoh

1xx

Informasional

100 Continue, 101 Switching Protocols

2xx

Sukses

200 OK, 201 Created, 204 No Content

3xx

Pengalihan

301 Moved Permanently, 302 Found, 304 Not Modified

4xx

Error client

400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found

5xx

Error server

500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable

Beberapa kode layak dilihat lebih dekat. 301 Moved Permanently memberi tahu client dan mesin pencari bahwa resource sudah pindah rumah secara permanen, dan karena itu cara standar untuk mengalihkan HTTP biasa ke HTTPS. 304 Not Modified adalah jalan pintas caching: server memberi tahu browser bahwa salinan yang tersimpan masih segar, jadi tidak ada body yang dikirim sama sekali. 404 Not Found berarti server tidak menemukan resource yang diminta, sedangkan 500 Internal Server Error berarti ada yang salah di sisi server dan client tidak melakukan kesalahan apa pun.

Header: Metadata yang Membuat HTTP Bekerja

Header adalah catatan kecil di setiap request dan response. Beberapa di antaranya mengerjakan tugas berat:

  • Host: menyebut situs web yang dituju request, sehingga banyak situs bisa berbagi satu server dan satu alamat IP.

  • Content-Type: memberi tahu penerima jenis data apa isi body, misalnya text/html atau application/json.

  • Content-Length: menyatakan ukuran body dalam byte.

  • Accept: memberi tahu server format apa saja yang bisa ditangani client.

  • Authorization: membawa kredensial, biasanya token, untuk resource yang dilindungi.

  • Cache-Control: mengatur bagaimana response boleh disimpan dan dipakai ulang.

  • Set-Cookie: meminta browser menyimpan cookie untuk request berikutnya.

Header juga menjadi tempat berjalannya kebijakan keamanan. Strict-Transport-Security memberi tahu browser untuk hanya memakai HTTPS, dan Content-Security-Policy membatasi sumber apa saja yang boleh dimuat halaman. Keduanya tidak terlihat oleh kebanyakan pengguna, tetapi membentuk banyak hal yang bisa dan tidak bisa dilakukan web.

Stateless Secara Desain, Stateful Berkat Cookie

Karena HTTP melupakan setiap request, web membutuhkan ingatan. Ingatan itu adalah cookie. Saat server ingin browser mengingat sesuatu, ia mengirim header Set-Cookie, dan browser mengirim cookie itu kembali lewat header Cookie pada request berikutnya (MDN Web Docs).

Cookie membawa beberapa atribut penting. Max-Age diukur dalam detik, jadi Max-Age=2592000 berarti cookie hidup selama 30 hari, dan nilai nol atau negatif langsung mengakhirinya. Jika Expires maupun Max-Age tidak diatur, cookie menjadi session cookie yang hilang saat browser ditutup. HttpOnly memblokir JavaScript membaca cookie, sehingga melindunginya dari pencurian lewat cross-site scripting, Secure membatasinya hanya untuk koneksi HTTPS, dan SameSite=None mengharuskan Secure ikut diatur (MDN Web Docs).

Dalam praktiknya, cookie menyimpan session identifier, dan data sebenarnya tinggal di server. Pembagian itu menjaga informasi sensitif tetap jauh dari client, sambil tetap membiarkan situs mengingat bahwa kamu sedang login.

HTTPS: HTTP dengan Kunci di Pintunya

HTTPS adalah HTTP yang dibawa lewat TLS, lapisan enkripsi yang menjaga request dan response tetap privat dan tidak bisa diubah. Port standar untuk HTTPS adalah 443, yang ditetapkan oleh RFC 2818 pada Mei 2000, sedangkan HTTP biasa memakai port 80 (SSD Nodes).

Aturan praktis dari MDN Web Docs sederhana: situs sebaiknya mengalihkan HTTP di port 80 ke resource yang sama di HTTPS, biasanya dengan redirect 301. Di atas itu, HTTP Strict Transport Security (HSTS) memberi tahu browser untuk menolak HTTP biasa pada situs tersebut. MDN merekomendasikan HSTS max-age minimal 6 bulan (15768000 detik), dengan 2 tahun (63072000 detik) sebagai rekomendasi, dan masuk ke daftar preload HSTS mensyaratkan max-age minimal 1 tahun (31536000 detik) plus includeSubDomains.

TLS melakukan tiga hal sekaligus: mengenkripsi trafik sehingga tidak ada yang bisa membacanya di jaringan, mengautentikasi server lewat sertifikat sehingga kamu tahu sedang berbicara dengan situs yang asli, dan menjamin integritas sehingga data tidak bisa diubah dalam perjalanan. Karena itulah browser kini menandai halaman HTTP biasa sebagai tidak aman.

Caching: Jalan Pintas Kecepatan Terbesar di Web

Mengambil file yang sama berulang kali adalah pemborosan, jadi HTTP punya sistem pemakaian ulang bawaan. Ada dua jenis cache utama: private cache, biasanya cache browser, dan shared cache, seperti proxy dan CDN (MDN Web Docs).

Header Cache-Control adalah kendali utamanya. Cache-Control: max-age=604800 memberi tahu cache bahwa response masih segar selama 604800 detik, atau satu minggu. Saat response yang tersimpan mulai kedaluwarsa, browser bisa memvalidasinya ulang dengan If-Modified-Since atau If-None-Match, dan jika tidak ada yang berubah server menjawab 304 Not Modified tanpa body, sehingga menghemat unduhan penuh. Saat tidak ada Cache-Control, heuristic caching bekerja, yang merekomendasikan sekitar 10 persen dari waktu sejak Last-Modified sebagai masa kesegaran (MDN Web Docs).

Caching yang baik tidak terlihat saat bekerja dan menyakitkan saat tidak bekerja, dan karena itulah nama file berversi dan nilai max-age yang masuk akal menjadi bagian standar dari pengiriman situs yang cepat.

HTTP/1.1, HTTP/2, dan HTTP/3: Tiga Generasi

Protokol ini berevolusi dalam tiga langkah jelas, masing-masing memperbaiki hambatan generasi sebelumnya.

HTTP/1.1 memperkenalkan persistent connection, sehingga satu koneksi TCP bisa membawa banyak request berurutan, bukan membuka koneksi baru untuk setiap request. Tetapi request tetap antre satu per satu di setiap koneksi, masalah yang dikenal sebagai head-of-line blocking, dan browser mengakalinya dengan membuka beberapa koneksi paralel.

HTTP/2, yang diterbitkan sebagai RFC 7540 pada Mei 2015, melakukan multiplexing banyak request dan response dalam satu koneksi, mengompresi header, dan membiarkan server mendorong resource sebelum client memintanya. Itu menghilangkan sebagian besar antrean, meskipun head-of-line blocking masih bisa terjadi di lapisan TCP saat sebuah paket hilang.

HTTP/3, yang diterbitkan sebagai RFC 9114 pada Juni 2022, memindahkan transport dari TCP ke QUIC, protokol yang dibangun di atas UDP dan distandarkan sebagai RFC 9000 pada Mei 2021. QUIC menangani setiap stream secara independen, jadi paket yang hilang hanya menunda stream-nya sendiri, dan koneksi bisa dibuat lebih cepat dengan round trip yang lebih sedikit (IETF).

Adopsinya berjalan cepat. Per Mei 2022, HTTP/3 sudah didukung oleh browser yang dipakai lebih dari 72 persen pengguna web, dan per Juni 2022 dipakai oleh 25 persen dari 10 juta situs teratas, menurut W3Techs (IETF). Cuplikan November 2026 dari 219.633 situs yang di-crawl menemukan 61,8 persen menyajikan HTML utama lewat HTTP/2, 23,7 persen lewat HTTP/3, dan 14,5 persen masih memakai HTTP/1.1. Situs di HTTP/3 menunjukkan median Time to First Byte 530 ms, berbanding 720 ms di HTTP/2 dan 607 ms di HTTP/1.1 (corewebvitals.io).

Aspek

HTTP/1.1

HTTP/2

HTTP/3

Distandarkan

1997 (RFC 2068)

2015 (RFC 7540)

2022 (RFC 9114)

Transport

TCP

TCP

QUIC di atas UDP

Request per koneksi

Berurutan

Multiplexing

Multiplexing, stream independen

Kompresi header

Tidak

Ya (HPACK)

Ya (QPACK)

Head-of-line blocking

Ya, per koneksi

Ya, di level TCP

Tidak, stream independen

Mengapa HTTP Tetap Penting

HTTP terlihat sederhana dari luar, dan kesederhanaan itu justru intinya. Client meminta, server menjawab, dan semua hal lain, enkripsi, caching, session, kompresi, dilapiskan di atas pertukaran itu. Setiap teknologi web yang lebih baru, dari REST API sampai aplikasi realtime lewat WebSocket, diawali dengan handshake HTTP sebelum menjadi sesuatu yang lain.

Kalau kamu membangun untuk web, memahami HTTP terbayar saat debugging sehari-hari: 404 memberi tahu path-nya salah, 301 memberi tahu resource sudah pindah, 304 memberi tahu cache sudah bekerja, dan Time to First Byte yang lambat memberi tahu ke mana harus melihat dulu. Protokol ini sudah berumur lebih dari 30 tahun, dan masih menjadi percakapan yang memulai setiap halaman web.

Baca artikel ini dalam bahasa Inggris: HTTP Explained: How Your Browser Actually Talks to the Web

Pertanyaan yang Sering Diajukan

Apakah HTTP sama dengan internet?

Tidak. Internet adalah jaringan dari berbagai jaringan, sedangkan HTTP adalah salah satu protokol yang berjalan di atasnya, khusus untuk mentransfer resource web. Protokol lain, seperti DNS untuk pencarian nama dan SMTP untuk email, berbagi jaringan yang sama.

Apa bedanya HTTP dan HTTPS?

HTTPS adalah HTTP yang dienkripsi dengan TLS. Ia memakai port 443, bukan port 80, melindungi data dari penyadapan dan perubahan, serta mengautentikasi server dengan sertifikat.

Mengapa HTTP bersifat stateless?

Stateless membuat server tetap sederhana: setiap request membawa semua yang dibutuhkan server, sehingga server mana pun bisa menangani request apa pun tanpa mengingat request sebelumnya. State ditambahkan di atasnya dengan cookie dan session saat aplikasi membutuhkannya.

Apakah saya perlu memahami HTTP untuk membangun situs web?

Kamu bisa membangun situs dasar tanpa memikirkannya, tetapi debugging, pekerjaan performa, dan desain API menjadi jauh lebih mudah setelah kamu memahami request, status code, header, dan caching.

Apakah HTTP/3 akan menggantikan HTTP/2 di mana-mana?

Tidak dalam semalam. Adopsi HTTP/3 terus tumbuh, dengan 23,7 persen situs yang di-crawl menyajikan HTML utama lewat HTTP/3 pada November 2026, tetapi HTTP/2 tetap menjadi versi yang paling umum, dan server menegosiasikan versi terbaik yang didukung kedua belah pihak.

Sumber

Tag: http · web-development · networking · explainer · https

Semua tulisan