180 likes | 488 Views
http://wps.aw.com/aw_kurose_network_4/63/16303/4173750.cw/index.html Adresindeki HTTP ve DNS appletleri HTTP APPLET DNS APPLET. Alıcı doğru olarak alınan paketleri tek tek ACK’ler Alıcıda paketleri depolar Gönderici sadece ACK alamadığı paketleri gönderir
E N D
http://wps.aw.com/aw_kurose_network_4/63/16303/4173750.cw/index.htmlhttp://wps.aw.com/aw_kurose_network_4/63/16303/4173750.cw/index.html Adresindeki HTTP ve DNS appletleri HTTP APPLET DNS APPLET 3:TAŞIMA KATMANI
Alıcı doğru olarak alınan paketleri tek tek ACK’ler Alıcıda paketleri depolar Gönderici sadece ACK alamadığı paketleri gönderir Her ACK’lenmeyen paket için gönderici zamanlayıcısı var Gönderici penceresi N ardışıl sıra numarası Burada da gönderilen paket sayısını sınırlar Seçici Tekrarlama (SR) 3:TAŞIMA KATMANI
Seçici tekrarlama: gönderici ve alıcı pencereleri ACK’ lendi Gönderilecek Gönderildi fakat henüz ACK’ lenmedi Henüz gönderilemez a) Göndericinin sıra numaraları Sıralama dışı(depolandı) ACK’lenmişti Kabul edilebilir pencere içinde Bekleniyor, henüz gelmedi Kullanılamaz b) Alıcının sıra numaraları 3:TAŞIMA KATMANI
Seçici tekrarlama 3:TAŞIMA KATMANI
Örnek: Sıra no: 0, 1, 2, 3 Pencere büyüklüğü=3 Alıcı için her iki senaryoda aynı Yanlış olarak aynı veriyi yeni olarak gönderir (a) Q:sıra numarası ve pencere büyüklüğü arasındaki ilişki ne olmalı? Seçici tekrarlama çıkmazı K>2W 3:TAŞIMA KATMANI
Seçici Tekrarlama: Java uygulaması 3:TAŞIMA KATMANI
full dupleks (çift yönlü) veri: Aynı bağlantı üzerinden çift yönlü veri akışı MSS: maximum segment size (maksimum segment büyüklüğü) bağlantılı: handshaking (el sıkışma) Akış kontrolü: Gönderici alıcının kapasitesini aşmaz Noktadan-noktaya: Bir gönderici ve bir alıcı güvenilir, sıralı akış: Boru hattı: TCP sıkışıklık ve akış kontrolü pencere büyüklüğünü belirler Gönderici ve alıcı buffer’ları TCP: RFC: 793, 1122, 1323, 2018, 2581 3:TAŞIMA KATMANI
32 bits kaynak port # hedef port # sıra numarası acknowledgement numarası head len not used Alıcı penceresi U A P R S F Kontrol toplamı Urg data pnter seçenekler (uzunluğu değişken) Uygulama datası (uzunluğu değişken) TCP segment yapısı Veri byteları İle belirlenir (segmentlerle değil!) Alıcının kabul edeceği byte miktarı RST, SYN, FIN: Bağlantı kurulumu (kurma, yıkma komutları) Internet Kontrol toplamı (UDP’deki gibi) 3:TAŞIMA KATMANI
Sıra numaraları: Segment datasındaki ilk byte’ın veri akışındaki byte numarası ACK’ler: Diğer taraftan beklenen bir sonraki byte’ın sıra numarası toplu ACK Q:alıcı sırasız gelen paketleri ne yapar? TCP bu konuda herhangi birşey söylemez, uygulayana bağlı zaman TCP sıranumaraları ve ACK’ler Host B Host A kullanıcı veri gönderiyor Seq=42, 8 byte veri host veriyi aldığını ACKler ACK=50 host ACK’i alır ve sonraki veriyi gönderir Seq=50, 15 Byte veri 3:TAŞIMA KATMANI
Q:TCP zaman aşımı değeri nasıl ayarlanmalı? RTT’den büyük olmalı Fakat RTT değişken Çok kısa: erken zaman aşımı Gereksiz yeniden iletim Çok uzun: segment kaybına yavaş reaksiyon Q: RTT’yi nasıl tahmin edebiliriz? SampleRTT:segment gönderildikten ACK alınana kadar ölçülen süre Yeniden gönderimleri gözardı et SampleRTTçok değişken, biz tahmini RTT’nin daha yumuşak değişimler göstermesini isteriz Birçok ölçümün ortalamasını al TCP RTT ve Zaman aşımı 3:TAŞIMA KATMANI
TCP RTT ve Zaman aşımı EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT • Eksponansiyelağırlıklı kayan ortalama (Exponential Weighted Moving Average-EMA) • Önceki örneklerin etkisi üstsel bir hızla azalır • tipikdeğer: = 0.125 3:TAŞIMA KATMANI
Örnek RTT tahmini: 3:TAŞIMA KATMANI
Zaman aşımı süresini belirleme EstimtedRTTyebir güvenlik marjini eklemeliyiz EstimatedRTT’deki değişim çoksa ->daha büyük gğvenlik marjini Önce SampleRTT’nin EstimatedRTT’den ne kadar değişim (deviasyon) gösterdiğini belirle : TCP RTT ve Zaman aşımı DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| (tipik, = 0.25) Zaman aşımı süresi (TimeoutInterval): TimeoutInterval = EstimatedRTT + 4*DevRTT 3:TAŞIMA KATMANI
TCP IP’nin güvenilir olmayan servisi üzerine bir rdt oluşturur Boru hattı segmentleri Toplu ackler TCP tek bir yeniden gönderme zamanlayıcısı kullanır Yeniden göndermeler: Zaman aşımları tekrarlanan ackler ile tetiklenir Başlangıçta basitleştirilmiş bir TCP göndericisi ele alalım: tekrarlı ackleri gözardı edelim Akış ve sıkışıklık kontrolünü yine gözardı edelim TCP güvenilir veri transferi 3:TAŞIMA KATMANI
Uygulamadan data alındı: Sıra numarasıyla segmenti oluştur Sıra numarası segment datasındaki ilk byte’ın veri akışındaki byte numarasıdır. Zamanlayıcıyı çalıştır Zamanaşımı süresi: TimeOutInterval Zaman aşımı: Zaman aşımına sebep olan segmenti yeniden gönder Zamanlayıcıyı yeniden başlat Ack alındı: Eğer daha önceden ACKlenmemiş segmentleri Acklerse Acklenmiş paketleri güncelle Zamanlayıcıyı yeniden başlat TCP gönderici olayları: 3:TAŞIMA KATMANI
Seq=92 timeout zaman TCP: yeniden gönderme senaryoları Host A Host B Host A Host B Seq=92, 8 byte data Seq=92, 8 byte data Seq=100, 20 byte data ACK=100 Zaman aşımı X ACK=100 ACK=120 kayıp Seq=92, 8 bytes data Sendbase = 100 Seq=92, 8 byte data SendBase = 120 ACK=120 Seq=92 timeout ACK=100 SendBase = 100 SendBase = 120 Erken zamanaşımı zaman kayıp ACK senaryosu 3:TAŞIMA KATMANI
TCP: yeniden gönderme senaryoları Host A Host B Seq=92, 8 byte data ACK=100 Seq=100, 20 byte data X Zaman aşımı kayıp SendBase = 120 ACK=120 zaman Toplu ACK senaryosu 3:TAŞIMA KATMANI
Zaman aşımı süresi genelde uzun: Kayıp segmenti yeniden gönderimde uzun gecikme olur Kayıp segmentleri tekraralanan ACKler vasıtasıyla tespit et. Gönderici genelde peşpeşe birçok segment gönderir Eğer segment kaybolursa büyük bir ihtimalle birçok tekrarlı ACK meydana gelir. Eğer gönderici aynı data için 3 ACK alırsa ACKlenen datadan sonraki segmentin kaybolduğunu varsayar: Hızlı yeniden gönderim:segmenti zaman aşımını beklemeden yeniden gönder Hızlı Yeniden Gönderim 3:TAŞIMA KATMANI