Back to IF3110 Pengembangan Aplikasi Berbasis Web
Topic
Questions/Cues
Apa itu HTTP?
Bagaimana struktur dasar HTTP?
Apa saja metode permintaan (Request Methods)?
Apa perbedaan GET vs POST?
Apa fungsi Status Code?
Apa saja jenis-jenis HTTP Header?
Bagaimana cara kerja Caching?
Apa itu Persistent Connection?
Apa perbedaan HTTP/1.1 dan HTTP/2?
Apa itu HTTPS?
Reference Points
- Slides IF3110-02a-HTTP-Protocol.pdf
Apa itu Protokol HTTP?
HTTP (Hypertext Transfer Protocol) adalah protokol fundamental yang digunakan dalam World Wide Web (WWW). Ia berfungsi sebagai protokol lapisan aplikasi (Application Layer) yang berjalan di atas TCP (Transmission Control Protocol).
Karakteristik Utama:
Sederhana: Desainnya yang simpel adalah kekuatan sekaligus kelemahannya.
Stateless: HTTP tidak menyimpan status atau informasi dari transaksi sebelumnya. Setiap permintaan (request) dari klien ke server dianggap sebagai transaksi yang independen dan tunggal. Server tidak mengingat apapun tentang klien setelah merespons.
Request-Response Paradigm: Komunikasi selalu diawali oleh klien yang mengirimkan request ke server, dan server akan membalas dengan sebuah response.
Struktur Pesan HTTP
Baik pesan request maupun response memiliki struktur yang serupa, terdiri dari tiga bagian utama:
Start Line: Baris pertama yang mendefinisikan permintaan (misalnya,
GET /index.html HTTP/1.1) atau status respons (misalnya,HTTP/1.1 200 OK).Headers: Beberapa baris metadata dalam format
Nama-Header: nilaiyang memberikan informasi tambahan tentang permintaan atau respons. ContohnyaHost: www.itb.ac.idatauContent-Type: text/html.Message Body (Opsional): Bagian yang berisi data yang dikirim, seperti data formulir (dalam request POST) atau konten halaman HTML (dalam response). Bagian header dan body dipisahkan oleh satu baris kosong (CRLF).
![]()
Metode Permintaan (Request Methods)
Metode ini mendefinisikan aksi yang ingin dilakukan oleh klien terhadap sumber daya di server.
GET: Metode paling sederhana untuk meminta/mengambil data dari server. Parameter dikirim melalui URL (query string). Tidak memiliki request body dan seharusnya tidak mengubah data di server (idempotent).
POST: Mengirimkan data untuk diproses oleh server, misalnya data dari sebuah formulir. Data dikirim dalam request body. Metode ini dapat mengubah data di server.
HEAD: Sama seperti GET, tetapi server hanya mengembalikan header tanpa response body. Berguna untuk memeriksa metadata sumber daya (seperti tanggal modifikasi terakhir) tanpa perlu mengunduh seluruh konten.
PUT: Menyimpan (mengunggah atau memperbarui) sebuah sumber daya di URL tertentu. Jika sumber daya sudah ada, ia akan diperbarui.
DELETE: Menghapus sumber daya yang ada di URL tertentu.
TRACE: Mengembalikan pesan request yang diterima oleh server. Berguna untuk debugging dan melihat apakah ada proxy di tengah jalan yang mengubah request.
OPTIONS: Menanyakan metode HTTP apa saja yang didukung oleh server untuk URL tertentu.
CONNECT: Mengubah koneksi menjadi terowongan TCP/IP transparan, biasanya digunakan untuk komunikasi SSL/TLS (HTTPS).
PATCH: Menerapkan modifikasi parsial pada sebuah sumber daya.
Perbandingan GET vs POST
Fitur GET POST Caching Bisa di-cache Tidak pernah di-cache History Browser Tersimpan di riwayat Tidak tersimpan di riwayat Bookmark Bisa di-bookmark Tidak bisa di-bookmark Visibilitas Data Data terlihat di URL Data tidak terlihat di URL (di body) Panjang Data Ada batasan panjang (tergantung browser/server) Tidak ada batasan panjang Tipe Data Hanya karakter ASCII Bisa data biner (misal: upload file) Request Parameters Ditambahkan di URL setelah tanda ”?” Ada di Request body Kode Status (Status Code)
Kode tiga digit yang dikirim oleh server sebagai bagian dari response untuk menginformasikan hasil dari request yang diterima.
1xx (Informational): Permintaan diterima, proses berlanjut.
2xx (Success): Aksi berhasil diterima, dipahami, dan diterima. Contoh:
200 OK.3xx (Redirection): Klien perlu melakukan aksi lebih lanjut untuk menyelesaikan permintaan, biasanya pengalihan ke URL lain. Contoh:
301 Moved Permanently.4xx (Client Error): Permintaan mengandung sintaks yang salah atau tidak dapat dipenuhi. Contoh:
404 Not Found,403 Forbidden.5xx (Server Error): Server gagal memenuhi permintaan yang valid. Contoh:
500 Internal Server Error.HTTP Headers
Header menyediakan informasi kontekstual tentang pesan.
General Headers: Berlaku untuk request dan response (misal:
Date,Connection).Request Headers: Spesifik untuk request (misal:
Host,User-Agent,Referer,Authorization,Cookie).Hostwajib ada di HTTP/1.1 untuk mendukung virtual hosting.Response Headers: Spesifik untuk response (misal:
Server,Location,Set-Cookie).Entity Headers: Mendeskripsikan message body (misal:
Content-Type,Content-Length,Last-Modified).
Header Variable Fungsi Utama **HTTP Request ** **HTTP Response ** Content-Length Menunjukkan ukuran body pesan (penting saat mengirim POST/PUT atau respons). ✅ ✅ Content-Type Menunjukkan format data di body (misalnya, application/json,text/html).✅ ✅ Set-Cookie Menginstruksikan browser untuk menyimpan cookie baru. ❌ ✅ User-Agent Mengidentifikasi client (jenis browser, sistem operasi). ✅ ❌ Cookie Mengirimkan cookie yang tersimpan kembali ke server. ✅ ❌ Last-Modified Menunjukkan kapan sumber daya terakhir dimodifikasi di server. ❌ ✅ Accept Memberi tahu server format data apa yang diterima client (misalnya, application/json).✅ ❌ Authorization Mengirimkan kredensial otentikasi (misalnya, Bearer Token). ✅ ❌ Location Digunakan untuk pengalihan (redirect). ❌ ✅ Caching Control & Persistent Connection
Caching: Browser dapat menyimpan salinan respons untuk mempercepat waktu muat. Header
If-Modified-Sincepada request danLast-Modifiedpada response digunakan untuk memeriksa apakah konten telah berubah, sehingga browser tidak perlu mengunduh ulang jika masih sama.Persistent Connection: HTTP/1.0 membuka koneksi TCP baru untuk setiap request, yang tidak efisien. HTTP/1.1 memperkenalkan koneksi persisten (
Connection: Keep-Alive), di mana satu koneksi TCP dapat digunakan kembali untuk beberapa request-response, mengurangi latensi.Evolusi HTTP: HTTP/1.1 vs HTTP/2
HTTP/1.1, yang telah digunakan sejak lama, memiliki beberapa masalah kinerja seperti Head-of-Line Blocking (satu request lambat menahan request berikutnya). HTTP/2 diperkenalkan untuk mengatasi masalah ini.
Peningkatan di HTTP/2:
Protokol Biner: Lebih efisien untuk diproses oleh mesin dibandingkan protokol teks HTTP/1.1.
Multiplexing: Memungkinkan beberapa request dan response dikirim secara bersamaan melalui satu koneksi TCP tunggal, menghilangkan Head-of-Line Blocking.
Kompresi Header: Mengurangi ukuran header untuk menghemat bandwidth.
Server Push: Server dapat proaktif mengirim sumber daya yang akan dibutuhkan klien bahkan sebelum diminta (misalnya, mengirim file CSS saat HTML diminta).
HTTPS: HTTP yang Aman
HTTPS adalah singkatan dari HTTP over TLS (Transport Layer Security) over TCP. Ini bukan protokol yang terpisah, melainkan penggunaan HTTP di atas lapisan enkripsi. Sebelum komunikasi HTTP dimulai, klien dan server melakukan TCP 3-way handshake diikuti oleh TLS handshake untuk membuat saluran komunikasi yang aman dan terenkripsi.
HTTP adalah protokol lapisan aplikasi yang stateless dan bekerja dengan model permintaan-respons untuk komunikasi di World Wide Web. Setiap pesan HTTP, baik permintaan maupun respons, memiliki struktur yang terdiri dari start-line, header, dan body opsional. Metode permintaan seperti GET dan POST mendefinisikan aksi yang diinginkan, sementara kode status memberikan umpan balik atas hasilnya. Evolusi dari HTTP/1.1 ke HTTP/2 membawa perbaikan kinerja signifikan melalui fitur seperti multiplexing dan kompresi header. Untuk keamanan, HTTPS mengenkripsi komunikasi HTTP menggunakan TLS.
Additional Information
Pendalaman Teknis: TCP & TLS Handshake
TCP 3-Way Handshake: Sebelum data HTTP dikirim, TCP memastikan koneksi andal terbentuk. Proses ini melibatkan tiga langkah:
SYN: Klien mengirim paket SYN (Synchronize) ke server.
SYN-ACK: Server merespons dengan paket SYN-ACK (Synchronize-Acknowledge).
ACK: Klien mengirim paket ACK (Acknowledge) kembali ke server. Setelah ini, koneksi siap digunakan.
TLS Handshake (untuk HTTPS): Setelah koneksi TCP terbentuk, proses ini terjadi untuk membuat saluran aman:
ClientHello: Klien mengirimkan spesifikasi kriptografi yang didukungnya.
ServerHello: Server memilih salah satu spesifikasi dan mengirimkan sertifikat digitalnya.
Verifikasi & Key Exchange: Klien memverifikasi sertifikat server dan kedua belah pihak secara aman bertukar kunci sesi yang akan digunakan untuk enkripsi data.
Finished: Kedua sisi mengonfirmasi bahwa proses handshake selesai dan enkripsi dimulai.
Eksplorasi Mandiri
Gunakan Developer Tools Browser: Buka tab ‘Network’ di browser Anda (biasanya dengan F12), lalu kunjungi sebuah website. Anda dapat melihat setiap permintaan dan respons HTTP secara detail, termasuk metode, status, header, dan body. Ini adalah cara terbaik untuk melihat HTTP beraksi.
Gunakan
curlatau Postman: Untuk kontrol yang lebih besar, gunakan alat baris perintah seperticurlatau aplikasi GUI seperti Postman untuk membuat permintaan HTTP kustom. Coba lakukan request GET ke API publik, atau coba kirim data dengan POST.
Contoh dengan
curl:curl -v http://example.com(Opsi-vuntuk melihat detail request dan response).Sumber & Referensi Lanjutan:
MDN Web Docs - HTTP: Sumber daya yang sangat baik dan mudah dipahami untuk semua hal tentang HTTP: https://developer.mozilla.org/en-US/docs/Web/HTTP
RFC 7230-7235: Dokumen spesifikasi resmi untuk HTTP/1.1. Sangat teknis tetapi merupakan sumber kebenaran utama.
RFC 7540: Spesifikasi resmi untuk HTTP/2.
High Performance Browser Networking (HPBN) by Ilya Grigorik: Buku online gratis yang membahas seluk beluk jaringan web, termasuk HTTP/1.1 dan HTTP/2 secara mendalam.


