Sobes.tech
Junior

HTTP sürümleri ve farkları hakkında bilgi veriniz.

sobes.tech yapay zeka

AI'dan gelen yanıt

HTTP’nin temel sürümleri:

  • HTTP/0.9: Basit HTML belgelerinin iletimi için temel sürüm. Sadece GET yöntemi destekleniyordu, başlıklar ve yanıt durumları yoktu.
  • HTTP/1.0: Başlıkların (Content-Type, User-Agent) desteklenmesi, POST ve HEAD yöntemleri, yanıt durumlarının eklenmesiyle tanıtıldı. Bağlantı her istek/yanıt sonrası kapatılırdı.
  • HTTP/1.1: Önemli geliştirmeler:
    • Kalıcı Bağlantılar (Persistent Connections) - TCP bağlantısının birden fazla istek için yeniden kullanılması.
    • Boru Hattı (Pipelining) - önceki yanıt beklenmeden birden fazla isteğin gönderilmesi (kötü uygulanmış ve nadiren kullanılır).
    • Sanal ana makineler (Host başlığı).
    • Kısmi GET istekleri (Range başlığı).
    • Önbellekleme (Cache-Control, ETag, Last-Modified).
    • PUT ve DELETE yöntemleri.
  • HTTP/2: Google’ın SPDY protokolüne dayalı. Temel farklar:
    • İkili protokol - daha verimli ayrıştırma.
    • Çoklama (Multiplexing) - tek TCP bağlantısı üzerinden eşzamanlı çoklu istek/yanıt iletimi. "Head-of-line blocking" sorununu ortadan kaldırır.
    • Başlık sıkıştırma (HPACK) - iletilen veri boyutunu azaltır.
    • Önceliklendirme (Server Push) - sunucu, istemcinin ihtiyaç duyacağı kaynakları, istemeden önce gönderebilir.
  • HTTP/3: UDP (QUIC - Quick UDP Internet Connections) üzerine kurulu, TCP yerine. Performansı artırmaya odaklıdır, özellikle kararsız ağlarda:
    • TCP seviyesindeki "head-of-line blocking" sorununu ortadan kaldırır. TCP’de paket kaybı olursa, tüm sonraki paketler engellenir. QUIC ve HTTP/3’te sadece kaybolan paketle ilişkili akış engellenir.
    • Daha hızlı bağlantı kurulumu (0-RTT veya 1-RTT).
    • QUIC, kendi akış ve güvenilirlik mekanizmalarını içerir.

Ana farklar tablo halinde:

Özellik HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3
Protokol TCP TCP TCP UDP (QUIC)
Format Metin Metin İkili İkili
Varsayılan bağlantı Kısa ömürlü Kalıcı Kalıcı (çoklama) Kalıcı (QUIC Akışları)
Çoklama Hayır Taklit (Pipelining) Evet Evet
Başlık sıkıştırma Hayır Hayır HPACK QPACK (QUIC içinde)
Sunucu İtmesi Hayır Hayır Evet Evet
HEAD-of-line blokajı (TCP) Evet (istek seviyesinde) Evet (istek seviyesinde) Evet (bağlantı seviyesinde) Hayır (akış seviyesinde)

HTTP/1.1’deki örnek istek:

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

HTTP/2’deki örnek (kavramsal, ikili olduğu için):

// İstek 1: /index.html alın
// :method = GET
// :path = /index.html
// :authority = www.example.com

// İstek 2: /style.css alın
// :method = GET
// :path = /style.css
// :authority = www.example.com
// ...aynı bağlantı üzerinden paralel iletim