M11.Warstwa transportowa i aplikacji.pdf

(516 KB) Pobierz
6
Moduł 11.Warstwa transportowa i aplikacji
Zadaniem warstwy transportowej TCP/IP jest, jak sugeruje jej nazwa, transport danych pomiędzy aplikacjami
urządzenia źródłowego i docelowego. Dokładne poznanie działania warstwy transportowej jest niezbędne do
zrozumienia zagadnień związanych z nowoczesnymi sieciami przesyłania danych. W module tym zostaną opisane
funkcje i usługi tej krytycznej warstwy modelu sieciowego TCP/IP.
Wiele aplikacji sieciowych znajdujących się w warstwie aplikacji modelu TCP/IP jest dobrze znanych nawet
sporadycznym użytkownikom sieci. Na przykład terminy HTTP, FTP i SMTP są akronimami często spotykanymi
przez użytkowników przeglądarek WWW i klientów poczty elektronicznej. W module tym zostały również
opisane funkcje tych oraz innych aplikacji modelu sieciowego TCP/IP.
11.1 Warstwa transportowa TCP/IP
11.1.1 Wprowadzenie do warstwy transportowej
Do podstawowych zadań warstwy
transportowej, warstwy 4 modelu OSI,
należą transportowanie informacji i
sterowanie ich przepływem ze źródła do
celu w sposób niezawodny i dokładny.
Kontrola typu end-to-end oraz
niezawodność są zapewniane przez okna
przesuwne, numery kolejne i
potwierdzenia.
Aby zrozumieć niezawodność i kontrolę
przepływu, można wyobrazić sobie
kogoś, kto po rocznej nauce języka
obcego odwiedza kraj, w którym ten
język jest używany. Podczas rozmowy
słowa muszą być wypowiadane powoli i
dla pewności powtarzane, by nie zgubić
sensu rozmowy. Tym właśnie jest
kontrola przepływu.
Warstwa transportowa zapewnia usługi
przesyłania danych z hosta źródłowego
do hosta docelowego. Umożliwia ona
nawiązanie połączenia logicznego
pomiędzy punktami końcowymi sieci. Protokoły warstwy transportowej dzielą na segmenty i ponownie składają
dane wysyłane przez aplikacje wyższej warstwy, przesyłając je w tym samym strumieniu danych warstwy
transportowej. Strumień danych warstwy transportowej obsługuje transport typu end-to-end, czyli transport
między punktami końcowymi.
Strumień ten jest logicznym połączeniem pomiędzy punktami końcowymi sieci. Do jego podstawowych zadań
należy transportowanie informacji i sterowanie ich przepływem ze źródła do celu w sposób niezawodny i
dokładny. Podstawowym zadaniem warstwy 4 jest zapewnienie kontroli typu end-to-end z wykorzystaniem
metody okien przesuwnych oraz zapewnienie niezawodności za pomocą mechanizmów numerów kolejnych i
potwierdzeń. Warstwa transportowa określa połączenia typu end-to-end pomiędzy aplikacjami na hostach.
Usługi transportowe obejmują następujące usługi podstawowe:
· segmentacja danych aplikacji wyższej warstwy,
· ustanawianie operacji typu end-to-end,
· transport segmentów między dwoma hostami końcowymi,
· kontrola przepływu zapewniana przez okna przesuwne,
· niezawodność zapewniana przez numery sekwencyjne i potwierdzenia.
TCP/IP jest kombinacją dwóch oddzielnych protokołów. Protokół IP działa w warstwie 3 i jest protokołem
bezpołączeniowym odpowiadającym za dostarczanie danych poprzez sieć z dołożeniem wszelkich starań.
Protokół TCP działa w warstwie 4 i jest usługą zorientowaną połączeniowo odpowiedzialną za kontrolę
przepływu i niezawodność. Połączenie tych protokołów w parę zapewnia szerszy zakres usług. Razem stanowią
one podstawę dla całego zestawu protokołów, zwanego zestawem protokołów TCP/IP. Na jego podstawie powstał
Internet.
11.1.2 Kontrola przepływu
Podczas przesyłania segmentów danych przez warstwę transportową podejmowane są starania, aby nie dopuścić
do utraty danych. Przyczyną utraty danych może być sytuacja, w której host odbierający nie jest w stanie
4890690.005.png
przetwarzać danych z taką szybkością, z jaką one do niego docierają. Host odbierający jest wtedy zmuszony do
ich odrzucenia. Kontrola przepływu zapobiega problemowi przepełnienia buforów hosta odbierającego. Protokół
TCP zawiera mechanizm kontroli przepływu polegający na umożliwieniu komunikacji pomiędzy hostem
wysyłającym i odbierającym. W ten sposób oba hosty ustalają prędkość transferu danych na wartość
odpowiadającą każdemu z nich.
11.1.3 Przegląd operacji ustanawiania, obsługi i zakończenia sesji
W modelu odniesienia OSI wiele
aplikacji może współdzielić to samo
połączenie transportowe. Funkcje
transportu danych są realizowane na
zasadzie wysyłania segmentu za
segmentem. Innymi słowy, różne
aplikacje mogą wysyłać segmenty
danych w oparciu o zasadę „pierwszy
przychodzi, pierwszy obsłużony”.
Pierwszy odebrany segment będzie
obsłużony jako pierwszy. Segmenty te
mogą podlegać routingowi do tego
samego lub różnych adresatów. Jest
to nazywane zwielokrotnianiem
(multipleksowaniem) konwersacji warstwy wyższej. Wiele równoczesnych konwersacji jednostek warstwy
wyższej może być multipleksowanych na pojedynczym połączeniu.
Jedną z funkcji warstwy transportowej jest ustanowienie sesji zorientowanej połączeniowo pomiędzy podobnymi
urządzeniami pracującymi w warstwie aplikacji. Aby rozpocząć transfer danych, obie aplikacje, zarówno
wysyłająca jak i odbierająca, przekazują informację do swoich systemów operacyjnych, że zostanie zainicjowane
połączenie. Połączenie zainicjowane przez jeden węzeł musi zostać zaakceptowane przez drugi węzeł. Moduły
oprogramowania protokołu w dwóch systemach operacyjnych komunikują się ze sobą za pośrednictwem
wysyłanych przez sieć wiadomości w celu zweryfikowania, czy transfer jest autoryzowany i czy obie strony są
gotowe.
Zostaje ustanowione połączenie, a po zakończeniu wszystkich czynności synchronizacyjnych rozpoczyna się
transfer danych. W czasie przesyłania oba urządzenia nadal się komunikują za pomocą oprogramowania protokołu
w celu weryfikacji poprawności odbieranych danych.
Na rysunku zaprezentowane zostało typowe połączenie pomiędzy systemem wysyłającym i odbierającym.
Pierwsze uzgodnienie jest żądaniem synchronizacji. Drugie i trzecie uzgodnienie potwierdzają początkowe
żądanie synchronizacji, równocześnie synchronizując parametry połączenia w przeciwnym kierunku. Końcowy
segment uzgodnienia jest potwierdzeniem służącym do poinformowania adresata, że obie strony są zgodne, iż
zostało ustanowione połączenie. Po ustanowieniu połączenia rozpoczyna się transfer danych.
Przeciążenie podczas transferu danych może wystąpić z dwóch powodów:
· Po pierwsze, szybki komputer może być w stanie generować ruch szybciej, niż sieć może go przekazywać.
· Po drugie, jeśli wiele komputerów równocześnie wysyła datagramy do tego samego adresata, może on zostać
przeciążony, mimo że problemu nie spowodował żaden pojedynczy komputer.
Gdy datagramy są odbierane przez bramę lub hosta szybciej niż mogą zostać przetworzone, są one tymczasowo
przechowywane w pamięci. Jeśli ruch trwa dalej, w końcu zostaje wyczerpana pamięć hosta lub bramy, co
powoduje odrzucanie kolejnych datagramów.
Zamiast dopuszczenia do utraty danych, proces TCP na odbierającym hoście może wysłać do nadawcy
powiadomienie „nie gotowy”. Wskaźnik ten, działający jak znak stopu, sygnalizuje wysyłającemu, żeby przerwał
wysyłanie danych. Gdy odbierający może obsłużyć dalsze dane, wysyła wskaźnik transportowy „gotowy”. Po
odebraniu tego wskaźnika wysyłający może wznowić transmisję segmentów.
Na końcu transferu danych host nadający wysyła sygnał wskazujący koniec transmisji. Na końcu sekwencji
danych host odbierający potwierdza koniec transmisji i połączenie jest zamykane.
11.1.4 Uzgadnianie trójetapowe
Protokół TCP jest protokołem zorientowanym połączeniowo. Wymaga on ustanowienia połączenia przed
rozpoczęciem przesyłania danych. Aby ustanowić lub zainicjować połączenie, muszą zostać zsynchronizowane
początkowe numery sekwencyjne (ISN) obu hostów. Synchronizacja polega na wymianie ustanawiających
połączenie segmentów zawierających bit kontrolny zwany SYN (synchronizacja) oraz numery ISN. Segmenty
zawierające bit SYN są również nazywane segmentami „SYN". Rozwiązanie to wymaga odpowiedniego
4890690.006.png
mechanizmu wybierania początkowego numeru sekwencyjnego oraz procesu uzgadniania służącego do wymiany
numerów ISN.
Synchronizacja wymusza wysłanie przez każdą ze stron własnego początkowego numeru sekwencyjnego i odbiór
potwierdzenia wymiany (ACK) od strony przeciwnej. Każda strona musi również odebrać od drugiej strony
numer ISN i wysłać potwierdzenie ACK. Kolejność jest następująca:
1. Wysyłający host (A) inicjuje połączenie przez wysłanie pakietu SYN do odbiorcy (hosta B) ze swoim
numerem początkowym ISN = X: A —> B SYN, seq A = X
2. B otrzymuje pakiet, zapamiętuje, że numer sekwencyjny seq hosta A = X, odpowiada pakietem z
ustawionym bitem ACK i numerem potwierdzenia X + 1, a także określa swój numer początkowy ISN =
Y. Potwierdzenie ACK z numerem X + 1 oznacza, że host B otrzymał wszystkie oktety do oktetu X
włącznie i będzie oczekiwał na oktet o numerze X + 1:
B —> A ACK, seq A = X, SYN seq B = Y, ACK = X + 1
3. A otrzymuje pakiet od B, wie, że numer sekwencyjny seq hosta B = Y, i odpowiada pakietem z
ustawionym bitem ACK i numerem potwierdzenia Y + 1, co kończy proces ustanawiania połączenia:
A —> B ACK, seq B = Y, ACK = Y + 1
Wymiana ta jest zwana uzgadnianiem trójetapowym.
Uzgadnianie trójetapowe jest
konieczne ze względu na to, że
numery sekwencyjne nie są
związane z globalnym zegarem w
sieci i protokoły TCP mogą mieć
różne mechanizmy wybierania
numeru ISN. Odbiorca
pierwszego segmentu SYN nie
ma innego sposobu na
rozpoznanie starego lub
spóźnionego segmentu niż
pamiętanie ostatniego numeru
podczas kolejnego połączenia.
Pamiętanie tego numeru nie
zawsze jest możliwe. Dlatego
odbiorca musi zwrócić się do
wysyłającego o weryfikację
segmentu SYN.
11.1.5 Okienkowanie
Aby zapewnić niezawodność zorientowanego połączeniowo transferu danych, pakiety danych muszą być
dostarczane do odbiorcy w tej samej kolejności, w której zostały wysłane. Przesyłanie danych za pomocą danego
protokołu nie powiedzie się, jeśli jakieś pakiety danych zostaną utracone, uszkodzone, powielone lub odebrane w
4890690.007.png 4890690.008.png 4890690.001.png
innej kolejności. Łatwym rozwiązaniem jest potwierdzanie przez odbiorcę odbioru każdego pakietu przed
wysłaniem kolejnego.
Gdyby nadawca musiał czekać na potwierdzenie po wysłaniu każdego pakietu, przepustowość byłaby niska. Z
tego powodu w przypadku większości niezawodnych protokołów zorientowanych połączeniowo dozwolone jest
pozostawanie więcej niż jednego pakietu bez potwierdzenia w danym czasie. Czas pozostały po zakończeniu
transmisji pakietu danych przez nadawcę i przed zakończeniem przetwarzania otrzymanego przez niego
potwierdzenia jest wykorzystywany do przesłania większej ilości danych. Liczba pakietów danych, które nadawca
może wysłać przed otrzymaniem potwierdzenia, jest określana jako rozmiar okna lub okno.
Protokół TCP wykorzystuje potwierdzenia typu expectational. Potwierdzenia typu expectational oznaczają, że
numer potwierdzenia odnosi się do pakietu, który jest oczekiwany jako następny. Obrazowym pojęciem
opisującym dynamiczną negocjację rozmiaru okna podczas sesji TCP jest okienkowanie. Okienkowanie to
mechanizm kontroli przepływu. Wymaga ono, żeby urządzenie źródłowe otrzymywało od adresata potwierdzenie
po wysłaniu określonej ilości danych. Odbierający proces TCP zgłasza „okno" do wysyłającego procesu TCP.
Okno to określa liczbę pakietów, poczynając od numeru potwierdzenia, do których odebrania jest obecnie gotów
odbierający proces TCP.
Przy rozmiarze okna równym 3 urządzenie źródłowe może wysłać do adresata trzy bajty. Urządzenie źródłowe
musi następnie czekać na potwierdzenie. Gdy adresat otrzyma trzy bajty, wysyła potwierdzenie do urządzenia
źródłowego, które teraz może wysłać kolejne trzy bajty. Jeśli adresat z powodu przepełnienia buforów nie otrzyma
tych trzech bajtów, to nie wyśle potwierdzenia. Ponieważ źródło nie otrzyma potwierdzenia, będzie to oznaczało,
że bajty powinny być wysłane ponownie, a szybkość transmisji powinna zostać zmniejszona.
Jak pokazano na rysunku , nadawca wysyła trzy pakiety przed rozpoczęciem oczekiwania na potwierdzenie ACK.
Jeśli odbiorca może obsłużyć okno o rozmiarze tylko dwóch pakietów, z okna odrzucony zostaje pakiet trzeci,
określa się go jako następny, a nowa wartość rozmiaru okna jest określana jako dwa. Nadawca wysyła kolejne
dwa pakiety, lecz ma ciągle ustawiony rozmiar okna równy trzy. Oznacza to, że nadawca będzie nadal oczekiwał
potwierdzenia od odbiorcy po wysłaniu trzech pakietów. Odbiorca odpowiada, żądając piątego pakietu i nadal
określając rozmiar okna równy dwa.
11.1.6 Potwierdzenia
Niezawodne dostarczanie gwarantuje, że strumień danych wysłany z jednego urządzenia jest dostarczony przez
łącze danych do innego urządzenia bez powielenia lub utraty danych. Potwierdzenie pozytywne wraz z
retransmisją jest techniką, która gwarantuje niezawodne dostarczanie danych. Potwierdzenie pozytywne wymaga,
by odbiorca po odebraniu danych skontaktował się ze źródłem i wysłał wiadomość potwierdzającą. Nadawca
zachowuje zapis dotyczący każdego wysłanego pakietu danych (segmentu TCP) i oczekuje na potwierdzenie. W
momencie wysłania segmentu zostaje również przez nadawcę uruchomiony zegar. Jeśli założony czas zostanie
przekroczony przed odebraniem potwierdzenia, segment będzie ponownie wysłany.
Na rysunku został zaprezentowany nadawca
wysyłający pakiety danych 1, 2 i 3 . Odbiorca
potwierdza odbiór pakietów przez żądanie pakietu 4.
Po odbiorze potwierdzenia nadawca wysyła pakiety 4,
5 i 6. Jeśli pakiet 5 nie dotrze do celu, odbiorca wysyła
potwierdzenie z żądaniem ponownego wysłania
pakietu 5. Nadawca wysyła ponownie pakiet 5, po
czym odbiera potwierdzenie z żądaniem kontynuacji
transmisji począwszy od pakietu 7.
Protokół TCP zapewnia kolejność segmentów poprzez
potwierdzenia odnoszące się do następnego w
kolejności segmentu. Przed wysłaniem każdy segment
jest numerowany. Po stronie stacji odbierającej
protokół TCP ponownie składa segmenty w całą
wiadomość. Jeśli numer sekwencyjny w szeregu został
opuszczony, segment ten jest transmitowany ponownie.
Segmenty, które nie zostały potwierdzone w zadanym
czasie, zostaną wysłane ponownie
Control Protocol)
11.1.7 Protokół TCP (ang. Transmission
4890690.002.png
Protokół TCP jest należącym do warstwy 4 protokołem zorientowanym połączeniowo, który zapewnia
niezawodną transmisję danych w trybie pełnego dupleksu. TCP jest częścią stosu protokołów TCP/IP. W
środowisku zorientowanym połączeniowo przed rozpoczęciem transferu informacji musi zostać ustanowione
połączenie między dwoma stacjami końcowymi. Protokół TCP jest odpowiedzialny za podział wiadomości na
segmenty, ponowne złożenie ich na stacji docelowej, ponowne wysłanie wszystkich nieodebranych informacji i
scalenie wiadomości z segmentów. Zapewnia on obwód wirtualny pomiędzy aplikacjami użytkowników
końcowych.
Protokoły, które wykorzystują protokół TCP:
· protokół FTP (ang. File Transfer Protocol ),
· protokół HTTP (ang. Hypertext Transfer Protocol ),
· protokół SMTP (ang. Simple Mail Transfer Protocol ),
· protokół Telnet.
Poniżej podano definicje pól segmentu TCP:
·
port źródłowy: numer portu nadającego,
·
port odbiorcy: numer wywoływanego portu,
·
numery sekwencyjne: numery używane do zapewnienia prawidłowej kolejności nadchodzących
danych,
·
numer potwierdzenia: następny oczekiwany oktet TCP,
·
HLEN: liczba 32-bitowych słów w nagłówku,
·
zarezerwowane: pole ustawione na wartość zero,
·
bity kodowe: funkcje sterujące (na przykład nawiązywanie i kończenie sesji),
·
okno: liczba oktetów, którą zaakceptuje nadawca,
·
suma kontrolna: suma kontrolna obliczona na podstawie pól nagłówka i danych,
·
wskaźnik pilności: (ang. Urgent Pointer ) określa koniec pilnych danych,
·
opcja: jedna obecnie definiowana opcja — maksymalny rozmiar segmentu TCP,
·
dane: dane protokołu wyższej warstwy.
11.1.8 Protokół UDP (ang. User Datagram Protocol)
Protokół UDP jest bezpołączeniowym protokołem transportowym należącym do stosu protokołów TCP/IP.
Protokół UDP to prosty protokół wymiany datagramów bez potwierdzania czy gwarancji ich dostarczenia.
Przetwarzanie błędów i retransmisja muszą być obsłużone przez protokoły wyższych warstw.
Protokół UDP nie wykorzystuje mechanizmów okienkowania ani potwierdzeń, więc niezawodność, jeśli jest
wymagana, musi być zapewniana przez protokoły warstwy aplikacji. Protokół UDP jest zaprojektowany dla
aplikacji, które nie mają potrzeby składania sekwencji segmentów.
Protokoły, które wykorzystują protokół UDP:
· protokół TFTP (ang. Trivial File Transfer Protocol ),
· protokół SNMP (ang. Simple Network Management Protocol ),
· protokół DHCP (ang. Dynamic Host Control Protocol ),
· protokół DNS (ang. Domain Name System ).
Poniżej podano definicje pól segmentu UDP:
4890690.003.png 4890690.004.png
Zgłoś jeśli naruszono regulamin