Web'in Temel Protokolü: HTTP Nedir ve Nasıl Çalışır?
Web'in Temel Protokolü: HTTP Nedir ve Nasıl Çalışır?
Tarayıcınızın adres çubuğuna bir web sitesi adresi yazıp 'Enter' tuşuna bastığınız anda, arka planda milisaniyeler içinde devasa bir veri trafiği ve iletişim süreci başlar. Bu iletişimin sorunsuz, evrensel ve standart bir formatta gerçekleşmesini sağlayan kural kümesi ise HTTP'dir.
İnternetin omurgasını oluşturan HTTP protokolünün ne olduğunu, nasıl çalıştığını, metotlarını ve durum kodlarını adım adım inceleyelim.
1. HTTP Nedir?
HTTP (HyperText Transfer Protocol - Hiper Metin Transfer Protokolü), istemciler (web tarayıcıları, mobil uygulamalar) ile web sunucuları arasında metin, görsel, video gibi web kaynaklarının aktarılmasını sağlayan bir uygulama katmanı (Application Layer) iletişim protokolüdür.
1989 yılında Tim Berners-Lee ve ekibi tarafından tasarlanan HTTP, web sitelerinin sayfalarını barındıran sunucular ile o sayfaları görüntülemek isteyen kullanıcılar arasında evrensel bir anlaşma dili işlevi görür.
HTTP'nin Temel Özellikleri
- İstemci-Sunucu Modeli (Client-Server): İletişim her zaman istemcinin bir istek (Request) göndermesiyle başlar ve sunucunun buna bir yanıt (Response) dönmesiyle tamamlanır.
- Durumsuzluk (Stateless): HTTP varsayılan olarak durumsuzdur. Yani sunucu, art arda gelen iki istek arasında bir bağ kurmaz ve önceki isteğe ait bilgiyi hafızasında tutmaz (Bu durum, oturum yönetimi için Cookie ve Session gibi yapılarla desteklenir).
- Medya Bağımsızlığı (Media Independent): HTTP üzerinden yalnızca HTML değil; JSON, XML, PDF, ses veya resim dosyası gibi her türlü ikili (binary) veya metin tabanlı veri taşınabilir. Verinin türü
Content-Typebaşlığı (header) ile belirtilir.
2. HTTP Nasıl Çalışır? (İstek ve Yanıt Döngüsü)
Bir web sayfasına erişmek istediğinizde süreç şu üç temel adımda gerçekleşir:
[İstemci (Tarayıcı)] ---- 1. HTTP Request (İstek) ----> [Web Sunucusu]
[İstemci (Tarayıcı)] <--- 2. HTTP Response (Yanıt) --- [Web Sunucusu]
1. HTTP İsteği (Request)
Tarayıcının sunucuya gönderdiği paket şu bileşenlerden oluşur:
- İstek Satırı (Request Line): Metot türü (
GET,POSTvb.), hedeflenen URL yolu (/blog/yazilar) ve HTTP sürümü. - Başlıklar (Headers): İstemci hakkında meta bilgiler (örn.
User-Agent,Accept,Authorization). - Gövde (Body): Sunucuya gönderilen veri (özellikle
POST,PUTgibi işlemlerde JSON veya form verisi içerir).
2. HTTP Yanıtı (Response)
Sunucunun istemciye döndüğü veri paketi:
- Durum Satırı (Status Line): HTTP sürümü ve durum kodu (örn.
HTTP/1.1 200 OK). - Yanıt Başlıkları (Response Headers): Sunucu ve veri bilgileri (örn.
Content-Type: text/html,Set-Cookie). - Gövde (Body): Kullanıcıya gösterilecek HTML içeriği, JSON verisi veya görsel dosyası.
3. Sık Kullanılan HTTP Durum Kodları (Status Codes)
Sunucu, gelen isteğin nasıl sonuçlandığını 3 haneli sayısal kodlarla bildirir:
| Kod Aralığı | Kategori | Örnek Kodlar ve Anlamları |
|---|---|---|
| 1xx | Bilgilendirme (Informational) | 100 Continue (İstek alındı, işleme devam ediliyor) |
| 2xx | Başarı (Success) | 200 OK (Başarılı), 201 Created (Kaynak oluşturuldu) |
| 3xx | Yönlendirme (Redirection) | 301 Moved Permanently (Kalıcı taşındı), 304 Not Modified (Önbellekten oku) |
| 4xx | İstemci Hatası (Client Error) | 400 Bad Request (Hatalı istek), 401 Unauthorized (Yetkisiz), 404 Not Found (Bulunamadı) |
| 5xx | Sunucu Hatası (Server Error) | 500 Internal Server Error (Sunucu içi hata), 502 Bad Gateway, 503 Service Unavailable |
4. HTTP ve HTTPS Arasındaki Fark Nedir?
HTTP üzerindeki veriler düz metin (plain text) olarak iletilir. Bu durum, araya giren üçüncü tarafların (Man-in-the-Middle) kullanıcı adı, şifre ve kredi kartı gibi hassas verileri okuyabilmesine olanak tanır.
- HTTPS (HTTP Secure): HTTP protokolünün SSL/TLS (Transport Layer Security) sertifikası ile şifrelenmiş halidir.
- İstemci ve sunucu arasındaki tüm trafik asimetrik ve simetrik şifreleme algoritmalarıyla korunur, verinin bütünlüğü garanti altına alınır. Modern web standartlarında HTTPS kullanımı zorunluluk haline gelmiştir.
5. HTTP Protokolünün Evrimi
- HTTP/1.1: Uzun yıllar standart olarak kullanıldı. Kalıcı bağlantılar (Keep-Alive) sundu ancak her istek için sırayla bekleme (Head-of-Line Blocking) sorunu vardı.
- HTTP/2: Tek bir TCP bağlantısı üzerinden birden fazla isteğin eşzamanlı taşınmasını (Multiplexing) ve başlık sıkıştırmayı (HPACK) getirerek hız kazandırdı.
- HTTP/3: TCP yerine UDP tabanlı QUIC protokolünü kullanarak paket kaybı durumlarındaki gecikmeleri minimuma indirdi ve mobil ağlar arasında kesintisiz geçiş sağladı.

