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
GETyöntemi destekleniyordu, başlıklar ve yanıt durumları yoktu. - HTTP/1.0: Başlıkların (Content-Type, User-Agent) desteklenmesi,
POSTveHEADyö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