Sieci komputerowe Wykład 5: Warstwa transportowa: TCP i UDP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 5 1 / 22
Warstwa transportowa Cechy charakterystyczne: Ostatnia warstwa zaimplementowana w systemie operacyjnym. Udostępnia wygodne usługi przesyłania danych między dwoma komputerami. Dodatkowa warstwa abstrakcji (porty): multipleksowanie i demultipleksowanie pakietów należacych do różnych procesów. Opcjonalnie: kontrola przesyłania danych. Sieci komputerowe (II UWr) Wykład 5 2 / 22
Warstwa czwarta a trzecia Dlaczego nie wbudować usług warstwy czwartej w trzecia? Po co nam dodatkowa warstwa? Kod warstwy czwartej wyłacznie na komputerach nadawcy i odbiorcy Kod warstwy trzeciej na wszystkich routerach pośredniczacych Warstwa czwarta może ponawiać transmisję do skutku jeśli warstwa trzecia będzie gubić pakiety Sieci komputerowe (II UWr) Wykład 5 3 / 22
Warstwa czwarta a trzecia Dlaczego nie wbudować usług warstwy czwartej w trzecia? Po co nam dodatkowa warstwa? Kod warstwy czwartej wyłacznie na komputerach nadawcy i odbiorcy Kod warstwy trzeciej na wszystkich routerach pośredniczacych Warstwa czwarta może ponawiać transmisję do skutku jeśli warstwa trzecia będzie gubić pakiety Sieci komputerowe (II UWr) Wykład 5 3 / 22
Protokoły warstwy czwartej Protokoły: TCP: połaczeniowy, złożony, kontrola błędów,... UDP: bezpołaczeniowy, prosty, bez kontroli błędów,... W obu przypadkach: model klient-serwer. Sieci komputerowe (II UWr) Wykład 5 4 / 22
Słowo o nazewnictwie 1 warstwa 1: strumień bitów 2 warstwa 2: ramki 3 warstwa 3: pakiety 4 warstwa 4: TPDU (Transport Protocol Data Unit) jednostka transportowa segmenty (TCP) datagramy (UDP) Sieci komputerowe (II UWr) Wykład 5 5 / 22
Porty Porty i gniazda Port: liczba z zakresu 1 65535 Warstwa sieciowa: transmisja identyfikowana przez adres IP nadawcy i odbiorcy. Warstwa transportowa: transmisja identyfikowana przez czwórkę: 1 IP nadawcy, 2 port nadawcy, 3 IP odbiorcy, 4 port odbiorcy. IP + port nadawcy = gniazdo (socket) nadawcy IP + port odbiorcy = gniazdo odbiorcy gniazdo nadawcy + gniazdo odbiorcy = para gniazdowa Gniazda z punktu widzenia użytkownika podobne w działaniu jak potoki (pipe), czy uchwyty plików (odczyt i zapis danych). Sieci komputerowe (II UWr) Wykład 5 6 / 22
Porty Porty i gniazda Port: liczba z zakresu 1 65535 Warstwa sieciowa: transmisja identyfikowana przez adres IP nadawcy i odbiorcy. Warstwa transportowa: transmisja identyfikowana przez czwórkę: 1 IP nadawcy, 2 port nadawcy, 3 IP odbiorcy, 4 port odbiorcy. IP + port nadawcy = gniazdo (socket) nadawcy IP + port odbiorcy = gniazdo odbiorcy gniazdo nadawcy + gniazdo odbiorcy = para gniazdowa Gniazda z punktu widzenia użytkownika podobne w działaniu jak potoki (pipe), czy uchwyty plików (odczyt i zapis danych). Sieci komputerowe (II UWr) Wykład 5 6 / 22
Porty i gniazda Porty i gniazda: nawiazywanie połaczenia (przykład) Krok 1 Serwer (o adresie IP 10.20.30.40) tworzy gniazdo nasłuchujace na porcie 80. Tak zwane otwarcie bierne. {10.20.30.40:80, *:*} Sieci komputerowe (II UWr) Wykład 5 7 / 22
Porty i gniazda Porty i gniazda: nawiazywanie połaczenia (przykład) Krok 2 Klient (o adresie IP 66.0.0.1) wysyła żadanie połaczenia (tzw. otwarcie aktywne) z 10.20.30.40 z portem 80 Klient {66.0.0.1:1500, 10.20.30.40:80} Serwer Serwer otwiera dodatkowe gniazdo poł {10.20.30.40:80, *:*} gniazdo połaczone: {10.20.30.40:80, 66.0.0.1:1500} aczone. Sieci komputerowe (II UWr) Wykład 5 8 / 22
Porty i gniazda Porty i gniazda: nawiazywanie połaczenia (przykład) Krok 2 Klient (o adresie IP 66.0.0.1) wysyła żadanie połaczenia (tzw. otwarcie aktywne) z 10.20.30.40 z portem 80 Klient {66.0.0.1:1500, 10.20.30.40:80} Serwer Serwer otwiera dodatkowe gniazdo poł {10.20.30.40:80, *:*} gniazdo połaczone: {10.20.30.40:80, 66.0.0.1:1500} aczone. Sieci komputerowe (II UWr) Wykład 5 8 / 22
Porty i gniazda Porty i gniazda: nawiazywanie połaczenia (przykład) Krok 3 Transmisja (pełnodupleksowa) między gniazdem klienta a gniazdem połaczonym serwera. Klient {66.0.0.1:1500, 10.20.30.40:80} Serwer {10.20.30.40:80, *:*} gniazdo połaczone: {10.20.30.40:80, 66.0.0.1:1500} Sieci komputerowe (II UWr) Wykład 5 9 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład) cd. Problem: dodatkowy klient Klient (o adresie IP 66.0.0.2) wysyła żadanie połaczenia z 10.20.30.40 z portem 80. Klienci {66.0.0.1:1500, 10.20.30.40:80} {66.0.0.2:1500, 10.20.30.40:80} Serwer gniazdo nasłuchujace {10.20.30.40:80, *:*} {10.20.30.40:80, 66.0.0.1:1500} {10.20.30.40:80, 66.0.0.2:1500} Sieci komputerowe (II UWr) Wykład 5 10 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład) cd. Problem: dodatkowy klient Klient (o adresie IP 66.0.0.2) wysyła żadanie połaczenia z 10.20.30.40 z portem 80. Klienci {66.0.0.1:1500, 10.20.30.40:80} {66.0.0.2:1500, 10.20.30.40:80} Serwer gniazdo nasłuchujace {10.20.30.40:80, *:*} {10.20.30.40:80, 66.0.0.1:1500} {10.20.30.40:80, 66.0.0.2:1500} Sieci komputerowe (II UWr) Wykład 5 10 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład) cd. Problem: dodatkowy klient z tego samego komputera Klient (o adresie IP 66.0.0.2) wysyła drugie żadanie (np. od innego użytkownika) połaczenia z 10.20.30.40 z portem 80. Klienci {66.0.0.1:1500, 10.20.30.40:80} {66.0.0.2:1500, 10.20.30.40:80} {66.0.0.2:1501, 10.20.30.40:80} Wszystkie pary gniazdowe sa różne. Serwer gniazdo nasłuchujace {10.20.30.40:80, *:*} {10.20.30.40:80, 66.0.0.1:1500} {10.20.30.40:80, 66.0.0.2:1500} {10.20.30.40:80, 66.0.0.2:1501} Sieci komputerowe (II UWr) Wykład 5 11 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład) cd. Problem: dodatkowy klient z tego samego komputera Klient (o adresie IP 66.0.0.2) wysyła drugie żadanie (np. od innego użytkownika) połaczenia z 10.20.30.40 z portem 80. Klienci {66.0.0.1:1500, 10.20.30.40:80} {66.0.0.2:1500, 10.20.30.40:80} {66.0.0.2:1501, 10.20.30.40:80} Wszystkie pary gniazdowe sa różne. Serwer gniazdo nasłuchujace {10.20.30.40:80, *:*} {10.20.30.40:80, 66.0.0.1:1500} {10.20.30.40:80, 66.0.0.2:1500} {10.20.30.40:80, 66.0.0.2:1501} Sieci komputerowe (II UWr) Wykład 5 11 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład), cd. Serwer o wielu adresach IP Serwer (z 2 interfejsami sieciowymi: 10.20.30.40 i 50.60.70.80) tworzy gniazdo nasłuchujace na porcie 80. Może nasłuchiwać na: interfejsie 10.20.30.40 interfejsie 50.60.70.80 wszystkich interfejsach gniazdo nasłuchujace: {*:80, *:*} Sieci komputerowe (II UWr) Wykład 5 12 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład), cd. Serwer o wielu adresach IP Serwer (z 2 interfejsami sieciowymi: 10.20.30.40 i 50.60.70.80) tworzy gniazdo nasłuchujace na porcie 80. Może nasłuchiwać na: interfejsie 10.20.30.40 interfejsie 50.60.70.80 wszystkich interfejsach gniazdo nasłuchujace: {*:80, *:*} Sieci komputerowe (II UWr) Wykład 5 12 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład), cd. Serwer o wielu adresach IP, cd. Adres IP serwera w gnieździe ustali się na podstawie tego z jakim adresem IP chce się połaczyć klient. Klient {66.0.0.3:1500, 50.60.70.80:80} Serwer {*:80, *:*} gniazdo połaczone: {50.60.70.80:80, 66.0.0.3:1500} Sieci komputerowe (II UWr) Wykład 5 13 / 22
Porty i gniazda Nawiazywanie połaczenia (przykład), cd. Serwer o wielu adresach IP, cd. Adres IP serwera w gnieździe ustali się na podstawie tego z jakim adresem IP chce się połaczyć klient. Klient {66.0.0.3:1500, 50.60.70.80:80} Serwer {*:80, *:*} gniazdo połaczone: {50.60.70.80:80, 66.0.0.3:1500} Sieci komputerowe (II UWr) Wykład 5 13 / 22
UDP User Datagram Protocol (UDP) UDP: protokół bezpołaczeniowy Nie ma ma gniazd połaczonych. Reszta terminologii pozostaje (para gniazdowa, gniazdo nasłuchujace,...). budowa datagramu UDP przykład klienta i serwera Sieci komputerowe (II UWr) Wykład 5 14 / 22
UDP User Datagram Protocol (UDP) UDP: protokół bezpołaczeniowy Nie ma ma gniazd połaczonych. Reszta terminologii pozostaje (para gniazdowa, gniazdo nasłuchujace,...). budowa datagramu UDP przykład klienta i serwera Sieci komputerowe (II UWr) Wykład 5 14 / 22
UDP User Datagram Protocol (UDP), cd. Mały narzut, małe możliwości: suma kontrolna porty (multipleksowanie) Zastosowania: aplikacja potrzebuje pełnej kontroli nad danymi (NFS) przesyłane mało danych (DNS, DHCP) jest mało pamięci (firmware urzadzeń sieciowych uaktualniany przez TFTP) ważna jest szybka reakcja (gry) mało istotne jest zgubienie pojedynczych pakietów (transmisje obrazu i dźwięku) Sieci komputerowe (II UWr) Wykład 5 15 / 22
Wady UDP UDP Nie gwarantuje: niezawodności przesyłania danych (potwierdzanie otrzymania) kolejności danych radzenia sobie z duplikatami (transakcje bankowe!) sterowania przepływem (szybki nadawca może zalać wolnego odbiorcę danymi) Alternatywa: protokół TCP własna implementacja powyższych funkcji Sieci komputerowe (II UWr) Wykład 5 16 / 22
Wady UDP UDP Nie gwarantuje: niezawodności przesyłania danych (potwierdzanie otrzymania) kolejności danych radzenia sobie z duplikatami (transakcje bankowe!) sterowania przepływem (szybki nadawca może zalać wolnego odbiorcę danymi) Alternatywa: protokół TCP własna implementacja powyższych funkcji Sieci komputerowe (II UWr) Wykład 5 16 / 22
TCP Transmission Control Protocol (TCP) W dalszej części wykładu: Jakie mechanizmy udostępnia TCP wyższym warstwom. Jak sa one zaimplementowane (ten i następny wykład). Sieci komputerowe (II UWr) Wykład 5 17 / 22
TCP Dygresja: ogólnie znane porty Część portów została przypisana niektórym usługom: Przykład: wszystkie serwery WWW nasłuchuja na porcie 80. Klient WWW zawsze łaczy się do serwera WWW na tym porcie. /etc/services Sieci komputerowe (II UWr) Wykład 5 18 / 22
TCP Programowanie klienta i serwera TCP przykład Wady przykładu: Brak sprawdzania poprawności wywołanych funkcji (w przykładzie z UDP też). read i write moga odczytać/zapisać tylko CZEŚĆ bufora! Do obsługi gniazda połaczonego często tworzy się osobny proces/watek. Serwer zamyka połaczenie, klient nie (stan CLOSE_WAIT) diagram stanów funkcje gniazd wywoływane w TCP Sieci komputerowe (II UWr) Wykład 5 19 / 22
TCP Programowanie klienta i serwera TCP przykład Wady przykładu: Brak sprawdzania poprawności wywołanych funkcji (w przykładzie z UDP też). read i write moga odczytać/zapisać tylko CZEŚĆ bufora! Do obsługi gniazda połaczonego często tworzy się osobny proces/watek. Serwer zamyka połaczenie, klient nie (stan CLOSE_WAIT) diagram stanów funkcje gniazd wywoływane w TCP Sieci komputerowe (II UWr) Wykład 5 19 / 22
TCP Programowanie klienta i serwera TCP przykład Wady przykładu: Brak sprawdzania poprawności wywołanych funkcji (w przykładzie z UDP też). read i write moga odczytać/zapisać tylko CZEŚĆ bufora! Do obsługi gniazda połaczonego często tworzy się osobny proces/watek. Serwer zamyka połaczenie, klient nie (stan CLOSE_WAIT) diagram stanów funkcje gniazd wywoływane w TCP Sieci komputerowe (II UWr) Wykład 5 19 / 22
TCP TCP Zastosowania: Wszędzie tam gdzie przesyłane dane sa dość duże: HTTP, FTP, poczta elektroniczna. Tam gdzie istotne jest potwierdzanie danych: praca zdalna, SSH, telnet. Sieci komputerowe (II UWr) Wykład 5 20 / 22
TCP Duplikaty i zagubienia pakietów Numery sekwencyjne W każdej sieci niektóre pakiety zostaja zgubione Problem: nie wiemy które sa zgubione, a które przetrzymane przez routery Jeśli wysyłamy je ponownie, ich poprzednie wcielenia moga się odnaleźć duplikaty (Częsciowe) rozwiazanie: numery sekwencyjne Sieci komputerowe (II UWr) Wykład 5 21 / 22
TCP Duplikaty i zagubienia pakietów Numery sekwencyjne W każdej sieci niektóre pakiety zostaja zgubione Problem: nie wiemy które sa zgubione, a które przetrzymane przez routery Jeśli wysyłamy je ponownie, ich poprzednie wcielenia moga się odnaleźć duplikaty (Częsciowe) rozwiazanie: numery sekwencyjne Sieci komputerowe (II UWr) Wykład 5 21 / 22
Numery sekwencyjne TCP Numery sekwencyjne Teoria: Na poczatku połaczenia ustalamy jakiś numer i wysyłamy go drugiej stronie Wszystkie wysyłane pakiety dostaja kolejne numery. Jeśli zostana niepotwierdzone przez dłuższy czas, to wysyłane sa ponownie. Druga strona wie jakie numery otrzymała brak duplikatów. Praktyka: budowa segmentu TCP segmenty przesyłane w komunikacji (w tym trójfazowe nawiazywanie połaczenia) Sieci komputerowe (II UWr) Wykład 5 22 / 22
Numery sekwencyjne TCP Numery sekwencyjne Teoria: Na poczatku połaczenia ustalamy jakiś numer i wysyłamy go drugiej stronie Wszystkie wysyłane pakiety dostaja kolejne numery. Jeśli zostana niepotwierdzone przez dłuższy czas, to wysyłane sa ponownie. Druga strona wie jakie numery otrzymała brak duplikatów. Praktyka: budowa segmentu TCP segmenty przesyłane w komunikacji (w tym trójfazowe nawiazywanie połaczenia) Sieci komputerowe (II UWr) Wykład 5 22 / 22