Adresindeki HTTP ve DNS appletleri http://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
Seçici Tekrarlama (SR) 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 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
Seçici tekrarlama çıkmazı Ö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ı? K>2W 3:TAŞIMA KATMANI
Seçici Tekrarlama: Java uygulaması 3:TAŞIMA KATMANI
TCP: RFC: 793, 1122, 1323, 2018, 2581 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ı 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 3:TAŞIMA KATMANI
TCP segment yapısı kaynak port # hedef port # Uygulama datası 32 bits Uygulama datası (uzunluğu değişken) sıra numarası acknowledgement numarası Alıcı penceresi Urg data pnter Kontrol toplamı F S R P A U head len not used seçenekler (uzunluğu değişken) 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
TCP sıra numaraları ve ACK’ler 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ı Host A Host B 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 zaman 3:TAŞIMA KATMANI
TCP RTT ve Zaman aşımı Q: RTT’yi nasıl tahmin edebiliriz? 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 3:TAŞIMA KATMANI
EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT TCP RTT ve Zaman aşımı EstimatedRTT = (1- )*EstimatedRTT + *SampleRTT Eksponansiyel ağırlıklı kayan ortalama (Exponential Weighted Moving Average-EMA) Önceki örneklerin etkisi üstsel bir hızla azalır tipik değer: = 0.125 3:TAŞIMA KATMANI
Örnek RTT tahmini: 3:TAŞIMA KATMANI
TimeoutInterval = EstimatedRTT + 4*DevRTT TCP RTT ve Zaman aşımı Zaman aşımı süresini belirleme EstimtedRTT ye bir 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 : DevRTT = (1-)*DevRTT + *|SampleRTT-EstimatedRTT| (tipik, = 0.25) Zaman aşımı süresi (TimeoutInterval): TimeoutInterval = EstimatedRTT + 4*DevRTT 3:TAŞIMA KATMANI
TCP güvenilir veri transferi 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 3:TAŞIMA KATMANI
TCP gönderici olayları: 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 3:TAŞIMA KATMANI
TCP: yeniden gönderme senaryoları Host A Host B Host A Host B Seq=92, 8 byte data Seq=92 timeout 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 byte data Sendbase = 100 Seq=92, 8 bytes data SendBase = 120 Seq=92 timeout ACK=120 ACK=100 SendBase = 100 SendBase = 120 Erken zamanaşımı zaman 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
Hızlı Yeniden Gönderim 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 3:TAŞIMA KATMANI