JavaRush /Java Blog /Random-ID /Bagian 3. Protokol HTTP/HTTPS

Bagian 3. Protokol HTTP/HTTPS

Dipublikasikan di grup Random-ID
Materi ini merupakan bagian dari seri “Pengantar Pengembangan Usaha”. Artikel sebelumnya: Halo! Hari ini kita akan memahami protokol HTTP dan HTTPS. Tapi pertama-tama, mari kita perjelas satu hal: kita berbicara tentang protokol transfer data melalui jaringan pada lapisan aplikasi model OSI. Seperti yang Anda ingat, kita telah membahas model OSI di salah satu artikel sebelumnya. Dan jika Anda tidak ingat, ini dia . Bagian 3. Protokol HTTP/HTTPS - 1

Apa itu protokol transfer data

Ini adalah nama yang diberikan untuk perjanjian yang diterima secara umum, berkat pengembang berbagai layanan mengirimkan informasi dalam satu bentuk. Misalnya, dengan menggunakan Google Chrome, Anda bisa mendapatkan informasi dari Facebook dan Twitter, karena pengembang mengirimkannya menggunakan protokol HTTP standar, dan browser Anda dapat menanganinya. Aturan seragam juga sangat nyaman bagi pengembang sisi server itu sendiri: ada banyak perpustakaan yang dapat mengonversi informasi untuk Anda dan mengirimkannya menggunakan protokol yang diperlukan. HTTP pada awalnya dipahami sebagai protokol untuk mentransfer halaman HTML. Hal ini telah terjadi sejak lama, tetapi sekarang pemrogram sering mentransfer string dan file media melaluinya. Secara keseluruhan, protokol ini serbaguna dan fleksibel, serta sangat mudah digunakan. Sekarang mari kita cari tahu cara melakukan ini.

Struktur HTTP

Perlu segera dicatat bahwa protokol HTTP hanya terdiri dari teks. Ya, kami paling tertarik pada struktur di mana teks ini berada. Setiap pesan terdiri dari tiga bagian:
  1. Garis awal—mendefinisikan data layanan.
  2. Header - deskripsi parameter pesan.
  3. Badan pesan (Body) - data pesan. Harus dipisahkan dari judul dengan baris kosong.
Dengan menggunakan protokol HTTP, Anda dapat mengirim permintaan ke server (request) dan menerima respon dari server (response). Permintaan dan tanggapan memiliki parameter yang sedikit berbeda.

Seperti apa permintaan HTTP sederhana itu

GET / HTTP/1.1
Host: javarush.com
User-Agent: firefox/5.0 (Linux; Debian 5.0.8; en-US; rv:1.8.1.7)
Baris awal berisi:
  • DAPATKAN - metode permintaan;
  • / — jalur permintaan (jalur);
  • HTTP/1.1 - versi protokol transfer data.
Kemudian ikuti judulnya:
  • Host — host yang menjadi tujuan permintaan;
  • Agen-Pengguna adalah klien yang mengirimkan permintaan.
Tidak ada isi pesan. Dalam permintaan HTTP, hanya baris awal dan header Host yang diperlukan. Sekarang mari kita lihat semuanya secara berurutan. Permintaan HTTP harus berisi beberapa metode. Totalnya ada sembilan: GET, POST, PUT, OPTIONS, HEAD, PATCH, DELETE, TRACE, CONNECT. Yang paling umum adalah GET dan POST. Kedua metode ini pada awalnya sudah cukup. GET - meminta konten dari server. Oleh karena itu, permintaan dengan metode GET tidak memiliki isi pesan. Namun jika perlu, Anda dapat mengirimkan parameter melalui jalur dalam format ini: https://cdn.javarush.com/images/article/155cea79-acfd-4968-9361-ad585e939b82/original.pngsend?name1=value1&name2=value2 Di sini: javarush .com — host, /send — jalur permintaan, ? — pemisah yang menunjukkan bahwa parameter permintaan mengikuti. Pada akhirnya, parameter dicantumkan dalam format key=value, dipisahkan dengan tanda ampersand. POST - menerbitkan informasi di server. Permintaan POST dapat mentransfer berbagai informasi: parameter dalam format key=value, JSON, kode HTML, atau bahkan file. Semua informasi dikirimkan dalam isi pesan. Misalnya:
POST /user/create/json HTTP/1.1
Accept: application/json
Content-Type: application/json
Content-Length: 28
Host: javarush.com

{
  "Id": 12345,
  "User": "John"
}
Permintaan dikirim ke javarush.com/user/create/json, versi protokolnya adalah HTTP/1.1. Accept menentukan format respons apa yang diharapkan diterima oleh klien, Content-Type menentukan format isi pesan yang dikirim. Panjang Konten - jumlah karakter di badan. Permintaan HTTP dapat berisi banyak header berbeda. Rincian lebih lanjut dapat ditemukan di spesifikasi protokol .

Respons HTTP

Setelah menerima permintaan, server memprosesnya dan mengirimkan respons ke klien:
HTTP/1.1 200 OK
Content-Type: text/html; charset=UTF-8
Content-Length: 98

<html>
  <head>
    <title>An Example Page</title>
  </head>
  <body>
    <p>Hello World</p>
  </body>
</html>
Baris awal dalam respons berisi versi protokol (HTTP/1.1), Kode Status (200), Deskripsi Status (OK). Judul menunjukkan jenis dan panjang konten. Badan respons berisi kode HTML yang akan digambar browser ke dalam halaman HTML.

Kode Status Respons

Semuanya jelas dengan isi pesan dan header, tetapi ada baiknya menyampaikan beberapa kata tentang kode status. Kode Status Respons selalu terdiri dari tiga digit, dan digit pertama kode menunjukkan kategori respons:
  • 1xx - informasional. Permintaan telah diterima, server siap melanjutkan;
  • 2xx - berhasil. Permintaan telah diterima, dipahami dan diproses;
  • 3xx - pengalihan. Langkah-langkah berikut harus dilakukan untuk memproses permintaan;
  • 4xx - kesalahan klien. Permintaan mengandung kesalahan atau tidak sesuai dengan protokol;
  • 5xx - kesalahan server. Server tidak dapat memproses permintaan, meskipun permintaan tersebut dibuat dengan benar;
Digit kedua dan ketiga pada kode merinci jawabannya. Misalnya:
  • 200 OK — permintaan diterima dan berhasil diproses;
  • 201 Dibuat — permintaan diterima dan berhasil diproses, menghasilkan terciptanya sumber daya baru atau instance-nya;
  • 301 Dipindahkan Secara Permanen - sumber daya yang diminta telah dipindahkan secara permanen, dan permintaan selanjutnya harus dilakukan di alamat baru;
  • 307 Pengalihan Sementara - sumber daya telah dipindahkan sementara. Untuk saat ini, Anda dapat mengaksesnya menggunakan pengalihan otomatis;
  • 403 Dilarang - permintaannya jelas, tetapi diperlukan otorisasi;
  • 404 Not Found - server tidak menemukan sumber daya di alamat ini;
  • 501 Tidak Diimplementasikan - server tidak mendukung fungsionalitas untuk menanggapi permintaan ini;
  • 505 Versi HTTP Tidak Didukung - server tidak mendukung versi protokol HTTP yang ditentukan.
Selain kode status respons, deskripsi status juga dikirimkan, sehingga intuitif untuk memahami arti status tertentu. Protokol HTTP sangat praktis: menyediakan sejumlah besar header, yang dengannya Anda dapat mengatur komunikasi fleksibel antara klien dan server. Semua header permintaan dan respons, metode permintaan, dan kode status respons tidak dapat dipertimbangkan dalam satu artikel. Jika perlu, Anda dapat membaca spesifikasi protokol resmi , yang menjelaskan semua nuansanya. Protokol HTTP biasanya digunakan pada port 80, jadi ketika Anda melihat alamat yang berakhiran pada port 80, Anda dapat yakin bahwa alamat tersebut harus diakses melalui HTTP. Dengan perkembangan teknologi dan pergerakan aktif data pribadi di Internet, kami harus memikirkan bagaimana memberikan perlindungan tambahan untuk informasi yang dikirimkan klien ke server. Hasilnya adalah protokol HTTPS.

Apa perbedaan antara HTTPS dan HTTP

HTTPS secara sintaksis identik dengan protokol HTTP, yaitu menggunakan baris awal dan header yang sama. Satu-satunya perbedaan adalah enkripsi tambahan dan port default (443) . HTTPS dienkripsi antara HTTP dan TCP, yaitu antara lapisan aplikasi dan transport. Jika Anda lupa apa itu, lihat artikel tentang model OSI . Standar enkripsi modern adalah TLS. Kami tidak akan membahas topik ini terlalu jauh, tetapi ingat bahwa enkripsi terjadi sebelum informasi mencapai lapisan transport . HTTPS benar-benar mengenkripsi semua informasi kecuali host dan port tujuan pengiriman permintaan. Untuk mengalihkan server agar menggunakan protokol HTTPS dan bukan HTTP, kita tidak perlu mengubah kode server. Fitur ini diaktifkan di container servlet, yang akan kita bahas di artikel berikut. Itu saja untuk hari ini. Tapi tunggu sebentar. Untuk merasakan permintaan HTTP, buka Google Chrome, tekan F12, pilih tab Jaringan. Semua permintaan dan tanggapan yang dikirim/diterima oleh browser Anda akan ditampilkan di sini. Bagian 4. Dasar-dasar Maven Bagian 5. Servlet. Menulis aplikasi web sederhana Bagian 6. Kontainer servlet Bagian 7. Memperkenalkan pola MVC (Model-View-Controller) Bagian 8. Menulis aplikasi spring-boot kecil
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION