SYSTEMY MULTIMEDIALNE SEMINARIUM PROTOKOAY UDP, TCP/IP Opracował: Rafał Rozwadowski Nr albumu 88491 Termin: WT/N godz. 1315 Prowadzący: dr inż. J. Klink Systemy multimedialne seminarium Spis Treści Spis Treści ................................................................................................................ 2 Wprowadzenie .......................................................................................................... 3 Model OSI (Open Systems Interconnect) ............................................................... 3 Adresy IP................................................................................................................... 6 Protokół ARP i RARP ............................................................................................... 7 Protokół IP................................................................................................................. 8 Routery.................................................................................................................... 10 Kapsułkowanie i fragmentacja .............................................................................. 11 Protokół ICMP ......................................................................................................... 12 Określanie adresata komunikatu .......................................................................... 13 Protokół UDP .......................................................................................................... 13 Kapsułkowanie UDP............................................................................................... 14 Multipleksowanie i demultipleksowanie............................................................... 14 TCP Transfer Control Protocol........................................................................... 15 Sliding window ....................................................................................................... 16 Segment TCP .......................................................................................................... 17 Porty i połączenia ................................................................................................... 18 Przyszłość TCP/IP .................................................................................................. 18 Protokoły UDP, TCP/IP 2 Systemy multimedialne seminarium Wprowadzenie Funkcjonowanie sieci złożonej opiera się na ściśle określonych zasadach. Zasady te nazywane standardami, zostały opublikowane przez ARPA (Advanced Research Project Agency) i określają szczegóły komunikacji między komputerami, jak również szczegóły dotyczące łączenia i wyboru trasy w sieci. Zbiór tych zasad nazwano od głównych protokółów wchodzących w ich skład: TCP/IP (Transmission Control Protocol/Internet Protocol). TCP/IP nie jest pojedynczym produktem lecz nazwą ogólną dla całej rodziny protokołów i oprogramowania udostępniającego szereg usług sieciowych i może zostać wykorzystany w dowolnym zbiorze połączonych ze sobą sieci. Stanowi też podstawowe rozwiązanie światowego Internetu. Sieć komputerowa jest systemem komunikacyjnym służącym przesyłaniu danych, łączącym dwa lub więcej komputerów i urządzenia peryferyjne, składającym się z zasobów obliczeniowych i informacyjnych, mediów transmisyjnych i urządzeń sieciowych. W związku ze złożonością sieci, do jej opisu stosuje się model warstwowy (warstwowy model OSI), w którym każda warstwa świadczy określony poziom usług. Model ten ułatwia analizę procesów sieciowych i upraszcza ich projektowanie. Komunikacja między komputerami w sieci zawsze odbywa się na poziomie odpowiadających sobie warstw zgodnie z odpowiednimi protokołami. Protokołem w sieci komputerowej nazywamy zbiór zasad syntaktycznych i semantycznych sposobu komunikowania się jej elementów funkcjonalnych. Podstawowym zadaniem protokołu jest identyfikacja procesu, z którym chce się komunikować proces bazowy. Aby było to możliwe konieczne jest podanie sposobu określania adresata, rozpoczynania i kończenia transmisji, a także sposobu przesyłania danych. Niekiedy informacja może być przesłana niepoprawnie. Protokół musi wykrywać i usuwać błędy, prosząc o ponowne nadanie błędnej informacji. W modelu warstwowym każda warstwa posługuje się własnym protokołem. Aby protokoły mogły ze sobą współpracować należałoby zdefiniować ściśle określone zasady ich współdziałania. Warstwowy model OSI jest przykładem takiego opisu, będąc w istocie protokołem komunikacji między protokołami . Model OSI (Open Systems Interconnect) Model OSI został stworzony przez International Organization for Standarization (ISO) i stanowi zbiór zasad komunikowania się urządzeń sieciowych. Jest podzielony na siedem warstw, z których każda zbudowana jest na bazie warstwy poprzedzającej. Model ten nie określa fizycznej budowy poszczególnych warstw, a koncentruje się na sposobach ich współpracy, co pozwala na kompatybilność implementacji urządzeń sieciowych pochodzących od różnych producentów. Dla każdej warstwy powinien zostać stworzony własny protokół komunikacyjny. Protokoły UDP, TCP/IP 3 Systemy multimedialne seminarium warstwy modelu OSI W rzeczywistej sieci komputerowej, komunikacja odbywa się na poziomie warstwy fizycznej. Aby wyższe warstwy mogły się ze sobą komunikować muszą za każdym razem przekazać informację do warstw niższych aż do dotarcia do warstwy fizycznej. Jednak istnieje wirtualna komunikacja pomiędzy wszystkimi warstwami oprócz warstwy fizycznej, dzięki istnieniu połączenia fizycznego. komunikacja w modelu OSI Zadania warstw: " Warstwa fizyczna o transmisja sygnałów w sieci o konwersja bitów informacji na sygnały o określa parametry amplitudowe i czasowe sygnału o określa fizyczny kształt i rozmiar łączy o definiuje sposoby nawiązywania i rozłączania połączenia " Warstwa łącza danych o odbiór i konwersję strumienia bitów pochodzącego z transmisji, w taki sposób aby nie zawierały one błędów o tworzenie ramek i rozpoznawanie ich granic o eliminacja zakłóceń powstałych w trakcie transmisji o synchronizacja szybkości przesyłania danych o transmisja dwukierunkowa Protokoły UDP, TCP/IP 4 Systemy multimedialne seminarium " Warstwa sieciowa o sterowanie działaniem podsieci transportowej o przesyłanie danych pomiędzy węzłami sieci o wyznaczanie trasy przesyłu o określanie charakterystyk sprzęgu węzeł komputer obliczeniowy o łączenie bloków informacji w ramki i ich podział " Warstwa transportowa o obsługa danych przyjmowanych z warstwy sesji o dzielenie danych na mniejsze jednostki o przekazywanie zblokowanych danych warstwie sieciowej o dobieranie połączenia sensownego typu i prędkości o realizacja przesyłania danych o zamykanie połączenia o udostępnianie połączenia " Warstwa sesji o określanie parametrów sprzężenia użytkowników o funkcje zarządzające o weryfikacja możliwości połączenia o wybór opcji połączenia o reakcja na zerwanie połączenia " Warstwa prezentacji o obsługa formatów danych o kodowanie i dekodowanie zestawów znaków o wybór odpowiednich algorytmów o utajnianie danych " Warstwa aplikacji o usługi komunikacyjne dla programów użytkowych o opis reakcji systemu na podstawowe operacje komunikacyjne TCP/IP a model OSI Protokół TCP/IP ma również strukturę warstwową i ma do niego zastosowanie większość filozofii modelu OSI. porównanie struktur modelu OSI i rodziny protokołów TCP/IP Protokoły UDP, TCP/IP 5 Systemy multimedialne seminarium Protokoły TCP i IP ustalają zasady komunikacji opisują szczegóły formatu komunikatów, sposób odpowiadania na otrzymany komunikat, określają jak komputer ma obsługiwać pojawiające się błędy lub inne nienormalne sytuacje. Pozwalają rozpatrywać zagadnienia komunikacji niezależnie od sprzętu sieciowego. Zapewniają popularne usługi dostępne dla użytkowników: " poczta elektroniczna " przesyłanie plików " praca zdalna Zadania warstw w TCP/IP " Warstwa programów użytkowych o współpraca programów użytkowych z jednym z protokołów w warstwie transportowej o wysyłanie i odbieranie danych w postaci komunikatów lub strumienia bajtów " Warstwa transportowa o zapewnienie komunikacji między programami użytkownika o regulowanie przepływu informacji o pewność przesyłania (żądanie potwierdzenia) " Warstwa intersieci o obsługa komunikacji między maszynami o przyjmowanie pakietów z warstwy transportowej o organizacja pakietu w datagram i analiza jego przeznaczenia o obsługa datagramów przychodzących " Warstwa interfejsu sieciowego o odbiór datagramów i przesyłanie ich przez daną sieć Adresy IP Adres IP jest 32-bitową liczbą całkowitą zawierającą informacje o tym do jakiej sieci włączony jest dany komputer oraz jednoznaczny adres w tej sieci. Zapisywany jest w postaci czterech liczb dziesiętnych oddzielonych kropkami, przy czym każda liczba dziesiętna odpowiada 8 bitom adresu IP. Adresy te są podzielone na klasy, które są określane przez najstarsze bity, przy czym do zidentyfikowania jednej z trzech zasadniczych klas wystarczą dwa pierwsze bity (mechanizm wykorzystywany w routerach). Obserwując najstarsze bity adresu można stwierdzić do jakiej klasy należy dany adres, w efekcie można stwierdzić ile bitów będzie adresowalo sieć, ile zaś sam komputer: o dla klasy A 27 sieci, 224 komputerów o dla klasy B 214 sieci , 216 komputerów o dla klasy C 221 sieci, 28 komputerów o adres klasy D jest używany gdy ma miejsce jednoczesna transmisja do większej liczby urządzeń. Protokoły UDP, TCP/IP 6 Systemy multimedialne seminarium klasy adersów IP Przydzielaniem adresów IP zajmuje się organizacja Internet Network Information Center (INTERNIC). Przydziela ona adresy sieci. Administrator sam może przydzielić adresy maszyn. Protokół ARP i RARP Dwie maszyny mogą się ze sobą komunikować tylko gdy znają swoje adresy fizyczne, więc zachodzi potrzeba przetłumaczenia adresy IP na adres fizyczny. Dla przykładu w sieci ethernet mamy 48-bitowy adres fizyczny, którego nie sposób zapisać w 32-bitowym adresie IP. Zajmuje się tym protokół odwzorowania adresów ARP (Address Resolution Protocol). Działanie ARP: gdy komputer A chce odwzorować adres IPC komputera C rozgłasza specjalny pakiet, w którym prosi komputer o adresie IPC o odpowiedz zawierającą jego adres fizyczny FC. Wszystkie komputery w tym C otrzymują tę prośbę, ale tylko komputer C rozpoznaje w żądaniu swój adres IPC i wysyła odpowiedz, która zawiera jego adres fizyczny FC. Gdy komputer A otrzyma odpowiedz, to korzystając z uzyskanego adresu fizycznego przesyła pakiet bezpośrednio do C. Taki sposób odwzorowywania adresów ma jednak wady jest zbyt kosztowny aby używać go za każdym razem gdy jakaś maszyna chce wysłać pakiet do innej. Przy rozgłaszaniu prośby o adres każda maszyna musi taki pakiet przetworzyć. W celu redukcji kosztów komunikacji, komputery przechowują w pamięci podręcznej ostatnio uzyskane powiązania adresu IP z adresem fizycznym i nie muszą wciąż korzystać z protokołu ARP. Dodatkowo w prośbie o adres fizyczny nadawca Protokoły UDP, TCP/IP 7 Systemy multimedialne seminarium uwzględnia od razu informację o swoim adresie fizycznym. Ponieważ prośba dociera do wszystkich komputerów w sieci, mogą one umieścić w swoich pamięciach podręcznych informację o adresie fizycznym nadawcy. Jeśli zostanie zmieniony adres fizyczny jakiegoś komputera to może on rozgłosić go do innych komputerów. Adresy IP zwykle przechowywane są w pamięci zewnętrznej komputera i pobierane są w trakcie ładowania systemu. Gdy maszyna w sieci nie jest wyposażona w dysk twardy (pamięć zewnętrzna) to musi korzystać z protokołu RARP w celu uzyskania adresu IP na podstawie własnego adresu fizycznego pobranego z urządzenia sieciowego. Adres IP jest pobierany z maszyny uprawnionej do świadczenia usług RARP po przesłaniu zapytania z własnym adresem fizycznym: Komputer A rozgłasza zapytanie o swój adres IP do wszystkich komputerów wraz ze swoim adresem fizycznym, wskazując siebie jako odbiorcę. Zapytanie dociera do wszystkich maszyn w sieci, ale przetwarzają je i udzielają odpowiedzi tylko maszyny uprawnione do świadczenia usług RARP. Maszyny takie nazywa się serwerami RARP. Protokołu RARP można używać tylko wtedy, kiedy w sieci jest przynajmniej jeden serwer RARP. Jeśli jest ich więcej nadawca otrzyma odpowiedz od każdego serwera RARP, mimo iż wystarczy odpowiedz od jednego serwera. Protokół IP Sieć TCP/IP udostępnia trzy zbiory usług: usługi programów użytkowych, usługi niezawodnego przesyłania, usługi bezpołączeniowego przesyłania pakietów. Ta ostatnia jest najbardziej podstawowa i nosi nazwę Internet Protocol, lub w skrócie IP. Jest ona zawodnym systemem przenoszenia pakietów, tzn. nie ma gwarancji, że przenoszenie zakończy się sukcesem. Pakiet może zostać zagubiony, zduplikowany, zatrzymany, lub dostarczony z błędem, a system nie sprawdzi, że coś takiego zaszło ani nie powiadomi odbiorcy i nadawcy. Protokoły UDP, TCP/IP 8 Systemy multimedialne seminarium Protokół IP zawiera trzy definicje: o definicję podstawowej jednostki przesyłanych danych o definicję operacji wybierania trasy (trasowania) o zbiór reguł służących do realizacji zawodnego przenoszenia pakietów Podstawowa jednostka przesyłanych danych nazywana jest datagramem, który jest podzielony na nagłówek i dane. Nagłówek zawiera adres nadawcy i odbiorcy oraz pole typu, które identyfikuje zawartość datagramu. Przypomina ramkę sieci fizycznej z tą różnicą, że nagłówek ramki zawiera adresy fizyczne, zaś nagłówek datagramu adresy IP. Zawartość datagramów nie jest uwarunkowana sprzętowo. format datagramu IP Opis datagramu IP: WERSJA 4 bity informacja o wersji protokołu IP, używanej do tworzenia datagramu. Używana jest do sprawdzania czy nadawca, odbiorca i routery akceptują format datagramu, DAUGOŚĆ NAGAÓWKA 4 bity mierzona w 32 bitowych słowach, OPCJE IP i UZUPEANIENIE zwykle nie są wypełniane, DAUGOŚĆ CAAKOWITA 16 bitów mierzona w bajtach długość całego datagramu IP. Maksymalny rozmiar wynosi 216-1 czyli 65535 bajtów, TYP OBSAUGI 8 bitów określa w jaki sposób datagram ma być obsłużony. Zawiera pięć podpól: PIERWSZECSTWO 3 bity stopień ważności datagramu od 0 (normalny) do 7 (sterowanie siecią) Bity O, S, P rodzaj przesyłania prośba o krótkie czasy oczekiwania (O), o przesyłanie szybkimi łączami (S), o dużą pewność przesyłania danych (P) CZAS ŻYCIA TTL (Time to live) określa jak długo, w sekundach, datagram może pozostawać w systemie sieci. Wymogiem TCP/IP jest aby każdy router zmniejszał wartość tego pola co najmniej o 1. Gdy wartość ta zmaleje do zera, datagram jest porzucany i wysyłany jest komunikat o błędzie, PROTOKÓA numer identyfikacyjny protokołu transportowego dla którego pakiet jest przeznaczony. Numery te są określone przez INTERNIC i obejmują ok. 50 pozycji. Najpopularniejsze to ICMP z numerem 1 oraz TCP z numerem 6. SUMA KONTROLNA NAGAÓWKA służy do sprawdzenia sensowności nagłówka. Obejmuje tylko nagłówek IP. Zawiera bitową negację sumy obliczonej jako suma kolejnych 16-bitowych półsłów nagłówka, ADRES IP NADAWCY i ADRES IP ODBIORCY zawierają 32-bitowe adresy IP nadawcy i odbiorcy. Protokoły UDP, TCP/IP 9 Systemy multimedialne seminarium UZUPEANIENIE zawiera bity zerowe aby zapewnić że długość nagłówka datagramu jest wielokrotnością 32 bitów, OPCJE IP ma zmienną długość, złożone z trzech części: jedno-bitowy znacznik kopiuj określa czy opcje mają być przekopiowane do wszystkich fragmentów (1) czy tylko do pierwszego (0), bity klasa opcji określają ogólną klasę opcji: klasy opcji numer opcji jedna z wielu dostępnych opcji w danej klasie niektóre numery opcji Routery Routery łączą sieci fizyczne w intersieć. Każdy router ma połączenie z jedną lub więcej sieciami. W systemie z wymianą pakietów trasowanie oznacza proces wyboru ścieżki przesyłania pakietów, a wyboru dokonuje router, którego rolę może również pełnić zwykły komputer z wieloma przyłączeniami do sieci. Gdy aplikacja ma zamiar wysłać datagram w sieć, najpierw konstruuje datagram zgodnie z wymogami lokalnej implementacji IP. Następnie zostaje obliczona suma kontrolna dla danych i skonstruowany nagłówek IP. Pierwszy węzeł na drodze datagramu musi określić następny etap inną maszynę w sieci lub router. Jeśli dane są cenne, to w nagłówku IP zostają ustawione odpowiednie opcje. Następnie datagram jest posyłany w sieć. Każdy router otrzymujący datagram wykonuje na nim serię testów. Gsy warstwa sieciowa zdejmie z niego swój nagłówek, warstwa IP weryfikuje sumę kontrolną datagramu. W razie niezgodności datagram jest odrzucany i do węzła nadawcy jest kierowany komunikat o błędzie. Zmniejszane jest pole TTL i sprawdzane. Gdy limit czasu jest przekroczony sygnalizowany jest błąd. Po określeniu następnego węzła na podstawie adresu docelowego zostaje zapisana nowa wartość TTL i nowa suma kontrolna. Jeśli konieczna jest fragmentacja to datagram jest dzielony na mniejsze datagramy. W końcu datagram Protokoły UDP, TCP/IP 10 Systemy multimedialne seminarium przekazywany jest z powrotem do warstwy sieciowej. Gdy dotrze do celu zostaje scalony, zdejmowany jest nagłówek IP, odtworzony jest oryginalny komunikat i przesyłany w stronę wyższych warstw. Kapsułkowanie i fragmentacja Datagramy muszą być przenoszone przez sieć fizyczną. Kapsułkowanie polega na rozwiązaniu, w którym jeden datagram jest przenoszony przez jedną ramkę sieciową w części przeznaczonej na dane. W idealnym przypadku cały datagram mieści się w jednej ramce fizycznej. kapsułkowanie datagramu IP Każda sieć fizyczna ma ustaloną górną granicę ilości danych które mogą być przesłane w jednej ramce. Parametr ten nosi nazwę maksymalnej jednostki transmisyjnej danej sieci Maximum Transfer Unit (MTU). Jeśli datagram nie mieści się w jednej ramce fizycznej jest dzielony na mniejsze kawałki zwane fragmentami w procesie fragmentacji. Gdy dotrą do odbiorcy ulegają defragmentacji. Przykład. Komputer A wysyła informację w sieci o MTU=1500, odbiorcą ma być komputer B, ale w sieci o MTU=620. Router otrzymuje datagram z sieci A i musi go przesłać do sieci B. W tym celu fragmentuje datagram. Każdy z fragmentów zawiera nagłówek, w którym jest powielona większość zawartości nagłówka pierwotnego datagramu z wyjątkiem pola ZNACZNIKI, wskazującym, że jest to fragment. transmisja w sieciach o różnych wartościach MTU - fragmentacja pierwotny datagram IP Protokoły UDP, TCP/IP 11 Systemy multimedialne seminarium datagram po fragmentacji Trzy pola nagłówka IDENTYFIKACJA, ZNACZNIKI, PRZESUNICIE FRAGMENTU służą kontroli procesów fragmentacji i składania datagramów. Pole IDENTYFIKACJA (16 bitów) zawiera liczbę całkowitą jednoznacznie identyfikującą datagram. Pole ZNACZNIKI (3 bitowe) służy do kontroli fragmentacji. Pierwszy bit jest nie używany, nadanie drugiemu wartości 1 oznacza zakaz fragmentacji. Jeśli datagram nie może być przesłany w całości, zostaje odrzucony i sygnalizowany jest błąd. Ostatni bit umożliwia identyfikację ostatniego fragmentu datagramu (0). Pole PRZESUNICIE FRAGMENTU (13 bitów) zawiera informację, w którym miejscu datagramu umiejscowione są informacje przesyłane w tym kawałku mierzone w jednostkacj 64-bajtowych, co umożliwia poprawne scalenie datagramu. Protokół ICMP Protokół ICMP (Internet Control Message Protocol) powstał aby umożliwić routerom oznajmianie o błędach oraz udostępnianie informacji o niespodziewanych sytuacjach takich jak przeciążenie sieci, wyłączenie maszyny docelowej, wyczerpanie się licznika czasu życia, które uniemożliwiają dostarczenie danego datagramu. Technicznie jest to mechanizm powiadamiania o błędach. Każdy komunikat ICMP ma własny format, ale wszystkie zaczynają się takimi samymi polami: o pole TYP 8 bitów identyfikuje komunikat o pole KOD 8 bitów daje dalsze informacje o rodzaju komunikatu o pole SUMA KONTROLNA suma kontrolna komunikatu ICMP format komunikatu ICMP Dodatkowo komunikaty oznajmiające o błędach zawierają pierwsze 64 bity danych datagramu z którym były problemy. Komunikaty ICMP wymagają podwójnego kapsułkowania. Każdy komunikat ICMP podróżuje w datagramie IP w części przeznaczonej na dane, a te z kolei zawarte są w ramce sieciowej w części z danymi. Protokoły UDP, TCP/IP 12 Systemy multimedialne seminarium podwójne kapsułkowanie komunikatu ICMP Określanie adresata komunikatu Mechanizm adresowania i przesyłania datagramów nie rozróżnia użytkowników ani programów, do których skierowany jest taki datagram. Potrzeba rozróżniania adresów w obrębie pojedynczego komputera (procesy likwidowane są dynamicznie i adresowanie wprost nie byłoby dobrym rozwiązaniem gdyż nie stanowi wystarczającej ilości informacji, ponadto np. przeładowanie systemu operacyjnego powoduje zmianę wszystkich procesów) spowodowała wprowadzenie abstrakcyjnych punktów docelowych zwanych portami protokołów. Identyfikowane są za pomocą dodatnich liczb całkowitych, a dostęp procesów do portów zapewnia system operacyjny. Nadawca musi znać adres IP odbiorcy i numer docelowego portu protokołu na maszynie odbiorcy tak aby proces odbierający komunikat mógł wysłać odpowiedz do nadawcy. Protokół UDP UDP - User Datagram Protocol protokół datagramów użytkownika zapewnia porty protokołów używane do rozróżniania programów wykonywanych na pojedynczej maszynie. Oprócz danych każdy komunikat zawiera numer portu odbiorcy i numer portu nadawcy, dzięki czemu UDP może dostarczyć komunikat do właściwego adresata. Do przesyłania komunikatów UDP używa podstawowego protokołu IP i ma tę samą niepewną semantykę dostarczania datagramów co IP. Dlatego komunikaty UDP mogą być gubione, duplikowane lub przychodzić w innej kolejności. Program korzystający z UDP musi zadbać o rozwiązanie takich problemów. Format UDP Komunikat UDP nazywany jest datagramem użytkownika. Nagłówek składa się z czterech 16-bitowych pól: PORT NADAWCY i PORT ODBIORCY DAUGOŚĆ liczba bajtów datagramu wliczając nagłówek i dane. SUMA KONTROLNA Protokoły UDP, TCP/IP 13 Systemy multimedialne seminarium format komunikatu UDP Kapsułkowanie UDP Datagram UDP przed wysłaniem w sieć jest kapsułkowany w datagram IP. Nagłówek IP identyfikuje maszynę zródłową i docelową, nagłówek UDP port nadawcy i port odbiorcy. U odbiorcy pakiet dociera do najniższej warstwy oprogramowania sieciowego i wędruje ku coraz wyższym warstwom. Każda z nich usuwa jeden nagłówek, więc oczekujący proces otrzymuje komunikat bez nagłówków. identyfikacja w nagłówkach Multipleksowanie i demultipleksowanie Przy wysyłaniu komputer nadawcy dołącza do danych dodatkowe bity, które wskazują typ komunikatu, program, który go nadał oraz używane protokoły. Wszystkie komunikaty są umieszczane w przeznaczonych do przesyłania ramkach sieciowych i łączone w strumień pakietów. Przykładowo, gdy interfejs sieciowy zdemultipleksuje ramki i prześle te z nich, które zawierają datagramy IP do modułu IP, oprogramowanie IP wydobędzie z nich datagramy i dalej je zdemultipleksuje w warstwie IP. Aby zdecydować, w jaki sposób obsłużyć datagram, oprogramowanie sprawdza nagłówek datagramu i wybiera na podstawie typu datagramu odpowiednie procedury. W warstwie IP oprogramowanie IP wybiera odpowiednia procedurę obsługi na podstawie znajdującego się w nagłówku datagramu pola typu protokołu. Protokoły UDP, TCP/IP 14 Systemy multimedialne seminarium demultipleksowanie w warstwach interfejsu sieciowego, IP i UDP Oprogramowanie UDP musi przyjmować datagramy UDP pochodzące od wielu programów użytkowych i przekazywać je warstwie IP w celu przesłania, a także odbierać datagramy UDP nadchodzące od warstwy IP i przekazywać odpowiednim programom użytkowym. Aby to zrealizować musi multipleksować datagramy UDP tak aby datagramy pochodzące z różnych portów mogły być przekazane do warstwy IP i demultipleksować datagramy przychodzące z warstwy IP tak by skierować je do właściwego portu. Rozróżnienie następuje przy pomocy pola PORT UDP NADAWCY i ODBIORCY. TCP Transfer Control Protocol Protokół IP jest odpowiedzialny za zawodne przesyłanie pakietów, co wymaga od programisty uwzględnienia w każdym programie obsługi błędów wynikających z niedostarczenia danych. Transfer Control Protocol (TCP), bierze odpowiedzialność za wiarygodne dostarczenie datagramu. Organizuje dwukierunkową współpracę między warstwą IP, a warstwami wyższymi, uwzględniając przy tym wszystkie aspekty priorytetów i bezpieczeństwa. Musi prawidłowo obsłużyć niespodziewane zakończenie aplikacji, do której właśnie wędruje datagram. Musi też bezpiecznie izolować warstwy wyższe od skutków awarii w warstwie protokołu IP. Warstwa TCP rezyduje powyżej warstwy IP, jednak tylko w węzłach sieci, w których są przetwarzane datagramy przez aplikacje, więc routery warstwy TCP nie posiadają. Z punktu widzenia aplikacji użytkownika TCP można potraktować jako wirtualny kanał realizujący komunikację między końcówkami . Rzeczywisty przepływ informacji odbywa się jednak przez warstwy IP i niższe. Aby zagwarantować, że dane przesyłane z jednej maszyny do drugiej nie są tracone ani duplikowane używa się podstawowej metody znanej jako pozytywne potwierdzanie z retransmisją. Metoda ta wymaga, aby odbiorca komunikował się z nadawcą, wysyłając mu w momencie otrzymania danych komunikat potwierdzenia (ACK). Nadawca zapisuje informację o każdym wysłanym pakiecie i przed wysłaniem następnego czeka na potwierdzenie. Oprócz tego nadawca uruchamia zegar w momencie wysyłania pakietu i wysyła ten pakiet ponownie gdy minie odpowiedni czas, a potwierdzenie nie nadejdzie. Protokoły UDP, TCP/IP 15 Systemy multimedialne seminarium bezbłędne dostarczenie pakietu konieczność retransmisji pakietu Sliding window Przy takiej metodzie, nadawca nie wyśle pakietu dopóki nie dostanie potwierdzenia od odbiorcy. Wówczas dane płyną tylko w jednym kierunku, nawet przy połączeniach typu duplex. Ponadto sieć nie jest używana gdy maszyny zwlekają z odpowiedziami. Marnuje to przepustowość sieci, dlatego wprowadza się technikę przesuwającego się okna, która umożliwia przesłanie wielu pakietów przed otrzymaniem potwierdzenia. W metodzie tej umieszcza się ciąg pakietów w ustalonego rozmiaru oknie i przesyła się wszystkie pakiety znajdujące się w jego obrębie. Gdy nadejdzie potwierdzenia dla pierwszego z wysłanych pakietów, okno przesuwa się umożliwiając wysłanie kolejnych danych. Ilość niepotwierdzonych pakietów jest uwarunkowana rozmiarem okna. Retransmitowane są tylko te pakiety, dla których nie nadeszło potwierdzenie. Protokół zapamiętuje które pakiety otrzymały potwierdzenie i ustala odrębny zegar dla każdego niepotwierdzonego pakietu. W razie błędu pakiet jest wysyłany ponownie. Protokoły UDP, TCP/IP 16 Systemy multimedialne seminarium wysłanie pakietów potwierdzenia ACK przesunięcie okna Segment TCP Segmentem TCP nazywamy jednostkową porcję danych przesyłanych między oprogramowanie TCP na różnych maszynach. Pola: PORT NADAWCY i PORT ODBIORCY numery portów TCP identyfikujące aplikację na końcach połączenia NUMER PORZDKOWY wyznacza pozycję danych segmentu w strumieniu bajtów nadawcy. NUMER POTWIERDZENIA numer oktetu, który nadawca spodziewa się otrzymać w następnej kolejności. Dotyczy strumienia płynącego w przeciwnym kierunku. DAUGOŚĆ NAGAÓWKA zawiera liczbę całkowitą, która określa długość nagłówka segmentu mierzoną w 32-bitowych jednostkach. Jest konieczne gdyż pole OPCJE ma zmienną długość. ZAREZERWOWANE pole pozostawione na przyszłość. BITY KODU zawiera informacje o przeznaczeniu zawartości segmentu niektóre segmenty mogą przenosić tylko potwierdzenia, inne dane, inne zaś prośbę o ustanowienie/zamknięcie połączenia OKNO zawiera rozmiar bufora proponowany przez oprogramowanie TCP odbiorcy ilość danych które może przyjąć. Protokoły UDP, TCP/IP 17 Systemy multimedialne seminarium struktura segmentu TCP Porty i połączenia Protokół TCP umożliwia wielu działającym na jednej maszynie programom użytkowym jednoczesne komunikowanie się oraz rozdziela między programy użytkowe przybywające pakiety TCP. Podobnie jak UDP, TCP używa numerów portów protokołu do identyfikacji w ramach maszyny końcowego odbiorcy. Każdy z portów ma przypisaną małą liczbę całkowitą, która jest używana do jego identyfikacji. Porty TCP są jednak bardziej złożone, gdyż dany numer nie odpowiada bezpośrednio pojedynczemu obiektowi. TCP działa wykorzystując połączenia, w których obiektami są obwody wirtualne a nie poszczególne porty. Tak więc podstawowym pojęciem TCP jest pojęcie połączenia, a nie portu. Połączenia są identyfikowane przez parę punktów końcowych. TCP definiuje punkt końcowy jako parę liczb całkowitych (węzeł, port), gdzie węzeł oznacza adres IP węzła, a port jest portem TCP w tym węzle. Np. punkt końcowy (128.10.2.3, 25) oznacza port 25 maszyny o adresie IP 128.10.2.3. W efekcie może istnieć połączenie np. pomiędzy: (18.26.0.36, 1069) oraz (128.10.2.3, 25), w tym samym czasie może też istnieć (128.9.0.32, 1184) oraz (128.10.2.3, 25). Zwróćmy uwagę, że w związku z tym, że TCP identyfikuje połączenie za pomocą pary punktów końcowych, dany numer portu może być przypisany do wielu połączeń na danej maszynie. Przyszłość TCP/IP Gdy powstawała wersja 4 protokołu IP, 32-bitowy adres wydawał się wystarczający na długie lata rozwoju Internetu; wyczerpanie się adresów (jest ich teoretycznie 232, w praktyce mniej z uwagi na sposób adresowania, istnienie adresów grupowych i zarezerwowanych) traktowano jako coś zupełnie niemożliwego. Rzeczywistość szybko przerosła jednak wyobraznię. Internet rozrasta się w postępie geometrycznym, ilość przyłączonych hostów podwaja się z każdym rokiem. Grozba wyczerpania się możliwości 32-bitowego adresowania stała się faktem. W związku z tym pojawiło się kilka propozycji rozwiązania tego problemu. Zaowocowały one pewnym kompromisem będącym punktem wyjścia dla opracowania kolejnej wersji protokołu IP. Wersja ta znana jest pod roboczą nazwą IP Next Generation (w skrócie IPng) lub IP wersja 6 i znajduje się obecnie w zaawansowanym stadium eksperymentów. Protokoły UDP, TCP/IP 18