HTTP & HTTPS

Eyl 07, 2013
HTTP (The Hypertext Transfer Protocol – Hiper Metin Aktarma İletişim Kuralı) ve HTTPS (Hypertext Transfer Protocol Secure – Hiper Metin Aktarma Güvenli İletişim Kuralı), bir kaynaktan dağıtılan ve ortak kullanıma açık olan hiperortam bilgi sistemleri için uygulama seviyesinde bir iletişim kuralıdır. HTTPS, HTTP'ye göre daha gelişmiş ve daha güvenli bir iletişim kuralı olup, dokümanda bu iki iletişim protokolü ve çalışma prensipleri incelenecektir.

HTTP
HTTP, İnternette sunucular ve son kullanıcılar arasında bilgilerin nasıl aktarılacağına dair kurallar ve yöntemleri düzenleyen uygulama katmanında çalışan bir iletişim protokolüdür. Web sitesi görüntülemek ve üzerinde çeşitli işlemler yapmak için kullanılır.

HTTP/0.9 ve 1.0'da bağlantı tek bir "request-response" (istek-cevap) aşaması ardından kapanır. HTTP/1.1'de bağlantının birden fazla istek için kullanıldığı "keep-alive-mechanism" (hayatta-tutma-mekanizması) tanıtıldı. Böyle kalıcı bağlantılar sezilebilir gecikmeleri azaltır, çünkü istemci ilk istek yollandıktan sonra tekrar TCP bağlantısını onaylatmak zorunda kalmaz. Sürüm 1.1, HTTP/1.0'a göre bant genişliğini en uygun hale getirmiştir. Sunum 1.1'deki bir diğer geliştirme ise sunucunun, istemci tarafından açıkça istenilen kaynağın bir kısmını ilettiği "byte serving" (byte sunma)'dir. Bu da band gemişliği anlamında avantaj sağlamaktadır.

HTTP oturumu ağ üzerindeki "request-response" işleminin bir aşamasıdır. HTTP istemcisi istekte bulunur. İstemci belli bir port üzerinden TCP (Transmission Control Protocol – Aktarım Kontrolü İletişim Kuralı) bağlantısı kurar (Genellikle 80. porttan). O port üzerinde dinlemekte olan HTTP sunucusu istemcinin istek mesajını bekler. İstek ulaştığında sunucu durum sinyalini geri döner. Sinyalde örnek olarak “HTTP/1.1 200 OK” ve ardından muhtemelen istenilen kaynağın gövde metni, hata mesajı veya bazı diğer bilgiler bulunabilir.

İstek Yöntemleri

HTTP istenilen eylemin tanımlanan kaynakta gerçekleşmesi için dokuz yol tanımlar.

GET (AL): Belirtilmiş kaynağın ifadesini ister.
HEAD (KONU): “GET” isteğine karşılık gelen yanıtı ister, ama yanıtın gövdesini görüntülemez. Bütün içeriği taşımadan yanıt başlığındaki önbilgiye ulaşmak için kullanılır.
OPTIONS (SEÇENEKLER): Sunucunun belirtilmiş URL için desteklediği HTTP yöntemlerini döndürür.
POST (ATA): Tanımlanmış kaynağa işlenecek veriyi kaydeder. Veri isteğin gövde kısmında yer alır.
PUT (KOY): Belirtilmiş kaynağın temsil metnini yükler.
DELETE (SİL): Belirtilmiş kaynağı siler.
TRACE (İZLE): İstemcilerin orta dereceli sunucularda değişiklik veya ekleme yapılıp yapılmadığını görmesi için ulaşan isteği yankılar.
CONNECT (BAĞLAN): Genellikle şifrelenmemiş HTTP vekili üzerinden SSL-şifreli (Secure Sockets Layer – Güvenli Soket Katmanı) iletişime olanak sağlamak için, istek bağlantısını transparan TCP/IP tüneline dönüştürür.
PATCH (YAMA):  Kaynakta kısmi değişiklikler uygulamak için kullanılır.

HTTP sunucuları en azından GET, HEAD ve mümkünse OPTIONS metodlarını bulundurmalıdır.

HTTPS
HTTPS, HTTP ile SSL/TLS (Secure Sockets Layer/Transport Layer Security – Güvenli Soket Katmanı/Aktarım Katmanı Güvenliği) iletişim kurallarının şifrelenmiş iletişim ve güvenli tanımlama amacıyla birleşimidir. Varsayılan olarak 443’üncü porttan bağlantı kurar.

HTTPS’in asıl amacı güvenli olmayan bir iletişim ağı üzerinden güvenli bir kanal oluşturmaktır. Bu yöntem hattı dinlemek isteyenlere karşı yeterli korumayı da sağlar. Banka Web-sayfaları veya yüksek güvenlik gerektiren uygulamalarda tercih edilir.

HTTPS’e özgü güvenlik, tarayıcı yazılımıyla gelen başlıca sertifika sahiplerine dayanır. Bu, “Kime güveneceğimi söylemesi için sertifika sahibine güveniyorum.” demekle aynı şeydir. Bu yüzden bir Web sayfasına olan HTTPS bağlantısına yalnızca aşağıdakiler geçerliyse güvenilebilir:

  • Kullanıcının, tarayıcı yazılımının HTTPS’i düzgün bir şekilde önceden yüklenmiş sertifikalarla birlikte sağladığına güvenmesi.
  • Kullanıcının, sertifika sahibine sadece yasal Web sayfalarını yanlış yönlendirici isimler olmadan doğrulaması için güvenmesi.
  • Web sayfasının güvenilir yetkili tarafından imzalanan geçerli sertifika sağlaması. (Geçerli olmayan sertifika çoğu tarayıcıda uyarı verir.)
  • Sertifikanın Web sayfasını düzgün bir şekilde tanımlaması.