Modul 1: Praktikum 1
Modul Praktikum Rekayasa Web
Pertemuan ke-1
Disusun oleh
Dr. Uung Ungkawa, MT
Modul 1
Pengenalan Hypertext Transfer Protocol (HTTP)
Tujuan
- Menunjang mata kuliah Rekayasa Web</li>
- Mengetahui, mengenal dan memahami HTTP</li>
Jenis Praktikum
Eksplorasi HTTPPersyaratan
Praktikan harus menyiapkan terminal (Windows) perintah.Perangkat Praktikum
PC / NotebookMateri
Hypertext Transfer Protocol (HTTP) adalah protokol tingkat aplikasi untuk sistem informasi hypermedia yang terdistribusi, kolaboratif. Ini adalah dasar untuk komunikasi data untuk World Wide Web (yaitu internet) sejak tahun 1990. HTTP adalah protokol umum dan tanpa status (stateless) yang dapat digunakan untuk tujuan lain juga menggunakan ekstensi metode permintaan, kode kesalahan, dan header.
Pada dasarnya, HTTP adalah protokol komunikasi berbasis TCP/IP, yang digunakan untuk mengirimkan data (file HTML, file gambar, hasil kueri, dll.) di World Wide Web. Port default adalah TCP 80, tetapi port lain juga dapat digunakan. Ini menyediakan cara standar bagi komputer untuk berkomunikasi satu sama lain. Spesifikasi HTTP menentukan bagaimana data permintaan klien akan dibuat dan dikirim ke server, dan bagaimana server menanggapi permintaan ini.
Fitur Dasar
Ada tiga fitur dasar yang membuat HTTP menjadi protokol yang sederhana tapi berdaya guna:- HTTP adalah protokol tidak berkoneksi (connectionless): Klien HTTP, yaitu, browser memulai permintaan HTTP dan setelah permintaan dibuat, klien menunggu tanggapan. Server memproses permintaan dan mengirimkan respons kembali setelah klien memutuskan koneksi. Jadi klien dan server mengetahui satu sama lain selama permintaan dan respons saat ini saja. Permintaan lebih lanjut dibuat pada koneksi baru seperti halnya klien dan server yang baru satu sama lain.
- HTTP adalah media independen: Artinya, semua jenis data dapat dikirim melalui HTTP selama klien dan server mengetahui cara menangani konten data. Klien serta server harus menentukan tipe konten menggunakan tipe MIME yang sesuai.
- HTTP tidak bernegara: Seperti yang disebutkan di atas, HTTP tidak memiliki koneksi dan merupakan hasil langsung dari HTTP yang menjadi protokol tanpa negara. Server dan klien menyadari satu sama lain hanya selama permintaan saat ini. Setelah itu, keduanya melupakan satu sama lain. Karena sifat protokol ini, baik klien maupun browser tidak dapat menyimpan informasi antara permintaan yang berbeda di seluruh halaman web.
Arsitektur Dasar
Arsitektur dasar HTTP terdiri dari klien dan server. Server menyimpan script dan data di dalam basis data (Gambar 1)Gambar 1. Arsitektur HTTP
Protokol HTTP adalah protokol permintaan/tanggapan (request/response) berdasarkan arsitektur berbasis klien/server di mana browser web, robot dan mesin pencari, dll, bertindak seperti klien HTTP, dan server Web bertindak sebagai server. Klien HTTP mengirimkan permintaan ke server dalam bentuk metode permintaan, URI, dan versi protokol, diikuti dengan pesan jenis MIME (media) yang berisi pengubah permintaan, informasi klien, dan kemungkinan konten body (tubuh) melalui koneksi TCP/IP. Server HTTP merespons dengan baris status, termasuk pesan versi protokol dan kode keberhasilan atau kesalahan, diikuti dengan pesan jenis MIME yang berisi informasi server, entitas informasi meta, dan kemungkinan konten entitas-body.
Pesan HTTP
"Klien" HTTP adalah program (browser web atau klien lain) yang menjalin hubungan (koneksi) ke server untuk tujuan mengirim satu atau lebih pesan permintaan HTTP. "Server" HTTP adalah program (umumnya server web seperti Apache Web Server atau Internet Information Services IIS, dll.) Yang menerima koneksi untuk melayani permintaan HTTP dengan mengirimkan pesan tanggapan HTTP.HTTP menggunakan Uniform Resource Identifier (URI) untuk mengidentifikasi sumber daya yang diberikan dan untuk membuat koneksi. Setelah koneksi dibuat, pesan HTTP diteruskan dalam format yang mirip dengan yang digunakan oleh email Internet [RFC5322] dan Multipurpose Internet Mail Extensions (MIME) [RFC2045]. Pesan ini termasuk permintaan dari klien ke server dan tanggapan dari server ke klien yang akan memiliki format berikut:
HTTP-message =
Permintaan HTTP dan tanggapan HTTP menggunakan format pesan umum RFC 822 untuk mentransfer data yang diperlukan. Format pesan umum ini terdiri dari empat item berikut:
A Start-line Zero or more header fields followed by CRLF. An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields. Optionally a message-body
Pesan Start-Line
start-line = Request-Line | Status-Line
Request-line dan Status-line akan dibahas lebih lanjut dalam pembahasan HTTP Resquest dan HTTP Response. Contoh dari start-line adalah:
GET /hello.htm HTTP/1.1 (This is Request-Line sent by the client)
HTTP/1.1 200 OK (This is Status-Line sent by the server)
Header Fields
Header umum: Kolom header ini memiliki penerapan umum untuk pesan permintaan dan tanggapan. Header permintaan: Kolom header ini hanya dapat diterapkan untuk pesan permintaan. Header-tanggapan: Bidang-bidang tajuk ini hanya dapat diterapkan untuk pesan tanggapan. Entity-header: Kolom header ini menentukan informasi meta tentang badan-entitas atau, jika tidak ada isi, tentang sumber daya yang diidentifikasi oleh permintaan.
Semua header yang disebutkan di atas mengikuti format umum yang sama dan setiap header-field terdiri dari nama yang diikuti oleh titik dua (
message-header = field-name ":" [ field-value ]
Berikut adalah contoh beberapa header-fields:
Message body
(tubuh pesan)
Bagian message body (badan pesan) bersifat opsional untuk pesan HTTP tetapi jika ada, maka itu digunakan untuk membawa entitas body yang berkaitan dengan permintaan atau respons. Jika entitas ini berkaitan dengan permintaan atau respon, biasanya panjang konten baris header lines menentukan sifat body yang terkait.
Message body adalah bagian yang membawa data permintaan HTTP aktual (termasuk data formulir dan yang diunggah, dll.) dan data tanggapan HTTP dari server (termasuk file, gambar, dll.). Di bawah ini adalah konten sederhana dari message body:
HTTP Request (Permintaan HTTP)
A Request-line Zero or more header (General|Request|Entity) fields followed by CRLF An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields. Optionally a message-body
Method di dalam request-line di atas adalah request method, yang menunjukkan metode yang akan dilakukan pada sumber daya yang diidentifikasi oleh URI Permintaan yang diberikan. Metode ini peka kasus dan harus selalu dituliskan dalam huruf besar. Tentang metode ini akan diuraikan lebih lanjut di belakang nanti.
Request-URI (Uniform Resource Identifier) yang dimaksud di request-line mengidentifikasi sumber daya yang diminta. Contoh pesan permintaan adalah:
Di sini, URL yang diberikan: /cgi-bin/process.cgi akan digunakan untuk memproses data yang dikirim dan karenanya, tanggapan akan dikembalikan. Di sini tipe konten memberi tahu server bahwa data yang dikirim adalah data formulir web sederhana dan panjangnya akan menjadi panjang sebenarnya dari data yang dimasukkan ke dalam message body.
HTTP Response
A Status-line Zero or more header (General|Response|Entity) fields followed by CRLF An empty line (i.e., a line with nothing preceding the CRLF) indicating the end of the header fields Optionally a message-body
Status-line memiliki format:
Status-code akan diuraikan di belakang. Contoh pesan response untuk mengambil halaman hello.htm dari server adalah:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
Content-Length: 88
Content-Type: text/html
Connection: Closed
HTTP Methods
HTTP Methods |
Description |
GET |
Asks to get the resource at the requested URL. |
POST |
Asks the server to accept the body info attached. It is like GET request with extra info sent with the request. |
HEAD |
Asks for only the header part of whatever a GET would return. Just like GET but with no body. |
TRACE |
Asks for the loopback of the request message, for testing or troubleshooting. |
PUT |
Says to put the enclosed info (the body) at the requested URL. |
DELETE |
Says to delete the resource at the requested URL. |
OPTIONS |
Asks for a list of the HTTP methods to which the thing at the request URL can respond |
Kode Status
S.N. |
Code and Description |
1 |
1xx: Informational It means the request has been received and the process is continuing. |
2 |
2xx: Success It means the action was successfully received, understood, and accepted. |
3 |
3xx: Redirection It means further action must be taken in order to complete the request. |
4 |
4xx: Client Error It means the request contains incorrect syntax or cannot be fulfilled. |
5 |
5xx: Server Error It means the server failed to fulfill an apparently valid request. |
Header Field
Ada empat jenis pesan header HTTP:
General header: digunakan baik untuk request maupun response Client Request-header: Hanya untuk pesan resquest Server Response-header: hanya untuk response Entity-header: Menentukan meta info tentang entity-body atau jika tidak ada body, tentang sumber daya yang diidentifikasi dalam request
Sintaks Header Permintaan
request-header = Accept
Latihan
Melihat Pesan HTTP
- Siapkan browser Chrome atau Firefox
- Buka menu Web Developer Tool: Klik menu More Tools Developer Tool (atau tekan F12)
- Klik tab Network
- Di address bar, ketikkan alamat web (URL) apa saja. Klik elemen di halam. Klik salah satu elemen di kolom Name, Akan muncul tab Headers seperti:
Melihat Header melalui Terminal
- Di layar komputer, klik kanan, pilih Terminal
- Ketikkan perintah: curl --head example.com
- Akan muncul seperti ini:
Tugas Akhir
- Coba lakukan eksplorasi perintah curl. Ketik dulu perintah curl --help