Protokol HTTP digunakan untuk. Semua tentang protokol transfer data http dan https

Protokol HTTP atau HyperText Transfer Protocol adalah protokol utama (dari World Wide Web). Tugas utama protokol adalah memastikan transmisi hypertext melalui jaringan. Protokol tersebut secara tepat menggambarkan format pesan untuk pertukaran klien dan server.

Protokol HTTP dijelaskan dalam RFC 2616(HTTP1.1).

Protokol ini didasarkan pada interaksi antara klien dan server menggunakan satu permintaan ASCII dan respons berikutnya dalam standar RFC 822 MIME.

Dalam praktiknya, protokol HTTP beroperasi pada port 80, tetapi dapat dikonfigurasi secara berbeda. Meskipun TCP/IP tidak bersifat wajib, namun tetap lebih disukai karena menangani pemisahan dan penyusunan pesan dan tidak “menekan” baik browser maupun server.

Perlu dicatat bahwa protokol HTTP dapat digunakan tidak hanya dalam teknologi web, tetapi juga dalam aplikasi OOP lainnya (berorientasi tujuan).

URL

Dasar komunikasi web client-server adalah permintaan. Permintaan dikirim menggunakan URL—Uniform Internet Resource Locator. Izinkan saya mengingatkan Anda apa itu URL.

Struktur URL yang jelas dan sederhana terdiri dari elemen-elemen berikut:

  • Protokol;
  • Tuan rumah;
  • Pelabuhan;
  • Direktori sumber daya;
  • Label (Kueri).

Catatan: Protokol http adalah protokol untuk koneksi sederhana dan tidak aman. Koneksi aman beroperasi menggunakan protokol https. Lebih aman untuk pertukaran data.

Metode permintaan HTTP

Salah satu parameter URL menentukan nama host yang ingin kita ajak berkomunikasi. Tapi ini tidak cukup. Anda perlu menentukan tindakan yang akan diambil. Hal ini dapat dilakukan dengan menggunakan metode yang ditentukan oleh protokol HTTP.

Metode HTTP

  • Metode/Deskripsi
  • HEAD/Baca judul halaman web
  • DAPATKAN/Baca halaman web
  • POST/Tambahkan ke halaman web
  • PUT/Simpan halaman web
  • TRACE/Kirim kembali permintaan
  • HAPUS/Hapus halaman web
  • OPSI/Opsi tampilan
  • CONNECT/Dicadangkan untuk penggunaan di masa mendatang

Mari kita lihat metode HTTP lebih detail

metode DAPATKAN. meminta halaman (file, objek) yang dikodekan menggunakan standar MIME. Ini adalah metode yang paling banyak digunakan. Struktur metode:
DAPATKAN nama file HTTP/1.1

metode KEPALA. Metode ini meminta header pesan. Namun, halaman tersebut tidak dimuat. Metode ini memungkinkan Anda mengetahui kapan terakhir kali halaman di-refresh, yang diperlukan untuk mengelola cache halaman. Metode ini memungkinkan Anda memeriksa fungsionalitas URL yang diminta.

metode PUT. Cara ini dapat menempatkan halaman di server. Badan permintaan PUT menyertakan halaman yang akan dihosting, yang dikodekan MIME. Metode ini memerlukan identifikasi klien.

metode POSTING. Metode ini menambahkan konten ke halaman yang sudah ada. Digunakan sebagai contoh untuk menambahkan postingan ke forum.

metode HAPUS. Metode ini menghancurkan halaman. Metode penghapusan memerlukan konfirmasi hak pengguna untuk menghapus.

metode JEJAK. Ini adalah metode debugging. Ini menginstruksikan server untuk mengirim permintaan kembali dan memungkinkannya mengetahui apakah permintaan klien rusak atau tidak ketika kembali dari server.

metode HUBUNGKAN– metode cadangan, tidak digunakan.

metode OPSI memungkinkan Anda menanyakan properti server dan properti file apa pun.

Dalam komunikasi permintaan-respons antara klien dan server, server harus menghasilkan respons. Ini bisa berupa halaman web atau bilah status dengan kode status. Anda mengetahui kode status dengan baik. Salah satu kodenya adalah kode terkenal 404 – Halaman tidak ditemukan.

Grup Kode Status

1хх: Kesiapan server, Kode 100 – server siap memproses permintaan klien;

2xx: Sukses.

  • Kode 200 – permintaan berhasil diproses;
  • Kode 204 – Tidak ada konten.

3xx: Pengalihan.

  • Kode 301 – Halaman yang diminta telah dipindahkan;
  • Kode 304 – Halaman di cache masih relevan.

4xx: Kesalahan klien.

HTTP (HyperText Transfer Protocol) dikembangkan sebagai dasar dari World Wide Web.

Protokol HTTP bekerja sebagai berikut: program klien membuat koneksi TCP dengan server (port standar nomor 80) dan mengeluarkan permintaan HTTP ke sana. Server memproses permintaan ini dan mengeluarkan respons HTTP ke klien.

Struktur permintaan HTTP

Permintaan HTTP terdiri dari header permintaan dan isi permintaan, dipisahkan oleh baris kosong. Badan permintaan mungkin hilang.

Header permintaan terdiri dari baris utama (pertama) permintaan dan baris berikutnya yang memperjelas permintaan di baris utama. Baris berikutnya mungkin juga hilang.

Kueri baris utama terdiri dari tiga bagian, dipisahkan oleh spasi:

Metode(dengan kata lain, perintah HTTP):

MENDAPATKAN- permintaan dokumen. Metode yang paling umum digunakan; di HTTP/0.9, kata mereka, dialah satu-satunya.

KEPALA- permintaan judul dokumen. Ini berbeda dari GET karena hanya header permintaan dengan informasi tentang dokumen yang dikembalikan. Dokumen itu sendiri tidak dikeluarkan.

POS- metode ini digunakan untuk mentransfer data ke skrip CGI. Data itu sendiri muncul di baris permintaan berikutnya dalam bentuk parameter.

MELETAKKAN- letakkan dokumen di server. Sejauh yang saya tahu, jarang digunakan. Permintaan dengan metode ini memiliki badan tempat dokumen itu sendiri dikirimkan.

Sumber- ini adalah jalur ke file tertentu di server yang ingin diterima klien (atau tempat - untuk metode PUT). Jika sumber daya hanyalah berupa file yang akan dibaca, server harus mengembalikannya ke badan respons untuk permintaan ini. Jika ini adalah jalur ke skrip CGI, maka server akan menjalankan skrip tersebut dan mengembalikan hasil eksekusinya. Omong-omong, berkat penyatuan sumber daya ini, klien praktis tidak peduli dengan apa yang diwakilinya di server.

Versi protokol-versi protokol HTTP yang digunakan program klien.

Jadi permintaan HTTP sederhana mungkin terlihat seperti ini:

Ini meminta file root dari direktori root server web.

Baris setelah baris kueri utama memiliki format berikut:

Parameter: nilai.

Beginilah cara parameter permintaan diatur. Ini opsional; semua baris setelah baris kueri utama mungkin hilang; dalam hal ini, server menerima nilainya secara default atau berdasarkan hasil permintaan sebelumnya (saat bekerja dalam mode Keep-Alive).

Saya akan mencantumkan beberapa parameter permintaan HTTP yang paling umum digunakan:

Koneksi(koneksi) - dapat mengambil nilai Keep-Alive dan close. Keep-Alive berarti setelah dokumen ini dikeluarkan, koneksi ke server tidak terputus, dan lebih banyak permintaan dapat dikeluarkan. Sebagian besar browser bekerja dalam mode Keep-Alive, karena memungkinkan Anda untuk "mengunduh" halaman html dan gambarnya dalam satu koneksi ke server. Setelah disetel, mode Keep-Alive dipertahankan hingga kesalahan pertama atau hingga permintaan Connection: close berikutnya ditentukan secara eksplisit.
close ("close") - koneksi ditutup setelah menanggapi permintaan ini.

Agen-Pengguna- nilainya adalah "kode" browser, misalnya:

Mozilla/4.0 (kompatibel; MSIE 5.0; Windows 95; DigExt)

Menerima- daftar tipe konten yang didukung oleh browser berdasarkan preferensinya untuk browser tertentu, misalnya untuk IE5 saya:

Terima: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-excel, application/msword, application/vnd.ms-powerpoint, */*

Ini jelas diperlukan ketika server dapat mengeluarkan dokumen yang sama dalam format berbeda.

Nilai parameter ini terutama digunakan oleh skrip CGI untuk menghasilkan respons yang disesuaikan untuk browser tertentu.

Perujuk- URL dari mana Anda datang ke sumber ini.

Tuan rumah- nama host tempat sumber daya diminta. Berguna jika server memiliki beberapa server virtual dengan alamat IP yang sama. Dalam hal ini, nama server virtual ditentukan oleh bidang ini.

Bahasa Terima- bahasa yang didukung. Penting untuk server yang mungkin menyajikan dokumen yang sama dalam versi bahasa berbeda.

Format respons HTTP

Format respons sangat mirip dengan format permintaan: ia juga memiliki header dan isi yang dipisahkan oleh baris kosong.

Header juga terdiri dari baris utama dan baris parameter, tetapi format baris utama berbeda dengan header permintaan.

String kueri utama terdiri dari 3 bidang yang dipisahkan oleh spasi:

Versi protokol- mirip dengan parameter permintaan terkait.

Kode kesalahan- kode penunjukan "keberhasilan" permintaan. Kode 200 artinya “semuanya normal” (OK).

Deskripsi verbal tentang kesalahan tersebut- "menguraikan" kode sebelumnya. Misalnya untuk 200 OK, untuk 500 Internal Server Error.

Parameter respons http yang paling umum:

Koneksi- mirip dengan parameter permintaan terkait.
Jika server tidak mendukung Keep-Alive (ada beberapa), maka nilai Connection di responnya selalu close.

Oleh karena itu, menurut saya, taktik browser yang benar adalah sebagai berikut:
1. masalah Koneksi: Keep-Alive dalam permintaan;
2. Status koneksi dapat dinilai berdasarkan kolom Koneksi di respons.

Tipe Konten("tipe konten") - berisi penunjukan tipe konten respons.

Bergantung pada nilai Tipe Konten, browser menafsirkan respons sebagai halaman HTML, gambar gif atau jpeg, file yang akan disimpan ke disk, atau sesuatu yang lain dan mengambil tindakan yang sesuai. Nilai Content-Type untuk browser sama dengan nilai ekstensi file untuk Windows.

Beberapa tipe konten:

teks/html - teks dalam format HTML (halaman web);
teks/polos - teks biasa (mirip dengan Notepad);
gambar/jpeg - gambar dalam format JPEG;
gambar/gif - sama, dalam format GIF;
application/octet-stream - aliran "oktet" (yaitu hanya byte) untuk ditulis ke disk.

Sebenarnya masih banyak lagi jenis kontennya.

Panjang Konten("panjang konten") - panjang konten respons dalam byte.

Terakhir Dimodifikasi(“Terakhir diubah”) - tanggal dokumen terakhir diubah.

Halo, para pembaca situs blog yang budiman. Saat mempelajari mekanisme yang bertanggung jawab atas berfungsinya Internet dengan benar, tidak ada jalan keluar dari kebutuhan untuk mencurahkan waktu pada aspek utamanya, yang, tanpa diragukan lagi, mencakup protokol transfer data HTTP dan versi amannya HTTPS.

Dasar pengoperasian alat ini, yang memungkinkan browser pengguna membuka file dan dokumen yang diperlukan untuk memperoleh informasi, adalah teknologi "server-klien", yang rinciannya akan dibahas dalam artikel di bawah ini.

Tentunya bagi mereka yang ingin benar-benar mengabdikan aktivitasnya untuk bekerja dengan jaringan komputer dan mengembangkan program jaringan perlu mempelajari masalah ini secara maksimal untuk memperoleh kualifikasi yang sesuai. Tapi kita tidak membutuhkan ini.

Yang utama adalah memahami apa itu HTTP secara umum dan apa saja fitur utama HTTPS, serta memahami prinsip dasar yang tertanam di dalamnya. Pengetahuan tersebut akan berguna, antara lain, untuk mengoptimalkan dan mempromosikan situs web Anda, Anda akan menerima konfirmasi tanpa syarat mengenai hal ini dari artikel ini dan artikel selanjutnya tentang topik ini.

Apa itu HTTP dan bagaimana cara kerjanya?

Untuk mendapatkan dokumen yang diinginkan di Internet, pengguna hanya perlu memasukkan URL yang diinginkan ke dalam bilah pencarian browser (lebih lanjut tentang struktur URL), yang hanya berisi nama protokol HTTP (atau HTTPS).

3. HTTP/Versi— modifikasi protokol saat ini ditunjukkan. Saat ini HTTP 1.1 (Anda dapat membaca spesifikasinya). Namun, versi berikutnya dari protokol 2.0, yang didasarkan pada .

Intinya mewakili Tajuk tuan rumah sebagai bagian dari permintaan HTTP yang dikirim oleh browser ke server sesuai dengan IP yang diterima dari DNS. Untuk apa ini? Untuk mengidentifikasi situs yang diinginkan, karena server web biasanya menampung lebih dari satu sumber daya.

Mari kita lihat contoh yang jelas untuk memperkuat apa yang telah kita pelajari. Katakanlah browser menerima “tugas” dari pengguna untuk menampilkan halaman dengan alamat berikut:

Http://subscribe.ru/group/

Kemudian permintaan HTTP menggunakan metode GET dapat dibuat sebagai berikut (dalam hal ini biasanya tidak ada isi pesan):

DAPATKAN /group/ HTTP/1.1 Host: berlangganan.ru

Untuk lebih jelasnya, saya hanya memberikan contoh yang sangat sederhana, termasuk satu header Host; sebenarnya, mungkin ada beberapa di antaranya. Tapi bukan itu saja. Bagaimanapun, komunikasi penuh memerlukan dialog, yang terjadi setelah server merespons permintaan browser. Baris awal respon juga dapat digambarkan secara skematis:

Penjelasan Kode Status HTTP/Versi

Sekarang mari kita lihat secara singkat komposisi respon server:

1. Versi HTTP ditunjukkan dengan analogi dengan permintaan.

2. Kode status(Kode Status) - tiga nomor yang menginformasikan tentang status dokumen yang diminta oleh browser. Misalnya 200 - OK, halaman ada dan akan ditampilkan di browser, 301 - pengalihan telah dilakukan ke URL lain, - tidak ada halaman web di alamat tersebut (mungkin telah dihapus atau pengguna melakukan kesalahan saat memasukkan URL).

3. Penjelasan(Frase Alasan) - teks tambahan pada kode respons. Dalam beberapa kasus, penjelasannya mungkin berbeda dari standar atau tidak ada sama sekali. Hal ini juga disebabkan oleh konfigurasi perangkat lunak yang dihosting di server.

Contoh nyata? Silakan. Mari kita coba mendapatkan respon server terhadap permintaan yang saya berikan seperti contoh di atas (url “http://subscribe.ru/group/”). Ini akan terlihat seperti ini (baris header awal):

HTTP/1.1 200 OK Server: nginx Tanggal: Sabtu, 10 Jun 2017 06:36:38 GMT Tipe Konten: text/html; charset=utf-8 Koneksi: keep-alive Bahasa-Konten: ru Set-Cookie: Berlangganan::Viziter=UQkivlk7k3YO3DgjAxM2Ag==; kedaluwarsa=Kam, 31-Des-37 23:55:55 GMT; domain=berlangganan.ru; jalur=/ P3P: policyref="/w3c/p3p.xml", CP="NOI PSA UNI BUS KAMI"

Dalam hal ini, tidak ada penjelasan dan isi pesan, yang jika menggunakan metode GET, mungkin berisi, misalnya, kode HTML dari dokumen yang diminta (halaman web). Tergantung pada jenis aplikasi klien, bagian ini mungkin ada.

Jadi, mari kita rangkum secara singkat hal di atas. Jika pengguna memasukkan URL halaman yang dia cari, bermaksud mengambil kontennya untuk dilihat, browser mengirimkan permintaan GET ke server yang diinginkan dan menerima respons. Sebagai hasil dari komunikasi ini, (dalam kondisi yang menguntungkan) konten dokumen yang diminta akan ditampilkan, atau tidak.

Bagaimanapun, konten respons HTTP server (termasuk kode status) dapat memberikan informasi berguna terkait dokumen yang diminta.

Agar informasi di atas dapat dengan mudah masuk ke dalam teka-teki, sebuah contoh spesifik tidak ada. Kami akan melihatnya menggunakan salah satu (browser web ini adalah alat kerja saya) yang disebut HTTP Header.

Nyaman karena memberikan gambaran lengkap tentang interaksi klien-server, menyediakan konten dalam “satu botol” Permintaan HTTP (permintaan) dan respons (respons). Lihatlah dokumen yang dihasilkan plugin ini ketika mengikuti link dari satu halaman blog saya ke halaman lainnya:


Di sini, di bagian paling atas adalah metode GET, yang digunakan browser untuk mengakses server, serta status halaman, ditandai dengan kode status 200 OK, yang memperjelas bahwa server telah mengirimkan semua data mengenai permintaan. halaman web.

Juga menarik Header HTTP, ditunjukkan di bawah. Misalnya, barang "Referensi" memberikan informasi dalam bentuk URL tempat transisi dilakukan.

Menuju "Agen Pengguna" mencerminkan secara tepat aplikasi klien yang mengirimkan permintaan ke server web. Dalam hal ini, ini adalah browser, tetapi mungkin ada yang lain (perangkat seluler, robot pencari, dll.). Data yang disajikan dalam Agen Pengguna diperlukan oleh perangkat lunak server untuk mengidentifikasi aplikasi yang mengirimkan permintaan.

Hanya bot mesin pencari, yang memindai halaman situs web untuk memperoleh informasi yang memengaruhi peringkat, merupakan kepentingan utama kami, karena merekalah yang menentukan nasib halaman tertentu dalam hal efektivitas promosinya.

Itu sebabnya dalam publikasi berikutnya saya berencana untuk membahas lebih detail tentang cara melihat header HTTP dan memeriksa kode respons server khusus untuk permintaan robot, yang sangat penting bagi webmaster sehubungan dengan pengoptimalan sumber daya SEO. Oleh karena itu, berlanggananlah untuk menerima artikel terbaru tepat waktu.

Apa yang spesial dari protokol HTTPS yang aman?

Saya yakin semua pengguna Internet, tanpa terkecuali, termasuk pemula, mengetahui adanya protokol khusus bernama HTTPS (Hypertext Transfer Protocol Secure), yang berfungsi untuk melindungi data pribadi pada layanan tempat transfernya digunakan (sistem pembayaran, online toko, portal khusus besar, dll.).

Jika Anda memasukkan alamat halaman situs serupa, koneksi ini akan ditunjukkan dengan cara khusus. Di Google Chrome (), misalnya, akan ditampilkan gembok dengan tulisan “Tepercaya” berwarna hijau, ketika Anda mengkliknya Anda akan melihat beberapa informasi terkait perlindungan data pribadi:


Apa itu HTTPS? Sebenarnya, ini bukanlah protokol independen. Ini adalah HTTP standar, yang beroperasi melalui mekanisme TLS atau SSL, mampu menjamin enkripsi, yang mencegah peretas mencegat dan memperoleh data rahasia.

Secara default, saat mengoperasikan protokol aman, port 443 digunakan (jika Anda ingat, untuk HTTP standar adalah 80). Enkripsi HTTPS menggunakan panjang kunci 40, 56, 128 dan 256 bit (). Namun, dua opsi pertama sebaiknya tidak dipertimbangkan, karena tidak dapat memberikan tingkat keamanan yang memadai.

Baru-baru ini, mesin pencari, terutama Google, secara aktif membujuk pemilik semua situs untuk beralih ke protokol yang aman, secara halus mengisyaratkan bahwa poin ini akan diperhitungkan saat menentukan peringkat. Akibatnya, kini banyak sumber daya (bahkan blog biasa), dan bukan hanya situs yang terkait erat dengan transfer data pribadi, sudah berfungsi dengan HTTPS.

Selain itu, hoster terkemuka menawarkan pembelian sertifikat SSL aman, yang diperlukan untuk mengaktifkan koneksi aman.

Tentu saja, kami belum mempertimbangkan semua nuansa penggunaan protokol HTTP (HTTPS), yang banyak sekali. Topik ini dapat mencakup beberapa manual yang mengesankan. Namun, aspek utama yang akan berguna bagi pengguna tingkat lanjut dan webmaster telah tercakup. Jika Anda masih belum puas dengan banyaknya informasi yang diterima, Anda dapat dengan mudah melengkapinya dari video ceramah berikut, yang khususnya membahas lebih detail tentang metodenya:

Protokol utama untuk halaman di Internet adalah HTTP. Protokol ini digunakan setiap kali Anda mengunjungi situs baru, saat teks atau gambar ditampilkan di situs, saat Anda mengklik link.

Seluruh Internet didasarkan pada HTTP, meskipun sebagian besar pengguna tidak tahu seberapa populer HTTP dalam kehidupan sehari-hari mereka.

HTTP adalah protokol yang digunakan untuk mentransfer hypertext (HyperText Transfer Protocol).

Interaksi antara browser Anda dan server dengan informasi didasarkan pada protokol ini. Berkat kesederhanaannya, browser dan server terhubung dengan sangat cepat. Namun kami tidak perlu mendalami seluruh detail protokol ini; kami hanya akan menjelaskan prinsip dasar pengoperasiannya.

Ada banyak protokol yang dapat Anda gunakan di Internet, HTTP hanyalah salah satu dari sekian banyak protokol yang memiliki tugas dan tujuannya sendiri.

Ini sangat sederhana sehingga Anda sudah familiar dengan perangkat lunak yang diperlukan untuk bekerja dengan HTTP - browser Anda.

Terlepas dari nama browser, nama protokol selalu ditambahkan ke bilah alamat secara default: “http://”. Anda mungkin tidak melihat teks ini jika browser menyembunyikannya. Namun Anda hanya perlu menyalin nama situsnya, dan protokol HTTP akan disisipkan di tempat yang tepat.

- Apa arti awalan “http://” sebelum nama situs?
- Ini berarti Anda mengakses sumber daya melalui protokol HTTP.

Mengapa protokol HTTP dibuat?

Dengan bantuannya, dokumen hypertext ditransmisikan, atau, lebih sederhananya, halaman di situs yang kita butuhkan.

Klien (browser) menerima halaman web, dan server mengirimkan halaman tersebut. Teknologi ini disebut teknologi client-server.

Berkat HTTP, transmisi halaman web di Internet menjadi mungkin. Tapi apa yang terkandung dalam halaman itu sendiri yang dikirimkan server kepada kita? Kode HTML biasa yang masuk ke browser, yang hanya dapat menafsirkan informasi yang diterima dengan benar dan menunjukkan kepada Anda situs yang sudah selesai.

Baru-baru ini pada tahun 2006, hampir separuh lalu lintas HTTP di Amerika Utara berasal dari streaming audio dan video.

Cara kerja HTTP

  1. Browser mengirimkan permintaan meminta halaman server yang diinginkan.
  2. Server menerima permintaan dan mulai mencari halaman tersebut.
  3. Browser menerima respon dari server dengan hasil permintaan:
    • Kode halaman yang diminta dan informasi layanan - jika halaman ditemukan.
    • Kode kesalahan dan informasi layanan jika terjadi kegagalan.

Saat browser membuat permintaan untuk suatu file, permintaan tersebut berisi perintah HTTP khusus. Jika file yang diminta benar-benar ada di server, file tersebut dikirim. Namun halaman penerima harus memutuskan apakah akan menampilkan file di layar, menyimpannya ke disk, atau melakukan hal lain dengan hasilnya.

Untuk mengidentifikasi sumber daya di jaringan, protokol HTTP menggunakan URI global. Perbedaan antara HTTP dan protokol lainnya adalah ia tidak menyimpan statusnya. Artinya, keadaan antara pasangan permintaan-respons tidak disimpan.

HTTP bukan satu-satunya protokol yang digunakan di Internet. Juga digunakan:

  • FTP (File Transfer Protocol) adalah protokol transfer file.
  • POP (Post Office Protocol) dan SMTP (Simple Mail Transport Protocol) - untuk bertukar pesan email.
  • SHTTP (Secure Hypertext Transfer Protocol) adalah versi HTTP terenkripsi. Informasi yang dikirimkan melalui protokol ini dienkripsi. Biasanya, keamanan penting ketika data sensitif dipertukarkan.

Dan protokol lain yang memiliki satu properti bagus - semuanya bekerja tanpa disadari oleh Anda dan saya.

Maret 1991 - Tim Berners-Lee mengusulkan penggunaan HTTP.

Berners-Lee-lah yang mengembangkan semua hal pertama yang berhubungan dengan Internet: browser, server, hyperlink, situs web pertama (info.cern.ch). Anda dapat melihat seperti apa situs web pertama dengan mengikuti tautannya.

Versi HTTP telah ditingkatkan dari waktu ke waktu; HTTP 1.1 menjadi populer, yang memungkinkan Anda membiarkan koneksi antara server dan browser terbuka untuk waktu yang lama, yang membuat protokol lebih efisien.

Pada tahun 2015, HTTP/2 muncul, yang menjadi biner, dan cara informasi dipecah menjadi beberapa bagian berubah.

Keamanan HTTP

HTTP sendiri tidak menyiratkan enkripsi informasi. Namun ada ekstensi protokol yang dapat mengemas data ke dalam protokol SSL atau TLS.

HTTPS (S - Secure) adalah solusi populer yang tidak memungkinkan intersepsi informasi yang dikirimkan dan melindungi informasi dari serangan MITM “man-in-the-middle” atau serangan man-in-the-middle.

MITM pada dasarnya adalah telepon rusak yang informasinya sengaja diubah. Baik klien maupun server tidak mengetahui tentang substitusi.

HTTP terdiri dari apa?

Kami telah banyak menyebutkan bahwa server dan klien mengirim dan menerima permintaan. Lalu apa isi permintaan tersebut? Setiap pesan HTTP terdiri dari tiga bagian:

  1. Garis awal, yang menentukan jenis pesan.
  2. Header yang menjadi ciri isi pesan.
  3. Badan pesan, yang sudah berisi data yang diperlukan.

Berkat fitur HTTP, mereka mampu membuat mesin pencari, forum, dan toko online. Perdagangan datang ke Internet, penyedia Internet dan perusahaan lain yang aktivitasnya berlangsung di Internet mulai bermunculan. Dan semuanya berkat protokol HTTP, yang sekarang sudah sangat Anda kenal.

HTTP adalah protokol untuk mentransfer hypertext antar sistem terdistribusi. Faktanya, http adalah elemen fundamental dari Web modern. Sebagai pengembang web yang menghargai diri sendiri, kita harus mengetahui sebanyak mungkin tentangnya.

Mari kita lihat protokol ini melalui kacamata profesi kita. Pada bagian pertama, kita akan membahas dasar-dasarnya dan melihat permintaan/tanggapan. Pada artikel berikutnya kita akan melihat fitur yang lebih detail, seperti caching, pemrosesan koneksi, dan otentikasi.

Juga dalam artikel ini saya terutama akan merujuk pada standar RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1.

Dasar-dasar HTTP

HTTP memungkinkan komunikasi antara banyak host dan klien, dan mendukung berbagai pengaturan jaringan.

Pada dasarnya, TCP/IP digunakan untuk komunikasi, tapi ini bukan satu-satunya pilihan yang memungkinkan. Secara default, TCP/IP menggunakan port 80, tetapi port lain dapat digunakan.

Komunikasi antara host dan klien terjadi dalam dua tahap: permintaan dan respons. Klien menghasilkan permintaan HTTP, sebagai tanggapannya server memberikan respons (pesan). Nanti kita akan melihat skema kerja ini lebih detail.

Versi protokol HTTP saat ini adalah 1.1, yang mana beberapa fitur baru telah diperkenalkan. Menurut pendapat saya, yang paling penting adalah: dukungan untuk koneksi yang terus terbuka, mekanisme transfer data baru, pengkodean transfer chunked, header baru untuk caching. Kita akan melihat beberapa di antaranya di bagian kedua artikel ini.

URL

Inti dari komunikasi web adalah permintaan, yang dikirim melalui Uniform Resource Locator (URL). Saya yakin Anda sudah mengetahui apa itu URL, namun demi kelengkapan, saya memutuskan untuk menyampaikan beberapa patah kata. Struktur URL sangat sederhana dan terdiri dari komponen-komponen berikut:

Protokolnya bisa berupa http untuk koneksi reguler atau https untuk pertukaran data yang lebih aman. Port defaultnya adalah 80. Ini diikuti dengan jalur ke sumber daya di server dan rangkaian parameter.

Metode

Dengan menggunakan URL, kita menentukan nama pasti dari host yang ingin kita ajak berkomunikasi, namun tindakan apa yang perlu kita lakukan hanya dapat dikomunikasikan menggunakan metode HTTP. Tentu saja ada beberapa jenis tindakan yang bisa kita lakukan. HTTP mengimplementasikan hal-hal yang paling diperlukan, sesuai dengan kebutuhan sebagian besar aplikasi.

Metode yang ada:

MENDAPATKAN: Akses sumber daya yang ada. URL mencantumkan semua informasi yang diperlukan agar server dapat menemukan dan mengembalikan sumber daya yang diminta sebagai respons.

POS: Digunakan untuk membuat sumber daya baru. Permintaan POST biasanya berisi semua informasi yang diperlukan untuk membuat sumber daya baru.

MELETAKKAN: Memperbarui sumber daya saat ini. Permintaan PUT berisi data yang akan diperbarui.

MENGHAPUS: Digunakan untuk menghapus sumber daya yang ada.

Metode ini adalah yang paling populer dan paling sering digunakan oleh berbagai alat dan kerangka kerja. Dalam beberapa kasus, permintaan PUT dan DELETE dikirim dengan mengirimkan POST, yang isinya menunjukkan tindakan yang perlu dilakukan pada sumber daya: membuat, memperbarui, atau menghapus.

HTTP juga mendukung metode lain:

KEPALA: Mirip dengan DAPATKAN. Perbedaannya adalah dengan jenis permintaan ini tidak ada pesan yang dikirimkan. Server hanya menerima header. Digunakan, misalnya, untuk menentukan apakah suatu sumber daya telah dimodifikasi.

JEJAK: selama transmisi, permintaan melewati banyak titik akses dan server proxy, yang masing-masing memasukkan informasinya sendiri: IP, DNS. Dengan menggunakan metode ini, Anda dapat melihat semua informasi perantara.

OPSI: Digunakan untuk menentukan kemampuan server, pengaturan, dan konfigurasi untuk sumber daya tertentu.

Kode status

Menanggapi permintaan dari klien, server mengirimkan respons, yang juga berisi kode status. Kode ini memiliki arti khusus agar klien dapat lebih memahami dengan jelas bagaimana mengartikan respon:

1xx: Pesan informasi

Satu set kode ini diperkenalkan di HTTP/1.1. Server dapat mengirimkan permintaan dalam bentuk: Harapkan: 100-lanjutkan, yang berarti klien masih mengirimkan sisa permintaan. Klien yang menjalankan HTTP/1.0 mengabaikan header ini.

2xx: Pesan sukses

Jika klien menerima kode dari seri 2xx, maka permintaan berhasil dikirim. Opsi paling umum adalah 200 OK. Dengan permintaan GET, server mengirimkan respons di isi pesan. Ada juga kemungkinan jawaban lain:

  • 202 Diterima: Permintaan diterima, tetapi mungkin tidak berisi sumber daya dalam responsnya. Ini berguna untuk permintaan asinkron di sisi server. Server menentukan apakah akan mengirim sumber daya atau tidak.
  • 204 Tidak Ada Konten: Tidak ada pesan di badan respons.
  • 205 Atur Ulang Konten: Memerintahkan server untuk mengatur ulang presentasi dokumen.
  • 206 Isi Sebagian: Responsnya hanya berisi sebagian konten. Header tambahan menentukan panjang total konten dan informasi lainnya.

3xx: Pengalihan

Semacam pesan kepada klien tentang perlunya mengambil tindakan lain. Kasus penggunaan yang paling umum adalah mengarahkan klien ke alamat lain.

  • 301 Dipindahkan Secara Permanen: Sumber daya sekarang dapat ditemukan di URL yang berbeda.
  • 303 Lihat Lainnya: Sumber daya untuk sementara dapat ditemukan di URL yang berbeda. Header Lokasi berisi URL sementara.
  • 304 Tidak Dimodifikasi: Server menentukan bahwa sumber daya belum diubah dan klien perlu menggunakan versi respons yang di-cache. Untuk memeriksa identitas informasi, ETag (Entity Tag hash) digunakan;

4xx: Kesalahan klien

Kelas pesan ini digunakan oleh server jika server memutuskan bahwa permintaan dikirim karena kesalahan. Kode yang paling umum adalah 404 Tidak Ditemukan. Ini berarti sumber daya tidak ditemukan di server. Kode lain yang mungkin:

  • 400 Permintaan Buruk: Pertanyaan yang dibentuk salah.
  • 401 Tidak Sah: Otentikasi diperlukan untuk membuat permintaan. Informasi dikirimkan melalui header Otorisasi.
  • 403 Dilarang: Server tidak mengizinkan akses ke sumber daya.
  • Metode 405 Tidak Diizinkan: Metode HTTP yang tidak valid digunakan untuk mengakses sumber daya.
  • 409 Konflik: server tidak dapat memproses permintaan sepenuhnya karena mencoba mengubah versi sumber daya yang lebih baru. Hal ini sering terjadi pada permintaan PUT.

5xx: Kesalahan server

Serangkaian kode yang digunakan untuk mendeteksi kesalahan server saat memproses permintaan. Yang paling umum: 500 Kesalahan Server Internal. Pilihan lain:

  • 501 Tidak Diimplementasikan: Server tidak mendukung fungsionalitas yang diminta.
  • 503 Layanan Tidak Tersedia: Hal ini dapat terjadi jika server mengalami error atau kelebihan beban. Biasanya dalam kasus ini, server tidak merespon, dan waktu yang diberikan untuk respon telah habis.

Format Pesan Permintaan/Respon

Pada gambar berikut Anda dapat melihat proses skema pengiriman permintaan oleh klien, pemrosesan dan pengiriman respons oleh server.

Mari kita lihat struktur pesan yang dikirimkan melalui HTTP:

Pesan = *() CRLF [ ] = Baris Permintaan | Jalur Status = Nama Bidang ":" Nilai Bidang

Harus ada baris kosong antara header dan isi pesan. Mungkin ada beberapa judul:

Isi respons dapat berisi seluruh atau sebagian informasi jika fitur terkait diaktifkan (Transfer-Encoding: terpotong). HTTP/1.1 juga mendukung header Transfer-Encoding.

Judul Umum

Berikut beberapa jenis header yang digunakan dalam permintaan dan tanggapan:

General-header = Kontrol Cache | Koneksi | Tanggal | Pragma | Cuplikan | Pengkodean Transfer | Tingkatkan | Melalui | Peringatan

Beberapa hal sudah kami bahas di artikel ini, beberapa akan kami bahas lebih detail di bagian kedua.

Header via digunakan dalam permintaan TRACE, dan diperbarui oleh semua server proxy.

Header Pragma digunakan untuk membuat daftar header khusus. Misalnya, Pragma: tanpa cache sama dengan Kontrol Cache: tanpa cache. Kita akan membicarakan hal ini lebih lanjut di bagian kedua.

Header Tanggal digunakan untuk menyimpan tanggal dan waktu permintaan/respons.

Header Upgrade digunakan untuk mengubah protokol.

Transfer-Encoding dimaksudkan untuk membagi respon menjadi beberapa bagian menggunakan Transfer-Encoding: chunked. Ini adalah fitur baru di HTTP/1.1.

Header Entitas

Header entitas menyampaikan informasi meta tentang konten:

Header entitas = Izinkan | Pengkodean Konten | Bahasa Konten | Panjang Konten | Lokasi Konten | Konten-MD5 | Rentang Konten | Tipe Konten | Kedaluwarsa | Terakhir Dimodifikasi

Semua header yang diawali dengan Konten- memberikan informasi tentang struktur, pengkodean, dan ukuran isi pesan.

Header Kedaluwarsa berisi waktu dan tanggal kedaluwarsa entitas. Nilai “never expired” berarti waktu + 1 kode dari momen saat ini. Terakhir Dimodifikasi berisi waktu dan tanggal entitas terakhir diubah.

Dengan menggunakan header ini, Anda dapat menentukan informasi yang diperlukan untuk tugas Anda.

Format Permintaan

Permintaannya terlihat seperti ini:

Baris Permintaan = Metode SP URI SP Versi HTTP Metode CRLF = "OPSI" | "KEPALA" | "DAPATKAN" | "POSTING" | "MASUKKAN" | "HAPUS" | "JEJAK"

SP adalah pemisah antar token. Versi HTTP ditentukan dalam Versi HTTP. Permintaan sebenarnya terlihat seperti ini:

DAPATKAN /articles/http-basics HTTP/1.1 Host: www.articles.com Koneksi: keep-alive Kontrol Cache: tanpa cache Pragma: tanpa cache Terima: text/html,application/xhtml+xml,application/xml; q=0,9,*/*;q=0,8

Daftar kemungkinan header permintaan:

Header-permintaan = Terima | Terima-Charset | Terima-Pengkodean | Bahasa Terima | Otorisasi | Harapkan | Dari | Tuan rumah | Jika-Cocok | Jika-Dimodifikasi-Sejak | Jika-Tidak Ada-Cocok | Jika-Rentang | Jika-Tidak Dimodifikasi-Sejak | Maju Maks | Otorisasi Proksi | Rentang | Referensi | TE | Agen-Pengguna

Header Terima menentukan jenis mime, bahasa, dan pengkodean karakter yang didukung. Header Dari, Host, Perujuk, dan Agen-Pengguna berisi informasi tentang klien. Awalan if- dimaksudkan untuk menciptakan kondisi. Jika kondisi tidak lolos, akan terjadi kesalahan 304 Not Modified.

Format Respons

Format respon hanya berbeda pada status dan jumlah header. Statusnya terlihat seperti ini:

Status-Line = Versi HTTP SP Kode Status SP Alasan-Frase CRLF

  • Versi HTTP
  • Kode status
  • Pesan status yang dapat dibaca manusia

Status normalnya terlihat seperti ini:

HTTP/1.1 200 Oke

Header responsnya bisa sebagai berikut:

Respons-header = Rentang Terima | Usia | ETag | Lokasi | Otentikasi Proksi | Coba Lagi-Setelah | Server | Bervariasi | WWW-Otentikasi

  • Usia adalah waktu dalam detik saat pesan dibuat di server.
  • Entitas ETag MD5 untuk memeriksa perubahan dan modifikasi respons.
  • Lokasi digunakan untuk pengalihan dan berisi URL baru.
  • Server menentukan server tempat respons dihasilkan.

Saya rasa cukup teori untuk hari ini. Sekarang mari kita lihat alat yang dapat kita gunakan untuk memantau pesan HTTP.

Alat untuk mendeteksi lalu lintas HTTP

Ada banyak alat untuk memantau lalu lintas HTTP. Berikut ini beberapa di antaranya:

Yang paling umum digunakan adalah Alat Pengembang Chrome:

Jika kita berbicara tentang debugger, Anda dapat menggunakan Fiddler:

Untuk memantau lalu lintas HTTP Anda memerlukan curl, tcpdump, dan tshark.

Perpustakaan untuk bekerja dengan HTTP - jQuery AJAX

Karena jQuery sangat populer, jQuery juga memiliki alat untuk menangani respons HTTP untuk permintaan AJAX. Informasi tentang jQuery.ajax(pengaturan) dapat ditemukan di situs resminya.

Dengan meneruskan objek pengaturan dan menggunakan fungsi panggilan balik beforeSend, kita dapat menyetel header permintaan menggunakan metode setRequestHeader().

$.ajax(( url: "http://www.articles.com/latest", ketik: "GET", beforeSend: function (jqXHR) ( jqXHR.setRequestHeader("Accepts-Language", "en-US,en "); ) ));

Jika Anda ingin memproses status permintaan, Anda dapat melakukannya seperti ini:

$.ajax(( statusCode: ( 404: function() ( alert("halaman tidak ditemukan"); ) ) ));

Intinya

Ini dia, tur tentang dasar-dasar protokol HTTP. Bagian kedua akan memuat lebih banyak fakta dan contoh menarik.

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat