protokoły udp, tcp/ip

Transkrypt

protokoły udp, tcp/ip
SYSTEMY MULTIMEDIALNE
SEMINARIUM
PROTOKOŁY 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 odpowiedź
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
odpowiedź, która zawiera jego adres fizyczny FC. Gdy komputer A otrzyma
odpowiedź, 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 odpowiedź od każdego
serwera RARP, mimo iż wystarczy odpowiedź 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,
DŁUGOŚĆ NAGŁÓWKA – 4 bity – mierzona w 32 – bitowych słowach,
OPCJE IP i UZUPEŁNIENIE – zwykle nie są wypełniane,
DŁUGOŚĆ CAŁKOWITA – 16 bitów – mierzona w bajtach długość całego
datagramu IP. Maksymalny rozmiar wynosi 216-1 czyli 65535 bajtów,
TYP OBSŁUGI – 8 bitów – określa w jaki sposób datagram ma być obsłużony.
Zawiera pięć podpól:
PIERWSZEŃSTWO – 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ÓŁ – 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 NAGŁÓ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
UZUPEŁNIENIE – 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, PRZESUNIĘCIE
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
PRZESUNIĘCIE 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ć
odpowiedź 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
DŁUGOŚĆ – 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ę źró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 PORZĄDKOWY – 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.
DŁUGOŚĆ NAGŁÓ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ęźle. 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 wyobraźnię. Internet rozrasta się w postępie
geometrycznym, ilość przyłączonych hostów podwaja się z każdym rokiem. Groźba
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

Podobne dokumenty