Transport. część 1: niezawodny transport. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Podobne dokumenty
Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Transport. część 3: kontrola przeciążenia. Sieci komputerowe. Wykład 8. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Transport. część 2: protokół TCP. Sieci komputerowe. Wykład 6. Marcin Bieńkowski

Sieci komputerowe. Wykład 5: Warstwa transportowa: TCP i UDP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Sieci komputerowe Warstwa transportowa

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Sieci komputerowe. Wykład 7: Transport: protokół TCP. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Przesyłania danych przez protokół TCP/IP

Wstęp. Sieci komputerowe. Wykład 1. Marcin Bieńkowski

SEGMENT TCP CZ. II. Suma kontrolna (ang. Checksum) liczona dla danych jak i nagłówka, weryfikowana po stronie odbiorczej

Protokoły sieciowe - TCP/IP

Sieci komputerowe - Protokoły warstwy transportowej

Wstęp. Sieci komputerowe. Wykład 1. Marcin Bieńkowski

Sieci komputerowe Mechanizmy sterowania przebiegiem sesji TCP w Internecie

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Sieci komputerowe - podstawowe technologie. Plan wykładu. Piotr Kowalski KAiTI

MODEL WARSTWOWY PROTOKOŁY TCP/IP

Sieci komputerowe w sterowaniu informacje ogólne, model TCP/IP, protokoły warstwy internetowej i sieciowej

TCP/IP formaty ramek, datagramów, pakietów...

Sieci komputerowe. Zajęcia 3 c.d. Warstwa transportu, protokoły UDP, ICMP

Protokoły wspomagające. Mikołaj Leszczuk

Podstawy Transmisji Danych. Wykład IV. Protokół IPV4. Sieci WAN to połączenia pomiędzy sieciami LAN

Sieci Komputerowe Modele warstwowe sieci

Model OSI. mgr inż. Krzysztof Szałajko

PROTOKOŁY WARSTWY TRANSPORTOWEJ

Pytanie 1 Z jakich protokołów korzysta usługa WWW? (Wybierz prawidłowe odpowiedzi)

Zestaw ten opiera się na pakietach co oznacza, że dane podczas wysyłania są dzielone na niewielkie porcje. Wojciech Śleziak

Stos protokołów TCP/IP (ang. Transmission Control Protocol/Internet Protocol)

Routing. część 2: tworzenie tablic. Sieci komputerowe. Wykład 3. Marcin Bieńkowski

Warstwa transportowa. mgr inż. Krzysztof Szałajko

Uproszczony opis obsługi ruchu w węźle IP. Trasa routingu. Warunek:

Zarządzanie ruchem w sieci IP. Komunikat ICMP. Internet Control Message Protocol DSRG DSRG. DSRG Warstwa sieciowa DSRG. Protokół sterujący

Uniwersalny Konwerter Protokołów

Aby lepiej zrozumieć działanie adresów przedstawmy uproszczony schemat pakietów IP podróżujących w sieci.

Politechnika Łódzka. Instytut Systemów Inżynierii Elektrycznej

Protokół IP. III warstwa modelu OSI (sieciowa) Pakowanie i adresowanie przesyłanych danych RFC 791 Pakiet składa się z:

Klient-Serwer Komunikacja przy pomocy gniazd

Dr Michał Tanaś(

Rys. 1. Wynik działania programu ping: n = 5, adres cyfrowy. Rys. 1a. Wynik działania programu ping: l = 64 Bajty, adres mnemoniczny

Sieci komputerowe - warstwa transportowa

System operacyjny UNIX Internet. mgr Michał Popławski, WFAiIS

pasja-informatyki.pl

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ

Połączenie logiczne Zestawienie połączenia Zerwanie połączenia Niezawodne Np. TCP

Konfiguracja sieci, podstawy protokołów IP, TCP, UDP, rodzaje transmisji w sieciach teleinformatycznych

Plan wykładu. Warstwa sieci. Po co adresacja w warstwie sieci? Warstwa sieci

Warstwy i funkcje modelu ISO/OSI

Pomiary jakości w dostępie do Internetu

Selektywne powtarzanie (SP)

Routing. część 2: tworzenie tablic. Sieci komputerowe. Wykład 3. Marcin Bieńkowski

Sieci Komputerowe. Wykład 1: TCP/IP i adresowanie w sieci Internet

Warstwa sieciowa. Model OSI Model TCP/IP. Aplikacji. Aplikacji. Prezentacji. Sesji. Transportowa. Transportowa

Zarządzanie infrastrukturą sieciową Modele funkcjonowania sieci

Sieci Komputerowe Mechanizmy kontroli błędów w sieciach

Akademickie Centrum Informatyki PS. Wydział Informatyki PS

Laboratorium - Przechwytywanie i badanie datagramów DNS w programie Wireshark

Wykład 4: Protokoły TCP/UDP i usługi sieciowe. A. Kisiel,Protokoły TCP/UDP i usługi sieciowe

Sieci Komputerowe. Wykład 1: Historia, model ISO, Ethernet, WiFi

Podstawy sieci komputerowych

Sieci komputerowe. Protokoły warstwy transportowej. Wydział Inżynierii Metali i Informatyki Przemysłowej. dr inż. Andrzej Opaliński.

Akademia Techniczno-Humanistyczna w Bielsku-Białej

Warstwa transportowa

Unicast jeden nadawca i jeden odbiorca Broadcast jeden nadawca przesyła do wszystkich Multicast jeden nadawca i wielu (podzbiór wszystkich) odbiorców

Programowanie Sieciowe 1

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 13 Topologie sieci i urządzenia

Plan całości wykładu 3-1

Referencyjny model OSI. 3 listopada 2014 Mirosław Juszczak 37

Sieci komputerowe. -Sterownie przepływem w WŁD i w WT -WŁD: Sterowanie punkt-punkt p2p -WT: Sterowanie end-end e2e

Routing. część 2: tworzenie tablic. Sieci komputerowe. Wykład 3. Marcin Bieńkowski

Architektura INTERNET

Modyfikacja algorytmów retransmisji protokołu TCP.

DR INŻ. ROBERT WÓJCIK DR INŻ. JERZY DOMŻAŁ ADRESACJA W SIECIACH IP. WSTĘP DO SIECI INTERNET Kraków, dn. 24 października 2016r.

Internet Control Message Protocol (ICMP) Łukasz Trzciałkowski

Routing i protokoły routingu

ARP Address Resolution Protocol (RFC 826)

MODEL OSI A INTERNET

Sieci komputerowe - Wstęp do intersieci, protokół IPv4

Adresy w sieciach komputerowych

Enkapsulacja RARP DANE TYP PREAMBUŁA SFD ADRES DOCELOWY ADRES ŹRÓDŁOWY TYP SUMA KONTROLNA 2 B 2 B 1 B 1 B 2 B N B N B N B N B Typ: 0x0835 Ramka RARP T

Protokół TCP (RFC 793)

Sieci komputerowe Wykład

Sieci komputerowe - opis przedmiotu

POŁĄCZENIE STEROWNIKÓW ASTRAADA ONE MIĘDZY SOBĄ Z WYKORZYSTANIEM PROTOKOŁU UDP. Sterowniki Astraada One wymieniają między sobą dane po UDP

Moduł 11.Warstwa transportowa i aplikacji Zadaniem warstwy transportowej TCP/IP jest, jak sugeruje jej nazwa, transport danych pomiędzy aplikacjami

Sieci Komputerowe Protokół TCP

Skąd dostać adres? Metody uzyskiwania adresów IP. Statycznie RARP. Część sieciowa. Część hosta

SIECI KOMPUTEROWE wykład dla kierunku informatyka semestr 4 i 5

Sieci komputerowe. Wykład dr inż. Łukasz Graczykowski

Adresy URL. Zaawansowane technologie Javy 2019

1. Model klient-serwer

Dr Michał Tanaś(

Bazy Danych i Usługi Sieciowe

ZiMSK NAT, PAT, ACL 1

Niższe warstwy. Sieci komputerowe. Wykład 5. Marcin Bieńkowski

Sieci Komputerowe. Program przedmiotu: Literatura: Strona 1

Systemy operacyjne System sieciowy UNIX-a

Sieci komputerowe. Wykład 1: Podstawowe pojęcia i modele. Marcin Bieńkowski. Instytut Informatyki Uniwersytet Wrocławski

Transkrypt:

Transport część 1: niezawodny transport Sieci komputerowe Wykład 6 Marcin Bieńkowski

Protokoły w Internecie warstwa aplikacji HTTP SMTP DNS NTP warstwa transportowa TCP UDP warstwa sieciowa IP warstwa łącza danych Ethernet PPP 802.11 (WiFi) MPLS warstwa fizyczna kable miedziane światłowód DSL fale radiowe 2

Internetowy model warstwowy (1) warstwa transportowa zapewnia globalne dostarczanie danych pomiędzy aplikacjami warstwa sieciowa zapewnia globalne dostarczanie danych pomiędzy komputerami warstwa łącza danych zapewnia lokalne dostarczanie danych pomiędzy komputerami 3

Porty Port: liczba 16-bitowa; identyfikuje aplikację wewnątrz danego komputera multipleksowanie wielu strumieni danych w jednym ciągu pakietów. W nagłówku warstwy transportowej znajduje się m.in.: port źródłowy; port docelowy. 4

Internetowy model warstwowy (2) przesyłany pakiet: nagłówek warstwy łącza danych from: 67.32.41.23 to: 34.37.235.21 from: port 55245 to: port 80 GET /~mbi/ HTTP/1.1 warstwa aplikacji warstwa aplikacji warstwa transportowa warstwa transportowa warstwa sieciowa warstwa sieciowa warstwa sieciowa warstwa łącza danych (Ethernet) warstwa łącza danych (Ethernet) warstwa łącza danych (WiFi) warstwa łącza danych (WiFi) 01001010001010 01001010001010 01001010001010 01001010001010 router 67.32.41.23 34.37.235.21 port 55245 port 80 5

Zawodny transport

UDP Najprostszy protokół warstwy transportowej Nagłówek UDP: 0 7 8 15 16 23 24 31 port źródłowy port docelowy długość suma kontrolna 7

Gwarancje UDP (1) Takie same jak IP, czyli żadne. Tylko zasada dołożenia wszelkich starań (best effort). Pakiety mogą zostać: uszkodzone, zgubione, opóźnione, zamienione (kolejność), zduplikowane (przez wyższe lub niższe warstwy). 8

Gwarancje UDP (2) Czy te negatywne wydarzenia są częste? Lokalnie wysyłane pakiety nie będą przecież uszkadzane, gubione, duplikowane i będą przychodzić w tej samej kolejności? demonstracja kod klienta wysyłającego n datagramów 9

Gwarancje UDP (2) Czy te negatywne wydarzenia są częste? Lokalnie wysyłane pakiety nie będą przecież uszkadzane, gubione, duplikowane i będą przychodzić w tej samej kolejności? demonstracja kod klienta wysyłającego n datagramów Kontrola przepływu = nadawca powinien dostosowywać prędkość transmisji do szybkości odbiorcy. 9

Gdzie wykorzystujemy Zawodny transport: Przesyłane są małe ilości danych (np. DNS, DHCP). Proste, ograniczone obliczeniowo urządzenia (np. TFTP wykorzystywany do aktualizacji firmware). Konieczna jest szybka reakcja (gry). Utrata pojedynczych datagramów nieistotna (transmisje multimedialne). Chcemy pełnej kontroli nad przesyłanymi danymi (NFS). Niezawodny transport: Przesyłane są duże ilości danych (np. HTTP, FTP, sieci P2P). Istotne potwierdzanie danych: praca zdalna (np. SSH). 10

Niezawodny transport: segmentacja

Segmentacja Niezawodne przesyłanie ciągu bajtów: Zadanie warstwy transportowej. Wymaga dzielenia ciągu bajtów na segmenty. W UDP użytkownik musi to robić sam. Dlaczego nie przesyłamy wszystkiego w jednym segmencie? 12

Słowo o nazewnictwie warstwa transportowa datagramy (gdy użytkownik sam dzieli na części, np. UDP) segmenty (gdy warstwa dzieli na części, np. TCP) warstwa sieciowa pakiety warstwa łącza danych ramki Niekonsekwentnie używane nazwy. Powszechnie stosowane datagramy IP. Segment TCP często oznacza same dane TCP (bez nagłówka TCP), np. w definicji MSS (maximum segment size). 13

Dlaczego segmentacja jest potrzebna? Skąd biorą się ograniczenia na rozmiar segmentu? MSS = MTU - rozmiar nagłówka IP - rozmiar nagłówka TCP Dlaczego nie zwiększymy MTU (i rozmiaru pakietu IP)? Większa szansa zakłócenia (sieci bezprzewodowe). Duże pakiety: problem w szeregowaniu w kolejce wyjściowej routera (małe pakiety mają duże opóźnienie). strumień 1 (wysoki priorytet) klasyfikator scheduler strumień 2 (niski priorytet) Główna przyczyna: mniejsze opóźnienie przy długich ścieżkach. 14

Opóźnienie pakietu na łączu (przypomnienie) przepustowość: B czas propagacji: s Pierwszy bit wysłany. Ostatni bit wysłany. pakiet o rozmiarze p Pierwszy bit dociera. Ostatni bit dociera. s p / B czas czas Opóźnienie na pojedynczym łączu = s + p / B. Ignorujemy czas kolejkowania pakietu w buforze. 15

Opóźnienie pakietu na ścieżce Dla łącz poniżej: przepustowość = B, czas propagacji = s. Im dłuższa ścieżka, tym większy efekt. Pomijamy tu narzut związany z rozmiarem nagłówka! pakiet o rozmiarze 3p A B C 3 pakiety o rozmiarze p A B C 3p s 3p/B p p p p s p/b s s p p 3p/B 3p 3p/B 16

Niezawodny transport: ARQ

ARQ = Automatic Repeat request Zajmiemy się niezawodną transmisją jednokierunkową. Od nadawcy do odbiorcy. W drugą stronę identyczny mechanizm. ARQ Wysyłanie do skutku (do otrzymania potwierdzenia od odbiorcy). Odbiorca wysyła informacje zwrotne (otrzymałem pakiet / zwolnij / przyspiesz / ) Niezawodny transport na bazie zawodnej usługi przesyłania pakietów. Założymy, że strumień bajtów jest już posegmentowany. 18

Dostępne podstawowe mechanizmy Sumy kontrolne: możemy wykrywać, czy pakiet został uszkodzony. Potwierdzenia (ACK): małe pakiety kontrolne potwierdzające otrzymanie danego segmentu. Timeout (przekroczenie czasu oczekiwania): jeśli nie otrzymamy potwierdzenia przez pewien czas (typowy dla łącza, np. RTT, jak go mierzyć?) Retransmisje: ponowne wysłanie danego segmentu w przypadku przekroczenia czasu oczekiwania. 19

ARQ: Stop-and-Wait

Protokół Stop-and-Wait Algorytm odbiorcy: czekanie na pakiety odbieramy dane? wyślij potwierdzenie, przekaż dane do aplikacji Algorytm nadawcy: aplikacja chce wysyłać? wyślij segment czekanie na dane otrzymano ACK? czekanie na ACK timeout? wyślij segment ponownie 21

Stop-and-wait: typowe wykonania 1. bez utraty pakietów dane ACK 22

Stop-and-wait: typowe wykonania 1. bez utraty pakietów 2. utrata danych dane dane ACK timeout dane ACK 22

Stop-and-wait: możliwe wykonania 3. utrata ACK dane timeout ACK dane ACK 23

Stop-and-wait: możliwe wykonania 3. utrata ACK timeout dane ACK Skąd odbiorca wie, że to duplikat? dane ACK 23

Stop-and-wait: możliwe wykonania 3. utrata ACK 4. opóźnienie ACK + utrata danych timeout dane ACK Skąd odbiorca wie, że to duplikat? timeout dane 1 ACK dane dane 1 ACK dane 2 ACK 23

Stop-and-wait: możliwe wykonania 3. utrata ACK 4. opóźnienie ACK + utrata danych timeout dane ACK Skąd odbiorca wie, że to duplikat? timeout dane 1 ACK dane dane 1 ACK Nadawca interpretuje to jako ACK segmentu 2! dane 2 ACK 23

Numery sekwencyjne Każdy segment jest numerowany. ACK zawiera numer potwierdzanego segmentu. timeout dane 1 ACK 1 Mam już ten pakiet, ale potwierdzam jeszcze raz. dane 1 ACK 1 24

Numery sekwencyjne Każdy segment jest numerowany. ACK zawiera numer potwierdzanego segmentu. timeout dane 1 ACK 1 Mam już ten pakiet, ale potwierdzam jeszcze raz. timeout dane 1 ACK 1 dane 1 dane 1 ACK 1 Kolejne potwierdzenie segmentu 1? Ignoruję. dane 2 ACK 1 24

Stop-and-wait + numery sekwencyjne Działa, ale przy długich łączach o dużej przepustowości wykorzystuje ułamek ich możliwości! stop-and-wait lepiej: (jak?) dane ACK dane RTT dane Nadawca powinien móc nadawać bez czekania na ACK: co najmniej przez RTT; równoważnie: nadać co najmniej BDP danych. (BDP = bandwidth-delay product) ACK 25

ARQ: Okno przesuwne

Przesuwne okno (1) SWS (sender window size) = maksymalna liczba wysłanych i niepotwierdzonych segmentów. Segmenty od 1 do LAR są potwierdzone, a LAR+1 nie. Nadawca może wysyłać tylko segmenty leżące w oknie. Przesyłany ciąg segmentów (okno nadawcy): LAR (last ACK received) LAR + SWS 1 2 3 4 5 6 7 8 9 10 wysłane i potwierdzone wysłane ale niepotwierdzone niewysłane 27

Przesuwne okno (2) LAR LAR + SWS 1 2 3 4 5 6 7 8 9 10 wysłane i potwierdzone wysłane ale niepotwierdzone utrzymujemy dla nich licznik czasu niewysłane Akcje: Otrzymanie ACK sprawdzamy, czy możemy przesunąć okno. Przesunięcie okna wysyłamy dodatkowe segmenty. Timeout dla (niepotwierdzonego) segmentu wysyłamy go ponownie. 28

Przesuwne okno (2) LAR LAR + SWS 1 2 3 4 5 6 7 8 9 10 wysłane i potwierdzone wysłane ale niepotwierdzone utrzymujemy dla nich licznik czasu niewysłane Akcje: Stop-and-wait = okno przesuwne o rozmiarze 1. Otrzymanie ACK sprawdzamy, czy możemy przesunąć okno. Przesunięcie okna wysyłamy dodatkowe segmenty. Timeout dla (niepotwierdzonego) segmentu wysyłamy go ponownie. 28

Mechanizmy potwierdzania Nadawca: mechanizm przesuwnego okna. Trzy typowe mechanizmy dla odbiorcy: Go-Back-N Potwierdzanie selektywne Potwierdzanie skumulowane 29

Potwierdzanie Go-Back-N Załóżmy, że odbiorca dostał już segmenty do P włącznie. Czy wysłać ACK dla otrzymanego segmentu S? Tak dla S = P+1. Tak dla S P (ponowne potwierdzenie, prawdopodobnie poprzedni ACK zaginął). Nie dla S > P+1. Prosta implementacja. Jeśli warstwa transportowa odbiorcy sama przetwarzała segmenty (była aplikacją), to nie potrzebujemy bufora odbiorcy. 30

Potwierdzanie Go-Back-N: przykłady SWS = 4, pakiety nie giną SWS = 4, pakiet ginie okno okno {1} {1,2} {1,2,3} {1,2,3,4} {2,3,4,5} {3,4,5,6} {4,5,6,7} {5,6,7,8} {6,7,8,9} {7,8,9,10} 1 2 3 4 ACK 5 6 7 8 9 10 dane timeout segmentu 5 timeout segmentu 4 timeout segmentu 3 timeout segmentu 2 {1} {1,2} {1,2,3} {1,2,3,4} {2,3,4,5} {2,3,4,5} {2,3,4,5} {2,3,4,5} {2,3,4,5} {3,4,5,6} 1 2 3 4 ACK 5 2 3 4 5 6 dane ignorowany ignorowany ignorowany 31

Potwierdzanie selektywne (1) Odbierany ciąg segmentów: odebrane (i potwierdzone) LFR (last frame received) LFR + RWS 1 2 3 5 6 Okno odbiorcy: Rozmiar RWS (receiver window size). Segmenty od 1 do LFR (last frame received) są otrzymane, a segment LFR+1 nie. 32

Potwierdzanie selektywne (2) LFRcvd (last frame received) LFRcvd + RWS 1 2 3 5 6 Otrzymujemy segment S LFRcvd < S LFRcvd + RWS zapisz segment w buforze odbiorcy. S LFRcvd + RWS odeślij ACK. S > LFRcvd + RWS ignoruj segment. S = LFRcvd + 1 aktualizuj LFR (przesuń okno). 33

Potwierdzanie selektywne (2) LFRcvd (last frame received) LFRcvd + RWS 1 2 3 5 6 Otrzymujemy segment S LFRcvd < S LFRcvd + RWS zapisz segment w buforze odbiorcy. S LFRcvd + RWS odeślij ACK. S > LFRcvd + RWS ignoruj segment. S = LFRcvd + 1 aktualizuj LFR (przesuń okno). Dla RWS = 1, potwierdzanie selektywne = Go-Back-N. 33

Go-Back-N vs. potwierdzanie selektywne SWS = 4, Go-Back-N okno timeout segmentu 2 {1} {1,2} {1,2,3} {1,2,3,4} {2,3,4,5} 1 2 3 4 ACK 5 dane ignorowany ignorowany {2,3,4,5} {2,3,4,5} {2,3,4,5} 2 3 4 ignorowany {2,3,4,5} 5 {3,4,5,6} 6 34

Go-Back-N vs. potwierdzanie selektywne SWS = 4, Go-Back-N SWS = 4, potwierdzanie selektywne timeout segmentu 2 okno {1} {1,2} {1,2,3} {1,2,3,4} {2,3,4,5} {2,3,4,5} {2,3,4,5} {2,3,4,5} 1 2 3 4 ACK 5 2 3 4 dane ignorowany ignorowany ignorowany timeout segmentu 2 okno {1} {1,2} {1,2,3} {1,2,3,4} {2,3,4,5} {2,3,4,5} {2,3,4,5} 1 2 3 4 ACK 5 2 dane {2,3,4,5} 5 {2,3,4,5} {3,4,5,6} 6 {6,7,8,9} 6 34

Go-Back-N vs. potwierdzanie selektywne SWS = 4, Go-Back-N SWS = 4, potwierdzanie selektywne timeout segmentu 2 okno {1} {1,2} {1,2,3} {1,2,3,4} {2,3,4,5} {2,3,4,5} {2,3,4,5} {2,3,4,5} 1 2 3 4 ACK 5 2 3 4 dane ignorowany ignorowany ignorowany timeout segmentu 2 okno {1} {1,2} {1,2,3} {1,2,3,4} {2,3,4,5} {2,3,4,5} {2,3,4,5} 1 2 3 4 ACK 5 2 dane {2,3,4,5} {3,4,5,6} 5 6 Go-Back-N: okno nadawcy zawiera wyłącznie niepotwierdzone segmenty {2,3,4,5} {6,7,8,9} 6 34

Potwierdzanie skumulowane LFRcvd (last frame received) LFRcvd + RWS 1 2 3 5 6 Poza ACK wszystko jak przy potwierdzaniu selektywnym. Wysyłanie ACK: Również tylko jeśli otrzymamy segment S LFRcvd + RWS Ale niekoniecznie wysyłamy ACK dla S! W razie potrzeby aktualizujemy LFRcvd (przesuwamy okno w prawo) a następnie wysyłamy ACK dla LFRcvd. demonstracja 35

Potwierdzanie skumulowane vs. selektywne Selektywne. Wiemy dokładnie które pakiety dotarły Skumulowane. Możemy wprowadzić mechanizm opóźnionych potwierdzeń: Jeśli są dane do wysłania w drugą stronę, to wysyłamy ACK z tymi danymi. W p.p. wymuszamy określony czas (ułamek RTT) pomiędzy kolejnymi ACK. Zmniejsza liczbę potwierdzeń bez generowania timeoutów. Selektywne i skumulowane. Wnioskowanie na podstawie dziur w ACK: Selektywne: ACK 1, ACK 2, ACK 4, ACK 5. Skumulowane: ACK 1, ACK 2, ACK 2, ACK 2, ACK 2. Być może warto wysłać segment 3 bez czekania na jego timeout? 36

Kontrola przepływu

Kontrola przepływu: warstwa aplikacji (1) Co to znaczy przekazujemy dane do warstwy aplikacji? To warstwa aplikacji pobiera dane funkcją read(). Okno odbiorcy to bufor na odebrane pakiety, jeszcze nieprzeczytane przez aplikację. 38

Kontrola przepływu: warstwa aplikacji (2) LFRcvd (last frame received) LFRcvd + RWS 1 2 3 4 6 7 39

Kontrola przepływu: warstwa aplikacji (2) LFRcvd (last frame received) LFRcvd + RWS 1 2 3 4 6 7 odebrane, potwierdzone, przeczytane przez aplikację odebrane (i potwierdzone) ale nieprzeczytane przez aplikację LFRcvd (last frame received) LFRead + RWS 1 2 3 4 6 7 LFRead (last frame read) 39

Kontrola przepływu: oferowane okno Odbiorca: Oferowane okno = wolne miejsce w buforze Oferowane okno wysyłane nadawcy (zazwyczaj razem z ACK). Np.: pakiety potwierdzane, ale aplikacja wolno czyta oferowane okno jest małe. 1 2 3 4 6 7 Nadawca: Zmienia SWS (rozmiar swojego okna) na rozmiar oferowanego okna. Nie będzie wysyłał danych, na które odbiorca nie ma miejsca. 1 2 3 4 5 6 7 8 9 10 40

Niezawodny transport: TCP

TCP Numeruje bajty, a nie segmenty. Potwierdzanie skumulowane: demonstracja Uwaga: ACK n = oznacza mam wszystko do bajtu n-1 włącznie. ACK zazwyczaj wysyłany w pakiecie razem z danymi w drugą stronę. 0 7 8 15 16 23 24 31 port źródłowy port docelowy numer sekwencyjny (numer pierwszego bajtu w segmencie) numer ostatniego potwierdzanego bajtu + 1 offset 000 ECN U-A-P-R-S-F oferowane okno suma kontrolna wskaźnik pilnych danych dodatkowe opcje, np. potwierdzanie selektywne 42

Numerowanie bajtów: przykładowe komplikacje Oferowaliśmy okno = 0 i aplikacja zwolniła miejsce? Wyślij osobno rozmiar okna (bez ACK). Nie mamy danych do wysłania w drugą stronę? Opóźnione wysyłanie ACK. Oferowane okno jest mniejsze niż MSS? Czekamy. Aplikacja generuje dane mniejsze niż MSS Wyślij dopiero jeśli kiedy wszystkie poprzednie dane zostaną potwierdzone (mechanizm Nagle a). Co z interaktywnymi programami (praca zdalna)? 43

Ustawianie timeoutu dla segmentu Obliczamy średnie RTT ważone wykładniczo czasem avg-rtt = α avg-rtt + (1 - α) zmierzone-rtt RTT segmentów stałe avg-rtt zbiega do tej wartości. W podobny sposób mierzymy wariancję RTT (var-rtt). RTO (retransmission timeout) = 2 avg-rtt + 4 var-rtt 44

Gdzie implementować?

Gdzie implementować warstwę transportową? Warstwa sieciowa: Implementowana na routerach i urządzeniach końcowych. Warstwa transportowa: Wczesna filozofia: niezawodność dostarczania zapewniać na każdym łączu. Problem: błąd może nie być związany z łączem! przekłamanie pakietu Wniosek: niezawodność dostarczania i tak musi być kontrolowana na urządzeniach końcowych. 46

Zasada end-to-end (1) Słaba wersja Niezawodne przesyłanie danych musi być implementowane na urządzeniach końcowych, ale warstwy niższe mogą w tym pomagać. Silna wersja Niezawodne przesyłanie danych musi być implementowane na urządzeniach końcowych, warstwy niższe nie powinny się tym w ogóle zajmować. 47

Zasada end-to-end (2) Która wersja zasady? Spór filozoficzny na przykładzie TCP + WiFi. TCP działa dobrze tylko jeśli łącza są w miarę niezawodne. Łącza bezprzewodowe tracą średnio 20-80% pakietów Potwierdzanie i retransmisja na poziomie warstwy łącza danych. Łamiemy model warstwowy i silną wersję zasady. Krótkoterminowe duże korzyści. Ale być może trudności we wprowadzeniu innej wersji warstwy transportowej. 48

Lektura dodatkowa Kurose & Ross: rozdział 3. Tanenbaum: rozdział 6. Dokumentacja online: http://www.networksorcery.com/enp/protocol/tcp.htm 49