Protokoły warstwy transportowej

Download Report

Transcript Protokoły warstwy transportowej

Systemy operacyjne i sieci
komputerowe
Protokoły warstwy transportowej
Protokoły warstwy transportowej
W warstwie transportowej w stosie protokołów
TCP/IP może działać protokół połączeniowy TCP,
niezawodny lub protokół bezpołączeniowy UDP,
zawodny.
Protokół TCP
• Protokół TCP (Transmission Control Protocol) działa
w warstwie transportowej w trybie połączeniowym.
• Korzystanie z trybu połączeniowego umożliwia
zagwarantowanie dostarczenia danych do odbiorcy.
• Połączenia TCP są połączeniami wirtualnymi,
rozpoznawanymi po adresach i portach urządzeń
docelowych i źródłowych.
• Połączenia takie charakteryzują się możliwościami
sterowania przepływem, potwierdzaniem odbioru,
zachowywaniem kolejności danych, kontrolą błędów
i przeprowadzaniem retransmisji.
• Segmenty TCP składają się z nagłówka i danych.
Budowa nagłówka protokołu TCP
Budowa nagłówka protokołu TCP
Zawiera on następujące pola:
• Numer portu źródłowego i numer portu docelowego – podają
numery portów procesów aplikacyjnych korzystających z usług TCP.
Kombinacja tych numerów z adresami sieciowymi określają parę
gniazd tworzących połączenie protokołu TCP.
• Numer sekwencyjny SN (ang. Sequensc Number) - zawiera numer
sekwencyjny pierwszego bajtu danych w segmencie. Ta wartość
określa pozycję segmentu w strumieniu bajtów.
• Numer potwierdzenia ACK (ang. Acknowledgement Number) –
zawiera numer sekwencyjny następnego oczekiwanego bajtu po
stronie odbiorczej. Jednocześnie jest to potwierdzenie
poprawnego odbioru bajtów o numerach sekwencyjnych
mniejszych od zawartego w tym polu. Potwierdzenia mówią
nadawcy ile bajtów danych zostało już poprawnie odebranych.
Budowa nagłówka protokołu TCP
• Długość nagrania (nagłówka) – zawiera liczbę całkowitą, która
określa długość nagłówka segmentu mierzoną w
wielokrotnościach 32 bitów.
• Rezerwa – pole to jest pozostawione do wykorzystania w
przyszłości.
Budowa nagłówka protokołu TCP
• Znaczniki – składają się z sześciu bitów sterujących, które
ustawione na 2 mają następujące znaczenie:
₋ UGR – wskazuje na ważność pola wskaźnik pilności,
₋ ACK – wskazuje na ważność pola numer potwierdzania,
₋ PSH – wskazuje na działanie funkcji wymuszającej wysyłanie
segmentu,
₋ RST – wyzerowanie połączenia,
₋ SYN – wskazuje, że w polu numer sekwencyjny umieszczony
jest inicjujący numer sekwencyjny INS. Jest on przeznaczony do
synchronizacji numerów sekwencyjnych w fazie ustanowienia
połączenia.
₋ FIN – wskazuje, że nadawca nie ma nic więcej do nadania –
sygnał końca danych.
Budowa nagłówka protokołu TCP
• Okno (ang. Window) – umożliwia przystosowanie transmisji do
warunków sieci: większy natłok – mniejsza szybkość transmisji.
W to pole urządzenie odbiorcze wpisuje liczbę bajtów danych,
które są w stanie przyjąć jego bufory. Jeśli wpisze zero –
nadawca musi przerwać nadawanie. Wznowienie transmisji
nastąpi wtedy, gdy odbiorca wpisze liczbę większą od zera.
• Suma kontrolna TCP – zawiera 16-bitową liczbę całkowitą
służącą do sprawdzenia, czy dane i nagłówek TCP nie zostały
naruszone.
Budowa nagłówka protokołu TCP
• Wskaźnik pilności – zaznacza czy przy transmisji danych w
segmencie są one pilne.
• Opcje – ma długość zmienną będącą wielokrotnością 8 bitów.
Zawiera ono numery opcji – każdy numer zapisany w jednym
bajcie. Dla protokołu TCP zdefiniowano trzy opcje:
₋ 0 - koniec listy opcji,
₋ 1 - brak działania,
₋ 2 - maksymalna długo segmentu.
Przebieg transmisji
• Ponieważ na komputerze posiadającym jeden adres IP
może jednocześnie działać wiele aplikacji, to do ich
identyfikacji wykorzystuje się porty.
• Porty reprezentowane są przez liczby naturalne z zakresu
od 0 do 65535. Numery portów od 0 do 1023 są ogólnie
znane (well-known port numbers) i zarezerwowane dla
usług, np. WWW korzysta z portu 80, a telnet z portu 23.
• Dzięki portom możemy określić, dla jakiej aplikacji jest
przeznaczony segment danych (port docelowy) lub z
którego portu wysłano dane (port źródłowy).
Przebieg transmisji cd.
• Komunikacja między aplikacjami może się odbywać za pomocą
gniazd (socket). Gniazdo to kombinacja adresu IP i numeru
portu.
• Gniazdo jednoznacznie określa proces w sieci lub zakończenie
logicznego łącza komunikacyjnego między dwiema aplikacjami.
• Jeśli aplikacje uruchomione są na dwóch różnych komputerach,
to para odpowiadających im gniazd definiuje połączenie.
• Gniazdo możemy traktować jako kanał komunikacyjny – jeden
program wpisuje do niego dane, a drugi je odbiera.
• Serwer otwiera gniazdo i oczekuje na połączenie. Klient łączący
się z otwartym gniazdem musi znać sieciowy adres komputera
oraz numer portu.
Przebieg transmisji cd.
• Każdy przesyłany segment danych jest oznaczany kolejnym
numerem sekwencyjnym.
• Przed rozpoczęciem transmisji nadawca i odbiorca wymieniają
między sobą numery sekwencyjne.
• Odbiorca wiadomości na podstawie numeru sekwencyjnego ustala
kolejność segmentów oraz sprawdza, czy wszystkie segmenty
dotarły do miejsca przeznaczenia.
• Potwierdzenie odebrania segmentu polega na wysłaniu przez
odbiorcę numeru kolejnego segmentu, który powinien być
przesłany.
• Na przykład jeżeli ostatni poprawnie odebrany segment miał
numer 123, to odbiorca wyśle numer potwierdzenia 124 (numer
następnego segmentu, który ma być przesłany).
Przebieg transmisji cd.
• Potwierdzenie jest wysyłane po odebraniu pewnej liczby danych
określonych w polu szerokość okna.
• Jeżeli w sieci występuje dużo błędów, to wielkość okna jest
zmniejszana, aby częściej otrzymywać potwierdzenia i przez to
zmniejszyć liczbę segmentów danych wymagających retransmisji.
• Jeżeli liczba błędów się zmniejsza, to rozmiar okna jest
powiększany, aby zapewnić większą przepustowość sieci.
Aplikacje wykorzystujące TCP
•
•
•
•
WWW,
FTP,
poczta elektroniczna,
telnet.
Protokół UDP
• Protokół UDP (User Datagram Protocol) działa w warstwie
transportowej w trybie bezpołączeniowym.
• Protokół ten nie gwarantuje dostarczenia danych do
odbiorcy. Jeżeli pakiet nie dotrze do odbiorcy lub dotrze
uszkodzony, UDP nie podejmie żadnych działań
zmierzających do retransmisji danych, a zapewnienie
niezawodności pozostawi warstwie wyższej.
• Nagłówek protokołu UDP jest prostszy niż TCP. Protokół
jest wykorzystywany do szybkiego przesyłania danych w
niezawodnych sieciach.
Budowa nagłówka protokołu UDP
Pola nagłówka protokołu UDP
• Port źródłowy - identyfikuje port, z którego została
wysłana wiadomość, kiedy jest znaczący to wskazuje port
wysyłającego procesu i może zostać przyjęty jako port, do
którego powinna zostać zwrócona wiadomo zwrotna w
przypadku braku innej informacji. Port nadawcy jest
polem opcjonalnym. Gdy pole to nie jest używane
przyjmuje wartość zero.
• Port docelowy - identyfikuje port odbiorcy i jest polem
wymaganym.
Pola nagłówka protokołu UDP
• Długość 16-bitowe – pola specyfikuj długo w bajtach
całego datagramu: nagłówek i dane. Minimalna długość to
8 bajtów i jest to długość nagłówka. Wielkość pola ustala
teoretyczny limit 65 527 bajtów, dla danych
przenoszonych przez pojedynczy datagram UDP.
• Suma kontrolna 16 bitowe – pole, które jest użyte do
sprawdzania poprawności nagłówka oraz danych. Pole jest
opcjonalne. Ponieważ IP nie wylicza sumy kontrolnej dla
danych, sum kontrolna UDP jest jedyną gwarancją, że
dane nie zostały uszkodzone.
Aplikacje wykorzystujące UDP
•
•
•
•
•
•
•
•
•
wideokonferencje
przesyłanie strumieniowe dźwięku
gry sieciowe
komunikatory sieciowe
rozwiązywanie nazw symbolicznych (DNS)
transfer plików (TFTP)
NFS
VolP
RPC
Dzięki temu, że istnieją dwa alternatywne
względem siebie protokoły w warstwie
transportowej, TCP i UDP, jest możliwy dobór
przez aplikacje odpowiedniego dla siebie
rozwiązania.