SK Moduł 8: Różnice pomiędzy wersjami
Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Nie podano opisu zmian |
Nie podano opisu zmian |
||
Linia 34: | Linia 34: | ||
Jednym z podziałów jest podział na komunikację połączeniową (ang. connection-oriented) oraz bezpołączeniową (ang. connectionless). | Jednym z podziałów jest podział na komunikację połączeniową (ang. connection-oriented) oraz bezpołączeniową (ang. connectionless). | ||
Komunikacja połączeniowa zakłada, że zanim nastąpi właściwa wymiana informacji następuje etap połączenie (spotkania, nawiązania rozmowy, itd.), | Komunikacja połączeniowa zakłada, że zanim nastąpi właściwa wymiana informacji następuje etap połączenie (spotkania, nawiązania rozmowy, itd.), dopiero po nawiązaniu połączenia możliwa jest dalsza komunikacja. Przez analogię do sytuacji z życia codziennego można to przybliżyć jako rozmowę pomiędzy dwoma osobami. | ||
Komunikacja bezpołączeniowa nie wymaga ustanawiania połączenia w celu przekazania informacji. Komunikaty są po prostu przesyłane bez sprawdzania, czy dotarły do adresata. Taki sposób komunikacji można porównać do przesyłania tradycyjnej poczty, gdzie zwykle nie wiemy, czy adresat jest w danej chwili w stanie odebrać wiadomość. Innym przykładem może być wysyłanie wiadomości SMS, czy też e-maila. | Komunikacja bezpołączeniowa nie wymaga ustanawiania połączenia w celu przekazania informacji. Komunikaty są po prostu przesyłane bez sprawdzania, czy dotarły do adresata. Taki sposób komunikacji można porównać do przesyłania tradycyjnej poczty, gdzie zwykle nie wiemy, czy adresat jest w danej chwili w stanie odebrać wiadomość. Innym przykładem może być wysyłanie wiadomości SMS, czy też e-maila. | ||
Linia 58: | Linia 58: | ||
|valign="top"|Kolejnym kryterium podziału jest tryb komunikacji stanowej (ang. stateful) i bezstanowej (ang. stateless). | |valign="top"|Kolejnym kryterium podziału jest tryb komunikacji stanowej (ang. stateful) i bezstanowej (ang. stateless). | ||
W przypadku komunikacji stanowej sesja nawiązana pomiędzy klientem a serwerem jest monitorowana przez serwer. Serwer utrzymuje na bieżąco stan klienta. Wymaga to dodatkowego nakładu. | W przypadku komunikacji stanowej sesja nawiązana pomiędzy klientem, a serwerem jest monitorowana przez serwer. Serwer utrzymuje na bieżąco stan klienta. Wymaga to dodatkowego nakładu. | ||
Komunikacja bezstanowa zakłada brak monitorowania przez serwer stanu klienta. Stąd serwer nie zapamiętuje, np. wcześniejszych odpowiedzi na żądania klienta i za każdym razem wysyła pełen zestaw danych. Takie podejście zakłada nawiązywania sesji przy każdym odpytywaniu serwera. Odpowiedzi, które zostaną wygenerowane przez serwer mogą nadchodzić w dowolnej kolejności mogą być również gubione w trakcie przesyłania. Stąd może to być trudne do zinterpretowania jeśli nie jest kontrolowany stan na bieżąco. Zaletą takiego rozwiązania jest mniejszy nakład związany z brakiem monitorowania przez serwer stanu klienta. | Komunikacja bezstanowa zakłada brak monitorowania przez serwer stanu klienta. Stąd serwer nie zapamiętuje, np. wcześniejszych odpowiedzi na żądania klienta i za każdym razem wysyła pełen zestaw danych. Takie podejście zakłada nawiązywania sesji przy każdym odpytywaniu serwera. Odpowiedzi, które zostaną wygenerowane przez serwer mogą nadchodzić w dowolnej kolejności mogą być również gubione w trakcie przesyłania. Stąd może to być trudne do zinterpretowania jeśli nie jest kontrolowany stan na bieżąco. Zaletą takiego rozwiązania jest mniejszy nakład związany z brakiem monitorowania przez serwer stanu klienta. | ||
Linia 72: | Linia 72: | ||
Cechą wspólną obu tych protokołów jest: | Cechą wspólną obu tych protokołów jest: | ||
dzielenie danych pochodzących/skierowanych z/do wyższych warstw | dzielenie danych pochodzących/skierowanych z/do wyższych warstw | ||
wysyłanie segmentów z jednego urządzenia końcowego do innego. | |||
Głównym zadaniem protokołów tej warstwy jest dzielenie danych przychodzących z wyższych warstw modelu na segmenty. Segmenty te następnie przesyłane są do protokołów niższych warstw. | Głównym zadaniem protokołów tej warstwy jest dzielenie danych przychodzących z wyższych warstw modelu na segmenty. Segmenty te następnie przesyłane są do protokołów niższych warstw. | ||
Wykorzystanie jednego z tych protokołów przez aplikacje jest zależne od tego czy dana aplikacja potrzebuje sterować przepływem wysyłanych | Wykorzystanie jednego z tych protokołów przez aplikacje jest zależne od tego czy dana aplikacja potrzebuje sterować przepływem wysyłanych segmentów czy też ta funkcjonalność nie jest niezbędna do prawidłowego jej działania. | ||
|} | |} | ||
Linia 101: | Linia 101: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd10.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd10.png|thumb|500px]] | ||
|valign="top"|Protokół UDP został zaprojektowany w celu dostarczania użytkownikowi mechanizmów do przesyłania datagramów pomiędzy programami użytkowymi. Podobnie jak protokół niższej warstwy (IP) nie nawiązuje on połączenia w trakcie | |valign="top"|Protokół UDP został zaprojektowany w celu dostarczania użytkownikowi mechanizmów do przesyłania datagramów pomiędzy programami użytkowymi. Podobnie jak protokół niższej warstwy (IP) nie nawiązuje on połączenia w trakcie wysyłania danych. | ||
Host wysyłający segment UDP nie uzyskuje informacji zwrotnej o tym, czy dane dotarły do adresata. W samym protokole UDP nie ma również mechanizmów pozwalających na kontrolę przepływu. W związku z tym | Host wysyłający segment UDP nie uzyskuje informacji zwrotnej o tym, czy dane dotarły do adresata. W samym protokole UDP nie ma również mechanizmów pozwalających na kontrolę przepływu. W związku z tym w przypadku, gdy host do którego mają dotrzeć segmenty nie jest w stanie ich obsłużyć, nie ma możliwości przesłać stosownej informacji. Mechanizm taki został zaimplementowany w protokole TCP. | ||
Kontrolą przesyłania danych zajmuje się aplikacja korzystająca z TCP. | |||
|} | |} | ||
Linia 113: | Linia 113: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd11.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd11.png|thumb|500px]] | ||
|valign="top"| | |valign="top"|Kontrolą poprawności przesyłania danych w tych protokołach zajmują się wyższe warstwy modelu ISO/OSI. | ||
Do aplikacji wykorzystujących protokół UDP należą aplikacje komunikacji multimedialnej. Wszelkie programy wykorzystujące wideokonferencje, przesyłanie strumieniowe dźwięku wykorzystują szybkość tego protokołu. | Do aplikacji wykorzystujących protokół UDP należą aplikacje komunikacji multimedialnej. Wszelkie programy wykorzystujące wideokonferencje, przesyłanie strumieniowe dźwięku wykorzystują szybkość tego protokołu. | ||
Linia 130: | Linia 130: | ||
Znaczenie poszczególnych pól jest zgodne z ich opisem: | Znaczenie poszczególnych pól jest zgodne z ich opisem: | ||
port UDP nadawcy | port UDP nadawcy | ||
port UDP odbiorcy | |||
długość komunikatu UDP | |||
suma kontrolna UDP - pole to jest opcjonalne i nie wykorzystywane w przypadku aplikacji pracujących w LAN (wtedy wartość tego pola wynosi 0). W przypadku, gdy suma kontrolna jest wyliczana jest to wykonywane podobnie jak w przypadku protokołu IP. Dane w tym przypadku są dzielone na 16 bitowe fragmenty, dla których wyliczane jest uzupełnienie do 1. | |||
|} | |} | ||
Linia 142: | Linia 142: | ||
|valign="top"|Protokół TCP został zaimplementowany przez Vintona Cerfa i Roberta Kahna. Zgodnie z założeniami protokół ten zapewnia wiarygodne przesyłanie danych pomiędzy dwoma hostami. Wykorzystywanych jest do tego kilka mechanizmów, takich jak: sumy kontrolne i numery sekwencyjne. Zagubione pakiety są ponownie retransmitowane. | |valign="top"|Protokół TCP został zaimplementowany przez Vintona Cerfa i Roberta Kahna. Zgodnie z założeniami protokół ten zapewnia wiarygodne przesyłanie danych pomiędzy dwoma hostami. Wykorzystywanych jest do tego kilka mechanizmów, takich jak: sumy kontrolne i numery sekwencyjne. Zagubione pakiety są ponownie retransmitowane. | ||
Protokół TCP umożliwia kontrolę przeciążeń urządzeń znajdujących się pomiędzy komunikującymi się hostami. W przypadku, gdy następuje przeciążenie protokół TCP zmniejsza prędkość nadawania segmentów przez urządzenie nadawcze | Protokół TCP umożliwia kontrolę przeciążeń urządzeń znajdujących się pomiędzy komunikującymi się hostami. W przypadku, gdy następuje przeciążenie protokół TCP zmniejsza prędkość nadawania segmentów przez urządzenie nadawcze. | ||
Segmenty protokołu TCP są enkapsulowane w pakiety IP i przesyłane przy użyciu tego protokołu. Ze względu na właściwości IP polegające na przesyłaniu w sposób skuteczny pakietów wszelkimi możliwymi drogami, segmenty mogą dotrzeć do adresata w różnej kolejności. Mechanizm porządkowania segmentów umożliwia nadawanie im numerów sekwencyjnych, które następnie ułatwiają złożenie | Segmenty protokołu TCP są enkapsulowane w pakiety IP i przesyłane przy użyciu tego protokołu. Ze względu na właściwości IP polegające na przesyłaniu w sposób skuteczny pakietów wszelkimi możliwymi drogami, segmenty mogą dotrzeć do adresata w różnej kolejności. Mechanizm porządkowania segmentów umożliwia nadawanie im numerów sekwencyjnych, które następnie ułatwiają ponowne złożenie danych. | ||
Cenną właściwością protokołu TCP jest możliwość sterowania przepływem. Dzięki temu w sytuacji, gdy host docelowy lub łącze pozwala na szybszą transmisję następuje przesyłanie kilku segmentów w jednym pakiecie. W sytuacji odwrotnej, tzn. przy przeciążonym adresacie lub ograniczonej przepustowości łącza następuje zwolnienie transmisji poprzez przesyłanie mniejszej liczby segmentów lub pojedynczych segmentów. | |||
Protokół TCP dzieli dane pochodzące z wyższych warstw na porcje zwane segmentami. Segmenty te są później enkapsulowane w pakiety IP. Przy okazji dzielenia pakietów i przesyłania ich do niższej warstwy wyznaczana jest maksymalna wielkość segmentu - MSS (ang. Maximal Segment Size) | Protokół TCP dzieli dane pochodzące z wyższych warstw na porcje zwane segmentami. Segmenty te są później enkapsulowane w pakiety IP. Przy okazji dzielenia pakietów i przesyłania ich do niższej warstwy wyznaczana jest maksymalna wielkość segmentu - MSS (ang. Maximal Segment Size) | ||
Linia 159: | Linia 159: | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd14.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd14.png|thumb|500px]] | ||
|valign="top"|Nagłówek protokołu TCP jest o wiele dłuższy od nagłówka UDP i zawiera 20 bajtów przeznaczonych na pola. Część z tych pól ma podobną funkcję jak w przypadku protokołu UDP. Podobnie jak w tym ostatnim występują pola określające numery portów nadawcy i odbiorcy. Występuje również pole sumy kontrolnej. Znaczenie poszczególnych pól zostanie przedstawione poniżej: | |valign="top"|Nagłówek protokołu TCP jest o wiele dłuższy od nagłówka UDP i zawiera 20 bajtów przeznaczonych na pola. Część z tych pól ma podobną funkcję jak w przypadku protokołu UDP. Podobnie jak w tym ostatnim występują pola określające numery portów nadawcy i odbiorcy. Występuje również pole sumy kontrolnej. Znaczenie poszczególnych pól zostanie przedstawione poniżej: | ||
Numer portu źródłowego - 16 b - numer portu | |||
Numer portu docelowego - 16 b - numer portu | |||
Numer sekwencyjny pakietu - 32b - pole określające pozycję strumienia danych przesyłanych w strumieniu | |||
Numer sekwencyjny potwierdzenia - 32 b - numer bajtu, który odbiorca spodziewa się otrzymać w następnej kolejności od nadawcy | |||
Długość nagłówka - 4b - długość nagłówka wyrażona w 32-bitowych słowach | |||
Pole zarezerwowane - 6b | |||
Flagi - 6b - pole zawiera bity znacznikowe, które mają następujące znaczenie: | |||
URG - flaga oznaczająca, że dane zostały określone jako „pilne” przez warstwę wyższą | |||
ACK - oznacza, że wartość w polu numeru sekwencyjnego jest obowiązująca | |||
PSH - odbiorca powinien przesłać natychmiast dane do warstwy wyższej | |||
RST - połączenie w stanie zerowania | |||
SYN - nawiązanie połączenia i synchronizacja numerów początkowych | |||
FIN - zamknięcie połączenia, koniec strumienia danych u nadawcy | |||
Rozmiar okna - 16b - informacja, którą wysyła odbiorca o ilości danych, które może przyjąć od nadawcy. | |||
Suma kontrolna - 16b - liczba umożliwiająca sprawdzenie, czy nie została naruszona integralność danych i nagłówka segmentu | |||
Ważność - jeśli w polu flagi jest wpisana wartość URG, to pole to określa miejsce, w którym kończą się pilne dane. | |||
Opcje (jeśli istnieją) - pole wykorzystywane do negocjacji wartości MSS pomiędzy klientem a serwerem, pole rzadko wykorzystywane | |||
Wypełnienie - pole służące do wypełnienia długości nagłówka do pełnych 32 bitowych słów. | |||
|} | |} | ||
Linia 185: | Linia 185: | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd15.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd15.png|thumb|500px]] | ||
|valign="top"|Przed przesłaniem danych pomiędzy dwoma hostami musi zostać nawiązane połączenie. Często host, który rozpoczyna połączenie nazywany jest klientem, zaś drugi host serwerem. W protokole TCP podobnie jak w trakcie rozmowy telefonicznej następuje na początku proces uzgadniania. Protokół TCP w odróżnieniu od wcześniej przedstawianych stosuje w tym celu mechanizm synchronizacji zwany uzgadnianiem trójetapowym (ang. three way handshake). W skład tego procesu wchodzą następujące fazy: | |valign="top"|Przed przesłaniem danych pomiędzy dwoma hostami musi zostać nawiązane połączenie. Często host, który rozpoczyna połączenie nazywany jest klientem, zaś drugi host serwerem. W protokole TCP podobnie jak w trakcie rozmowy telefonicznej następuje na początku proces uzgadniania. Protokół TCP w odróżnieniu od wcześniej przedstawianych stosuje w tym celu mechanizm synchronizacji zwany uzgadnianiem trójetapowym (ang. three way handshake). W skład tego procesu wchodzą następujące fazy: | ||
1) Klient inicjuje połączenie poprzez wysłanie segmentu z ustawioną flagą w SYN (=1). Ustawiona wartość pola SYN=1 oznacza, że hosty nie zostały jeszcze zsynchronizowane i segment ten jest żądaniem nawiązania połączenia. Jednocześnie wysyłany jest w tym samym segmencie numer sekwencyjny pakietu o wartości ‘x’ oraz rozmiar okna, który jest informacją dla serwera jakiej wielkości bufor został zarezerwowany (po stronie klienta) na segmenty przesyłane z serwera. | |||
|} | |} | ||
Linia 201: | Linia 201: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd17.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd17.png|thumb|500px]] | ||
|valign="top"|3) Klient odbiera segment inicjalizuje po swojej stronie bufor na segmenty pochodzące od serwera i na zmienne stanu tego połączenia. W ramach potwierdzenia odebrania segmentu od serwera wysyła pakiet z ustawioną wartością flagi ACK, wyzerowaną wartością pola SYN oraz | |valign="top"|3) Klient odbiera segment inicjalizuje po swojej stronie bufor na segmenty pochodzące od serwera i na zmienne stanu tego połączenia. W ramach potwierdzenia odebrania segmentu od serwera wysyła pakiet z ustawioną wartością flagi ACK, wyzerowaną wartością pola SYN oraz w polu następny numer sekwencyjny wpisywana jest wartość ‘y+1’. Oznacza to, że połączenie zostało nawiązane i teraz klient oczekuje od serwera porcji bajtów od numeru ‘y+1’. Wartość SYN=0 oznacza, że połączenie zostało nawiązane i nastąpiła synchronizacja. | ||
Po nawiązania we wszystkich przesyłanych segmentach jest ustawiona flaga ACK, która potwierdza fakt otrzymania porcji danych określonej w polu numer sekwencyjny. | Po nawiązania we wszystkich przesyłanych segmentach jest ustawiona flaga ACK, która potwierdza fakt otrzymania porcji danych określonej w polu numer sekwencyjny. | ||
Linia 214: | Linia 214: | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd18.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd18.png|thumb|500px]] | ||
|valign="top"|W trakcie nawiązywania połączenia ustalane są parametry odpowiedzialne za zapewnienie jakości usług - QoS (ang. Quality of Service). Proces ten określany jest jako negocjacja opcji. Poszczególne parametry mają następujące znaczenie: | |valign="top"|W trakcie nawiązywania połączenia ustalane są parametry odpowiedzialne za zapewnienie jakości usług - QoS (ang. Quality of Service). Proces ten określany jest jako negocjacja opcji. Poszczególne parametry mają następujące znaczenie: | ||
- Opóźnienie nawiązania połączenia (ang. connection establishment delay) - czas pomiędzy wysłaniem segmentu z ustawioną flagą SYN a otrzymaniem potwierdzenia w postaci segmentu z ustawionymi flagami SYN+ACK. Im krótszy czas tym lepsza jakość usługi. | - Opóźnienie nawiązania połączenia (ang. connection establishment delay) - czas pomiędzy wysłaniem segmentu z ustawioną flagą SYN, a otrzymaniem potwierdzenia w postaci segmentu z ustawionymi flagami SYN+ACK. Im krótszy czas tym lepsza jakość usługi. | ||
- Prawdopodobieństwo niepowodzenia nawiązania połączenia (ang. connection establishment failure probability) - prawdopodobieństwo, że nie uda się nawiązać połączenia w trakcie dopuszczalnego maksymalnego czasu opóźnienia nawiązania połączenia. | - Prawdopodobieństwo niepowodzenia nawiązania połączenia (ang. connection establishment failure probability) - prawdopodobieństwo, że nie uda się nawiązać połączenia w trakcie dopuszczalnego maksymalnego czasu opóźnienia nawiązania połączenia. | ||
Przepustowość (ang. throughput) - liczba danych przesłanych w ciągu sekundy | Przepustowość (ang. throughput) - liczba danych przesłanych w ciągu sekundy, parametr mierzony oddzielnie dla każdego kierunku transmisji | ||
Opóźnienie przejścia (ang. transit delay) - czas potrzebny do przesłania segmentu pomiędzy nadawcą a adresatem. Czas ten jest określany dla obu kieunków transmisji. | |||
Stopa błędów (ang. residual error rate) - stosunek liczby utraconych lub zniekształconych segmentów do całkowitej liczby przesłanych segmentów w jednostce czasu. | |||
Prawdopodobieństwo niepowodzenia przesyłu (ang. transfer failure probability) - prawdopodobieństwo, że założone parametry: przepustowość, stopa błędów, opóźnienie przejścia nie zostaną uzyskane w trakcie obserwacji. | |||
|} | |} | ||
Linia 227: | Linia 227: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd19.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd19.png|thumb|500px]] | ||
|valign="top"|Opóźnienie zwolnienia połączenia (ang. connection release delay) - czas pomiędzy wysłaniem segmentu zwalniajacego połączenia, a faktycznym zwolnieniem tego połączenia | |valign="top"|Opóźnienie zwolnienia połączenia (ang. connection release delay) - czas pomiędzy wysłaniem segmentu zwalniajacego połączenia, a faktycznym zwolnieniem tego połączenia. | ||
Prawdopodobieństwo niepowodzenia zwolnienia połączenia (ang. connection release failure probability) - prawdopodobieństwo, że połączenie nie zostanie zwolnione w określonym czasie | Prawdopodobieństwo niepowodzenia zwolnienia połączenia (ang. connection release failure probability) - prawdopodobieństwo, że połączenie nie zostanie zwolnione w określonym czasie. | ||
Ochrona (ang. protection) - ochrona przed przechwyceniem danych przez osoby trzecie | Ochrona (ang. protection) - ochrona przed przechwyceniem danych przez osoby trzecie. | ||
Priorytet (ang. priority) - możliwość obsługi połączeń o wysokim priorytecie | Priorytet (ang. priority) - możliwość obsługi połączeń o wysokim priorytecie | ||
Odporność (ang. resilience) - prawdopodobieństwo przerwania połączenia w wyniku przeciążenia lub problemów wewnętrznych. | |||
|} | |} | ||
Linia 269: | Linia 269: | ||
|valign="top"|Po nawiązaniu połączeniu i wykonaniu procesu synchronizacji następuje przesyłanie segmentów danych. Teoretycznie połączenie TCP jest połączeniem symetrycznym, które może pracować w trybie full-duplexu. W praktyce jednak, dane są przesyłane w jednym kierunku, natomiast w drugą stronę tylko potwierdzenia braku błędów. | |valign="top"|Po nawiązaniu połączeniu i wykonaniu procesu synchronizacji następuje przesyłanie segmentów danych. Teoretycznie połączenie TCP jest połączeniem symetrycznym, które może pracować w trybie full-duplexu. W praktyce jednak, dane są przesyłane w jednym kierunku, natomiast w drugą stronę tylko potwierdzenia braku błędów. | ||
Jak widać na przedstawionym rysunku dane mogą być transmitowane segmentami i po każdym przesłanym segmencie następuje wysłanie segmentu z | Jak widać na przedstawionym rysunku dane mogą być transmitowane segmentami i po każdym przesłanym segmencie następuje wysłanie segmentu z potwierdzeniem poprawnej transmisji. Ze względu na fakt, że dane z warstwy aplikacji zajmują zwykle więcej niż jeden segment i zostały podzielone w warstwie transportowej na większą liczbę segmentów, takie przesyłanie i oczekiwanie na potwierdzenie nie będzie efektywne. | ||
W celu poprawy efektywności stosuje się w tym celu mechanizm buforowania i przesuwanego okna (ang. sliding window). Sposoby te zostaną przedstawione na kolejnych slajdach. | W celu poprawy efektywności stosuje się w tym celu mechanizm buforowania i przesuwanego okna (ang. sliding window). Sposoby te zostaną przedstawione na kolejnych slajdach. | ||
Linia 289: | Linia 289: | ||
|valign="top"|Przy pojedynczym wysyłaniu segmentów otrzymanie każdego z nich musi zostać potwierdzone przez adresata. Do tego czasu nadawca czeka z wysłaniem kolejnych segmentów. Nie jest to efektywne pod względem czasu potrzebnego na przesłanie wszystkich danych. | |valign="top"|Przy pojedynczym wysyłaniu segmentów otrzymanie każdego z nich musi zostać potwierdzone przez adresata. Do tego czasu nadawca czeka z wysłaniem kolejnych segmentów. Nie jest to efektywne pod względem czasu potrzebnego na przesłanie wszystkich danych. | ||
W celu poprawienia transmisji został zaproponowany algorytm przesuwanego okna (ang. sliding window). Zamiast wysyłać pojedyncze segmenty i czekać na potwierdzenie otrzymania każdego z nich przed wysłaniem następnego, host wysyła tyle segmentów ile wynosi parametr długość okna przesłany przez odległy komputer. Następnie czeka na potwierdzenie otrzymania przez host docelowy otrzymania przesłanych segmentów. Host | W celu poprawienia transmisji został zaproponowany algorytm przesuwanego okna (ang. sliding window). Zamiast wysyłać pojedyncze segmenty i czekać na potwierdzenie otrzymania każdego z nich przed wysłaniem następnego, host wysyła tyle segmentów ile wynosi parametr długość okna przesłany przez odległy komputer. Następnie czeka na potwierdzenie otrzymania przez host docelowy otrzymania przesłanych segmentów. Host do którego były adresowane przesyłane segmenty odpowiada wysłaniem segmentu pozwalającego na dalszą transmisję. | ||
Szczegółowo mechanizm przesuwanego okna zostanie omówiony na następnym slajdzie. | Szczegółowo mechanizm przesuwanego okna zostanie omówiony na następnym slajdzie. | ||
Linia 301: | Linia 301: | ||
|valign="top"|Na rysunku pokazano przykładowy strumień danych podzielony na segmenty. Rozmiar okna wynosi w tym przypadku osiem segmentów. Oznacza to, że nadawca może wysłać osiem segmentów przed otrzymaniem potwierdzenia. Okno pozostaje „nieruchome” do momentu uzyskania potwierdzenia o otrzymaniu segmentów przez odbiorcę. Istotny jest przy tym fakt, że okno zostanie przesunięte dopiero, gdy zostanie otrzymane potwierdzenie o dotarciu segmentu o najniższym numerze w danej serii. | |valign="top"|Na rysunku pokazano przykładowy strumień danych podzielony na segmenty. Rozmiar okna wynosi w tym przypadku osiem segmentów. Oznacza to, że nadawca może wysłać osiem segmentów przed otrzymaniem potwierdzenia. Okno pozostaje „nieruchome” do momentu uzyskania potwierdzenia o otrzymaniu segmentów przez odbiorcę. Istotny jest przy tym fakt, że okno zostanie przesunięte dopiero, gdy zostanie otrzymane potwierdzenie o dotarciu segmentu o najniższym numerze w danej serii. | ||
I tak jak dotrze do nadawcy potwierdzenie o dotarciu pierwszego segmentu do adresata, to okno zostanie przesunięte o jedną pozycję w prawo. Po przesunięciu okna w prawo o jedną pozycję wysyłany jest kolejny segment, w tym przypadku 9. Podobnie będzie się | I tak jak dotrze do nadawcy potwierdzenie o dotarciu pierwszego segmentu do adresata, to okno zostanie przesunięte o jedną pozycję w prawo. Po przesunięciu okna w prawo o jedną pozycję wysyłany jest kolejny segment, w tym przypadku 9. Podobnie będzie się realizowała procedura dla pozostałych segmentów. | ||
Gdyby się okazało, że nadeszły potwierdzenia otrzymania segmentów 2, 4,5,6,7,8,9, a nie nadeszło potwierdzenie otrzymania segmentu 3, to okno zostanie przesunięte tylko do początku segmentu 3. Wbudowane mechanizmy kontroli przesyłu zadbają o retransmisję zagubionego okna po upływie określonego czasu. Dla każdego niepotwierdzonego segmentu utrzymywany jest osobny zegar. Po upływie określonego czasu ponawiana jest transmisja zagubionego segmentu. | Gdyby się okazało, że nadeszły potwierdzenia otrzymania segmentów 2, 4,5,6,7,8,9, a nie nadeszło potwierdzenie otrzymania segmentu 3, to okno zostanie przesunięte tylko do początku segmentu 3. Wbudowane mechanizmy kontroli przesyłu zadbają o retransmisję zagubionego okna po upływie określonego czasu. Dla każdego niepotwierdzonego segmentu utrzymywany jest osobny zegar. Po upływie określonego czasu ponawiana jest transmisja zagubionego segmentu. | ||
Linia 314: | Linia 314: | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd27.png|thumb|500px]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd27.png|thumb|500px]] | ||
|valign="top"|Tak jak o zostało wspomniane na poprzednim slajdzie mechanizm przesuwanego okna jest zaimplementowany po obu stronach kanału transmisji. Z tego powodu okno „dzieli” segmenty na 3 kategorie: | |valign="top"|Tak jak o zostało wspomniane na poprzednim slajdzie mechanizm przesuwanego okna jest zaimplementowany po obu stronach kanału transmisji. Z tego powodu okno „dzieli” segmenty na 3 kategorie: | ||
segmenty na lewo od okna - to te, które zostały już przesłane | segmenty na lewo od okna - to te, które zostały już przesłane. | ||
segmenty wewnątrz okna - to te, które są przesyłane i oczekuje się na potwierdzenie ich przesłania. | |||
segmenty na prawo od okna - to te, które dopiero będą wysyłane. | |||
|} | |} | ||
Linia 327: | Linia 327: | ||
Inny przypadek zmniejszenia rozmiaru okna hosta nadającego ma miejsce, gdy z powodu przeciążenia sieci część pakietów nie dociera na czas do adresata. Nadawca kontroluje czas, który upłynął od wysłania segmentu do otrzymania potwierdzenia, że segment ten dotarł do adresata. Po przekroczeniu czasu segment jest wysyłany ponownie. Przy dużej liczbie retransmisji nadawca automatycznie zmniejsza rozmiar okna do wielkości okna przeciążenia (ang. congestion window). Mechanizm ten określany jest jako kontrola przeciążeń i działa następująco: | Inny przypadek zmniejszenia rozmiaru okna hosta nadającego ma miejsce, gdy z powodu przeciążenia sieci część pakietów nie dociera na czas do adresata. Nadawca kontroluje czas, który upłynął od wysłania segmentu do otrzymania potwierdzenia, że segment ten dotarł do adresata. Po przekroczeniu czasu segment jest wysyłany ponownie. Przy dużej liczbie retransmisji nadawca automatycznie zmniejsza rozmiar okna do wielkości okna przeciążenia (ang. congestion window). Mechanizm ten określany jest jako kontrola przeciążeń i działa następująco: | ||
w przypadku utraty segmentu wielkość okna jest redukowana o połowę | w przypadku utraty segmentu wielkość okna jest redukowana o połowę. | ||
przy dalszych stratach rozmiar okna jest zmniejszany wykładniczo. | |||
gdy straty nadal występują przesyłane są tylko pojedyncze segmenty, a czas oczekiwania przed ponowną transmisją jest podwajany. | |||
|} | |} | ||
Linia 339: | Linia 339: | ||
|valign="top"|W przypadku ustąpienia przeciążenia sieci można zwiększać rozmiar okna. W tym przypadku nie jest to działanie odwrotne do opisanego na poprzednim slajdzie, tzn. podwajanie wielkości okna, gdy nie występują ponowne retransmisje. Działanie takie mogłoby prowadzić do niestabilności. Zamiast tego protokół TCP stosuje algorytm powolnego startu (ang. slow start). | |valign="top"|W przypadku ustąpienia przeciążenia sieci można zwiększać rozmiar okna. W tym przypadku nie jest to działanie odwrotne do opisanego na poprzednim slajdzie, tzn. podwajanie wielkości okna, gdy nie występują ponowne retransmisje. Działanie takie mogłoby prowadzić do niestabilności. Zamiast tego protokół TCP stosuje algorytm powolnego startu (ang. slow start). | ||
Algorytm ten polega na zwiększaniu rozmiaru okna o jeden segment po każdym otrzymanym potwierdzeniu przesłania poprzedniego okna. | Algorytm ten polega na zwiększaniu rozmiaru okna o jeden segment po każdym otrzymanym potwierdzeniu przesłania poprzedniego okna. Algorytm ten jest stosowany po nawiązaniu połączenia oraz po wystąpieniu przeciążenia dla istniejącej sesji. | ||
|} | |} | ||
Aktualna wersja na dzień 21:51, 18 gru 2006
![]() |
![]() |
W module tym zostaną omówione protokoły warstwy transportowej stosu protokołów TCP/IP oraz pojęcia z nimi związane. |
![]() |
![]() |
![]() |
Tabela na slajdzie przedstawia porównanie cech protokołów warstwy transportowej. |
![]() |
![]() |