Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124

İster bir web uygulaması geliştirin, ister bir IoT cihazından bulut sunucusuna veri aktarın, internet mimarisinin kalbinde aynı protokol yer alır: HTTP (Hypertext Transfer Protocol). Uygulama katmanında (Application Layer) çalışan bu protokol, istemci (client) ile sunucu (server) arasındaki veri alışverişinin kurallarını belirler.
Bu yazıda HTTP protokolünün istek/yanıt (Request/Response) yapısını, durum kodlarını, başlık (Header) mimarisini ve HTTP/1.1’den HTTP/3’e uzanan evrimini inceliyoruz.

HTTP, İstek-Yanıt (Request-Response) modeline dayalı, bağlantısız ve durumsuz (Stateless) bir protokoldür.
İstemci, sunucuya ne yapmak istediğini belirtmek için belirli fiiller (metotlar) kullanır:
Ağ üzerinde akan bir HTTP paketi, insan tarafından okunabilir (human-readable) düz metin yapılarından oluşur.
İstemcinin (Tarayıcı, Postman veya bir ESP32) sunucuya gönderdiği paket şu üç ana bölümden oluşur:
HTTP
POST /api/v1/sensor-data HTTP/1.1
Host: iofe.com.tr
Content-Type: application/json
Authorization: Bearer ax9382...
{
"device_id": "esp32_node_01",
"temperature": 24.5,
"humidity": 60
}
POST), hedef dizin (/api/v1/sensor-data) ve protokol versiyonu (HTTP/1.1) yer alır.Content-Type) veya yetkilendirme anahtarı (Authorization) burada iletilir.Sunucunun istemciye döndüğü paketin yapısı da benzerdir:
HTTP
HTTP/1.1 200 OK
Date: Sun, 14 Jun 2026 15:00:00 GMT
Content-Type: application/json
Content-Length: 31
{"status": "success", "code": 200}
200 OK) yer alır.Sunucunun verdiği 3 haneli yanıt kodları, işlemin kaderini belirler. Sektör standardı olarak 5 ana gruba ayrılırlar:
| Kod Aralığı | Sınıfı | Tanımı | Sık Karşılaşılan Örnekler |
| 1xx | Bilgilendirme | İstek alındı, işlem devam ediyor. | 101 Switching Protocols (WebSocket geçişlerinde) |
| 2xx | Başarı | İstek başarıyla alındı ve işlendi. | 200 OK, 201 Created (Yeni kayıt oluşturuldu) |
| 3xx | Yönlendirme | İstenen kaynak başka bir adrese taşındı. | 301 Moved Permanently, 304 Not Modified (Önbellek) |
| 4xx | İstemci Hatası | İstekte hata var (Yanlış URL, eksik yetki vb.) | 400 Bad Request, 401 Unauthorized, 404 Not Found |
| 5xx | Sunucu Hatası | İstek doğru ancak sunucu tarafında hata oluştu. | 500 Internal Server Error, 502 Bad Gateway |
Web teknolojilerinin hızlanması ihtiyacı, HTTP protokolünün altyapısını zamanla ciddi şekilde değiştirdi:
Her bir görsel, CSS veya JS dosyası için sunucuyla ayrı bir TCP bağlantısı açılması gerekiyordu. Bu durum Head-of-Line (HOL) Blocking adı verilen hat tıkanmalarına yol açıyordu.
Aynı TCP bağlantısı üzerinden birden fazla isteğin ve yanıtın aynı anda taşınabilmesini sağlayan Multiplexing mimarisi geldi. Veriler artık düz metin olarak değil, sıkıştırılmış ikili (binary) frameler halinde taşınmaya başladı.
Fiziksel katmanda TCP’nin getirdiği el sıkışma (handshake) gecikmelerini ve bağlantı kopmalarını engellemek amacıyla, TCP tamamen terk edildi. HTTP/3, UDP tabanlı QUIC protokolü üzerine inşa edildi. Mobil ağlar arasında (Wi-Fi’dan hücresel veriye geçerken) bağlantının kopmadan devam etmesini sağlar.
Sistem mimarisinde bir HTTP hatası aldığınızda, sorunun kaynağını izole etmek için şu adımları izleyin:
401 Unauthorized alıyorsanız sorun Token/Auth başlığının eksik veya geçersiz olmasıdır. 403 Forbidden alıyorsanız, kimliğiniz doğrulanmıştır ancak o dizine veya API uç noktasına erişim yetkiniz (role/permission) yoktur.localhost:3000), backend sunucusu tarafından güvenli kaynak olarak tanımlanmamıştır. Çözüm backend kodunda Allow-Origin başlıklarına frontend domainini eklemektir.