HTTP 1.0 vs 1.1

263

Bisakah seseorang memberi saya gambaran singkat tentang perbedaan antara HTTP 1.0 dan HTTP 1.1? Saya telah menghabiskan waktu dengan kedua RFC, tetapi belum bisa mengeluarkan banyak perbedaan di antara mereka. Wikipedia mengatakan ini:

HTTP / 1.1 (1997-1999)

Versi sekarang; koneksi persisten diaktifkan secara default dan bekerja dengan baik dengan proxy. Juga mendukung pemipaan permintaan, memungkinkan beberapa permintaan dikirim pada saat yang sama, memungkinkan server untuk mempersiapkan beban kerja dan berpotensi mentransfer sumber daya yang diminta lebih cepat ke klien.

Tetapi itu tidak berarti banyak bagi saya. Saya menyadari ini adalah topik yang agak rumit, jadi saya tidak mengharapkan jawaban lengkap, tetapi bisakah seseorang memberi saya gambaran singkat tentang perbedaan pada tingkat yang sedikit lebih rendah?
Maksud saya, saya sedang mencari info yang perlu saya ketahui untuk mengimplementasikan server HTTP atau aplikasi. Saya kebanyakan mencari dorongan ke arah yang benar sehingga saya bisa mengetahuinya sendiri.

Jason Baker
sumber
Ini adalah ringkasan yang cukup bagus dari perbedaan utama: http://www.research.att.com/~bala/papers/h0vh1.html
Kev
3
Bagus untukmu karena pergi ke sumbernya. Sepertinya Anda tidak tahu banyak tentang jaringan secara umum, jika Anda tidak mengerti ringkasan itu. Mungkin Anda harus meneliti istilah-istilah itu juga.
Marcin
4
Meskipun saya masih pemula dalam hal ini, masalah utama saya adalah bahwa ringkasan memberi saya lebih banyak "apa" daripada "bagaimana."
Jason Baker

Jawaban:

363

Dukungan proxy dan bidang Host:

HTTP 1.1 memiliki header Host yang diperlukan berdasarkan spesifikasi.

HTTP 1.0 tidak secara resmi memerlukan header Host, tetapi tidak ada salahnya untuk menambahkan satu, dan banyak aplikasi (proksi) berharap untuk melihat header Host terlepas dari versi protokol.

Contoh:

GET / HTTP/1.1
Host: www.blahblahblahblah.com

Header ini berguna karena memungkinkan Anda untuk merutekan pesan melalui server proxy, dan juga karena server web Anda dapat membedakan antara berbagai situs di server yang sama.

Jadi ini berarti jika Anda memiliki blahblahlbah.com dan helohelohelo.com keduanya menunjuk ke IP yang sama. Server web Anda dapat menggunakan bidang Host untuk membedakan situs mana yang diinginkan oleh mesin klien.

Koneksi gigih:

HTTP 1.1 juga memungkinkan Anda untuk memiliki koneksi persisten yang berarti bahwa Anda dapat memiliki lebih dari satu permintaan / respons pada koneksi HTTP yang sama.

Di HTTP 1.0 Anda harus membuka koneksi baru untuk setiap pasangan permintaan / respons. Dan setelah setiap respons, koneksi akan ditutup. Ini menyebabkan beberapa masalah efisiensi besar karena TCP Slow Start .

Metode PILIHAN:

HTTP / 1.1 memperkenalkan metode OPSI. Klien HTTP dapat menggunakan metode ini untuk menentukan kemampuan server HTTP. Ini sebagian besar digunakan untuk Cross Origin Resource Sharing dalam aplikasi web.

Caching:

HTTP 1.0 memiliki dukungan untuk caching melalui header: If-Modified-Sejak.

HTTP 1.1 memperluas dukungan caching dengan menggunakan sesuatu yang disebut 'tag entitas'. Jika 2 sumber daya sama, maka mereka akan memiliki tag entitas yang sama.

HTTP 1.1 juga menambahkan header bersyarat If-Unmodified-Because, If-Match, If-None-Match.

Ada juga tambahan lebih lanjut yang berkaitan dengan caching seperti header Cache-Control.

100 Lanjutkan status:

Ada kode pengembalian baru di HTTP / 1.1 100 Lanjutkan. Ini untuk mencegah klien mengirim permintaan besar ketika klien itu bahkan tidak yakin apakah server dapat memproses permintaan, atau diizinkan untuk memproses permintaan tersebut. Dalam hal ini klien hanya mengirim header, dan server akan memberi tahu klien 100 Lanjutkan, lanjutkan dengan tubuh.

Lebih banyak:

  • Otentikasi pencernaan dan otentikasi proxy
  • Kode status ekstra baru
  • Pengkodean transfer terpotong
  • Header koneksi
  • Dukungan kompresi yang ditingkatkan
  • Jauh lebih banyak.
Brian R. Bondy
sumber
15
Perhatikan bahwa banyak server / proksi yang mengklaim menginginkan HTTP / 1.0 akan sangat marah jika Anda mengabaikan header Host.
Paul Tomblin
2
HTTP 1.0 memang memiliki dukungan untuk kompresi melalui header Content-Encoding. Seperti yang disebutkan Paul, saya pasti akan merekomendasikan klien HTTP / 1.0 untuk mengirim header Host, karena itu tidak dilarang untuk melakukannya dan banyak hal akan lebih sering berfungsi seperti yang Anda harapkan. Kalau tidak, ini sudah mati.
cpm
@ Paul Tomblin: Terima kasih saya menambahkan info ini.
Brian R. Bondy
2
Mengenai "jika Anda memiliki blahblahlbah.com dan helohelohelo.com keduanya menunjuk ke IP yang sama. Server web Anda dapat menggunakan bidang Host untuk membedakan situs mana yang diinginkan oleh mesin klien." Jadi apa yang terjadi ketika klien HTTP 1.0 tidak memberi kita bidang host untuk dibedakan?
Pacerier
@Pacerier biasanya merupakan halaman default dari beberapa jenis; itu tergantung pada server.
Andrew Lambert
14

 HTTP 1.0 (1994)

  • Masih digunakan
  • Dapat digunakan oleh klien yang tidak dapat menangani balasan server yang terpotong (atau dikompresi)

 HTTP 1.1 (1996-2015)

  • Memformalkan banyak ekstensi ke versi 1.0
  • Mendukung koneksi persisten dan pipelined
  • Mendukung transfer terpotong, kompresi / dekompresi
  • Mendukung hosting virtual (server dengan satu alamat IP hosting beberapa domain)
  • Mendukung banyak bahasa
  • Mendukung transfer rentang byte; berguna untuk melanjutkan transfer data yang terputus

HTTP 1.1 adalah peningkatan dari HTTP 1.0. Berikut ini daftar empat peningkatan utama:

  1. Penggunaan alamat IP yang efisien, dengan memungkinkan beberapa domain dilayani dari satu alamat IP.

  2. Respons lebih cepat, dengan memungkinkan peramban web mengirim beberapa permintaan melalui satu koneksi persisten.

  3. Respons lebih cepat untuk halaman yang dibuat secara dinamis, dengan dukungan untuk pengkodean chunked, yang memungkinkan respons dikirim sebelum total panjangnya diketahui.
  4. Respons lebih cepat dan penghematan bandwidth besar, dengan menambahkan dukungan cache.
i_thamary
sumber
9

Untuk aplikasi sepele (mis. Mengambil nilai suhu secara sporadis dari termometer yang diaktifkan web) HTTP 1.0 baik untuk klien dan server. Anda dapat menulis klien atau server HTTP 1.0 yang berbasis socket telanjang di sekitar 20 baris kode.

Untuk skenario yang lebih rumit, HTTP 1.1 adalah caranya. Harapkan peningkatan 3 hingga 5 kali lipat dalam ukuran kode untuk berurusan dengan seluk-beluk protokol HTTP 1.1 yang lebih kompleks. Kerumitan utamanya datang, karena dalam HTTP 1.1 Anda harus membuat, mengurai, dan merespons berbagai tajuk. Anda dapat melindungi aplikasi Anda dari kompleksitas ini dengan meminta klien menggunakan perpustakaan HTTP, atau server menggunakan server aplikasi web.

Diomidis Spinellis
sumber
7

Masalah kompatibilitas utama adalah dukungan untuk koneksi persisten . Saya baru-baru ini bekerja pada server yang "mendukung" HTTP / 1.1, namun gagal untuk menutup koneksi ketika klien mengirim permintaan HTTP / 1.0. Saat menulis server yang mendukung HTTP / 1.1, pastikan juga bekerja dengan baik dengan klien HTTP / 1.0 saja.

Troy J. Farrell
sumber
8
Apakah HTTP / 1.1 mengharuskan kita untuk kompatibel dengan HTTP / 1.0?
Pacerier
@Troy - Apakah valid untuk mengirim respons ke permintaan HTTP 1.1 dan segera setelah itu menutup koneksi (soket yang permintaannya dibaca dari pada server)? Yang praktis berarti bahwa server mengimplementasikan HTTP 1.0
Guy Avraham
5

Salah satu perbedaan pertama yang dapat saya ingat dari atas kepala saya adalah beberapa domain yang berjalan di server yang sama, pengambilan sumber daya parsial, ini memungkinkan Anda untuk mengambil dan mempercepat pengunduhan sumber daya (itulah yang dilakukan hampir setiap akselerator pengunduhan).

Jika Anda ingin mengembangkan aplikasi seperti situs web atau sejenisnya, Anda tidak perlu terlalu khawatir tentang perbedaan tetapi Anda harus tahu perbedaan antara GETdan POSTkata kerja setidaknya.

Sekarang jika Anda ingin mengembangkan peramban maka ya, Anda harus mengetahui protokol yang lengkap serta jika Anda mencoba mengembangkan server HTTP.

Jika Anda hanya tertarik untuk mengetahui protokol HTTP, saya sarankan Anda mulai dengan HTTP / 1.1, bukan 1.0.

Leandro López
sumber
1
Methinks Jason sudah tahu perbedaan antara GET dan POST jika dia mempertimbangkan untuk membangun HTTP Server / aplikasi sendiri dari bawah ke atas. :)
Kev
1
Saya sebenarnya telah melakukan beberapa pekerjaan dengan server web yang saat ini hanya mendukung HTTP 1.0, saya hanya ingin tahu apa yang terlibat dalam menambahkan dukungan 1.1.
Jason Baker
2

HTTP 1.1 adalah versi terbaru dari Hypertext Transfer Protocol, protokol aplikasi World Wide Web yang berjalan di atas protokol TCP / IP Internet. dibandingkan dengan HTTP 1.0, HTTP 1.1 menyediakan pengiriman halaman Web yang lebih cepat daripada HTTP asli dan mengurangi lalu lintas Web.

Lalu lintas web Contoh: Misalnya, jika Anda mengakses server. Pada saat yang sama begitu banyak pengguna mengakses server untuk data, Lalu ada kemungkinan untuk menggantung Server. Ini adalah lalu lintas Web.

Krishna Mohan
sumber
1

HTTP 1.1 dilengkapi dengan header host dalam spesifikasinya sedangkan HTTP 1.0 tidak secara resmi memiliki header host, tetapi tidak menolak untuk menambahkannya.

Header host berguna karena memungkinkan klien untuk merutekan pesan melalui server proxy, dan perbedaan utama antara versi 1.0 dan 1.1 HTTP adalah:

  1. HTTP 1.1 dilengkapi dengan koneksi persisten yang menetapkan bahwa kita dapat memiliki lebih dari satu permintaan atau respons pada koneksi HTTP yang sama.
  2. sementara di HTTP 1.0 Anda harus membuka koneksi baru untuk setiap permintaan dan respons
  3. Dalam HTTP 1.0 ia memiliki pragma sementara di HTTP 1.1 ia memiliki Kontrol-Cache ini mirip dengan pragma
Niraj Kumar Jena
sumber
0

Dibandingkan dengan 1.0, 1.1 mengurangi lalu lintas web

Ram MVS
sumber