470 likes | 708 Views
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ć)”.
E N D
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 Odbiorca Warstwa n Warstwa n .... .... Warstwa 2 Warstwa 2 Warstwa 1 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 Protokół 1 Protokół 2 Protokół 3 Moduł IP Warstwa Internet Protocol Warstwa interfejsów sieciowych Interfejs 1 Interfejs 2 Interfejs 3 Podział koncepcyjny Organizacja oprogramowania
Ścieżka wiadomości w Internecie od nadawcy do odbiorcy Komputery pośrednie przesyłają datagram tylko do warstwy oprogramowania IP Nadawca Odbiorca inne... inne... Warstwa IP Warstwa IP Warstwa IP Warstwa IP Interfejs Interfejs Interfejs Interfejs Sieć 1 Sieć 2 Sieć 3
Zależności oprogramowania protokołów. 7 -wartwowy model ISO Działanie Warstwa 7 Programy użytkowe Reprezentacja danych 6 Sesja 5 Transport 4 Sieć 3 Łącze (interfejs sprzętowy) 2 Połączenie przy pomocy fizycznego sprzętu 1
Cztery koncepcyjne warstwy oprogramowania TCP/IP i format obiektów przesyłanych między nimi Obiekty przesyłane między warstwami Warstwy koncepcyjne Programy użytkowe Komunikaty lub strumienie Transport Pakiety protokołów transportu Intersieć Datagramy IP Interfejs sieciowy Ramka sieci fizycznej Sprzęt
Zasada podziału na warstwy Węzeł A Węzeł B Programy użytkowe Programy użytkowe Identyczny komunikat Transport Transport Identyczny pakiet Intersieć Intersieć Identyczny datagram Interfejs sieciowy Interfejs sieciowy Identyczna ramka Sieć fizyczna 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 Węzeł B Programy użytkowe Programy użytkowe Identyczny komunikat Transport Identyczny pakiet Transport Ruter Intersieć Intersieć Intersieć Ident. datagram Ident. datagram Interfejs sieciowy Intersieć Interfejs sieciowy Ident. ramka Ident. ramka Sieć fizyczna 1 Sieć fizyczna 2
Umiejscowienie protokołu bezpośrednich połączeń międzypunktowych, gdy IP traktuje ich zestaw jako pojedynczą sieć IP Transport Protokół 1 Protokół 2 Protokół 3 Moduł IP Intersieć Interfejs sieciowy Interfejs 1 Interfejs 2 Interfejs 3 Połączenie międzypunktowe (sieć wewnętrzna) Połączenia wewnątrzsieciowe Podział koncepcyjny Organizacja oprogramowania
Warstwa koncepcyjna Granica Programy użytkowe Oprogramowanie poza systemem operacyjnym Oprogramowanie wewnątrz systemu operacyjnego Transport Intersieć Tylko adresy IP Adresy fizyczne Interfejs sieciowy Sprzęt Związek pomiędzy koncepcyjnym podziałem na warstwy a granicami dla systemu operacyjnego i adresami protokołów wysokiego poziomu
Moduł IP Moduł ARP Moduł RARP Demultipleksowanie na podstawie typu ramki Przybycie ramki Demultipleksowanie przychodzących ramek na podstawie pola typu znajdującego się w nagłówku ramki
Protokół ICMP Protokół UDP Protokół TCP Protokół EGP Moduł IP 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 TCP UDP Warstwa transportowa Warstwa sieciowa (Internetu) IP ICMP Warstwa dostępu do sieci ARP SLIP PPP Token Ring FDDI inne… CSMA/CD Ethernet
Format komunikatów UDP 0 16 31 Port UDP nadawcy Port UDP odbiorcy Długość komunikatu UDP Suma kontrolna UDP Dane ............
0 8 16 31 Adres IP nadawcy Adres IP odbiorcy Zero Proto Długość UDP 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 UDP obszar danych UDP nagłówek IP 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
Przykład przyporządkowania portów usługom Numer Nazwa Nazwa w Unix Opis 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 0 7 9 11 13 15 17 19 37 42 43 53 67 68 69 111 123 - - - - - - - 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
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 Wydarzenia po stronie odbiorcy Komunikaty sieciowe 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 Wydarzenia po stronie odbiorcy Komunikaty sieciowe Wysłanie pakietu 1 Uruchomienie zegara Spodziewane przybycie pakietu Powinno zostać wysłane ACK W tym momencie normalnie przybyłby komunikat ACK Przekroczenie limitu czasowego Retransmisja pakietu 1 Uruchomienie zegara Odebranie pakietu 1 Wysłanie ACK 1 Odebranie ACK 1 Skasowanie zegara 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 Wydarzenia po stronie odbiorcy Komunikaty sieciowe Wysłanie pakietu 1 Wysłanie pakietu 2 Odebranie pakietu 1 Wysłanie ACK 1 Wysłanie pakietu 3 Odebranie pakietu 2 Wysłanie ACK 2 Odebranie pakietu 3 Wysłanie ACK 3 Odebranie ACK 1 Odebranie ACK 2 Odebranie 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 32 Port nadawcy Port odbiorcy Numer porządkowy Numer potwierdzenia Dł. nag zarezerwowane Bity kodu Okno Suma kontrolna Wskaźnik pilnych danych Opcje (jeżeli jakieś) Uzupełnienie Dane .............. 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) Znaczenie, gdy bit jest ustawiony URG ACK PSH RST SYN FIN 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 31 Adres IP nadawcy Adres IP odbiorcy Zero Protokół 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
Przykłady obecnie przypisanych numerów portów TCP Dziesiętnie słowo kluczowe słowo kl. w Unix Opis 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 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
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
Ustanowienie połączenia TCP Wydarzenia w węźle 1 Wydarzenia w węźle 2 Komunikaty sieciowe 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
Zamykanie połączenia TCP Wydarzenia w węźle 1 Wydarzenia w węźle 2 Komunikaty sieciowe (Program użytkowy zamyka połączenie) Wysłanie FIN nr=x Odebranie segmentu FIN Wysłanie ACK x + 1 (poinformowanie programu użytkowego) Odebranie segmentu ACK (program użytkowy zamyka połączenie) Wysłanie FIN nr=y, ACK x+1 Odebranie segmentu z FIN + ACK Wysłanie ACK y + 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 ZAMKNIĘTE Pasywne otwarcie zamknięcie Aktywne otwarcie / syn NASŁUCHIWANIE syn / syn + ack kasowanie send / syn Zamknij / przekroczenie czasu / reset SYN ODEBRANY SYN WYSŁANY syn / syn + ack ack syn / syn + ack Zamknij / fin USTANOWIONE CZEKANIE NA ZAMKNĘCIE fin / ack Zamknij / fin Zamknij / fin FIN - 1. OCZEKIWANIE ack / fin / ack ZAMYKANIE OSTATNIE ACK ack / fin - ack / ack ack / Przekroczenie czasu po upłynięciu 2 czasów życia segmentu FIN - 2. OCZEKIWANIE CZEKANIE NA SPÓŹNIONYCH fin - ack / ack 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