Modul 1: Pertemuan 1

Modul Praktikum Rekayasa Web


Pertemuan ke-1


Disusun oleh


Dr. Uung Ungkawa, MT


Modul 1

Pengenalan Hypertext Transfer Protocol (HTTP)


Tujuan


  1. Menunjang mata kuliah Rekayasa Web</li>
  2. Mengetahui, mengenal dan memahami HTTP</li>

Jenis Praktikum

Eksplorasi HTTP

Persyaratan

Praktikan harus menyiapkan terminal (Windows) perintah.

Perangkat Praktikum

PC / Notebook

Materi


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)

Arsitektur HTTP

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 = | ; HTTP/1.1 messages


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 memiliki sintaks berikut:

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 fields HTTP memberikan informasi yang diperlukan tentang permintaan atau respons, atau tentang objek yang dikirim di badan pesan (message-body). Ada empat jenis header pesan HTTP:
  • 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 (smile dan nilai field sebagai berikut:

message-header = field-name ":" [ field-value ]


Berikut adalah contoh beberapa header-fields:

User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3
Host: www.example.com
Accept-Language: en, mi
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: Apache
Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"
Accept-Ranges: bytes
Content-Length: 51
Vary: Accept-Encoding
Content-Type: text/plain

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:

<html>
<body>
<h1> Hello, World!</h1>
</body>
</html>

HTTP Request (Permintaan HTTP)

Klien HTTP mengirimkan permintaan HTTP ke server dalam bentuk pesan permintaan yang menyertakan format berikut:
    • 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
Request-Line dimulai dengan token metode, diikuti oleh Request-URI dan versi protokol, dan diakhiri dengan CRLF. Elemen dipisahkan oleh spasi karakter SP.

Request-Line = Method SP Request-URI SP HTTP-Version CRLF

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:

GET /hello.htm HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive

Pesan di atas hanya mengambil halaman html biasa dari server. Berikut ini contoh bagaimana mengirim data ke server menggunakan message body:

POST /cgi-bin/process.cgi HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; MSIE5.01; Windows NT)
Host: www.tutorialspoint.com
Content-Type: application/x-www-form-urlencoded
Content-Length: length
Accept-Language: en-us
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
licenseID=string&content=string&/paramsXML=string

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

Setelah menerima dan menafsirkan pesan permintaan (HTTP Request), server menanggapi dengan pesan tanggapan HTTP (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-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

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

<html>
<body>
<h1> Hello, World!</h1>
</body>
</html>

HTTP Methods

Kumpulan metode umum untuk HTTP / 1.1 ditentukan di bawah dan kumpulan ini dapat diperluas berdasarkan persyaratan. Nama metode ini peka kasus dan harus dituliskan dalam huruf besar.

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

Elemen Kode-Status dalam respons server adalah bilangan bulat 3-digit di mana digit pertama menentukan kelas respons dan dua digit terakhir tidak memiliki peran kategorisasi. Ada 5 nilai untuk digit pertama:

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

Header filed HTTP memberikan informasi yang diperlukan tentang permintaan atau respons, atau tentang objek yang dikirim di tubuh pesan. Header HTTP untuk respons server berisi informasi yang dapat digunakan klien untuk mengetahui lebih lanjut tentang respons, dan tentang server yang mengirimkannya. Informasi ini digunakan untuk membantu klien menampilkan respons kepada pengguna, dengan menyimpan respons untuk penggunaan di masa mendatang, dan dengan membuat permintaan lebih lanjut ke server sekarang atau di masa mendatang.

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
| Accept-Charset
| Accept-Encoding
| Accept-Language
| Authorization
| Expect
| From
| Host
| If-Match
| If-Modified-Since
| If-None-Match
| If-Range
| If-Unmodified-Since
| Max-Forwards
| Proxy-Authorization
| Range
| Referer
| TE
| User-Agent

Sintaks Header Respons

response-header = Accept-Ranges
| Age
| ETag
| Location
| Proxy-Authenticate
| Retry-After
| Server
| Vary
| WWW-Authenticate

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:

Header


Melihat Header melalui Terminal
  • Di layar komputer, klik kanan, pilih Terminal
  • Ketikkan perintah: curl --head example.com
  • Akan muncul seperti ini:

Terminal curl


Tugas Akhir

  • Coba lakukan eksplorasi perintah curl. Ketik dulu perintah curl --help
Last modified: Sunday, 27 September 2020, 6:49 AM