HTTP

HTTP (Hypertext Transfer Protocol) memungkinkan komunikasi browser-server melalui permintaan dan respons. Protokol stateless menggunakan metode seperti GET dan POST. HTTPS menyediakan keamanan terenkripsi. Versi yang lebih baru (HTTP/2, HTTP/3) menawarkan kinerja yang lebih baik. Penting untuk pemahaman pengembangan web.


Cara Kerjanya:
a. Permintaan (Request): Saat Anda mengetik alamat web atau mengklik tautan, browser Anda mengirimkan permintaan HTTP ke server web.

b. Respons (Response): Server web menerima permintaan tersebut dan mengirimkan kembali respons HTTP yang berisi data halaman web yang diminta (HTML, gambar, dll.).

c. Transfer Data: Data ini kemudian diolah dan ditampilkan oleh browser Anda sebagai halaman web yang bisa Anda lihat.

HTTP/0.9 - Satu Baris (1991)

Versi HTTP pertama yang terdokumentasi adalah HTTP/0.9 yang diperkenalkan pada tahun 1991. Protokol ini merupakan protokol paling sederhana yang pernah ada; hanya memiliki satu metode bernama GET. Jika klien ingin mengakses halaman web tertentu di server, klien akan membuat permintaan sederhana seperti di bawah ini.

Contohnya:

GET /index.html

Dan respon dari server akan terlihat seperti berikut

(response body)

(connection closed)

Artinya, server akan menerima permintaan, membalas dengan HTML sebagai respons, dan segera setelah konten ditransfer, koneksi akan ditutup.

· Tidak ada header

· GETadalah satu-satunya metode yang diizinkan

· Respons harus berupa HTML

Seperti yang Anda lihat, protokol itu sebenarnya tidak lebih dari sekadar batu loncatan untuk apa yang akan datang.


HTTP/1.0 - 1996

Pada tahun 1996, versi HTTP berikutnya yaitu HTTP/1.0 berkembang dan jauh lebih baik dari versi aslinya.

Berbeda dengan HTTP/0.9 yang hanya dirancang untuk respons HTML, HTTP/1.0 kini dapat menangani format respons lain, misalnya gambar, berkas video, teks biasa, atau jenis konten lainnya. HTTP/1.0 menambahkan lebih banyak metode (misalnya POST dan HEAD), format permintaan/respons diubah, header HTTP ditambahkan ke permintaan dan respons, kode status ditambahkan untuk mengidentifikasi respons, dukungan set karakter diperkenalkan, tipe multi-bagian, otorisasi, caching, pengodean konten, dan masih banyak lagi.


Berikut ini adalah contoh permintaan dan respons HTTP/1.0:


GET / HTTP/1.0

Host: cs.fyi

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)

Accept: */*

Seperti yang bisa Anda lihat, di samping permintaan, klien juga telah mengirimkan informasi pribadinya, jenis respons yang diperlukan, dsb. Sementara di HTTP/0.9 klien tidak akan pernah dapat mengirimkan informasi tersebut karena tidak ada header.

Contoh tanggapan terhadap permintaan di atas mungkin terlihat seperti di bawah ini


HTTP/1.0 200 OK

Content-Type: text/plain

Content-Length: 137582

Expires: Thu, 05 Dec 1997 16:00:00 GMT

Last-Modified: Wed, 5 August 1996 15:55:28 GMT

Server: Apache 0.84



(response body)

(connection closed)

Di awal respons terdapat HTTP/1.0 (HTTP diikuti oleh nomor versi), kemudian ada kode status 200 diikuti oleh frasa alasan (atau deskripsi kode status, jika Anda mau).

Dalam versi yang lebih baru ini, header permintaan dan respons masih dikodekan dalam format ASCII, tetapi isi responsnya bisa berupa jenis konten apa pun, misalnya gambar, video, HTML, teks biasa, atau jenis konten lainnya. Jadi, server kini dapat mengirimkan jenis konten apa pun ke klien; tak lama setelah diperkenalkan, istilah "Hyper Text" dalam HTTP menjadi kurang tepat. HMTP atau Hypermedia Transfer Protocol mungkin lebih masuk akal, tetapi, saya rasa, kita akan terjebak dengan istilah itu seumur hidup.

Salah satu kelemahan utama HTTP/1.0 adalah Anda tidak dapat memiliki beberapa permintaan per koneksi. Artinya, setiap kali klien membutuhkan sesuatu dari server, ia harus membuka koneksi TCP baru dan setelah permintaan tunggal itu terpenuhi, koneksi akan ditutup. Dan untuk setiap persyaratan berikutnya, itu harus berada pada koneksi baru. Mengapa itu buruk? Baiklah, mari kita asumsikan bahwa Anda mengunjungi halaman web yang memiliki 10 gambar, 5 stylesheet dan 5 file javascript, totalnya menjadi 20 item yang perlu diambil ketika permintaan ke halaman web itu dibuat. Karena server menutup koneksi segera setelah permintaan terpenuhi, akan ada serangkaian 20 koneksi terpisah di mana masing-masing item akan dilayani satu per satu pada koneksi terpisah mereka. Sejumlah besar koneksi ini mengakibatkan penurunan kinerja yang serius karena memerlukan koneksi TCP baru yang memberikan penalti kinerja yang signifikan karena jabat tangan tiga arah diikuti oleh mulai lambat.

Jabat Tangan Tiga Arah

Jabat tangan tiga arah dalam bentuk sederhananya adalah bahwa semua koneksi TCP diawali dengan jabat tangan tiga arah di mana klien dan server berbagi serangkaian paket sebelum mulai berbagi data aplikasi.

SYN - Klien mengambil nomor acak, katakanlah x, dan mengirimkannya ke server.

SYN ACK - Server mengakui permintaan dengan mengirimkan paket ACK kembali ke klien yang terdiri dari nomor acak, katakanlah y diambil oleh server dan nomor x+1 di mana x adalah nomor yang dikirim oleh klien

ACK - Klien menambah jumlah y yang diterima dari server dan mengirimkan paket ACK kembali dengan jumlah y+1

Setelah jabat tangan tiga arah selesai, pembagian data antara klien dan server dapat dimulai. Perlu dicatat bahwa klien dapat mulai mengirimkan data aplikasi segera setelah mengirimkan paket ACK terakhir, tetapi server masih harus menunggu paket ACK diterima untuk memenuhi permintaan.

0 $type={blogger}:

Posting Komentar