Sieci_komputerowe_7

Download Report

Transcript Sieci_komputerowe_7

Wykład 7

Intersieci – stos protokołów, protokoły warstwy transportowej TCP/IP - cd.

Przedmiot: Sieci komputerowe

Ryszard Wiatr

Powody istnienia stosu protokołów, zamiast jednego (ogromna ilość problemów podczas komunikowania się komputerów poprzez sieć)” Zawodność sprzętu Przeciążenie sieci Gubienie i przychodzenie pakietów z opóźnieniem Uszkodzenie danych Powielanie danych i błędy w kolejności ich napływania

Model warstwowy oprogramowania protokołów Nadawca

Warstwa n

....

Warstwa 2 Warstwa 1

Odbiorca

Warstwa n

....

Warstwa 2 Warstwa 1

Sieć

Porównanie modelu warstwowego i obrazu organizacji wielu interfejsów sieciowych pod IP i wielu protokołów nad nim Warstwa protokołów wysokiego poziomu Warstwa Internet Protocol Warstwa interfejsów sieciowych Podział koncepcyjny Protokół 1 Interfejs 1 Protokół 2 Moduł IP Interfejs 2 Organizacja oprogramowania Protokół 3 Interfejs 3

Ścieżka wiadomości w Internecie od nadawcy do odbiorcy Komputery pośrednie przesyłają datagram tylko do warstwy oprogramowania IP Nadawca inne...

Warstwa IP Interfejs Warstwa IP Interfejs Sieć 1 Sieć 2 Warstwa IP Interfejs Sieć 3 Odbiorca inne...

Warstwa IP Interfejs

Warstwa 7 6 5 4 3 2 1 Zależności oprogramowania protokołów. 7 -wartwowy model ISO Działanie Programy użytkowe Reprezentacja danych Sesja Transport Sieć Łącze (interfejs sprzętowy) Połączenie przy pomocy fizycznego sprzętu

Cztery koncepcyjne warstwy oprogramowania TCP/IP i format obiektów przesyłanych między nimi Warstwy koncepcyjne Programy użytkowe Transport Obiekty przesyłane między warstwami Komunikaty lub strumienie Pakiety protokołów transportu Intersieć Datagramy IP Interfejs sieciowy Ramka sieci fizycznej Sprzęt

Zasada podziału na warstwy Węzeł A Programy użytkowe Węzeł B Programy użytkowe

Identyczny komunikat

Transport Transport

Identyczny pakiet

Intersieć Intersieć Interfejs sieciowy

Identyczny datagram Identyczna ramka

Sieć fizyczna Interfejs sieciowy n-ta warstwa w węźle B odbiera dokładnie te same obiekty, które wysłała n-ta warstwa węźle A

Węzeł A Programy użytkowe

Identyczny komunikat

Transport Intersieć

Ident. datagram

Interfejs sieciowy

Ident. ramka Identyczny pakiet

Ruter Intersieć Intersieć Sieć fizyczna 1 Węzeł B Programy użytkowe Transport Intersieć

Ident. datagram

Interfejs sieciowy

Ident. ramka

Sieć fizyczna 2

Umiejscowienie protokołu bezpośrednich połączeń międzypunktowych, gdy IP traktuje ich zestaw jako pojedynczą sieć IP Transport Intersieć Interfejs sieciowy Połączenia wewnątrzsieciowe Podział koncepcyjny Protokół 1 Interfejs 1 Protokół 2 Moduł IP Interfejs 2 Połączenie międzypunktowe (sieć wewnętrzna ) Protokół 3 Interfejs 3 Organizacja oprogramowania

Warstwa koncepcyjna Programy użytkowe Transport Intersieć Interfejs sieciowy Sprzęt

Tylko adresy IP Adresy fizyczne

Granica

Oprogramowanie poza systemem operacyjnym Oprogramowanie wewnątrz systemu operacyjnego

Związek pomiędzy koncepcyjnym podziałem na warstwy a granicami dla systemu operacyjnego i adresami protokołów wysokiego poziomu

Moduł IP Moduł ARP Demultipleksowanie na podstawie typu ramki Moduł RARP Przybycie ramki Demultipleksowanie przychodzących ramek na podstawie pola typu znajdującego się w nagłówku ramki

Protokół ICMP Protokół UDP Protokół TCP Moduł IP Protokół EGP Przybycie datagramu Demultipleksowanie w warstwie Internetu. Oprogramowanie IP wybiera odpowiednią procedurę obsługi na podstawie znajdującego się w nagłówku datagramu pola typu protokołu

Protokół UDP (User Datagram Protocol) Port - abstrakcyjny punkt docelowy identyfikowany za pomocą dodatniej liczby całkowitej UDP zapewnie podstawowy mechanizm wykorzystywany przez programy użytkowe przy przesyłaniu datagramów do innych programów użytkowych (portów) Warstwa aplikacji

Telnet FTP HTTP SMTP POP DNS NFS SNMP RIP

Warstwa transportowa Warstwa sieciowa (Internetu) Warstwa dostępu do sieci TCP

ARP CSMA/CD Ethernet

IP

SLIP PPP

UDP

ICMP Token Ring FDDI inne…

Format komunikatów UDP

0 16

Port UDP nadawcy Długość komunikatu UDP Port UDP odbiorcy Suma kontrolna UDP Dane ............

31

0 8 16

Adres IP nadawcy Zero Adres IP odbiorcy Proto Długość UDP

31

Dwanaście oktetów pseudonagłówka używanego przy wyliczaniu sumy kontrolnej UDP

Podział logiczny Program użytkowy Datagram użytkownika (UDP) Intersieć (IP) Interfejs sieci Logiczny podział UDP na warstwy między programem użytkowym i IP

nagłówek IP nagłówek UDP obszar danych UDP obszar danych IP nagłówek ramki obszar danych ramki

Kapsułkowanie datagramu UDP w datagramie IP przed wysłaniem przez intersieć.

Kapsułkowanie w ramce - dla każdej pojedynczej sieci

Port 1 Port 2 Port 3 UDP: demultipleksowanie w zależności od portu Nadchodzący datagram UDP Warstwa IP Demultipleksowanie w warstwie bezpośrednio powyżej IP.

UDP wybiera odpowiedni port odbiorcy na podstawie numeru portu odbiorcy znajdującego się w nadchodzącym datagramie

Numer 0 7 9 11 13 15 17 19 37 42 43 53 67 68 69 111 123 Przykład przyporządkowania portów usługom Nazwa Nazwa w Unix Opis ECHO DISCARD USERS DAYTIME QUOTE CHARGEN TIME NAMESERVER NICNAME DOMAIN BOOTPS BOOTPC TFTP SUNRPC NTP echo discard systat daytime netstat qotd chargen time name whois nameserver bootps bootpc tftp sunrpc ntp snmp snmp-trap biff who syslog timed zarezerwowane echo porzucanie aktywni użytkownicy pora dnia kto pracuje lub netstat cytat dnia generator znaków czas serwer nazw maszyn kto jest serwer nazw serwer ładowania systemu klient ładowania systemu trivial file transfer RPC firmy Sun Microsystems Network Time Protocol monitor sieci SNMP pułapki snmp Unix comsat demon rwho systemu Unix kronika systemu demon czasu

Warstwa transportowa modelu ma zapewnić: usługę niezawodnego dostarczania kontrolę przepływu Niezawodne dostarczanie zapewnia program komunikacyjny (protokół) warstwy transportowej poprzez: przesyłanie strumieniami łączenie w obwód wirtualny przesyłanie z użyciem buforów brak strukturalizacji strumienia połączenie w pełni dwukierunkowe

Pozytywne potwierdzanie z retransmisją Wydarzenia po stronie nadawcy Komunikaty sieciowe Wydarzenia po stronie odbiorcy Wysłanie pakietu 1 Odebranie pakietu 1 Wysłanie ACK 1 Odebranie ACK 1 Wysłanie pakietu 2 Odebranie pakietu 2 Wysłanie ACK 2 Odebranie ACK 2 Protokół stosujący pozytywne potwierdzanie z retransmisją.

Nadawca czeka na potwierdzenie dla każdego wysłanego pakietu

Wydarzenia po stronie nadawcy Wysłanie pakietu 1 Uruchomienie zegara W tym momencie normalnie przybyłby komunikat ACK Przekroczenie limitu czasowego Retransmisja pakietu 1 Uruchomienie zegara Odebranie ACK 1 Skasowanie zegara Komunikaty sieciowe Wydarzenia po stronie odbiorcy Spodziewane przybycie pakietu Powinno zostać wysłane ACK Odebranie pakietu 1 Wysłanie ACK 1 Przekroczenie limitów czasu i retransmisja pojawiające się przy utracie pakietu

Protokół z przesuwającym się oknem z 8 pakietami wewnątrz okna Okno przesuwa się tak, że pakiet 9 może zostać wysłany, gdy przyszło potwierdzenie dotyczące pakietu 1 Pakiety, dla których nie było potwierdzenia są retransmitowane 1 2 3 4 5 6 7 8 9 10 .....

Okno początkowe 1 2 3 4 5 6 7 8 9 10 .....

Przesuwanie się okna

Przesuwanie 3 pakietów przy pomocy protokołu z przesuwającym się oknem.

Nadawca może przesłać wszystkie pakiety z okna bez oczekiwania na potwierdzenie Wydarzenia po stronie nadawcy Wysłanie pakietu 1 Wysłanie pakietu 2 Wysłanie pakietu 3 Odebranie ACK 1 Odebranie ACK 2 Odebranie ACK 3 Komunikaty sieciowe Wydarzenia po stronie odbiorcy Odebranie pakietu 1 Wysłanie ACK 1 Odebranie pakietu 2 Wysłanie ACK 2 Odebranie pakietu 3 Wysłanie ACK 3

Model podziału na warstwy z uwidocznionym miejscem na UDP i TCP.

TCP - usługa przesyłania niezawdonymi strumieniami UDP - usługa zawodnego dostarczania datagramów Program użytkowy Niezawodne strumienie (TCP) Datagramy użytkownika (UDP) Internet (IP) Interfejs sieciowy

Protokół TCP: Specyfikuje format danych przesyłanych między komputerami Specyfikuje format potwierdzeń wymienianych między komputerami w celu uzyskania niezawodnego przesyłania Opisuje procedury stosowane w celu upewnienia się, że dane dotarły do celu Wyznacza sposób, w jaki oprogramowanie TCP rozróżnia odbiorców na danej maszynie Wyznacza sposób, w jaki komunikające się maszyny radzą sobie z błędami, takimi jak utrata pakietu lub jego zduplikowanie Wyznacza sposób, w jaki dwa komputery inicjują przesyłanie za pomocą strumienia TCP i sposób zgadzania się na jego zakończenie

Punkt końcowy to para (adres IP : port).

Np. (18.26.0.36:1069) Podstawowym pojęciem protokołu TCP jest połączenie Połączenie jest identyfikowane przez parę punktów końcowych Np. (18.26.0.36:1069) oraz (128.10.2.3:25)

Programy użytkowe na obu końcach połączenia dokonują: na jednym końcu funkcję pasywnego otwacia - informacja dla systemu operacyjnego, że akceptuje się połączenie, które ma nastąpić.

System operacyjny przypisuje połaczeniu numer portu na drugim końcu funkcję aktywnego otwarcia - informacją dla systemu operacyjnego inicjująca skontaktowanie się obydwu modułów TCP.

Przykład przesuwającego się okna TCP.

Oktety 1 i 2 wysłane i potwierdzone Oktety 3 - 6 wysłane ale nie potwierdzone Oktety 7 - 9 nie wysłane ale będą wysłane niezwłocznie Oktety od 10 nie mogą być wysłane przed przesunięciem okna 1 2 3 4 5 6 7 8 9 10 11 ....

Format segmentu TCP z nagłówkiem Segmenty używane do ustanawiania połączenia, przenoszenia danych i potwierdzeń

0 4 10 16 24

Dł. nag Port nadawcy zarezerwowane Suma kontrolna Numer porządkowy Numer potwierdzenia Bity kodu Opcje (jeżeli jakieś) Dane ..............

Port odbiorcy Okno Wskaźnik pilnych danych Uzupełnienie

32 Porty identyfikują programy użytkowe na końcach połączenia Numer porządkowy wyznacza pozycję danych segmentu w strumienia bajtów nadawcy Numer potwierdzenia wyznacza numer oktetu, który nad. spodziewa się otrzymać w następnej kolejności Dł. nagłówka określa długość nagłówka segmentu mierzoną w wielokrotnościach 32 bitów Okno to propozycja TCP, ile danych może przyjąć - rozmiar bufora, liczba 16-bitowa

Bity pola KOD z nagłówka TCP Bity (od lewej do prawej) URG ACK PSH RST SYN FIN Znaczenie, gdy bit jest ustawiony Wskaźnik pilności jest istotny Pole potwierdzenia jest istotne Ten segment stanowi prośbę o wypchnięcie Skasuj połączenie Zsynchronizuj numery początkowe Koniec strumienia bajtów u nadawcy

0 8 16 24

Zero Protokół Adres IP nadawcy Adres IP odbiorcy Długość TCP Format pseudonagłówka używanego do obliczania sumy kontrolnej TCP Po stronie odbiorcy odpowiednie informacje są wyciągane z datagramu IP, który przenosił segment

31

Przykłady obecnie przypisanych numerów portów TCP Dziesiętnie słowo kluczowe słowo kl. w Unix Opis 0 1 5 7 9 11 13 15 17 19 20 21 23 25 37 42 43 53 77 79 93 95 101 TCPMUX RJE ECHO DISCARD USERS DAYTIME QUOTE CHARGEN FTP-DATA FTP TELNET SMTP TIME NAMESERVER NICNAME DOMAIN FINGER DCP SUBDUP HOSTNAME echo discard systat daytime netstat qotd chargen ftp-data ftp telnet smtp time name whois nameserver rje finger dcp subdup hostnames zarezerwowane wielokrotne XOR dla TCP pozycja dla zadania z odległej maszyny echo usuń aktywni użytkownicy godzina program podający stan sieci cytat dnia generator znaków File Transfer Protocol (dane) File Transfer Protocol połączenie terminalowe Simple Mail Transport Protocol czas serwer nazw węzłów kto jest Domain Name Server dowolna prywatna usługa RJE finger Device Control Protocol protokół SUPDUP serwer nazw węzłów NIC

Próbka czasu podróży w obie strony: RTT (Round Trip Time) RTT = α * Stare_RTT) + (1 α ) * Nowa_Próbka_Czasu Czas_oczekiwania = β * RTT Algorytm retransmisji z adaptacją: potrzeba ciągłego oszacowywania RTT śledzenie czasu spóźnień i dostosowywanie parametru czasu oczekiwania

Niejednoznaczność potwierdzania Algorytm Karna: przy oszacowaniu czasu podróży w obie strony ignoruj próbki, które odpowiadają retransmitowanym segmentom, ale używaj strategii wydłużania oczekiwania i nie uwzględniaj wartości czasu oczekiwania uzyskanych z retransmitowanych pakietów, dopóki nie uzyskasz poprawnej próbki.

Nowy_czas_oczekiwania = γ * czas_oczekiwania zwykle γ = 2

Zapaść z powodu przeciążenia: retransmisje z powodu opóźnień przeciążeniowych jeszcze te przeciążenia pogłębiają doprowadzając do unieruchomienia sieci.

Jak sobie z tym radzi TCP: metoda wielokrotnego zmniejszania: dozwolone okno = min (propozycja_odbiorcy, okno przeciążeniowe) przy zgubieniu segmentu redukcja okna przeciążeniowego o połowę metoda powolnego startu: zwiększanie okna przeciążeniowego za każdym nadejściem potwierdzenia

Kasowanie połączenia: gdy zachodzi potrzeba natychmiastowego zamknięcia połączenia ustawiony bit RST (reset) w polu Kodu)

Wymuszanie dostarczenia danych: operacja wypchnięcia (push) - wymuszenie dostarczenia oktetów obecnie znajdujących się w strumieniu bez konieczności czekania na wypełnienie bufora ustawiony bit PSH (push) w polu Kodu

Wydarzenia w węźle 1 Ustanowienie połączenia TCP Komunikaty sieciowe Wydarzenia w węźle 2 Wysłanie SYN nr = x Odebranie segmentu SYN Wysłanie SYN nr = y, ACK x + 1 Odebranie segmentu z SYN+ACK Wysłanie ACK y + 1 Odebranie segmentu ACK 3-etapowa wymiana komunikatów przy ustanawianiu połączenia.

Segmenty z SYN przenoszą informacje o początkowym numerze porządkowym

Wydarzenia w węźle 1 Zamykanie połączenia TCP Komunikaty sieciowe (Program użytkowy zamyka połączenie) Wysłanie FIN nr=x Odebranie segmentu ACK Odebranie segmentu z FIN + ACK Wysłanie ACK y + 1 Wydarzenia w węźle 2 Odebranie segmentu FIN Wysłanie ACK x + 1 (poinformowanie programu użytkowego) (program użytkowy zamyka połączenie) Wysłanie FIN nr=y, ACK x+1 Odebranie segmentu ACK Trójstopniowa wymiana komuniakató przy zamykaniu połączenia.

Węzeł, który odbiera pierwszy segment FIN, potwierdza go natychmiast, a następnie czeka do momentu wysłania przez siebie drugiego segmentu FIN

Automat skończony dla TCP

Cokolwiek / kasowanie początek

syn / syn + ack

SYN ODEBRANY

ack Zamknij / fin Zamknij / fin

ZAMKNIĘTE

Pasywne otwarcie zamknięcie

NASŁUCHIWANIE

kasowanie send / syn syn / syn + ack

USTANOWIONE

Aktywne otwarcie / syn fin / ack

SYN WYSŁANY

syn / syn + ack

Zamknij / przekroczenie czasu

/ reset

CZEKANIE NA ZAMKNĘCIE

Zamknij / fin

FIN 1. OCZEKIWANIE

ack / fin / ack fin - ack / ack

ZAMYKANIE

ack /

OSTATNIE ACK

ack / Przekroczenie czasu po upłynięciu 2 czasów życia segmentu

FIN 2. OCZEKIWANIE

fin - ack / ack

CZEKANIE NA SPÓŹNIONYCH Każdy punkt końcowy zaczyna w stanie Zamknięte. Etykiety przejść pokazują wartość na wejściu powodującą przejście, po której następuje wartość wysyłana na wyjście, jeżeli jakaś jest wysyłana

Unikanie „głupiego” okna po stronie odbiorcy: gdy zaoferowano zerowe okno, to przed wysłaniem aktualnej oferty okna należy poczekać, aż stanie się dostępne miejsce równe wielkości co najmniej 50% całkowitej pojemności bufora lub równe maksymalnemu rozmiarowi segmentu opóźnione potwierdzanie

Syndrom małego („głupiego”) okna Problem, który ujawnia się, gdy każde potwierdzenie proponuje małą ilość miejsca, a każdy segment przenosi małą ilość danych Powody: - nadawanie przez program danych od razu, gdy staną się one dostępne (np. generowanie danych po 1 oktecie) - gdy program odbiorczy przyjmuje strategię czytania po 1 oktecie

Unikanie „głupiego” okna po stronie nadawcy: gromadzenie - TCP nadawcy musi opóźniać wysyłanie segmentu do chwili gdy zbierze się rozsądna ilość danych algorytm Nagle’a: gdy program wysyłający generuje dodatkowe dane do przesłania przez połączenie, którym poprzednio już były wysyłane dane, ale nie przyszło dla nich potwierdzenie, umieść te nowe dane w buforze wyjściowym, ale nie wysyłaj dodatkowego segmentu, zanim danych nie będzie na tyle dużo, aby stanowiły segment maksymalnej wielkości.

Jeżeli w momencie przyjścia potwierdzenia, wciąż jeszcze czekasz na wysłanie, to wyślij zgromadzone dane.

Stosuj tę zasadę nawet wtedy, gdy użytkownik wykona operację wypchnięcia