3. HTTP.

Slides:



Advertisements
Benzer bir sunumlar
Bilgisayar Ağları ve İnternet
Advertisements

SADETTİN DEMİR Bir FTP Arama Motoru için Uygun, Hızlı ve Verimli FTP Sunucusunun Bulunması SADETTİN DEMİR
WEB TASARIM Temel Kavramlar.
Özel Site.NET İnternet Nedir? Soner Sevindik.
IIS 6.0. Giriş  Geçtiğimiz yıllarda, Microsoft güvenlik açıkları nedeniyle IIS 4/5 üstünden bir çok saldırıya uğradı.  Bu sebepten Microsoft’un geliştirdiği.
İNTERNET VE BİLGİ AĞLARININ KULLANIMI
Hazırlayan: Cihan UĞUR
WEB SERVİCE İDRİS YÜRÜK MAHMUT KAYA.
HTML GİRİŞ Okt. Sibel KAPLAN.
TEMEL KAVRAMLAR Web Tasarımının Temelleri, dersinin iyi anlaşılabilmesi için bu dersin temelini oluşturan kavramların iyi bilinmesi gerekir. 
 İnternetin.
WEB SAYFASI NASIL HAZIRLANIR?
Ders-2 Haber Grupları, Web Tabanlı Öğrenme, Kişisel Web Sitesi Hazırlama Aslı Ergün.
E-TİCARET.
İnternet Öğr.Gör. Şükrü KAYA 2008-Karacabey.
WEB TASARIMI HTML.
İnternet Programcılığı
İNTERNET.
YARDIM MASASI Internet Explorer tarayıcısı açılır ve Yardım Masası adresi yazılarak sayfası açılır. Gelen.
Ünite 12 INTERNET’İN ALT YAPISI
İNTERNETİN TEMEL KAVRAMLARI
Standartlar ve Protokoller
5. Perl’e Giriş.
Fonksiyonlar ve Küresel Değişkenler
İNTERNET VE BİLGİ AĞLARININ KULLANIMI
Proxy-DNS Nedir?.
KESTEL BELEDİYE BAŞKANLIĞI.  Kestel Belediyesi adlı kablosuz ağa bağlanılması gerekir.  İstemcilerin IP, Ağ Geçidi ve DNS ayarlarını otomatik alması.
AĞ PROTOKOLÜ.
Internet.
BİLGİ VE İLETİŞİM.
HTML İLE BASİT WEB İŞLEMLERİ
İnternet nedir? Nasıl çalışır?
YONT 172 BİLGİ TEKNOLOJİLERİNE GİRİŞ II
FERHAT KADİR PALA SACİDE GÜZİN MAZMAN
2.Bölüm: Uygulama Katmanı
IP, DNS ve Domain Çığır İLBAŞ.
İnternet Teknolojisi Temel Kavramlar
İnternet Teknolojisi Temel Kavramlar
WEB TASARIMINDA TEMEL KAVRAMLAR
BTEP 203 – İnternet ProgramcIlIğI - I
İnternet. İnternet...  dünya çapında bir bilgisayar ağı  bilgi süper otoyolu (information super highway)
3. Bölüm Taşıma Katmanı Computer Networking: A Top Down Approach 4th edition. Jim Kurose, Keith Ross Addison-Wesley, July Transport Layer.
Internette iki çe ş it adresleme kullanılır. IP numarası herhangi bir bilgisayar internete ba ğ landı ğ ı anda, dünya üzerinde sadece ona ait olan bir.
 Bilgisayarlar arasında bilgi alışverişini, dosya iletimini sağlamaktadır.  Bu protokol kullanılarak, internet üzerinde bulunan herhangi bir bilgisayarda.
TCP/IP – DHCP Nedir?.
WEB TASARIMININ TEMELLERİ
İNTERNET TARAYICI (WEB BROWSER) PROGRAMLARI
İnternet Teknolojisi Temel Kavramlar
Chapter 5. Ağ Protokolleri
BIM 101 Bilgi İşleme Giriş © 2006 Prentice-Hall, Inc.
KIRKLARELİ ÜNİVERSİTESİ
NOT: Bu slayt üzerindeki resmi değiştirmek için resmi seçin ve silin. Ardından, kendi resminizi eklemek için yer tutucudaki Resimler simgesini tıklatın.
BÖLÜM 12: INTERNET VE INTRANET UYGULAMALARI. INTRANET: Organizasyonlar giderek artan bir oranda işlerinin ihtiyaçlarına cevap verebilmek amacıyla Internet.
Bilgi İşlem Organizasyonu Güz Dönemi Server Çeşitleri ve Aralarındaki Farklar – Burak Eray KAYIŞ.
İNTERNET ADRESLERİ.
Dünyanın bilgisine açılan pencere...
BTEP 203 – İnternet ProgramcIlIğI - I
HAZIRLAYAN SEDA KALKANDELEN
İNTERNET ADRESLERİ.
AĞ SİSTEMLERİ VE INTERNET
PORTLAR Gizem GÜRSEL
İNTERNET ADRESLERİ.
İNTERNET VE BİLGİ AĞLARININ KULLANIMI
Ağ Nedir IP Adresi DNS Sunucu
TCP/IP PROTOKOLÜ.
Bilgisayar Ağları Ders Notları
HTTP Kullanıcı Asıllama ve Yetkilendirme
YONT 172 BİLGİ TEKNOLOJİLERİNE GİRİŞ II
İstemci sunucu sistemleri ve ağlar
İNTERNET.
Sunum transkripti:

3. HTTP

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

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

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

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.

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: http://www.w3.org/Protocols/

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

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

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.

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)

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 http://www.iana.org/assignments/port-numbers

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 http://www.baskent.edu.tr/~umuth/ist464/index.htm

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.

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. <a name=“ist464" >Burası demir atma noktası</a> http://localhost/anasayfa.html#ist464 Web tarayıcıları genellikle demir atma noktasını sayfa içinde bulamazlarsa o zaman yükledikleri sayfanın en sonunu getirirler.

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

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 http://localhost/Doc#2.html 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.

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

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.

3.2 HTTP Protokolü

3.2 HTTP Protokolü İ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/1.1 200 OK Date: Sat, 18 Mar 2000 20:35:35 GMT Server: Apache/1.3.9 (Unix) Last-Modified: Wed, 20 May 1998 14:59:42 GMT ETag: "74916-656-3562efde“ Content-Length: 141 Content-Type: text/html <HTML> <HEAD><TITLE>Sample Document</TITLE></HEAD> <BODY> <H1>Sample Document</H1> <P>This is a sample HTML document!</P> </BODY> </HTML>

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.

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.

3.2.1 HTTP Protokolü: Request Yöntem (Method) Tanım GET Sunucudan bir kaynağı ister HEAD GET gibi kullanılır ama sadece Header getirir ve içerik getirmez POST Sunucudan, sunucuda bulunan verinin içeriğini değiştirmesini ister PUT Sunucudan, sunucuda bir kaynak yaratmasını veya başka bir kaynak ile değiştirmesini ister DELETE Sunucudan, sunucuda bulunan bir kaynağı silmesini ister CONNECT SSL bağlantıların HTTP bağlantıları içinden geçmesini sağlar OPTIONS Sunucudan bir kaynakla ilgili geçerli yöntemleri ister TRACE Sunucunun istek Header’larını olduğu gibi geri göndermesini ister

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.

3.2.1 HTTP Protokolü: Request Header Tanım Host Hedef sunucu adını belirtir Content-Length İstek mesajının boyutunu (byte olarak) belirtir Content-Type İsteğin ortamını (media) belirtir Authentication Kaynağı 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 Cookie Sunucu tarafından bir önceki istekte verilen bir isim ve değer çiftini gönderir

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.

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.

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.

3.2.2 HTTP Protokolü: Response Header Tanım 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

3.2.2 HTTP Protokolü: Response Header Tanım 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 WWW-Authenticate Doğrulama şeklini ve metodunu tanımlar

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.

3.3 Proxy’ler

3.3 Proxy’ler 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?