Sobes.tech
Middle

HTTP/1 ve HTTP/2 arasındaki fark nedir?

sobes.tech yapay zeka

AI'dan gelen yanıt

Temel farklar:

  • Çoklama (Multiplexing). HTTP/2, aynı TCP bağlantısı üzerinden birden fazla isteği ve yanıtı aynı anda göndermeye ve almaya olanak tanır. HTTP/1.1, her istek/yanıt için ayrı bağlantı gerektiriyordu (bazı durumlarda pipelining mekanizması kullanılsa da, sınırlamaları vardı).
  • Başlık Sıkıştırma. HTTP/2, HPACK algoritmasıyla başlıkların boyutunu ve iletilen veri miktarını azaltmak için sıkıştırma kullanır. HTTP/1.1'de başlıklar düz metin olarak gönderilir.
  • Akış Önceliklendirme. HTTP/2'de, istemci farklı akışlar (istek/yanıtlar) için öncelik belirtebilir, bu da sunucunun veri teslim sırasını optimize etmesine olanak tanır. HTTP/1.1 böyle bir mekanizmaya sahip değildir.
  • Sunucu İtmesi (Server Push). HTTP/2, sunucunun, istemci onu talep etmeden önce kaynakları göndermesine izin verir, bu da sayfa görüntüleme için gerekli oldukları varsayımına dayanır. HTTP/1.1'de, istemci her kaynağı açıkça talep etmelidir.
  • Çerçeve Formatı. HTTP/2, verileri ikili formatta (çerçeve) iletir, bu da çözümlemeyi kolaylaştırır ve HTTP/1.1'in metin formatına göre verimliliği artırır.

Tabloyla karşılaştırma:

Özellik HTTP/1.1 HTTP/2
Bağlantı Her istek için ayrı bağlantı (pipelining olmadan) Birden fazla akış için tek bağlantı
Çoklama Yok (veya sınırlı pipelining ile) Evet
Başlık Sıkıştırma Yok HPACK (ikili sıkıştırma)
Akış Önceliklendirme Yok Evet
Sunucu İtmesi Yok Evet
Veri Formatı Metin İkili (çerçeve)
Head-of-Line Engelleme Mevcut Kısmen çoklama ile çözülüyor

HTTP/1.1 ile istek örneği:

// GET /index.html HTTP/1.1
// Host: example.com
// User-Agent: curl/7.68.0
// Accept: */*

HTTP/2'de kısmi veri gösterimi (çerçeve alışverişi daha karmaşık ve burada bu kadar basit gösterilmiyor):

// HTTP/2'de etkileşim, çerçeve seviyesinde (HEADERS, DATA vb.) gerçekleşir,
// bunlar ikili olup uygulama seviyesinde kullanıcıdan gizlidir.
// Sadece gösterim amacıyla basit metinle temsil etmek zordur.
// Başlıklar sıkıştırılır ve HEADERS çerçevesinde iletilir.
// Yanıt gövdesi DATA çerçevesinde iletilir.