HTTP 1.0 ve 1.1


263

Birisi bana HTTP 1.0 ve HTTP 1.1 arasındaki farklara kısa bir genel bakış verebilir mi? Her iki RFC ile de biraz zaman geçirdim, ancak aralarında çok fazla fark yaratamadım. Wikipedia şunu söylüyor:

HTTP / 1.1 (1997-1999)

Şimdiki versiyonu; kalıcı bağlantılar varsayılan olarak etkindir ve proxy'lerle iyi çalışır. Aynı zamanda, birden fazla isteğin aynı anda gönderilmesine izin vererek, sunucunun iş yüküne hazırlanmasına ve istenen kaynakları istemciye daha hızlı bir şekilde aktarmasına olanak tanıyarak istek boru hattını destekler.

Ama bu benim için çok önemli değil. Bunun biraz karmaşık bir konu olduğunu anlıyorum, bu yüzden tam bir cevap beklemiyorum, ama birisi bana biraz daha düşük seviyedeki farklılıklara kısa bir genel bakış verebilir mi?
Bu yüzden bir HTTP sunucusu veya uygulama uygulamak için bilmem gereken bilgileri arıyorum demek. Çoğunlukla doğru yönde bir dürtme arıyorum, böylece kendi başıma anlayabiliyorum.


Bu önemli farklılıkların oldukça iyi bir özetidir: http://www.research.att.com/~bala/papers/h0vh1.html
Kev

3
Kaynağa gittiğiniz için iyi. Bu özeti anlamadıysanız, genel olarak ağ hakkında bir şey bilmediğiniz anlaşılıyor. Belki de bu terimleri araştırmalısınız.
Marcin

4
Bu konulara gelince hala bir acemi olmamla birlikte, asıl sorunum özetin bana "nasıl" değil, daha çok "ne" verdiğidir.
Jason Baker


Yanıtlar:


363

Proxy desteği ve Ana Bilgisayar alanı:

HTTP 1.1, spesifikasyona göre gerekli bir Ana Bilgisayar başlığına sahiptir.

HTTP 1.0 resmi olarak bir Ana Bilgisayar üstbilgisi gerektirmez, ancak bir tane eklemeye zarar vermez ve birçok uygulama (proxy) protokol sürümü ne olursa olsun Ana Bilgisayar üstbilgisini görmeyi bekler.

Misal:

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

Bu üstbilgi, bir iletiyi proxy sunucuları üzerinden yönlendirmenize izin verdiği ve ayrıca web sunucunuzun aynı sunucudaki farklı siteleri ayırt edebildiği için kullanışlıdır.

Yani bu, blahblahlbah.com ve helohelohelo.com'un her ikisinin de aynı IP'yi işaret ettiği anlamına gelir. Web sunucunuz, istemci makinesinin istediği siteyi ayırt etmek için Ana Makine alanını kullanabilir.

Kalıcı bağlantılar:

HTTP 1.1 ayrıca kalıcı bağlantılara sahip olmanızı sağlar, bu da aynı HTTP bağlantısında birden fazla istek / yanıt alabileceğiniz anlamına gelir.

HTTP 1.0'da her istek / yanıt çifti için yeni bir bağlantı açmanız gerekiyordu. Ve her yanıttan sonra bağlantı kapanacaktır. Bu, TCP Yavaş Başlatma nedeniyle bazı büyük verimlilik sorunlarına yol açar .

SEÇENEKLER yöntemi:

HTTP / 1.1, OPTIONS yöntemini sunar. Bir HTTP istemcisi, HTTP sunucusunun yeteneklerini belirlemek için bu yöntemi kullanabilir. Daha çok web uygulamalarında Çapraz Kaynak Paylaşımı için kullanılır.

Önbelleğe almak:

HTTP 1.0 üstbilgi üzerinden önbelleğe alma desteği vardı: If-Modified-Since.

HTTP 1.1, 'varlık etiketi' adlı bir şey kullanarak önbellekleme desteğini çok genişletir. 2 kaynak aynıysa, aynı varlık etiketlerine sahip olurlar.

HTTP 1.1 ayrıca If-Unmodified-Since, If-Match, If-None-Match koşul başlıklarını ekler.

Cache-Control başlığı gibi önbellekleme ile ilgili başka eklemeler de vardır.

100 Devam durumu:

HTTP / 1.1'de yeni bir dönüş kodu var. 100 Devam. Bu, sunucunun isteği işleyip işleyemeyeceğinden veya isteği işleme yetkisine sahip olup olmadığından emin olmadığında bir istemcinin büyük bir istek göndermesini önlemek içindir. Bu durumda, istemci yalnızca başlıkları gönderir ve sunucu istemciye 100 Devam, gövde ile devam etmesini söyler.

Daha fazla:

  • Özet kimlik doğrulaması ve proxy kimlik doğrulaması
  • Ekstra yeni durum kodları
  • Parçalanmış transfer kodlaması
  • Bağlantı başlığı
  • Gelişmiş sıkıştırma desteği
  • Çok çok fazla.

15
Host üstbilgisini atlarsanız HTTP / 1.0 istediklerini iddia eden birçok sunucunun / proxy'nin çok üzüleceğini unutmayın.
Paul Tomblin

2
HTTP 1.0'ın İçerik Kodlaması üstbilgisi aracılığıyla sıkıştırma desteği vardır. Paul'un belirttiği gibi, kesinlikle herhangi bir HTTP / 1.0 istemcisinin Host üstbilgisini göndermesini kesinlikle tavsiye ederim, çünkü bunu yapmak kesinlikle yasak değildir ve işler beklediğiniz gibi daha sık çalışır. Aksi halde, bu ölüdür.
cpm

@ Paul Tomblin: Teşekkürler Bu bilgiyi ekledim.
Brian R. Bondy

2
"Blahblahlbah.com ve helohelohelo.com adreslerinin ikisi de aynı IP'yi gösteriyorsa. Web sunucunuz, İstemci makinesinin istediği siteyi ayırt etmek için Ana Makine alanını kullanabilir." Peki, bir HTTP 1.0 istemcisi bize ayırt etmek için hiçbir ana bilgisayar alanı vermediğinde ne olur?
Pacerier

@Pacerier genellikle bir tür varsayılan sayfa; sunucuya bağlıdır.
Andrew Lambert

14

1.0 HTTP 1.0 (1994)

  • Hala kullanımda
  • Yığınlanmış (veya sıkıştırılmış) sunucu yanıtlarıyla başa çıkamayan bir istemci tarafından kullanılabilir

1.1 HTTP 1.1 (1996-2015)

  • Sürüm 1.0 için birçok uzantıyı resmileştirir
  • Kalıcı ve boru hatlı bağlantıları destekler
  • Parçalanmış aktarımları, sıkıştırma / açma işlemini destekler
  • Sanal barındırma (birden fazla alan barındıran tek bir IP Adresine sahip bir sunucu)
  • Birden çok dili destekler
  • Bayt aralığı aktarımlarını destekler; kesintili veri aktarımlarını sürdürmek için yararlı

HTTP 1.1, HTTP 1.0'ın bir geliştirmesidir. Aşağıda dört önemli gelişme listelenmiştir:

  1. Tek bir IP adresinden birden fazla alan adının sunulmasına izin vererek IP adreslerinin verimli kullanımı.

  2. Bir web tarayıcısının tek bir kalıcı bağlantı üzerinden birden fazla istek göndermesine izin vererek daha hızlı yanıt.

  3. Toplam uzunluğu bilinmeden bir yanıtın gönderilmesine izin veren yığınlanmış kodlama desteği ile dinamik olarak oluşturulan sayfalar için daha hızlı yanıt.
  4. Önbellek desteği ekleyerek daha hızlı yanıt ve mükemmel bant genişliği tasarrufu.

9

Önemsiz uygulamalar için (örn. Web özellikli bir termometreden bir sıcaklık değerini aralıklı olarak almak) HTTP 1.0 hem istemci hem de sunucu için iyidir. Yaklaşık 20 satırlık kodda çıplak kemikli soket tabanlı bir HTTP 1.0 istemcisi veya sunucusu yazabilirsiniz.

Daha karmaşık senaryolar için HTTP 1.1 gitmenin yoludur. Daha karmaşık HTTP 1.1 protokolünün karmaşıklıklarıyla uğraşmak için kod boyutunda 3 ila 5 kat artış olmasını bekleyin. Karmaşıklık çoğunlukla gelir, çünkü HTTP 1.1'de çeşitli üstbilgiler oluşturmanız, ayrıştırmanız ve yanıtlamanız gerekir. İstemcinizin bir HTTP kitaplığı veya sunucunun bir web uygulaması sunucusu kullanmasını sağlayarak uygulamanızı bu karmaşıklıktan koruyabilirsiniz.


7

Önemli bir uyumluluk sorunu, kalıcı bağlantılar desteğidir . Son zamanlarda HTTP / 1.1'i "destekleyen" bir sunucu üzerinde çalıştım, ancak bir istemci HTTP / 1.0 isteği gönderdiğinde bağlantıyı kapatamadım. HTTP / 1.1'i destekleyen bir sunucu yazarken, sunucunun yalnızca HTTP / 1.0 istemcileriyle de iyi çalıştığından emin olun.


8
HTTP / 1.1, HTTP / 1.0 uyumlu olmamızı gerektiriyor mu?
Pacerier

@Troy - HTTP 1.1 isteğine yanıt göndermek ve hemen sonra bağlantıyı (isteğin sunucudan okunduğu soket) kapatmak geçerli midir? Bu pratikte sunucunun HTTP 1.0
Guy Avraham

5

Başımın üstünden hatırlayabildiğim ilk farklılıklardan biri, aynı sunucuda çalışan birden fazla etki alanı, kısmi kaynak alımı, bu bir kaynağın indirilmesini almanızı ve hızlandırmanızı sağlar (neredeyse her indirme hızlandırıcısının yaptığı şeydir).

Eğer bir web sitesi veya benzer gibi bir uygulama geliştirmek istiyorsanız, farklılıklar hakkında çok fazla endişelenmenize gerek yoktur ama gerektiği arasındaki farkı biliyor GETve POSTen azından fiiller.

Şimdi bir tarayıcı geliştirmek istiyorsanız, evet, tüm protokolü bilmeniz gerekecek ve bir HTTP sunucusu geliştirmeye çalışıyorsunuz.

Yalnızca HTTP protokolünü bilmekle ilgileniyorsanız 1.0 yerine HTTP / 1.1 ile başlamanızı öneririm.


1
Methinks Jason, sıfırdan başlayarak kendi HTTP Sunucusunu / uygulamasını oluşturmayı düşünüyorsa, GET ve POST arasındaki farkı zaten biliyor. :)
Kev

1
Aslında şu anda sadece HTTP 1.0'ı destekleyen bir web sunucusu ile bazı işler yaptım, sadece 1.1 desteği eklemeye neyin dahil olduğunu merak ediyordum.
Jason Baker

2

HTTP 1.1, Internet'in TCP / IP protokol paketinin üstünde çalışan World Wide Web uygulama protokolü olan Hypertext Transfer Protocol'ün en son sürümüdür. HTTP 1.0 ile karşılaştırıldığında HTTP 1.1, Web sayfalarının orijinal HTTP'den daha hızlı yayınlanmasını sağlar ve Web trafiğini azaltır.

Web trafiği Örnek: Örneğin, bir sunucuya erişiyorsanız. Aynı zamanda pek çok kullanıcı veri için sunucuya erişiyor, o zaman Sunucuyu asmak için bir şans var. Bu Web trafiğidir.


1

HTTP 1.0'ın belirttiği şekilde ana bilgisayar üstbilgisi ile birlikte gelirken, HTTP 1.0 resmi olarak bir ana bilgisayar üstbilgisine sahip değildir, ancak bir ekleme eklemeyi reddetmez.

Ana bilgisayar üstbilgisi yararlıdır, çünkü istemcinin bir iletiyi proxy sunucusu boyunca yönlendirmesine izin verir ve 1.0 ve 1.1 HTTP sürümleri arasındaki temel fark şunlardır:

  1. HTTP 1.1, aynı HTTP bağlantısında birden fazla istek veya yanıt alabileceğimizi tanımlayan kalıcı bağlantılarla birlikte gelir.
  2. HTTP 1.0'da her istek ve yanıt için yeni bir bağlantı açmanız gerekir
  3. HTTP 1.0'da pragmaya sahipken HTTP 1.1'de Cache-Control'e sahip, bu pragmaya benzer

0

1.0 ile karşılaştırıldığında, 1.1 web trafiğini azaltır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.