1 Mayıs 2009 Cuma

HTTP Protokolü

HTTP PROTOKOLÜ

Hypertext Transfer Protocol (HTTP) (Köprü Metni Aktarım Protokolü) Web sunucuları ile Web tarayıcılarının Internet üstünden birbirleri ile haberleşmek için kullandıkları ortak dildir. Bu protokol kullanıcı ile sunucu arasındaki mesaj alısverisinin hangi formatta olacagını belirler. Güvenilir bilgi iletimi gerektirdigi için mesajlar TCP baglantısı ile iletilir. Dolayısıyla kullanıcı ile sunucu arasında bir bilgi alısverisi olmadan önce, iki nokta arasında TCP baglantısı kurulur. 80 numaralı TCP portunu kullanır. HTTP’de aktarılan veri dosya olmak zorunda değildir.Bu nedenle aktarılan nesneler hipermetin olarak isimlendirilir.Web siteleri büyük küçük bir çok dosyadan oluşur.Bir istek geldiğinde bu dosyaların hızlı bir şekilde aktarılması gerekir.Bu aktarma işleminde ftp yetersiz kaldığı için HTTP protokolü tanımlanmıştır. HTTP kalıcı bağlantıları desteklemez .İstemciden bir istek gönderildiğinde sunucu ile bağlantı kurulur cevap gelir ve bağlantı kesilir.HTTP 1.1 sürümü kalıcı bağlantılara destek vermektedir.Fakat yaygın kullanılmamaktadır.Bunun sebebi birden fazla kullanıcıya hizmet verirken zaman sorunları. HTTP bir 7.katman protokolüdür ve smtp’de olduğu gibi MIME yapısına benzer bir yapı tanımlanmıştır.Bir Web tarayıcısı bir web sayfası talep ettiğinde, Web sunucusuna bir request/istek gönderir. Bu istek mesajında bir Header (başlık) ve belli durumlarda bir Body (gövde) kısmı bulunur. Web sunucusu da bu istek mesajına bir response/yanıt mesajı ile karşılık verir. Bu yanıt mesajında da her zaman bir Header ve çoğu zaman bir Body kısmı bulunur.HTTP bir istek/yanıt protokolüdür. Her yanıttan önce bir istek verilmiş olmalıdır.Her ne kadar istek ve yanıt mesajlarının içerdikleri bilgiler farklı olsa da Header/Body yapısı ortaktır. Header’da mesajla ilgili Meta-bilgileri, Body’de mesajın içeriği bulunur.
Http ‘nin İstek Komut Yapısı
----------------------------------------------------------------
KOMUT PARAMETRE HTTP SÜRÜMÜ
----------------------------------------------------------------



HTTP isteğinin ilk satırı istek yöntemini, istenilen kaynağın URL’sini ve protokolün sürümünü içerir.

  • İstek komutları büyük ve küçük harfe duyarlıdır ve her zaman büyük harf ile yazılırlar.
  • HTTP’de tanımlanmış birkaç farklı istek yöntemi olmasına rağmen Web sunucu tümünü her bir kaynak için desteklemiyebilir.
  • Bu yöntemlerin en yaygınları GET, HEAD ve POST’tur.

    Bazı HTTP Komutları

  • GET: Dosya çağırma komutudur.

  • HEAD: Get komutuna benzer ancak sadece başlık bilgilerini gönderir.
  • POST: Postun farkı parametre içermesidir.
  • DELETE: Web sayfasını siler.
  • OPTIONS: Verdiğimiz komutun türünü belirtir.
  • PUT: Bir web sayfasını saklamak üzere gönderir.
  • TRACE: Web sunucularını kontrol etme işlemidir.


İstek Mesaj Header (Başlık) Yapısı

İstemci genelde istek mesajı ile bir kaç tane Header alanı da gönderir. Bunlar, isim ve değerden oluşur. Bu alanlar, istek ya da istemci hakkında daha fazla bilgi vermek ya de isteğe durum koşulları eklemek için gönderilirler.








Sunucu Cevap(Response) Komut Yapısı

Sunucu yanıtlarında, istemcinin gönderdiği istek mesajlarında olduğu gibi her zaman bir header ve opsiyonel bir body kısmı bulunur.

--------------------------------------------------------------------------
HTTP/1.1 XXX (Cevap kodu 3 haneli numaralardan oluşur)
Açıklamalar

--------------------------------------------------------------------------



İlk satır olan Status Line’da protokol ve sürümü, cevap kodu ve cevapın yazılı mesajı bulunur.Cevap kodları 3 haneli rakamlardan oluşur.İlk hanesi verdiğiniz komutun tür bilgisini içerir.

İlk satır olan Status Line’da protokol ve sürümü, cevap kodu ve cevapın yazılı mesajı bulunur.Cevap kodları 3 haneli rakamlardan oluşur.İlk hanesi verdiğiniz komutun tür bilgisini içerir.

Cevap Kodları

  • Seri 1xx : Alt seviye HTTP etkileşimlerinde kullanılırlar.

  • Seri 2xx : İstekle ilgili herşeyin uygun ve düzgün olduğunu belirtirler. 200: OK ,204: No Connect mesajı verir.

  • Seri 3xx : Genellikle bir çeşit yönlendirme ifade ederler. İstek geçerliydi fakat Web tarayıcı istenilen içeriği başka bir yerde/adreste bulmalı.

  • Seri 4xx : Bir hata oluştu ve bu hatanın sorumlusu sunucu değil, sunucu hatadan dolayı Web tarayıcısını sorumlu tutuyor. 404 : sayfa bulunamadı,403 : yasak,408 istek zaman aşımına uğradı.

  • Seri 5xx : Bir hata oluştu fakat bu sefer hata Web tarayıcıdan kaynaklanmıyor, hatanın sorumlusu sunucu ya da sunucuda çalışmakta olan bir betik.

Cevap Başlık Yapısı

Content-Base :Tüm göreli URL’leri çözümlemek için sunucunun taban (base) URL’ini tanımlar
Content-Length :Yanıt mesajının Body kısmının boyutunu (byte olarak) belirtir
Content-Type :İsteğin ortamını (media) belirtir
Date :İsteğin gönderildiği tarih ve zamanı tanımlar
eTag :İstenilen kaynak için bir varlık etiketi (entity tag) yaratır
Last-Modified :İstenilen kaynağın en son ne zaman değiştirildiğini tanımlar
Location :Kaynağın bulunduğu yeni yeri belirtir
Server : Web sunucunun adını ve sürümünü tanımlar
Set-Cookie :Sunucunun, Web tarayıcının daha sonraki isteklerinde göndermesini istediği bir isim ve değer çifti tanımlar.Set cookie ile sununun istemciyi tanıyarak dosyaları tekrar yüklemesi engellenir.
WWW-Authenticate :Doğrulama şeklini ve metodunu tanımlar


HTTP Protokolünün Özellikleri

Http kalıcı bağlantılarda etkili bir yapıya sahip değildir.HTTP protokolü sayesinde kullanıcılara birçok sınırlandırmalar yapılabilmektedir.
  • Dizin güvenliği: Dizinlere ait özellik ve sınırlamaların belirlendiği kısımdır.Klasörlere yetkilendirme yapılmaktır.
  • Varsayılan dip not: Gönderilecek olan bilgilerin içerisine önceden belirlenmiş bir html nesnesinin eklenmesidir.Örneğin; Web sitesinin adı
  • Giriş dizini: Dizin içerisinde varsayılan içerik bulunamamışsa ve klasöre istek yapılmışsa klasör içeriği listelenir. http://localhost veya http://127.0.0.1
  • Anonim: Herhangi bir kullanıcı adı ve parolası girilmeden erişimi sağlamaktadır.Kullanıcı adı ve parolası girilmez. USS_WIN2003 bu kullanıcı adı IIS kurulurken oluşturulur. Kullanıcı adı ve parola ile de hizmet verilebilir. Ayrıca belirli IP blokları arasındaki bağlantılara cevap verebilme gibi birçok ayarlar buradan yapılmaktadır.
  • İçerik derecelendirme: Http üst bilgisi ile kullanıcılara bazı kategorilerde ne tür içerik olduğu gönderilebilir. Web tarayıcıardaki bu bilgi yığınına bakıp içeriki ksıtlaması yapılabilir.
  • Mime türleri: web sitesi ilk oluşturulduğunda tüm uzantıları desteklemez. Bazı uzantıların desteklenmesi için bunların tanımlanması gerekmektedir. Bunları Mime aracılığı ile yaparız. Hangi uzantıya hangi veri yığını göndereceğimizi tanımlanır.
  • BITS: Bir tür aktarımım biçimidir . Microsoft kullanır. BITS ile büyük boyutlu dosyalar daha kolay gönderilir.
  • ASP.net: Asp sürümlerini tanımlayabiliriz. 1 ve 2 sürümlerinden hangisini kullanacağımızı belirleyebiliriz. Yapılan projenin asp ise dll dosyasının doğru şekilde yorumlanabilmesi için sürümünün seçildiği bölümdür.
  • ISAPI: exe dosyası gibidir, DLL uzantılıdır. Bir dosyayı çalıştırılabilir olarak tanımladığımız zaman, DLL uzantılı bir dosyaya istek yapıldığı zaman o dosyanın içeri kullanıcıya gönderilmez. Dosya çalıştırılır, bir değer çıkar ve bu değer kullanıcıya gönderilir. DLL çalıştırılır ve kullanıcıya çıktısı gönderilir.
  • NOT:Adres çubuğunda herhangi bir .dll uzantılı bir dosya görüldüğü takdirde demek oluyor ki obir ISAPI uygulamasıd
  • CGI: Bir dosyanın içeriğini değil, o dosyayı çalıştırıp çıktısını kullanıcıya göndeririz.
    Bir exe dosyasının 1000 kez çalıştırılması gerekebilir. CGI performans problemlerine yol açmıştır.Genellikle UNIX için kullanılır. Windows için WinGCI kullanılır. WinGCI, Windows için özelleşmiştir. WinCGI’nın farkı bir konsol yapısını kullanmamasıdır. Sanal bir konsol yapısı açılmaz.
  • 2 tip ISAPI uygulaması vardır:
  • 1. ISAPI uzantıları: Belli bir uzantıda çalışır. GCI programlama güçlüğünü aşmak istediği yerlerde kullanır.
  • 2. ISAPI filtreleri: bir web sayfasının içeriğinin kullanılmasıdır. Gelen her içerik uygulamadan geçirilip kullanıcıya gönderilir. Tüm içerik kontrol edilir.
    WWW için CGI için arabirimlik yapar. Tamamen exe dosyalar yazmadan temel kod yığınlarıyla web sayfaları oluşturulabilir hale gelmiştir.
  • APACHE
    APACHE de tanımalmış olan bir ISAPI’dir. Konsol tabanlı bir yapısı vardır.. Unix tabanlı bir sistem olarak geliştirilmiştir.Windows ailesinde APACHE'nin yaptığı görevlerii IIS (Internet Inforation Services) yapmaktadır.

1 yorum: