HTTP

HTTP PROTOKOLÜ
İnternette günümüzde çok kullanılıyor. Bir içeriği sunucudan istemciye gönderir. Temelde yapı budur. Veri aktaran diğer protokollerden farkı vardır. İlla dosya olmasına gerek yoktur. http çok büyük dosya aktarımı sağlayacaktır. Dosya olmak zorunda değil bu yüzden hiper metin olarak tanımlıyoruz.
Mime yapısına benzer bir yapı tanımlanmıştır.
3 tane sürümü vardır:
1.0: Kalıcı bağlantıları desteklemez. Quik benzeri bir yapıdır.
1.1: Kalıcı bağlantıları destekmiş ama yaygın olarak kullanılmaz. Bunun sebebi çok aktarım yapması belli bir süre sonra kesirmesi
0.9: Eski yapısı
Her bir nesne için ayrı bir port tanımlar. Her resim ve nesne tek tek gelcektir. Bu istenen bir durum değildir.
http nin komut yapısı:
KOMUT PARAMETRESİ http sürümü
Hemen bunu altında bir cevap başlığı mime yapısı
http nin cevap yapısı:
http/1.1 XXX açıklamalar
3 haneli bir cevap kodu
Bunun altında bir mesaj yapısı oluşur.
KOMUT
Get: Bir web sayfası okumak için ister.
Head: Get komutu gibi ancak head başlığı döndürür. İçeriği döndürmez.
Put: Bir web sayfasını saklamak için gönderir. Upload komutu gibi aktif olarak kullanılmaz.
Post: İsimlendirilmiş bir kaynağa ekleme yapar.
Delete: Web sayfasını siler.
Trace: Gelen isteği geri cevapla komutur.
Connect: Gelecekte kullanılmak için ayrılmıştır.
Option: Çeşitli parametreleri sorgulamak için kullanılır.
CEVAP
X X X
1.hane: Verdiğimiz komutun türünü belirtir ilk hanesi
2. ve 3. Hane: o türle ile alt durumlar hakkında bilgi verir.
Türleri:
5 tane durumlar tanımlıyor.
1XX: Gelen cevap bilgi mesajıdır
2XX: Verilen komutun başarı ile olduğu belirtir.
200: OK demek
204: No Connect mesajı verir.
3XX: Yeniden yönlendirme için kullanılır. Bunun adresi değişti diye bilgilendirme gibi
301: Kalıcı olarak taşındı.
302: Bulunduğu adresi şu gibi
4XX: İstemci hatası belirten durumdur.
404: Bulunamadı mesajı
408: İstek zaman aşımına uğradı.
403: izinsiz
5XX: Sunucu hatalarından kaynaklanan hataları ifade eder.
503 Servis şuanda karşılanamıyor.
MESAJ BAŞLIKLARI
User-agent: İstek yapılırken gönderilir. Kullandığınız web tarayıcı bilgilerini gönderir.
Accept: İstemci tarafından gönderilir.
Accept-charset: Karakter kümeleri
Accept-Encoding: kabul edilen veri kodlaması
Host: Hangi bilgisayardan istek yapılıyorsa o sunucu bilgi gönderir.
Authorizotion: Karşı tarafa kimlik tanımlayacak standartları tanımlayacak
Cookie:
Date:

Upgrade: http sürümü değiştiğinde karşı tarafa bilgi verir.
Server: Sunucu bilgileri bulunur.
Content-encoding: sunucun gönderdiği içeriğin kodlaması
Content language: içerik dili
Content length: içerik uzunluğu
Content- type: İçerik türü
Last modified: İçeriğin en son değiştiği tarihi verir.
Location: Yönlendirilecek adresi belirtir.
Set-cookies: http oturum olarak ifade edilecek. Bir bilgi yığını istemciden sunucuya gönderiyor. İstemci her girdiğinde sunucu tanıyor. Bu sayede oturum oluşturuyor.


HTTP’nin Özellikleri

Kalıcı bağlantı için zaman aşımı sağlanaiblir. Web sitesinin bant genişliği kısıtlanaiblir. Bağlanaiblecek eş zamanlı kullanıcı sayısı kısıtlanabilir. Kalsör adı yazılabilir get veya post ile. Get/klasör adı gibi. Dosya iöeriği kullnanıcıya gönderilir. Yani web sitesinden istek yaparken dosya adı yerine klasör adını yazıyoruz.
Girişi dizini: klasör içerisinde varsayılan içerik bulunamamışsa ve klasöre istek yapılmışsa klasör içeriği listelenir. http://localhost
Varsayılan dip not özelliği: gönderilern her bilgi yığınıa ait tanımlananan html dosyası ekleriz. Her web sayfasında görünmesini isteidğimiz değerlerdir. Örneğin; Web sitesinin adı
Dizin güveniği: klasörlerin yetkileri tanımlanır.
Anonim: adsız erişim. Kullanıcı adı ve şifre girilmeden hangi kullanıcı hesabının yetkisiyle işlem yapılacak?bunu tanımlamak için bir kullanıcı adı oluşturulur. Bu kullanıcının yetkisi var olan klasörlerle kısıtlı tutulur.USS_WIN2003 . bu kullanıcı adı iis kurulurken oluşturulur. Anonim kullanıcların klasörlerde istediği yetki ile çalışması engellenir.
*** kullanıcı adı ve şifre girilerek de hizmete verilebilir ya da belirlediğimiz ip’den veya etki alanından gelen kullanıcıların sistemem bağlanmasını veya bağlanmamasını sağlayabiliriz.
Daniel of service: servisten alı koymak anlamına gelir. Mesele 1000 tane kullanıcıya hizmet veriyorsak 1000 kullanıcının kullanmasını sağlamaya yarar sistemi.
http üst bilgileri:web sitesinden güncellenen içeriğin ne kadar süre ile geçerli oalcağını belirleriz.
Özel http üst bilgisi: var olan http özel üst bilgisi yığınları.(mesela reklam amaçlı olabilir.)
İç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: hangi uzantıya hangi veri yığını göndereceğimizi tanımlarız.
BITS: veri aktarımım biçimi .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.
Hiper metin dinamik olabilir. Bu içeriğin gönderilmesini sağlamak sunucunun bir program çalıştırmasını gerektirir. IIS için kullanılan uygulama arabirimi adı ISAPI’dir.
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.
CGI: Bir dosyanın içeriğini değil, o dosyayı çalıştırıp çıktısını kullanıcıya göndeririz. IIS, CGI kullanır. 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. Programda verilen parametreler bir dosyayla verilir. Yani dosya üzerinden işlem yapılır. Bu söylediğimiz 2 temel fark, WinCGI’nın CGI’dan farkıdır.
CGI ya da ISAPI yaygın olarak kullanılır. Programlama ve uygulama gerçekten zordur. Her bir sayfanın içeriğini oluşturmak için ayrı uygulama yapmak gerekir. İleri düzeyde programlama bilmemiz gerekebilir.
**adres çubuğunda DLL uzantılı bir dosya görürsek bu bir ISAPI uygulamasıdır.
**CGI, uygulama çalıştırır, çıktısı gönderilir. Temel mantık budur.

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. Pearl karakter dizilerinde işlem yapmayı kolaylaştırır. Pearl bir yorumlama dilidir. WWW için CGI için arabirimlik yapar. kullanıcı CGI uzantılı dosyaları istediği zaman ; pearl.exe’ye parametre olarak gönder, komutun çıktısını al, kullanıcıya gönder. Tamamen exe dosyalar yazmadan temel kod yığınlarıyla web sayfaları oluşturulabilir hale gelmiştir.
APACHE
APACHE de bir ISAPI’dir. Konsol tabanlıdır. Unix tabanlıdır. Paylaşılan bir modüldür.