2.Bölüm: Uygulama Katmanı 2.1 Ağ uygulamalarının esasları 2.2 Web and HTTP 2.3 FTP 2.4 Elektronik Posta SMTP, POP3, IMAP 2.5 DNS 2.6 P2P dosya paylaşımı 2:UYGULAMA KATMANI
2.Bölüm: Uygulama Katmanı Ağ uygulama protokollarının kavramsal ve işletim yönleri iletim-katmanı servis modelleri İstemci-sunucu Eşten-eşe (P2P) Yaygın kullanılan protokoller HTTP FTP SMTP / POP3 / IMAP DNS 2:UYGULAMA KATMANI
Bazı ağ uygulamaları E-posta Web Chat Uzaktan erişim P2P dosya paylaşımı Çok kullanıcılı ağ oyunları Depolanmış video parçası akışı Internet telefonu Gerçek zaman video konferansı 2:UYGULAMA KATMANI
Ağ uygulaması oluşturmak Programlar Farklı uç sistemlerde çalışır Ağ üzerinden haberleşir e.g., Web: Web sunucusu yazılımı internet gezgini vasıtasıyla ile haberleşir Yazılımlar ağ merkezindeki cihazlar düşünülerek yazılmazlar Ağ merkezindeki cihazlar uygulama katmanında çalışmazlar Bu tasarım uygulamaların geliştirmelerine müsait bir ortam hazırlar uygulama iletim ağ link fiziksel 2:UYGULAMA KATMANI
Uygulama Mimarileri İstemci-sunucu P2P Hibrit istemci-sunucu ve P2P 2:UYGULAMA KATMANI
İstemci sunucu mimarisi Her zaman açık olan host kalıcı IP adresi istemci: sunucuyla haberleşir arada bir bağlantı sağlayabilir değişken IP adresleri olabilir Birbirleriyle direkt olarak haberleşmezler 2:UYGULAMA KATMANI
Saf P2P mimarisi Her zaman açık olan bir sunucu yok herhangi iki eş direkt olarak haberleşebilir eşler geçici olarak bağlanabilir ve IP adresi değiştirebilir örnek: Gnutella Ölçeklenebilirliği yüksek Fakat idaresi zor 2:UYGULAMA KATMANI
Hibrit istemci-sunucu ve P2P Napster Dosya transferi P2P Dosya araması merkezi: Eşler merkezi sunucuda içeriklerini kaydederler Eşler aynı merkezi sunucuda aradıkları içeriği bulmak için sorgulama yaparlar Chat İki kullanıcı arasındaki chat P2P Çevrimiçi olup olmadığının algılaması merkezi: Kullanıcılar çevrimiçi olduklarında IP adreslerini merkezi sunucuya kaydederler Kullanıcı arkadaşlarının IP adreslerini bulmak için merkezi sunucuya başvurur 2:UYGULAMA KATMANI
İşlemler haberleşiyor İstemci işlemi: haberleşmeyi başlatan işlem Sunucu işlemi: haberleşmek üzere bağlantı kurulmasını bekleyen işlem İşlem: hostta çalışan program. aynı hostta iki işlem birbiriyle işletim sistemiyle belirlenen şekilde haberleşir. Farklı hostlardaki işlemler mesaj alış-verişiyle haberleşir. Note: P2P mimarisine sahip uygulamalar istemci ve sunucu işlemlerinin her ikisine de sahipler 2:UYGULAMA KATMANI
Soketler İşlemler soketleri aracılığıyla mesaj alış-verişi yaparlar TCP bufferlar soket host veya sunucu işlem TCP bufferlar soket host veya sunucu İşlemler soketleri aracılığıyla mesaj alış-verişi yaparlar soket kapı ile aynı mantıkla çalışır Gönderici işlem mesaja çıkış kapısını gösterir Gönderici işlem, alıcı işlemlere de mesajları getiren kapının diğer tarafındaki iletim yapısına güvenir Uygulama geliştiricisinin kontrolünde Internet OS kontrolünde API(Application Programming Interface): (1) iletim protokolünün seçimi; (2) birkaç parametreyi değiştirme yetkisi 2:UYGULAMA KATMANI
Addresleme işlemleri Bir işlemin mesajları alabilmesi için kimliği olmalı Bir host 32-bit IP adresine sahip S: sadece işlemin çalıştığı hostun IP adresi işlemi tanımlamaya yeterli mi? Cevap: Hayır, birçok işlem aynı hostta aynı anda çalışıyor olabilir Tanımlayıcı IP numarasını ve port numarasını içermelidir. Örnek port numaraları: HTTP sunucu: 80 Mail sunucu: 25 2:UYGULAMA KATMANI
Uygulama katmanı protokolü şunları tanımlar: Mesaj tiplerini, e.g., istek, cevap Message yazılım formatını: Mesajlarda hangi alanların olduğunu İşlemlerin ne zaman ve nasıl mesaj gönderdiklerinin ve cevapladıklarının kurallarını protokoller: RFClerle tanımlanmıştır Birbirleri ile çalışabilirler e.g., HTTP, SMTP 2:UYGULAMA KATMANI
Bir iletim servis uygulaması neye ihtiyaç duyar? Veri kaybı Bazı uygulamalar bir miktar veri kaybına tolere edebilir (e.g., ses) Diğer uygulamalar (e.g., dosya transferi, telnet) 100% güvenilir veri transferi ister Bant genişliği Bazı uygulamaların (e.g., multimedia) çalışabileceği minimum bant genişliği vardır Diğer uygulamalar ne kadar bant genişliği alırlarsa onla idare ederler Zamanlama Bazı uygulamalar (e.g., Internet telefonu, interaktif oyunlar) gecikmenin az olmasını ister 2:UYGULAMA KATMANI
Bazı uygulamalar için Transport servis gereksinimleri Dosya transferi e-posta Web belgeleri Gerçek-zaman ses/görüntü Depolanmış ses/görüntü interaktif oyunlar chat Veri kaybı Kayıpsız Kayıplı Bant genişliği elastik ses: 5kbps-1Mbps video:10kbps-5Mbps aynı birkaç kbps Zaman hassasiyeti hayır evet, 100’s msn evet, birkaç sn evet, 100’s msec evet ve hayır 2:UYGULAMA KATMANI
Internet uygulamaları: uygulama, iletim protokolleri katmanı protokolü SMTP [RFC 2821] Telnet [RFC 854] HTTP [RFC 2616] FTP [RFC 959] özel (e.g. RealNetworks) (e.g., Dialpad) Altındaki iletim protokolü TCP TCP veya UDP Tipik olarak UDP Uygulama e-posta Uzaktan erişim Web Dosya transferi akan multimedia Internet telefonu 2:UYGULAMA KATMANI
Web ve HTTP Web sayfası nesneler içerir Nesne HTML dosyası, JPEG resim, Java applet, ses dosyası,… olabilir Web sayfası birçok nesneye referansı olan temel bir HTML(Hyper Text Markup Language )-dosyası içerir Bütün nesneler bir URL (Uniform Resource Locator) ile adreslenebilir Örnek URL: www.someschool.edu/someDept/pic.gif host name path name 2:UYGULAMA KATMANI
HTTP HTTP: hypertext transfer protocol Web’in uygulama katmanı protokolü istemci/sunucu modeli istemci: Web nesnelerini isteyen ve gösteren gezgin sunucu: isteklere cevap veren ve nesneleri gönderen web sunucusu HTTP 1.0: RFC 1945 HTTP 1.1: RFC 2068 HTTP isteği PC internet Explorer çalışıyor HTTP cevabı HTTP isteği Web sunucusu HTTP cevabı Mac Navigator çalışıyor 2:UYGULAMA KATMANI
HTTP HTTP is “durumsuz” TCP kullanır: not İstemci, sunucu ile arasında TCP bağlantısı başlatır, port 80 sunucu TCP bağlantısını kabul eder HTTP mesajları internet gezgini ve web sunucusu arasında gider gelir TCP bağlantısı kapatılır HTTP is “durumsuz” Sunucu istemcinin geçmiş istekleri hakkında bilgi depolamaz not Durum bilgisi tutan protokoller karmaşıktır! Geçmiş durum takip edilmeli Eğer sunucu/istemci çökerse durum bilgileri farklılaşabilir 2:UYGULAMA KATMANI
HTTP bağlantıları Kalıcı olmayan HTTP En fazla bir nesne TCP bağlantısı ile gönderilir. HTTP/1.0 kalıcı olmayan HTTP kullanır. Kalıcı HTTP Tek bir TCP bağlantısı üzerinden birden fazla nesne gönderilebilir. HTTP/1.1 kalıcı HTTP kullanır 2:UYGULAMA KATMANI
Kalıcı olmayan HTTP (metin ve 10 Jpeg’e referans içeriyor Kullanıcı aşağıdaki URL’yi ygirer www.someSchool.edu/someDepartment/home.index 1a. HTTP istemcisi HTTP sunucusuna bağlantı başlatır (www.someSchool.edu, port 80) 1b. Port 80 den TCP bağlantısı bekleyen www.someSchool.edu hostu bağlantıyı kabul eder ve HTTP istemcisine bildirir 2. HTTP istemcisi HTTP istek messajını (URL’yi içeren) TCP bağlantı soketine gönderir. Messaj istemcinin someDepartment/home.index nesnesini istediğini belirtir 3. HTTP sunucusu istek mesajını alır, istenen nesneyi de içeren cevap mesajını oluşturarak kendi soketine gönderir. zaman 2:UYGULAMA KATMANI
Kalıcı olmayan HTTP zaman 4. HTTP sunucusu TCP bağlantısını kapatır. 5. HTTP istemcisi html dosyasını içeren mesajı alır ve gösterir. Bu dosyayı işlerken 10 tane referans jpeg nesnesi daha olduğunu fark eder zaman 6. 1-5 adımları bu 10 jpeg nesnesi için tekrarlanır 2:UYGULAMA KATMANI
Cevaplama süresi modeli RTT (Round Trip Time) tanımı: Gönderilen küçük bir paketin sunucuya gidip gelme zamanı. Cevaplama zamanı: TCP bağlantı isteği için 1 RTT HTTP isteği ve HTTP cevabının ilk bitlerinin dönmesi için 1RTT Dosya iletim süresi toplam = 2RTT+iletim süresi Dosyayı iletme süresi TCP Bağlantısı başlat RTT dosyayı iste Dosya alındı zaman 2:UYGULAMA KATMANI
Kalıcı HTTP Kalıcı olmayan HTTP sorunları: Ardışık olmayan Kalıcı: Her nesne için 2 RTT gerekli İşletim sistemi her nesnede TCP bağlantısını oluşturmak için meşgul olacak Fakat internet gezginleri genelde referans nesneler için paralel TCP bağlantısı açarlar Kalıcı HTTP Sunucu nesneyi gönderdikten sonra bağlantıyı açık tutar sonraki HTTP mesajları aynı bağlantı üzerinden gönderilir Ardışık olmayan Kalıcı: İstemci eğer bir önceki isteğe cevap alınmışsa yeni bir istek gönderir Herbir referans nesne için 1 RTT Ardışık Kalıcı: HTTP/1.1 İstemci gördüğü bütün referans nesneler için istekte bulunur Bütün referans nesneler için 1 RTT kadar az bir süre 2:UYGULAMA KATMANI
Mesajın sonun belirtir HTTP istek mesajı İki tip HTTP messajı: istek, cevap HTTP istek mesajı: ASCII (insan tarafından okunabilen biçim) İstek satırı (GET, POST, HEAD komutları) GET /somedir/page.html HTTP/1.1 Host: www.someschool.edu User-agent: Mozilla/4.0 Connection: close Accept-language:fr (enter) Başlık satırları Enter satırı, Mesajın sonun belirtir 2:UYGULAMA KATMANI
HTTP istek mesajı: genel format 2:UYGULAMA KATMANI
form girişi yükleme Post metodu: Web page genelde form girişi içerir Input sunucuya varlık gövdesi kısmında aktarılır URL metodu: GET metodunu kullanır Input istek satırının URL alanında aktarılır: www.somesite.com/animalsearch?monkeys&banana 2:UYGULAMA KATMANI
Method tipleri HTTP/1.0 GET POST HEAD HTTP/1.1 GET, POST, HEAD PUT Sunucudan nesneyi göndermemesini ister. Genelde hata ayıklama için kullanılır HTTP/1.1 GET, POST, HEAD PUT Dosyayı URL path’ine varlık gövdesi kısmında aktarır DELETE Belirtilen URL’deki dosyayı siler 2:UYGULAMA KATMANI
HTTP cevap mesajı Durum satırı (protokol durum kodu) HTTP/1.1 200 OK Connection close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ... başlık satırları veri, e.g., istenilen HTML dosyası 2:UYGULAMA KATMANI
HTTP cevabı durum kodları sunucu->istemci cevap mesajı ilk satırı. Birkaç örnek kod: 200 OK İstek başarılı, istenen nesne bu mesajda 301 Moved Permanently İstenen nesne taşındı, yeni yeri bu mesajda 400 Bad Request İstek mesajı sunucu tarafından anlaşılamadı 404 Not Found İstenen doküman sunucuda bulunamadı 505 HTTP Version Not Supported 2:UYGULAMA KATMANI