BM 402 Bilgisayar Ağları (Computer Networks)



Benzer belgeler
Uygulama Katmanı - 1. Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004.

Bilgisayar Programcılığı Uzaktan Eğitim Programı. e-bilg 121 AĞ TEKNOLOJİLERİNİN TEMELLERİ Öğr. Gör. Bekir Güler

BM 402 Bilgisayar Ağları (Computer Networks)

Görsel Programlama DERS 12. Görsel Programlama - Ders12/

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

Bölüm 2 Uygulama Katmanı. 2: Application Layer 1

TCP/IP. TCP (Transmission Control Protocol) Paketlerin iletimi. IP (Internet Protocol) Paketlerin yönlendirmesi TCP / IP

Bölüm3 Taşıma Katmanı. Transport Layer 3-1

BM 402 Bilgisayar Ağları (Computer Networks)

BTP 207 İNTERNET PROGRAMCILIĞI I. Ders 1

DNS. Linux Yaz Kampı Bolu 2012 Eray Aslan

Computer Networks 5. Öğr. Gör. Yeşim AKTAŞ Bilgisayar Mühendisliği A.B.D.

Saldırı Tespit ve Engelleme Sistemleri Eğitimi Ön Hazırlık Soruları

Soket, bir sunucu programı ve bir veya birden çok istemci programı arasında çift yönlü iletişim kuran bir yazılım uç noktasıdır.

İNTERNET VE BİLGİ AĞLARININ KULLANIMI

Web Tasarımının Temelleri

Bilgisayar Sistemleri ilk ortaya çıktığında...

Exchange Server 2013 Kurulum Sonrası Yapılandırmalar

Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Ağları Dersi Lab. 2. İçerik. IP ICMP MAC Tracert

Ayni sistem(host) üzerinde IPC. Ağ(network) aracılığı ile IPC

FTP ve Güvenlik Duvarları

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

İletişim Ağları Communication Networks

Uygulama katmanı ve protokolları (Uygulama+Sunum+Oturum)

Bilgisayar Programcılığı Uzaktan Eğitim Programı. e-bilg 121 AĞ TEKNOLOJİLERİNİN TEMELLERİ Öğr. Gör. Bekir Güler

AĞ ve İNTERNET TCP/IP. IP Adresi İNTERNET NEDİR? Standartlar :

Gazi Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü. Bilgisayar Ağları Dersi Lab. 2

Internetin Yapı Taşları

Ağ Temelleri Semineri. erbil KARAMAN

Bilgisayar Programcılığı

Đlk olarak 80 li yıllarda Amerikan Savunma Bakanlığı (DoD) tarafından OSI tabanlı sistemlere alternatif olarak geliştirilmiştir.

Bilgisayar Ağları. Ağı oluşturan cihazlar. Coğrafi koşullara göre ağın sınıflandırılması (LAN, MAN, WAN)

Hazırlayan: Barış Şimşek. Bitirme Çalışması Sunumu. Ocak 2001, Trabzon KTÜ

Bir port aynı anda bir process tarafından dinlenebilir. Fakat bir process birden fazla portu dinleyebilir.

AĞ HİZMETLERİ. Öğr.Gör.Volkan ALTINTAŞ. Version 4.0

Giriş RFC (Yorumlar için talep) DNS IPv6 IPv6 ve DNS Örnekler. 13 Ocak 2011 IPv6 Konferansı

Elbistan Meslek Yüksek Okulu Güz Yarıyılı

Data Communications. Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü. 2. Ağ Modelleri

BİLGİSAYAR AĞLARI VE İLETİŞİM

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim

JAVA ile DAĞITIK PROGRAMLAMA

Serdar SEVİL. TCP/IP Protokolü

Basit bir web uygulaması

Bölüm 24. Java Ağ Uygulamaları 24.1 Java Appletleri. Bir Applet in Yaşam Döngüsü:

İleri Düzey Bilgisayar Ağları

Elbistan Meslek Yüksek Okulu GÜZ Yarıyılı Kas Salı, Çarşamba Öğr. Gör. Murat KEÇECİOĞLU

Uygulama 6. Sunum 5. Oturum 4. Taşıma 3. Ağ 2. Veri iletim 1

HAZIRLAYAN BEDRİ SERTKAYA Sistem Uzmanı CEH EĞİTMENİ

MCR02-AE Ethernet Temassız Kart Okuyucu

qmail ile SPAM engelleme Devrim Sipahi Dokuz Eylül Üniversitesi

Bölüm 12: UDP ve TCP UDP (User Datagram Protocol)

Dünyanın bilgisine açılan pencere... Ya da sadece yeni çağın eğlencesi...

DNS Nedir? HİKMET TÜYSÜZ


Internet Nedir? Devlet Kurumları. Internet Servis Sağlayıcılar. Lokal Ağ. Eğitim Kurumları. Kişisel Bilgisayar. Dizüstü Bilgisayar.

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş

Bölüm 10: PHP ile Veritabanı Uygulamaları

Bölüm 28 ve 29 : İstemci Sunucu Etkileşimi ve Soket API sine Giriş. Internet Protokolleri ve Ağ Uygulamaları. Internet Protokolleri Üzerinden İletişim

Dünyanın bilgisine açılan pencere... Ya da sadece yeni çağın eğlencesi...

Nesne Yönelimli Programlama

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

2. Use Dns lookup, Use relay server aralarında seçim yapınız. Biz Dns lookup ile SMTP-mizi çalıştırdık. DNS lookup kısmında domain adınızı yazınız.

Data Communication Systems Lab

Atabey Meslek Yüksek Okulu Web Tasarımının Temelleri

BMS-302 İleri Web Programlama. İş Parçacığı (Thread) ve Soket (Socket) Programlama


Maltepe Üniversitesi Bilgisayar Mühendisliği Bölümü Bilgisayar Ağları - 1 (BİL 403)

Toplu İleti Gönderimi

Internet in Kısa Tarihçesi

Bilgisayar Ağları Computer Networks

Yeni Nesil Ağ Güvenliği

Internet Teknolojileri

Wireshark Lab: TCP and UDP

BLGM 344 DENEY 3 * AĞ PROGRAMLAMAYA GİRİŞ

BLGM 343 DENEY 8 * TCP İLE VERİ İLETİŞİMİ

Computer Networks 4. Öğr. Gör. Yeşim AKTAŞ Bilgisayar Mühendisliği A.B.D.

OPNET IT Guru- Güvenlik Duvarı ve Sanal Özel Ağ (Firewalls and Virtual Private Network, VPN)

HACETTEPE ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BİLGİSAYAR AĞLARI LABORATUVARI DENEY 8. Ağ Adresi Dönüştürme (NAT-Network Address Translation)

EC-485. Ethernet RS485 Çevirici. İstanbul Yazılım ve Elektronik Teknolojileri

7 Uygulama 6. Sunum 5 Oturum Taşıma. 4 Ara katman- Yazılım ve donanım arası 3. Ağ Veri iletim. 2 Ağ Grubu-Donanım 1. Fiziksel. Uygulama Grubu-Yazılım

ACR-Net 100 Kullanım Kılavuzu

// hataları işaret eden referans

Ağ programlama (Network programming) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 13 1

DHCP kurulumu için Client/Server mimarisine sahip bir ağ ortamı olmalıdır ki bu da ortamda bir Domain Controller olmasını zorunlu kılar.

Ortamınızda A.D. veya LDAP sistemi var ise aşağıdaki linkten KoruMail LDAP-AD isimli dokümanı inceleyebilirsiniz.

SMTP Protokolü ve Spam Mail Problemi

TBF 110 BİLGİSAYARDA VERİ İŞLEME ve UYGULAMALARI Ha9a- 2 - İnternet

Kurumsal Güvenlik ve Web Filtreleme

Gökhan AKIN ĐTÜ/BĐDB Ağ Grubu Başkanı ULAK/CSIRT. Sınmaz KETENCĐ ĐTÜ/BĐDB Ağ Uzmanı


Oturum Başlatma Protokolü ve Uygulamaları

Veri Tabanı-I 5.Hafta

WEB TASARIMININ TEMELLERİ

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

YAYGIN OLARAK KULLANILAN ADSL MODEMLER VE ROUTER AYARLARI

HTTP. (Hyper Text Transfer Protocol)

Veritabanı. Ders 2 VERİTABANI

TCP/IP protokol kümesini tanımlamak. Bu protokol kümesindeki katmanları sıralamak.

Transkript:

BM 402 Bilgisayar Ağları (Computer Networks) M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü Not: Bu dersin sunumları, ders kitabının yazarları James F. Kurose ve Keith W. Ross tarafından sağlanan sunumlar üzerinde değişiklik yapılarak hazırlanmıştır. Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 2/101 1

Elektronik posta Üç ana bileşen vardır: s (kullanıcı arayüzleri) mail server lar simple mail transfer protocol: SMTP User Agent posta okuyucu Mesaj oluşturma, düzenleme, okuma Eudora, Outlook, elm, Netscape Messenger Giden ve gelen mesajlar server da saklanır mail server SMTP mail server SMTP SMTP giden mesaj kuyruğu kullanıcı mail kutusu mail server 3/101 Elektronik posta: mail server lar Mail Server lar mailbox kullanıcı için gelen mesajları saklar message queue gönderilen mesajları tutar SMTP protocol mail server lar arasında mesaj göndermek için kullanılır client: gönderen mail sunucu server : alan mail sunucu mail server SMTP mail server SMTP SMTP mail server 4/101 2

Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 5/101 Elektronik posta: SMTP [RFC 2821] Client tan Server a e-mail mesajını güvenilir göndermek için TCP kullanır, port 25 direct transfer: gönderen server dan alan server a Üç aşamalı transfer handshaking mesajların transferi kapatma command/response etkileşimi commands: ASCII metin response: durum kodları ve deyimler 7-bit ASCII kullanılır 6/101 3

Elektronik posta: posta gönderme 1) A, kullanarak bir mesaj hazırlar aaa@gazi.edu.tr 2) A nın programı mesajı kendi mail sunucusuna gönderir, mesaj kuyruğa atılır 3) SMTP de client taraftaki mail sunucu bir TCP bağlantısı açar B kullanıcısının mail server ına 4) SMTP client A nın mesajını TCP bağlantısı üzerinden gönderir 5) B nin mail server ı gelen mesajı B nin mail kutusuna yerleştirir 6) B kendi programı ile mesajı okur 1 mail server 2 3 4 mail server 5 6 7/101 Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 8/101 4

SMTP: final words SMTP persistent connection kullanır SMTP 7-bit ASCII mesaj gerektirir (header & body) SMTP server CRLF.CRLF ile mesaj sonunu belirler HTTP ile karşılaştırma: HTTP: pull SMTP: push İkiside ASCII command/response etkileşimi, durum kodları HTTP: her nesne kendi cevap mesajına encapsulateedilir SMTP: bir mesajla çok sayıda nesne gönderilir 9/101 Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 10/101 5

Mail mesaj formatı SMTP: e-mail mesajlarını gönderen/alan protokol RFC 822: metin mesaj formatı header lines, To: From: Subject: header body Boş satır body mesaj, ASCII karakterler 11/101 Mesaj formatı : multimedia MIME: multimedia mail extension, RFC 2045, 2056 MIME içerik türü mesaj header da ek satırlarda verilir MIME versiyon method used to encode data multimedia data type, subtype, parameter declaration encoded data From: alice@crepes.fr To: bob@hamburger.edu Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data.........base64 encoded data 12/101 6

Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 13/101 Mail erişim protokolleri SMTP SMTP erişim protokolü gönderenin mail server ı SMTP: Alıcı sunucuda gönderme ve saklama Mail access protocol: sunucudan alma işlemini yapar POP: Post Office Protocol [RFC 1939] authorization ( <-->server) ve download IMAP: Internet Mail Access Protocol [RFC 1730] daha fazla özellik (daha fazla karmaşık) sunucuda saklanmış mesajlar üzerinde işlem HTTP: Hotmail, Yahoo! Mail, v.b. alanın mail server ı 14/101 7

POP3 protocol authorization aşaması client komutları: : name tanımla pass: password server cevapları +OK -ERR transaction aşaması, client: list: mesaj numaralarını listele retr: numara ile mesaj al dele: delete quit S: +OK POP3 server ready C: bob S: +OK C: pass hungry S: +OK successfully logged on C: list S: 1 498 S: 2 912 S:. C: retr 1 S: <message 1 contents> S:. C: dele 1 C: retr 2 S: <message 1 contents> S:. C: dele 2 C: quit S: +OK POP3 server signing off 15/101 POP3 ve IMAP POP3 Önceki örnek download ve delete modlarını göstermektedir. Bir kullanıcı client ı değiştirmişse mesaj okuyamaz IMAP Tüm mesajlar aynı sunucuda tutulur Kullanıcıya dizinlerdeki mesajlarını organize etme izni verir IMAP kullanıcı durumunu oturum sonuna kadar saklar: Dizin adları ve mesaj ID ile dizin eşleştirme yapar 16/101 8

Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 17/101 DNS: Domain Name System İnsanlar için: çok sayıda tanımlayıcı vardır: TCKimlik, Vergi No, Pasaport No Internet host ları, router lar: IP adres (32 bit) datagram adreslemek için kullanılır ad, örn., www.yahoo.com insanlar kullanır IP adresleri ile adlar arasında eşleme gerekmektedir. Domain Name System: distributed database bir çok name servers ile hiyerarşik olarak oluşturulmuştur. application-layer protocol host, router, name server lar adres/ad dönüşümünü yaparak adları elde eder. Internet temel bir fonksiyonu applicationlayer protokolü ile gerçekleştirilir. Ağ uç birimleri karmaşıktır. 18/101 9

Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 19/101 DNS DNS servisleri Hostname ile IP adres dönüşümü Host aliasing (takma isim) Canonical ve alias name Mail server aliasing Load distribution (yük dağıtımı) Bir isim için birden fazla sunucu farklı IP numaralarıyla çalışır ve sırayla işler dağıtılır DNS neden merkezi değildir? Tek noktadaki hata Trafik yoğunluğu distant centralized database maintenance 20/101 10

Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 21/101 Dağıtık, Hiyerarşik Veritabanı Root DNS sunucular com DNS sunucular org DNS sunucular edu DNS sunucular yahoo.com DNS sunucular amazon.com DNS sunucular pbs.org DNS sunucular poly.edu DNS sunucular umass.edu DNS sunucular Client www.amazon.com için IP adresini istemektedir. Client, com DNS server ı bulmak için a root server ı sorgular Client, amazon.com DNS server için com DNS server ı sorgular Client, www.amazon.com için IP adresi almak için amazon.com DNS server ı sorgular 22/101 11

DNS: Root name server lar Çözümlenemeyen isimler için local name server la iletişim yapılır root name server: İsim eşleşmesi bilinmiyorsa bağlantıya geçilir Eşleşme alınır Eşleşme local name server a gönderilir a Verisign, Dulles, VA c Cogent, Herndon, VA (also Los Angeles) d U Maryland College Park, MD g US DoD Vienna, VA h ARL Aberdeen, MD j Verisign, ( 11 locations) k RIPE London (also Amsterdam, Frankfurt) i Autonomica, Stockholm (plus 3 other locations) e NASA Mt View, CA f Internet Software C. Palo Alto, CA (and 17 other locations) b USC-ISI Marina del Rey, CA l ICANN Los Angeles, CA m WIDE Tokyo dünyada 13 root name server vardır 23/101 TLD ve Authoritative Server lar Top-level domain (TLD) server lar: com, org, net, edu, v.b ile en üst seviye ülke domainleri uk, fr, ca, jp v.b. den sorumludur. Ağ çözümleri com TLD için sunucu bulundurur Eğitim sunucuları edu TLD bulundurur Authoritative DNS server lar: kurumların DNS server ları, hostname ile IP eşleşmesi için kullanılır (örn., Web ve mail). Kurum veya ISP tarafından oluşturulur 24/101 12

Local Name Server Her ISP (şirket, üniversite) bir tane Local Name Server a sahiptir. default name server olarak adlandırılır Bir host DNS sorgu yaptığında, sorgu kendi local DNS server ına gönderilir Proxy olarak çalışır, sorgu hiyerarşide yönlendirilir. 25/101 Örnek root DNS server cis.poly.edu üzerindeki host, gaia.cs.umass.edu için IP adresi istemektedir local DNS server dns.poly.edu 1 2 8 3 4 5 7 TLD DNS server 6 requesting host cis.poly.edu authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu 26/101 13

Özyinelemeli (recursive) sorgular root DNS server recursive query: puts burden of name resolution on contacted name server heavy load? iterated query: contacted server replies with name of server to contact I don t know this name, but ask this server local DNS server dns.poly.edu 1 2 8 requesting host cis.poly.edu 7 6 5 3 4 TLD DNS server authoritative DNS server dns.cs.umass.edu gaia.cs.umass.edu 27/101 DNS: kayıtları cache e yazmak ve update etmek name server eşleşmeyi öğrendiğinde, kendi cache ine aktarır Cache ten belirli süre sonunda atılır TLD server lar local name server larda cache lenir Böylece root name server lar sıklıkla ziyaret edilmezler update/notify mekanizmaları IETF tarafından tasarlanmaktadır RFC 2136 http://www.ietf.org/html.charters/dnsind-charter.html 28/101 14

DNS kayıtları DNS: distributed db storing resource records (RR) Type=A name, hostname value, IP adres (relay1.bar.foo.com, 145.37.93.126, A) Type=NS RR format: (name, value, type, ttl) name, domain (örn. foo.com) value, bu domain için authoritative name server ın IP adresi (foo.com, dns.foo.com, NS) Type=CNAME name, canonical (the real) isim için takma addır www.ibm.com gerçekte servereast.backup2.ibm.com value, canonical isimdir (foo.com, relay1.bar.foo.com, CNAME) Type=MX value, name ile ilişkilendirilmiş mailserver dır (foo.com, mail.bar.foo.com, MX) 29/101 DNS içine kayıtların eklenmesi Örnek: Network Utopia oluşturuldu Kayıt adı networkuptopia.com olur (registrar da (örn., Network Solutions)) Registrar lar adları ve IP adresleri ile authoritative name server a sağlanır Registrar iki RRs kaydını com TLD server a saklar: (networkutopia.com, dns1.networkutopia.com, NS) (dns1.networkutopia.com, 212.212.212.1, A) authoritative DNS server a www.networkuptopia.com için Type A kayıt ve networkutopia.com için Type MX kayıt eklenir (networkutopia.com, 212.212.212.2, A) (networkutopia.com, mail.networkutopia.com, MX) 30/101 15

Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 31/101 Örnek P2P dosya paylaşımı Ayla P2P client uygulamasını kendi notebook u üzerinde çalıştırmaktadır Internet e bağlanır; her bağlantı için bir IP adres alınır Jale ye Merhaba Jale gönderir Uygulama diğer peer da Merhaba Jale yi görüntüler. Ayla bir peer seçer, Kemal. Dosya Kemal in bilgisayarından Ayla nın notebook una aktarılır: HTTP Ayla download yaparken, diğer kullanıcılar Ayla dan upload yapabilir. Ayla hem Web client hem de Web server olarak çalışır. Tüm peer ların server olmasından dolayı yüksek ölçeklenebilirdir 32/101 16

P2P: merkezi dizin Orijinal Napster tasarımı 1) Bir peer bağlandığında, merkezi server ı bilgilendirir: Merkezi dizin sunucusu 1 Kemal peers IP adres 1 içerik 2) Ayla istediği sorguyu gönderir 3) Ayla, Kemal den istediği dosyayı aktarır 2 1 1 3 Ayla 33/101 P2P: merkezi dizindeki problemler Hatanın tek noktada olması Performans yoğunluktan etkilenir. Copyright infringement 34/101 17

Query flooding: Gnutella Tam dağıtıktır Merkezi server yoktur. public domain protokol Çok sayıda Gnutella client vardır ve ilgili protokolü bulundurur. Ağ yapısı : graph X ve Y arasında TCP bağlantısı varsa kenar çizilir Tüm aktif peer lar ve kenarlar ağı oluşturur Kenar fiziksel bağlantı değildir Bir peer genel olarak < 10 komşuya bağlıdır 35/101 Gnutella: protokol Sorgu mesajı var olan TCP bağlantısı üzerinden gönderilir peer lar sorgu mesajını yönlendirir QueryHit aynı yoldan ters yönden gönderilir Query QueryHit File transfer: HTTP Query QueryHit Scalability: limited scope flooding 36/101 18

Gnutella: Peer joining 1. peer X Gnutella ağında başka bir peer bulmak zorundadır: aday peer listesini kullanır 2. X, Y ile bağlantı kuruna kadar ardarda TCP bağlantısı yapmaya çalışır 3. X Ping mesajını Y ye gönderir; Y Ping mesajını yönlendirir. 4. Tüm peer lar Ping mesajını alır ve Pong mesajını gönderir 5. X çok sayıda Pong mesajını alır. Çok sayıda TCP bağlantısı yapar 37/101 Heterojen yapı: KaZaA Her peer bir grup lideridir veya bir grup liderine atanır. Peer lar arasında TCP bağlantısı Grup liderleri arasında TCP bağlantısı. Grup lideri tüm bağlı peer ların içeriğini izler. ordinary peer group-leader peer neighoring relationships in overlay network 38/101 19

KaZaA: Querying Her dosya bir hash ve bir descriptor bulundurur. Client sorguyu kendi grup liderine gönderir. Grup lideri uyan kayıtlarla geri döner: Her uygun kayıt için: metadata, hash, IP adres vardır. Eğer bir grup lideri sorguyu diğer grup liderlerine yönlendirirse, onlar uyan kayıtları döndürür. Client download için dosyaları seçer. HTTP tanımlayıcı olarak hash i kullanır ve istenen dosyayı alır. 39/101 Kazaa özellikleri Eşzamanlı sınırlı upload Request kuyruğu Incentive önceliklendirme Paralel download 40/101 20

Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 41/101 Soket programlama Amaç: client/server uygulamaların soket kullanılarak haberleşmesi Soket API 1981 yılında BSD4.1 UNIX ile önerildi Uygulamalar tarafından doğrudan oluşturulur, kullanılır ve yayınlanır. client/server yaklaşımı Soket API ile iki tür transport hizmeti: unreliable datagram reliable, byte stream-oriented socket Bir host-local, application-created, OS-controlled arayüz (bir kapı ). Uygulama işlemleri (process) arasında mesaj gönderme ve alma yapılır. 42/101 21

TCP kullanarak soket programlama Soket: uygulama prosesleri ve end-to-end transport protokolü (TCP veya UDP) arasında TCP servisi: bir prosesten diğerine reliable byte transferi Uygulama geliştirici kontrol eder OS kontrol eder process socket TCP with buffers, variables internet process socket TCP with buffers, variables Uygulama geliştirici kontrol eder OS kontrol eder host veya server host veya server 43/101 TCP ile soket programlama Client server la bağlantı sağlar server proses çalışır olmalıdır. Server, client ın bağlantısı için bir soket oluşturur. Client lokal TCP soket oluşturur. IP adres belirlenir ve port numarası server proses için belirlenir. Client TCP ile server TCP arasında bağlantı oluşturulmuş olur. Başka bir client server a bağlanmak isterse, Server birden çok client ile bağlantı sağlar. Kaynak port numaraları client ları birbirinden ayırır. application viewpoint TCP client ile server güvenilir ve sıralı byte transferi sağlayan bir bağlantı sağlar 44/101 22

outtoserver infromserver infromuser Stream kavramı Bir stream bir prosese gelen veya prosesten çıkan karakterler kümesidir input stream bir proses için giriş sağlayan kaynaktır, örn., keyboard veya soket. output stream bir prosesten çıkış alan kaynaktır, örn., monitor veya soket. 45/101 TCP ile soket programlama Örnek client-server uygulama: 1) client girişten bir satır okur (infromuser stream), bir soket ile sunucuya gönderir (outtoserver stream) 2) server soket ile satırı okur 3) server satırı büyük harfe dönüştürür ve client a geri gönderir 4) client soket ile okur, yazdırır ve değişiklik yapar (infromserver stream) Process Client proses keyboard input stream output stream monitor client TCP clientsocket soket input stream TCP socket to network from network 46/101 23

Client/server soket etkileşimi: TCP Server (running on hostid) create socket, port=x, for incoming request: welcomesocket = ServerSocket() wait for incoming connection request connectionsocket = welcomesocket.accept() read request from connectionsocket write reply to connectionsocket close connectionsocket TCP connection setup Client create socket, connect to hostid, port=x clientsocket = Socket() send request using clientsocket read reply from clientsocket close clientsocket 47/101 Örnek: Java client (TCP) import java.io.*; import java.net.*; class TCPClient { public static void main(string argv[]) throws Exception { String sentence; String modifiedsentence; Create input stream Create client socket, connect to server Create output stream attached to socket BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); Socket clientsocket = new Socket("hostname", 6789); DataOutputStream outtoserver = new DataOutputStream(clientSocket.getOutputStream()); 48/101 24

Örnek: Java client (TCP) - devam Create input stream attached to socket Send line to server Read line from server BufferedReader infromserver = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); sentence = infromuser.readline(); outtoserver.writebytes(sentence + '\n'); modifiedsentence = infromserver.readline(); System.out.println("FROM SERVER: " + modifiedsentence); clientsocket.close(); } } 49/101 Örnek: Java server (TCP) import java.io.*; import java.net.*; class TCPServer { Create welcoming socket at port 6789 Wait, on welcoming socket for contact by client Create input stream, attached to socket public static void main(string argv[]) throws Exception { String clientsentence; String capitalizedsentence; ServerSocket welcomesocket = new ServerSocket(6789); while(true) { Socket connectionsocket = welcomesocket.accept(); BufferedReader infromclient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 50/101 25

Örnek: Java server (TCP) - devam Create output stream, attached to socket Read in line from socket DataOutputStream outtoclient = new DataOutputStream(connectionSocket.getOutputStream()); clientsentence = infromclient.readline(); capitalizedsentence = clientsentence.touppercase() + '\n'; Write out line to socket } } outtoclient.writebytes(capitalizedsentence); } End of while loop, loop back and wait for another client connection 51/101 Ders konuları E-Mail SMTP SMTP ve HTTP Mail mesaj formatları Mail erişim protokolleri : POP3, IMAP Web tabanlı e-mail DNS DNS hizmetleri DNS in çalışması Peer-to-Peer Uygulamalar P2P dosya dağıtımı TCP ile soket programlama UDP ile soket programlama 52/101 26

UDP ile soket programlama UDP: client ve server arasında bağlantı yapılmaz Handshake yapılmaz Gönderen hedef IP adres ve port numarasını pakete ekler server IP adresi ve gönderenin port numarasını algılar UDP: iletilen data sırasız gidebilir veya kaybolabilir application viewpoint UDP, cient ile server arasında byte gruplarının güvenilir olmayan transferini yapar 53/101 Client/server soket etkileşimi: UDP Server (running on hostid) Client create socket, port=x, for incoming request: serversocket = DatagramSocket() read request from serversocket create socket, clientsocket = DatagramSocket() Create, address (hostid, port=x, send datagram request using clientsocket write reply to serversocket specifying client host address, port number read reply from clientsocket close clientsocket 54/101 27

sendpacket receivepacket infromuser Örnek: Java client (UDP) keyboard monitor Çıkış: paket gönderir (TCP sent byte stream ) Client Process process input stream UDP packet UDP packet Giriş: paket alır (TCP received byte stream ) client clientsocket UDP socket UDP socket to network from network 55/101 Örnek: Java client (UDP) Create input stream Create client socket Translate hostname to IP address using DNS import java.io.*; import java.net.*; class UDPClient { public static void main(string args[]) throws Exception { BufferedReader infromuser = new BufferedReader(new InputStreamReader(System.in)); DatagramSocket clientsocket = new DatagramSocket(); InetAddress IPAddress = InetAddress.getByName("hostname"); byte[] senddata = new byte[1024]; byte[] receivedata = new byte[1024]; String sentence = infromuser.readline(); senddata = sentence.getbytes(); 56/101 28

Örnek: Java client (UDP) - devam Create datagram with data-to-send, length, IP addr, port Send datagram to server Read datagram from server DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, 9876); clientsocket.send(sendpacket); DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); clientsocket.receive(receivepacket); String modifiedsentence = new String(receivePacket.getData()); } System.out.println("FROM SERVER:" + modifiedsentence); clientsocket.close(); } 57/101 Örnek: Java server (UDP) import java.io.*; import java.net.*; Create datagram socket at port 9876 Create space for received datagram Receive datagram class UDPServer { public static void main(string args[]) throws Exception { DatagramSocket serversocket = new DatagramSocket(9876); byte[] receivedata = new byte[1024]; byte[] senddata = new byte[1024]; while(true) { DatagramPacket receivepacket = new DatagramPacket(receiveData, receivedata.length); serversocket.receive(receivepacket); 58/101 29

Örnek: Java server (UDP) - devam String sentence = new String(receivePacket.getData()); Get IP addr port #, of sender InetAddress IPAddress = receivepacket.getaddress(); int port = receivepacket.getport(); String capitalizedsentence = sentence.touppercase(); Create datagram to send to client Write out datagram to socket } } senddata = capitalizedsentence.getbytes(); DatagramPacket sendpacket = new DatagramPacket(sendData, senddata.length, IPAddress, port); serversocket.send(sendpacket); } End of while loop, loop back and wait for another datagram 59/101 Ödev TCP protokolünü kullanarak bir anlık mesajlaşma uygulamasını Java ile geliştiriniz. Aşağıdaki özelliklere sahip olacak: - Gelen mesajların kullanıcı bazında kaydı tutulacak. - Geçmiş mesaj bilgilerine erişilebilecek. - Kullanıcıların bağlantı listesi oluşturulacak. - Liste üzerinde gruplandırmalar (arkadaşlarım, ailem, diğer, v.b.) yapılabilecek. - Geçmiş mesajlar üzerinde anahtar kelimeyle arama yapılabilecek. 60/101 30