BM 402 Bilgisayar Ağları (Computer Networks)

Benzer belgeler
(Transport Layer) Computer Networking: A Top Down Approach Featuring the Internet, 3 rd edition. Jim Kurose, Keith Ross Addison-Wesley, July 2004.

Bilgisayar Ağları Computer Networks

BM 402 Bilgisayar Ağları (Computer Networks)

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

Data Communications. Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü. 11. Data Link Control

BIL321 VERİ İLETİŞİMİ LABORATUVARI

TCP PERFORMANSININ VERİ TRANSFERİ UYGULAMALARI İÇİN GELİŞTİRİLMESİ

İletişim Ağları Communication Networks

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

Bilgisayar Programcılığı

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

Hata Kontrolü hata kodlama

TRANSPORT KATMANI. Akış kontrolu yapar. Bütün bu işlevleri yerine getiren protokollerden önemlileri şunlardır: 1 *TCP, * UDP, *SPX

CENG 362 Computer Networks (2005) Midterm Exam 1 Çözümleri

VERĠ HABERLEġMESĠ OSI REFERANS MODELĠ

Data Communications. Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü. 10. Hata Kontrolü

Bölüm 5 İletim(Transport) Katmanı

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

BİLGİSAYAR AĞLARI & Ns2 AĞ SİMÜLATÖRÜ Hafta-6 Bağlantı Kurma

İleri Düzey Bilgisayar Ağları

OSI REFERANS MODELI-II

Ağ Temelleri Semineri. erbil KARAMAN

Wireshark Lab: TCP and UDP

F frame prop acl. F frame. 1.1 Dur ve bekle (stop & wait) kullanım oranı. 1 = olarak ifade edilebilecektir. a = dersek; L R.

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

Veri İletişimi Data Communications

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

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

Çekişme Temelli Ortam Erişimi Algoritmaları Dilim Atama İhtimalleri Karşılaştırması

Bilgisayar Ağları Computer Networks

Dağıtık Sistemler CS5001

OPNET IT Guru-TCP. Amaç:

AÇIKLAMALARI SEBEP ÇÖZÜM

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

Veri haberleşmesinde hatalar

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

İletişim Ağları Communication Networks

Ders Adı Kodu Yarıyılı T+U Saati Ulusal Kredisi AKTS. Bilgisayar Ağları I BIL

03/03/2015. OSI ve cihazlar. Ağ Donanımları Cihazlar YİNELEYİCİ (REPEATER) YİNELEYİCİ (REPEATER) Yineleyici REPEATER

22/03/2016. OSI and Equipment. Networking Hardware YİNELEYİCİ (REPEATER) YİNELEYİCİ (REPEATER) Yineleyici. Hub

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

3.Türkiye'de IBAN kullanımı konusunda bir düzenleme var mı?

İTÜ Bilgisayar Mühendisliği Bölümü, BLG433-Bilgisayar Haberleşmesi ders notları, Dr. Sema Oktuğ

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

*1000 *1100 ZARF İŞLENİYOR. İlgili hata sonucunda yapılması gereken GIB DURUM KODLARI AÇIKLAMALARI SEBEP ÇÖZÜM

BM-311 Bilgisayar Mimarisi

Doğrudan Borçlanma Sistemi

BM-311 Bilgisayar Mimarisi. Hazırlayan: M.Ali Akcayol Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü

Internet in Kısa Tarihçesi

Bilgisayar Ağlarında Güvenlik. Prof. Dr. Eşref ADALI www. Adalı.net

ZiraatFX MT5 Platformu nda Zararı Durdur (S/L) ve Kar-Al (T/P) Seviyeleri Belirlerken Dikkat Edilmesi Gerekenler

Data Communications. Gazi Üniversitesi Bilgisayar Mühendisliği Bölümü. 8. Anahtarlama

MCR02/04/05/08 Serileri Temassız Kart Okuyucular

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

GİRİŞ-ÇIKIŞ (INPUT / OUTPUT) ORGANİZASYONU

OBS REZERVASYON YÖNTEMLERİNİN KARŞILAŞTIRMALI PERFORMANS ANALİZİ

Prensipler Çoklu ortam uygulamalarının sınıflandırılması Uygulamaların ihtiyaç duyacağı ağ servislerini belirlemek Uygulamaların gerçek zamanlı

Veri İletişimi Data Communications

MİKROİŞLEMCİ SİSTEMLERİ

Veri Bağlantı Kontrol Protokolleri

IFD8520 ADRESLENEBİLİR RS-485/RS-422 İZOLELİ ÇEVİRİCİ KULLANIM KILAVUZU

TCP / IP NEDİR? TCP / IP SORUN ÇÖZME

e-fatura lı Dünya Erdem GÜLGENER Yönetim Kurulu Başkan Yardımcısı, e-logo

Ağ Protokolleri. Aysel Aksu. Nisan, 2016

İ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

AĞ SĠSTEMLERĠ. Öğr. Gör. Durmuş KOÇ

Ağ Yönetiminin Fonksiyonel Mimarisi

IPv6 Ağlarında VoIP NETAŞ Ocak Ulusal IPv6 Protokol Altyapısı Tasarımı ve Geçiş Projesi

Hping ile IP, ICMP ve UDP Paketleri Oluşturma

Bilgisayar Programcılığı

Alıcı Devresi; Sinyali şu şekilde modüle ediyoruz;

Kontrol Đşaretleşmesi

AĞ TEMELLERI. İSİM SOYİSİM: EMRE BOSTAN BÖLÜM: BİLGİSAYAR PROGRAMCILIĞI ÜNİVERSİTE: NİŞANTAŞI KONU: Konu 5. TCP/IP

OPNET PROCESS EDİTÖRDE. Doç. Dr. Cüneyt BAYILMIŞ

DESTEK DOKÜMANI IBAN DÜZENLEMELERĐ

BIL411 - BİLGİSAYAR AĞLARI LABORATUVARI

SMTP Protokolü ve Spam Mail Problemi

Chapter 6 Digital Data Communications Techniques

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

DENİZ HARP OKULU BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜM BAŞKANLIĞI DERS TANITIM BİLGİLERİ

Protocol Mimari, TCP/IP ve Internet Tabanlı Uygulamalar

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

SMSEXPLORER XML API. XML API KILAVUZU v.1.0

Elbistan Meslek Yüksek Okulu Güz Yarıyılı EKi Salı, Perşembe Öğr. Gör. Murat KEÇECĠOĞLU

NESNEYE YÖNELİK TASARIM SÜRECİ

GLOBAL SAKLAMA HI ZMETI I ŞLEM ESASLARI

Veri İletişimi ve Bilgisayar Ağları (COMPE 436) Ders Detayları

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

BİH 605 Bilgi Teknolojisi Bahar Dönemi 2015

Alt Ağ Maskesi (Subnet Mask)

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

Call Status. Çağrı İzleme. Uygulaması. CableNet AVAYA Call Status Uygulaması Kullanım Kılavuzu Vers Sayfa 1 / 6

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

SOME-Bus Mimarisi Üzerinde Mesaj Geçişi Protokolünün Başarımını Artırmaya Yönelik Bir Algoritma

MERSİS UYGULAMA KULLANICISI YARDIM REHBERİ KAYIT VE GİRİŞ İŞLEMLERİ GÜMRÜK VE TİCARET BAKANLIĞI MERSİS UYGULAMASI

Dağıtık Sistemler CS5001

Bilgisayar Ağları (COMPE 734) Ders Detayları

- Kablo gücünün uyulması zorunlu biçimde tanımlanması ve elektriksel izolasyon gereksinimlerinin açıklanması.

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ı Reliable Data Transferin Prensipleri Reliable data transferin performansı Pipeline kullanan protokoller Go-Back-N Selective repeat 2/101 1

Reliable data transferin prensipleri Application, transport ve data link layer da önemlidir Ağlarda en öncelikli 10 konunun içindedir. Reliable data transfer (rdt) protokol daha karmaşıktır. 3/101 Reliable data transfer rdt_send(): called from, (e.g., by app.). Passed data to deliver to receiver upper layer deliver_data(): called by rdt to deliver data to upper send side receive side udt_send(): called by rdt, to transfer packet over unreliable channel to receiver rdt_rcv(): called when packet arrives on rcv-side of channel 4/101 2

Reliable data transfer reliable data transfer (rdt) protokolün gönderici ve alıcı taraflarını geliştirelim Data transferin tek yönlü (unidirectional) olduğunu düşünürsek Ancak kontrol bilgisi iki yönlü gitmektedir Sonlu durum makineleriyle (finite state machines-fsm) modellenebilir state: bir sonraki durum bu durumdayken oluşan sonraki olayla belirlenir state 1 Olay (event) durum geçişine neden olur Durum geçişi sırasında işlem yapılır olay işlem state 2 5/101 Rdt 1.0: reliable kanal kullanarak reliable transfer Altyapıdaki kanal tümüyle güvenilirdir Bit hatası yoktur Kayıp paket yoktur Gönderici ve alıcı için FSM: Gönderici kanala veriyi gönderir Alıcı kanaldan gelen veriyi okur call from packet = make_pkt(data) udt_send(packet) call from below rdt_rcv(packet) extract (packet,data) deliver_data(data) sender receiver 6/101 3

rdt 2.0: bit hatası olan kanal ile çalışma Kanalda paket içindeki bitlerde bozulma olabilir Bit hatalarını kontrol etmek için checksum kullanılır Hatalar nasıl düzeltilir? acknowledgements (ACKs): alıcı göndericiye aldığı paketin hatasız olduğunu iletir. negative acknowledgements (NAKs): alıcı göndericiye aldığı paketin hatalı olduğunu bildirir. Gönderici NAK ile bildirilen paketi tekrar gönderir. rdt2.0 daki yenilikler (rdt1.0 a göre): Hata denetimi Alıcı geri bildirimi: kontrol mesajları (ACK, NAK) alıcı->gönderici 7/101 rdt2.0: FSM özellikleri sndpkt = make_pkt(data, checksum) call from isack(rcvpkt) sender ACK or NAK isnak(rcvpkt) receiver corrupt(rcvpkt) udt_send(nak) call from below notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 8/101 4

rdt2.0: hata olmadığı zaman çalışma sndpkt = make_pkt(data, checksum) call from isack(rcvpkt) ACK or NAK isnak(rcvpkt) corrupt(rcvpkt) udt_send(nak) call from below notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 9/101 rdt2.0: hata durumu sndpkt = make_pkt(data, checksum) call from isack(rcvpkt) ACK or NAK isnak(rcvpkt) corrupt(rcvpkt) udt_send(nak) call from below notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ack) 10/101 5

rdt2.0 da karşılaşılan problemler ACK/NAK bozulursa? Gönderici alıcıda ne olduğunu bilemez Retransmit yapılmaz: duplicate olabilir Duplicate lerin seçilmesi: Gönderici her pakete sequence number ekler Gönderici mevcut paketi retransmit yapar ACK/NAK bozulursa alıcı duplicate paketleri atar stop and wait Gönderici bir paket gönderir, Alıcıdan cevap bekler 11/101 rdt2.1: gönderici bozulan ACK/NAK ları belirler && notcorrupt(rcvpkt) && isack(rcvpkt) ( corrupt(rcvpkt) isnak(rcvpkt) ) sndpkt = make_pkt(0, data, checksum) call 0 from ACK 1 or NAK 1 ACK 0 or NAK 0 call 1 from (corrupt(rcvpkt) isnak(rcvpkt) ) && notcorrupt(rcvpkt) && isack(rcvpkt) sndpkt = make_pkt(1, data, checksum) sender 12/101 6

rdt2.1: gönderici bozulan ACK/NAK ları belirler notcorrupt(rcvpkt) && has_seq0(rcvpkt) (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) not corrupt(rcvpkt) && has_seq1(rcvpkt) sndpkt = make_pkt(ack, chksum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) 0 from below 1 from below notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack, chksum) (corrupt(rcvpkt) sndpkt = make_pkt(nak, chksum) not corrupt(rcvpkt) && has_seq0(rcvpkt) sndpkt = make_pkt(ack, chksum) receiver 13/101 rdt2.1: değerlendirme Gönderici: seq # pakete eklenir İki seq. no (0,1) yeterlidir. alınan ACK/NAK paketin bozuk olup olmadığı kontrol edilir Alıcı: Gelen paket çift mi kontrol edilir Bulunulan durum gelen paket için seq. No olur. (0 veya 1 olarak bekler) 14/101 7

rdt2.2: NAK kullanılmayan protokol ACK kullanarak rdt2.1 ile aynı fonksiyonu görür NAK yerine, alıcı en son doğru alınan paket için ACK paket gönderir Alıcı paketin seq numarasını bilmelidir Alıcıdaki duplicate ACK : paketin retransmit edilmesini sağlar 15/101 rdt2.2: gönderici && notcorrupt(rcvpkt) && isack(rcvpkt,1) ( corrupt(rcvpkt) isack(rcvpkt,0)) sndpkt = make_pkt(0, data, checksum) call 0 from ACK 1 or NAK 1 ACK 0 or NAK 0 call 1 from (corrupt(rcvpkt) isack(rcvpkt,1)) && notcorrupt(rcvpkt) && isack(rcvpkt,0) sndpkt = make_pkt(1, data, checksum) sender 16/101 8

rdt2.2: alıcı notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack0, chksum) (corrupt(rcvpkt) has_seq1(rcvpkt)) 0 from below 1 from below (corrupt(rcvpkt) has_seq0(rcvpkt)) notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ack1, chksum) receiver 17/101 rdt3.0: Kanallarda hata ve kayıp olabilir Yeni varsayım: Kanalda paketler kaybolabilir (data veya ACK) checksum, seq. #, ACK, retransmit yeterli olmaz. Yaklaşım: gönderici ACK için belirli bir süre bekler Bu süre sonunda ACK gelmezse retansmit yapılır Eğer paket (veya ACK) kaybolmamışsa ve gecikmiş gelirse : Retransmit ile duplicate oluşur ancak sıra numarasıyla belirlenir Alıcı ACK gönderdiği paketin sıra numarasını belirlemelidir Bekleme süresi sonunu belirlemek için aşağı doğru sayıcı gereklidir 18/101 9

rdt3.0 gönderici call 0from && notcorrupt(rcvpkt) && isack(rcvpkt,1) stop_timer timeout start_timer (corrupt(rcvpkt) isack(rcvpkt,0) ) sndpkt = make_pkt(0, data, checksum) start_timer Wait for ACK1 Wait for ACK0 call 1 from sndpkt = make_pkt(1, data, checksum) start_timer (corrupt(rcvpkt) isack(rcvpkt,1) ) timeout start_timer && notcorrupt(rcvpkt) && isack(rcvpkt,0) stop_timer 19/101 rdt3.0 çalışması 20/101 10

rdt3.0 çalışması 21/101 Ders konuları Reliable Data Transferin Prensipleri Reliable data transferin performansı Pipeline kullanan protokoller Go-Back-N Selective repeat 22/101 11

Performance of rdt3.0 rdt3.0 performansı çok düşüktür Örnek: 1 Gbps link, 15 ms uçtan uca gecikme, 1kB paket olsun. T iletim = (paket uzunluğu, bit) R (iletim oranı, bps) = 8kb/pkt 10 9 b/s = 8 μs U gönderici = / R RTT + / R =.008 30.008 = 0.00027 microsec U gönderici : utilization kullanım oranı 1kB pkt her 30 ms -> 33kB/s kullanım 1 Gbps link için Ağ protokolleri fiziksel kaynakların kullanımını sınırlar! 23/101 rdt3.0: stop-and-wait operation Paketin ilk biti iletildi, t = 0 Paketin son biti iletildi, t = / R gönderici alıcı RTT Paketin ilk biti geldi Paketin son biti geldi, ACK gönder ACK geldi, sonraki paketi gönder, t = RTT + / R U = gönderici / R RTT + / R =.008 30.008 = 0.00027 microsec 24/101 12

Ders konuları Reliable Data Transferin Prensipleri Reliable data transferin performansı Pipeline kullanan protokoller Go-Back-N Selective repeat 25/101 Pipelined protocols Pipelining: gönderici ACK gelmemiş bile olsa ard arda paket gönderir Sıra numarası aralığı artırılmak zorundadır Gönderici ve alıcıda buffer gereklidir İki temel pipeline protokol vardır: go-back-n, selective repeat 26/101 13

Pipelining: increased utilization Paketin ilk biti iletildi, t = 0 Paketin son biti iletildi, t = / R gönderici RTT ACK geldi, sonraki paketi gönder, t = RTT + / R alıcı Paketin ilk biti geldi Paketin son biti geldi, ACK gönder 2.paketin son biti geldi, ACK gönder 3.paketin son biti geldi, ACK gönder Kullanım oranı 3 kat arttı U = gönderici 3 * / R RTT + / R =.024 30.008 = 0.0008 microsecon 27/101 Ders konuları Reliable Data Transferin Prensipleri Reliable data transferin performansı Pipeline kullanan protokoller Go-Back-N Selective repeat 28/101 14

Go-Back-N Gönderici : k-bit sıra numarası paket başlığına eklenir N boyutlu pencere kadar sıralı paket ardarda gönderilir ACK(n): n.paket için gelen ACK kendisi ve öncekilerin tümü içindir. - cumulative ACK Çift ACK ları elimine edebilir Her paket için timer başlatılır timeout(n): n.paket için timeout olursa n ile sonraki tüm paketler retransmit edilir 29/101 GBN: gönderici base=1 nextseqnum=1 && corrupt(rcvpkt) if (nextseqnum < base+n) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) Wait notcorrupt(rcvpkt) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer timeout start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) udt_send(sndpkt[nextseqnum-1]) 30/101 15

GBN: alıcı default expectedseqnum=1 Wait sndpkt = make_pkt(expectedseqnum,ack,chksum) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ack,chksum) expectedseqnum++ ACK-only: her zaman beklenen doğru sıradaki paket için ACK gönderilir Duplicate ACK olabilir Sadece beklenen sıra numarasını bilmesi yeterlidir (expectedseqnum) Sırasız gelen paketler: atılır (buffer a alınmaz) -> alıcıda buffer yok! En son alınan paket için tekrar ACK gönderilir 31/101 GBN çalışması 32/101 16

Ders konuları Reliable Data Transferin Prensipleri Reliable data transferin performansı Pipeline kullanan protokoller Go-Back-N Selective repeat 33/101 Selective Repeat Alıcı her doğru alınan paket için ayrı ayrı ACK paketi gönderir Gelen paketler buffer a alınır Gerekiyorsa üst katmana sıralanarak gönderilir Gönderici sadece ACK almadığı paketler için retransmit yapar Gönderici timer ı her gönderilen paket için ayrı ayrı başlatılır Gönderici penceresi N adet sıralı sayıya sahiptir ACK alınmadan gönderilebilecek paket sayısını N ile sınırlar 34/101 17

Selective repeat: gönderici ve alıcı pencereleri 35/101 Selective repeat gönderici Üst katmandan paket gelince: Pencerede sonraki sıra numarası kullanılabiliyorsa paketi gönder timeout(n): n sıra numaralı paketi yeniden gönder ACK(n) [sendbase,sendbase+n] aralığında ise: n sıra numaralı paketi alındı olarak işaretle Eğer n pencerede ACK alınmayan en küçük sıra numarası ise pencereyi ilk ACK gelmeyen pakete kadar ilerlet alıcı pkt n [rcvbase, rcvbase+n-1] arasında ise ACK(n) gönder Beklenen sırasında değilse: buffer a al Beklenen sırasında ise: buffer a alınmış ve sıralanmış paketlerle birlikte üst katmana gönder, pencereyi alınmayan ilk paket sıra numarasına ilerlet pkt n [rcvbase-n,rcvbase-1] arasında ise ACK(n) diğer: İşlem yapma 36/101 18

Selective repeat in action 37/101 Selective repeat: dilemma Örnek: Sıra numaraları: 0, 1, 2, 3 Pencere boyutu = 3 Alıcı iki senaryo arasında fark algılamaz! Çift gelen paketi yanlışlıkla yeni paket olarak algılar Soru: paketlere verilen sıra numarası boyutu ile pencere boyutu arasında ne tür bir ilişki vardır? 38/101 19