Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

3. HTTP. Kaynak CGI Programming with Perl “CGI Programming with Perl”, 2nd edition. Chapter 2, “Hypertext Transfer Protocol” Gunther Birznieks, Scott.

Benzer bir sunumlar


... konulu sunumlar: "3. HTTP. Kaynak CGI Programming with Perl “CGI Programming with Perl”, 2nd edition. Chapter 2, “Hypertext Transfer Protocol” Gunther Birznieks, Scott."— Sunum transkripti:

1 3. HTTP

2 Kaynak CGI Programming with Perl “CGI Programming with Perl”, 2nd edition. Chapter 2, “Hypertext Transfer Protocol” Gunther Birznieks, Scott Guelich, Shishir Gundavaram O’Reilly January 15, 2000.

3 Geçen Hafta... IP Adresleme IP Adresleri DNS

4 Bu Hafta... HTTP  URL  HTTP Protokolü: İstek ve Yanıt  Proxy’ler

5 3. HTTP 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 dersin temel başlıklarından biri olan CGI aslında HTTP üstüne kurulu. CGI’ın bu kadar etkili olmasının sebeplerinden biri HTTP vasıtası ile yapılan iletişimi kullanabilmesidir.

6 3. HTTP HTTP W3C tarafından geliştirildi ve şu anda geliştirilme çabaları durdurulmuştur. RFC 2616: Hypertext Transfer Protocol -- HTTP/1.1 Dokümantasyon ve Spesifikasyonlar: 

7 3.1 URL Uniform Resource Locators (URL) (Tektip Kaynak Bulucusu). Web terminolojisinde Resource/Kaynak kavramı Web üstünden erişilebilen herşeyi dahil etmektedir: bir HTML sayfası, bir imaj, bir CGI script’i (CGI betik), Flash animasyonu vs. URL’ler Web üstündeki bu kaynaklara standart bir şekilde ulaşabilmenin yolunu sunmaktadırlar. URL’ler HTTP’ye özel bir yaklaşım değildir, diğer protokollerde de (örneğin FTP, Gopher, news vs.) kullanılmaktadır. URL vs. URI vs. URN

8 3.1 URL Scheme  URL’deki Scheme kısmı protokolü tanımlamak için kullanılmaktadır.  HTTP protokolü ilk alt protokolü desteklemektedir: http ve https

9 3.1 URL Host  URL’deki Host kısmı Web sunucusunu çalıştırmakta olan sunucu makinayı tanımlamaktadır. Host kısmı bir alan adı ya da her ne kadar tavsiye edilmese de IP adresi olabilir.  Host kısmında IP adresi kullanmanın en büyük sakıncası sık sık değişiyor olmalarıdır: Bir Web sayfasının sunucu makinası ya da bulunduğu ağ değişebilir.  IP adreslerindeki değişikliği kullanıcılardan gizlemenin yolu URL’lerde alan adı kullanmaktır.

10 3.1 URL Port  Port (Kapı) numarası opsiyoneldir ve URL’lerde ancak Host tanımlanmış ise eklenebilir ve çoğu zaman Web’te URL’lerin yanına yazılmadan kullanılmaktadır. Host ve Port birbirlerinden (:) ile ayrılırlar. Eğer Port numarası tanımlanmamış ise o zaman https’de 80, https’de ise 443 Web tarayıcısı tarafından otomatik olarak kullanılmaktadır.  Web sunucusu farklı Portlarda cevap vermesi için ayarlanabilir. Eğer iki tane farklı Web sunucusu kurulmuş ise Web server’ı konfigür eden kişinin root hakları yok ise (Unix’te port<1024 sadece root’a açıktır)

11 3.1 URL Port  Internet üstünden bir mesaj gönderildiğinde, alıcı bilgisayara ulaşması için IP adresi yeterli oluyordu.  Fakat bu paketin alıcı bilgisayarda hangi uygulamaya gönderildiğini alıcının anlayabilmesi için ayrıca bir bilgiye ihtiyacı vardır. Bu sorunu Port Numarası çözer. Port numarası kullanarak alıcı bilgisayardaki uygulamaya doğrudan mesaj gönderilebilir.  22 : ssh / 25 : smtp / 21 : ftp 

12 3.1 URL Path  Path (Yol) bilgisi istenilen kaynağın (HTML, Gif vs.) bulunduğu adresi göstermektedir. Path, Web sunucusun kurulum ayarlarına göre sunucu bilgisayardaki gerçek bir dizin yapısıyla eşleşebilir ya da eşleşmeyebilir. /home/ist/umuth/public_html/ist464/index.htm

13 3.1 URL Query string  Query string (Sorgu dizgisi) betik’lere parametreler göndermek için kullanılır. Birbirlerine (=) ile eşleştirilen Name (isim) ve Value (değer) çiftlerinden oluşur. Her çift (&) ile ayrılmıştır. Bu çiftler betikler tarafından işleme alınmadan önce bölünmelidir.  Query string’ler Name-Value çiftleri dışında Index’lerden de oluşuyor olabilir.Burada her argüman bir diğerinden kodlanmış bir aralık ile ayrılır.

14 3.1 URL Fragment  Fragment tanımlayıcıları bir kaynağın belli bir noktasına olan referanslardır. Web sunucularına gönderilmezler, sadece Web tarayıcısı kaynağı yükledikten sonra Fragment tanımlayıcısı ile o noktayı çağırırlar ve kullanıcıya o kısmı sunarlar.  HTML dokümanları içinde Anchor’lar (demir atma noktaları) bir Fragment olarak çalışmaktadır. Burası demir atma noktası  Web tarayıcıları genellikle demir atma noktasını sayfa içinde bulamazlarsa o zaman yükledikleri sayfanın en sonunu getirirler.

15 3.1 URL URL’ler iki gruba ayrılır:  Absolute (Salt) URL’ler: Host kısmı bulunan URL’ler:  Relative (Göreli) URL’ler Scheme, Host ve Port kısmı dahil edilmeyen URL’ler: Full path: /index.html Relative path:../images/photo.jpg

16 3.1 URL Bir URL içinde bulunan belli karakterlerin kodlanması gerekebilir. Örneğin ?, #, veya / gibi bazı özel karakterler URL kapsamı içinde özel anlam ifade etmektedirler ve eğer kodlanmazlar ise URL yanlış yorumlanacaktır. Bir dosyaya bilgisayaranızda Doc#2.html ismini verebilirsiniz ama URL’i bu dosyayı göstermeyecektir, muhtemelen olmayan bir Doc dosyasının 2.html adlı demir atma noktasını arıyacaktır ve büyük bir ihtimalle hata verecektir. Bunu engellemek için # karakterini özel bir şekilde kodlamamız gerekmektedir. Karakterler önce bir % işareti ve daha sonra da ISO Latin 1 veya ASCII karakter setine göre iki haneli bir sayı ile kodlanırlar. Örneğin, # işaretinin haxadecimal değeri 0x23 olduğu için %23 olarak kodlanır.

17 3.1 URL URL kapsamında kodlanması gerekmeyen karakterler:  Harfler: a-z ve A-Z  Sayılar: 0-9  Bu karakterler: - _. ! ~ * ' ( )

18 3.2 HTTP Protokolü 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 iki önemli özelliği:  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.

19 3.2 HTTP Protokolü

20 İstek/Request: GET /index.html HTTP/1.1 Host: localhost Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/xbm, */* Accept Language: en Connection: Keep-Alive User-Agent: Mozilla/4.0 (compatible; MSIE 4.5; Mac_PowerPC) Yanıt/Response: HTTP/ OK Date: Sat, 18 Mar :35:35 GMT Server: Apache/1.3.9 (Unix) Last-Modified: Wed, 20 May :59:42 GMT ETag: " efde“ Content-Length: 141 Content-Type: text/html Sample Document Sample Document This is a sample HTML document!

21 3.2.1 HTTP Protokolü: Request Her bir HTTP etkileşimi istemci tarafından, genellikle bir Web tarayıcısı, yapılan istek ile başlar. Kullanıcı tarayıcıya bir URL girer, bir Internet bağlantısına tıklar, ya da bir Kısayol çağırır, ve tarayıcı uygun istek dokümanını hazırlar. HTTP isteğinin ilk satırı istek satırıdır.

22 3.2.1 HTTP Protokolü: Request HTTP isteğinin ilk satırı istek yöntemini, istenilen kaynağın URL’sini ve protokolün sürümünü içerir.  İstek yöntemleri 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.

23 3.2.1 HTTP Protokolü: Request Yöntem (Method) Tanım GETSunucudan bir kaynağı ister HEADGET gibi kullanılır ama sadece Header getirir ve içerik getirmez POSTSunucudan, sunucuda bulunan verinin içeriğini değiştirmesini ister PUTSunucudan, sunucuda bir kaynak yaratmasını veya başka bir kaynak ile değiştirmesini ister DELETESunucudan, sunucuda bulunan bir kaynağı silmesini ister CONNECTSSL bağlantıların HTTP bağlantıları içinden geçmesini sağlar OPTIONSSunucudan bir kaynakla ilgili geçerli yöntemleri ister TRACESunucunun istek Header’larını olduğu gibi geri göndermesini ister

24 3.2.1 HTTP Protokolü: Request İ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.

25 3.2.1 HTTP Protokolü: Request HeaderTanım HostHedef sunucu adını belirtir Content-Lengthİstek mesajının boyutunu (byte olarak) belirtir Content-Typeİsteğin ortamını (media) belirtir AuthenticationKaynağı isteyen kişinin kullanıcı adı ve şifresini tanımlar User-Agentİstemcinin adını, sürümünü ve platformunu belirtir Refererİstemciyi sözkonusu kaynağa yönelten URL’i belirtir CookieSunucu tarafından bir önceki istekte verilen bir isim ve değer çiftini gönderir

26 3.2.2 HTTP Protokolü: Response 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. Yanıt header’larının yapısı istek header’larının yapısına benzer: ilk satırın özel bir anlamı vardır ve status line olarak adlandırılır. Kalan satırlar isim-değer çiftleridir.

27 3.2.2 HTTP Protokolü: Response İlk satır olan Status Line’da protokol ve sürümü, durum kodu ve durumun yazılı mesajı bulunur.

28 3.2.2 HTTP Protokolü: Response Durum 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.  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.  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.

29 3.2.2 HTTP Protokolü: Response HeaderTanım Content-BaseTüm göreli URL’leri çözümlemek için sunucunun taban (base) URL’ini tanımlar Content-LengthYanı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

30 3.2.2 HTTP Protokolü: Response HeaderTanım Last-Modifiedİstenilen kaynağın en son ne zaman değiştirildiğini tanımlar LocationKaynağın bulunduğu yeni yeri belirtir ServerWeb sunucunun adını ve sürümünü tanımlar Set-CookieSunucunun, Web tarayıcının daha sonraki isteklerinde göndermesini istediği bir isim ve değer çifti tanımlar WWW-AuthenticateDoğrulama şeklini ve metodunu tanımlar

31 3.3 Proxy’ler Çoğu zaman Web tarayıcılar doğrudan bir Web sunucusu ile iletişime geçmek yerine bir Proxy vasıtası ile iletişime geçerler. HTTP proxy’leri genelde:  Ağ trafiğini azaltmak  Firewall’lara rağmen belli sayfalara erişim sağlamak  İçerik filtrelemesi sağlamak İçin kullanılırlar. Proxy basitçe aslında bir istemci ile sunucu kombinasyonudur: Bir istemci proxy’ye bir istek ile bağlantı kurar, dolayısıyla bir sunucu görevi görür. Fakat bu gelen isteği bir istemci gibi gerçek bir Web sunucusuna iletir. Daha sonra da bir sunucu gibi bu isteğe gelen yanıtı gerçek sahibine gönderir.

32 3.3 Proxy’ler

33 Proxy’lerin iki önemli etkisi vardır:  İstemcilerin tanımlanması: Bir sunucuya farklı istemcilerden fakat aynı proxy üstünden gelen isteklerin sahiplerini ayırt etmesi mümkün değildir. Intranet’in korunması  Caching (önbelleğe alma): Proxy üstünden Web’e çıkış yapan istemciler aynı kaynakları isteyebilirler. Proxy, gelen isteğin daha önce yapılıp yapılmadığını kontrol eder, sunucudaki kaynağın değiştirilme tarihini kontrol eder ve eğer uygunsa önbelleğinde arşivlemiş olduğu aynı kaynağı istemciye gönderir. İstemciye daha hızlı cevap verme Proxy-sunucu arasındaki trafiği azaltma Dinamik sayfalar?


"3. HTTP. Kaynak CGI Programming with Perl “CGI Programming with Perl”, 2nd edition. Chapter 2, “Hypertext Transfer Protocol” Gunther Birznieks, Scott." indir ppt

Benzer bir sunumlar


Google Reklamları