HTTP (Hyper-Text Transfer Protocol) bir kaynaktan dağıtılan ve ortak kullanıma açık olan hiperortam bilgi sistemleri için uygulama seviyesinde bir iletişim protokolüdür. HTTP, veri iletişiminin temelidir. Ağa bağlı cihazlar arasında bilgi aktarmak için tasarlanmış bir uygulama katmanı protokolüdür ve ağ protokol yığınının diğer katmanlarının üzerinde çalışır. HTTP tipindeki bir akış, bir istemci makinenin bir sunucuya istekte bulunmasını ve ardından bir yanıt mesajı göndermesini içerir. İlk olarak 1990’larda Tim Berners-Lee tarafından geliştirilmiştir ve internetin temel taşı olarak kabul edilmektedir.
HTTP döngüsü
HTTP Çalışma Mantığı
HTTP, istemci-sunucuna modeline dayanmaktadır. Bu modelde, istemci genellikle bir web tarayıcısıdır ve sunucu ise web sayfasını veya uygulamayı barındıran bir bilgisayardır. İstemci, HTTP istekleri (HTTP requests) gönderir, sunucu da bu isteklere uygun yanıtlar (HTTP responses) gönderir.
Bir HTTP iletişimi şu adımlardan oluşur:
1- İstek Gönderimi: İstemci, belirli bir URL’ye erişmek için HTTP isteği gönderir.
2- Sunucu İşlemi: Sunucu, istemciden gelen isteği işler ve uygun bir yanıt hazırlar.
3- Yanıt Gönderimi: Sunucu, hazırladığı yanıtı istemciye iletir. Bu yanıt genellikle bir web sayfası, JSON verisi veya başka bir dosya türü olabilir.
HTTP isteği, web tarayıcıları gibi İnternet iletişim platformlarının bir web sitesini yüklemek için ihtiyaç duydukları bilgileri isteme şeklidir. İnternet üzerinden yapılan her HTTP isteği, beraberinde farklı bilgi türleri taşıyan bir dizi kodlanmış veri taşımaktadır. Tipik bir HTTP isteği şunları içerir:
- HTTP sürüm tipi
- URL
- HTTP yöntemi
- HTTP istek başlığı
- İsteğe bağlı olarak HTTP gövdesi
HTTP Yöntemi
HTTP yöntemi, HTTP isteğinin sorgulanan sunucudan beklediği eylemi belirtmektedir. Örneğin, en yaygın HTTP yöntemlerinden “GET” ve “POST”; “bir “GET” isteği karşılığında bilgi beklenirken (genellikle web sitesi şeklinde), bir “POST” isteği tipik olarak istemcinin web sunucusuna bilgi gönderdiğini gösterir.
Örnek HTTP yöntemleri:
- GET: Sunucudan veri talep etmek için kullanılır. Örneğin, bir web sayfasını yüklemek için GET yöntemi kullanılabilir.
- POST: Sunucuya veri göndermek için kullanılır. Form gönderimleri bu yöntemle gerçekleştirilir.
- PUT: Belirli bir kaynağı güncellemek için kullanılır.
- DELETE: Belirli bir kaynağı silmek için kullanılır.
- HEAD: Sunucudan sadece başlık bilgilerini almak için kullanılır.
HTTP İstek Başlığı
HTTP başlıkları anahtar-değer çiftleri halinde saklanan metin bilgileri içerir ve her HTTP isteğine dahil edilirler. Bu başlıklar, istemcinin hangi tarayıcıyı kullandığı ve hangi verilerin talep edildiği gibi temel bilgileri iletir.
Google Chrome’un ağ sekmesinden HTTP istek başlığı örneği:
HTTP istek baslığı örneği
HTTP Gövdesi
Bir isteğin gövdesi, isteğin aktardığı bilgilerin gövdesini içeren kısımdır. Bir HTTP isteğinin gövdesi, web sunucusuna gönderilen kullanıcı adı ve parola gibi bilgileri ya da bir forma girilen diğer verileri içerir.
HTTP Durum Kodları
Sunucunun istemciden gelen isteklere verdiği yanıtlar genellikle bir durum koduyla birlikte gönderilir. Durum kodları 5 bloğa ayrılmaktadır.
- 1xx Bilgilendirme
- 2xx Başarılı
- 3xx Yeniden Yönlendirme
- 4xx İstemci Hatası
- 5xx Sunucu Hatası
“xx” 00 ile 99 arasındaki farklı sayıları ifade etmektedir.
Bazı önemli HTTP durum kodları şunlardır:
- 200 OK: İstek başarıyla işlendi.
- 404 Not Found: İstenen kaynak bulunamadı.
- 500 Internal Server Error: Sunucuda bir hata meydana geldi.
- 301 Moved Permanently: İstenen kaynak kalıcı olarak başka bir URL’ye taşındı.
- 400 Bad Request: Geçersiz bir istek gönderildi.
HTTP İsteğinin Yapısı
Bir HTTP isteğinin yapısı
Örnek bir HTTP istek başlığı:
HTTP isteğinin başlık yapısı
- HTTP isteğinde kullanılan eylem: GET
- İsteğin gönderildiği sunucu: google.com
- Sunucudan istekte bulunulan hedef kaynak: /complete/search
- Sunucuya gönderilen parametreler: q=akadema&cp=7&client=psy-ab&xssi=t&gs_ri=gws-wiz&hl=tr&authuser=0&psi=bqCpXc2nF4jQrgSb-qyQBQ.1571397742719&ei=bqCpXc2nF4jQrgSb-qyQBQ
- Kullanılan HTTP sürümü: HTTP/1.1
- Kullanılan web tarayıcısına ait bilgiler (User-Agent): Apple Mac OS X (10.14.6) işletim sisteminde, Google Chrome (77.0.3865.120) web tarayıcısı kullanılmaktadır.
HTTP Yanıtının Yapısı
İnternet tarayıcısı (istemci) tarafından Google.com’a gönderilen HTTP isteği, web uygulaması tarafından işlenerek arama sonuçlarının yer aldığı bir HTTP yanıtı döndürülür. Google.com tarafından döndürülen HTTP yanıtının yapısı şu şekilde olacaktır:
Yanıtın başlığında yer alan ilk satıra bakıldığında HTTP/1.1 200 OK ifadesi, isteğin sunucu tarafından başarıyla işlendiğini göstermektedir. Başlık bilgilerinden hemen sonra yer alan ve html> ifadesiyle başlayan bölüm ise “akadema” ile ilgili google.com arama sonuçlarının internet tarayıcısında görüntülenmesini sağlayan HTML kodlarını içermektedir.
HTTP Avantajları
- Kolaylık: Basit bir yapısı vardır ve uygulaması kolaydır.
- Esneklik: Birçok farklı veri türünü (metin, görüntü, video vb.) taşımaya olanak tanır.
- Yaygın Kullanım: İnternetin neredeyse tamamında kullanılır.
HTTP Dezavantajları
- Güvenlik Zafiyeti: Veriler şifrelenmediği için HTTP, güvenli olmayan bir protokoldür. Bu nedenle HTTPS kullanılmalıdır.
- Durumsuzluk: HTTP, bağlantıların durumunu korumaz. Her istek bağımsızdır, bu da belirli durumlarda ek karmaşıklığa neden olabilmektedir.