Http 2 Notlarım
2 min readDec 23, 2021
2015 Yılında Chrome Dev Summit’in videosunu izlemenizi kronolojik bilgi için salık veririm.
Terimler
- h2 : http/2
- h1 : http/1.1
- h2c : Şifrelenmemiş http2 trafiği
- hpack : Başlık bilgisi için sıkıştırma. Sıkıştırma ve açma için notasyonu belirler. http/1.x için başlık bilgileri soldaki gibiyken h2'de aşağıdaki resimde olduğu gibi ilk 62 satıra anahtar değer ikililerinden oluşan bir arama tablosu halinde geliyor.
Http2'nin avantajları:
- Tek bir bağlantı üstünde çoklu veri akışı (akışları
Stream ID
ile etiketliyor). Bu akışlarda istemci bağımlılık belirleyebiliyor.
- Başlıkları ve veriyi sıkıştırıyor. SPDY sürümünde sıkıştırma varsayılan olarak herşey için yapılıyordu ancak sıkıştırılmış dosyaları (jpeg, gif vs.) da sıkıştırmanın anlamsız olduğu görülerek seçimli hale getirildi.
- Sunucu veriyi istemciye basabiliyor (istemcinin çekmesinden -pull- farklı). Buradaki push klasik anlamda bildirim push’u değil, yapılmayan isteklerin cevaplarının push ile verilmesidir. Örneğin index.html sayfası için istek yapıldığında, sunucunun “sen şimdi istemedin ama
main.css
veresim.png
dosyalarına da ihtiyacın olur, hepsini push ile göndereyim” demesidir. Elbette istemci bu push’ları iptal edebilir. Çünkü sunucu push mekanizmasını istismar ediyor olabilir! - TLS yapısında extension desteği verir. Böylece TLS kurulurken ek olarak işler yaptırabiliriz. Application Layer Protocol Negotiation bu uzantılardandır ve TLS kurulurken çalışabilir. Sunucunun Http2 desteklediğini ilk istekte bilemeyiz ama TLS el sıkışması sırasında bunu öğrenebiliriz. Browser (uygulama) ile sunucu arasında http2 veri transferini ALPN ile yapabiliriz.