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
pipeliningmekanizması 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.