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 1: | Linia 1: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd1.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd1.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} | ||
Linia 8: | Linia 8: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd2.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd2.png|thumb|500px]] | ||
|valign="top"|W module tym zostaną omówione protokoły warstwy transportowej stosu protokołów TCP/IP oraz pojęcia z nimi związane. | |valign="top"|W module tym zostaną omówione protokoły warstwy transportowej stosu protokołów TCP/IP oraz pojęcia z nimi związane. | ||
|} | |} | ||
Linia 16: | Linia 16: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd3.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd3.png|thumb|500px]] | ||
|valign="top"|W module poświęconym protokołowi IP wspomniane zostało, że jego głównym zadaniem jest przesyłanie pakietów w sposób skuteczny bez względu na nakład potrzebny do działania. Zostało również nadmienione, że kontrolą przesyłania tych pakietów zajmą się protokoły wyższych warstw modelu ISO/OSI. | |valign="top"|W module poświęconym protokołowi IP wspomniane zostało, że jego głównym zadaniem jest przesyłanie pakietów w sposób skuteczny bez względu na nakład potrzebny do działania. Zostało również nadmienione, że kontrolą przesyłania tych pakietów zajmą się protokoły wyższych warstw modelu ISO/OSI. | ||
Linia 29: | Linia 29: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd4.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd4.png|thumb|500px]] | ||
|valign="top"|Komunikację przy pomocy protokołów warstwy transportowej, pomiędzy odległymi hostami, można klasyfikować na różne sposoby. | |valign="top"|Komunikację przy pomocy protokołów warstwy transportowej, pomiędzy odległymi hostami, można klasyfikować na różne sposoby. | ||
Linia 43: | Linia 43: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd5.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd5.png|thumb|500px]] | ||
|valign="top"|Innym kryterium podziału jest wiarygodność dostarczenia informacji. Na podstawie tego kryterium dzieli się protokoły na niezawodne/wiarygodne (ang. reliable) oraz zawodne/niewiarygodne (ang. unreliable). | |valign="top"|Innym kryterium podziału jest wiarygodność dostarczenia informacji. Na podstawie tego kryterium dzieli się protokoły na niezawodne/wiarygodne (ang. reliable) oraz zawodne/niewiarygodne (ang. unreliable). | ||
Linia 55: | Linia 55: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd6.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd6.png|thumb|500px]] | ||
|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). | ||
Linia 67: | Linia 67: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd7.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd7.png|thumb|500px]] | ||
|valign="top"|W ramach stosu protokołów TCP/IP za transport danych odpowiadają protokoły TCP (ang. Transmission Control Protocol) oraz UDP (ang. User Datagram Protocol). Wykorzystują one protokoły warstw Internetowej i Aplikacji tak jak zostało to przedstawione na rysunku. | |valign="top"|W ramach stosu protokołów TCP/IP za transport danych odpowiadają protokoły TCP (ang. Transmission Control Protocol) oraz UDP (ang. User Datagram Protocol). Wykorzystują one protokoły warstw Internetowej i Aplikacji tak jak zostało to przedstawione na rysunku. | ||
Linia 83: | Linia 83: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd8.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd8.png|thumb|500px]] | ||
|valign="top"|W warstwie transportowej istnieje mechanizm określania, do której aplikacji adresowane są przesyłane przy pomocy protokołu IP pakiety. Zarówno protokół TCP jak i UDP dysponują niezależnymi numerami, które określają numer portu. Standardowe numery portów zostały określone w dokumencie RFC 1700. Szczegółowa numeracja portów zostanie omówiona w dalszej części wykładu. | |valign="top"|W warstwie transportowej istnieje mechanizm określania, do której aplikacji adresowane są przesyłane przy pomocy protokołu IP pakiety. Zarówno protokół TCP jak i UDP dysponują niezależnymi numerami, które określają numer portu. Standardowe numery portów zostały określone w dokumencie RFC 1700. Szczegółowa numeracja portów zostanie omówiona w dalszej części wykładu. | ||
|} | |} | ||
Linia 91: | Linia 91: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd9.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd9.png|thumb|500px]] | ||
|valign="top"|W trakcie przesyłanie danych przez sieć mogą być one kierowane do różnych aplikacji. W celu dokładnego rozróżnienia, wprowadzono strukturę programową określaną jako gniazdo (ang. socket). | |valign="top"|W trakcie przesyłanie danych przez sieć mogą być one kierowane do różnych aplikacji. W celu dokładnego rozróżnienia, wprowadzono strukturę programową określaną jako gniazdo (ang. socket). | ||
Gniazdo definiuje zdefiniowane jest przez numer IP interfejsu oraz numer portu protokołu TCP lub UDP. | Gniazdo definiuje zdefiniowane jest przez numer IP interfejsu oraz numer portu protokołu TCP lub UDP. | ||
Linia 100: | Linia 100: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd10.png]] | |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 wysyłanie danych. | |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łanie danych. | ||
Linia 112: | Linia 112: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd11.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd11.png|thumb|500px]] | ||
|valign="top"|przez protokoły i aplikacje, które wymagają szybkiego przesyłu. Kontrolą poprawności przesyłania danych w tych protokołach zajmują się wyższe warstwy modelu ISO/OSI. | |valign="top"|przez protokoły i aplikacje, które wymagają szybkiego przesyłu. Kontrolą poprawności przesyłania danych w tych protokołach zajmują się wyższe warstwy modelu ISO/OSI. | ||
Linia 124: | Linia 124: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd12.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd12.png|thumb|500px]] | ||
|valign="top"|Szybkość przesyłania segmentów UDP wynika z niewielkiej liczby pól (8 bajtów) w nagłówku oraz braku kontroli przepływu zaimplementowanej w tym protokole. | |valign="top"|Szybkość przesyłania segmentów UDP wynika z niewielkiej liczby pól (8 bajtów) w nagłówku oraz braku kontroli przepływu zaimplementowanej w tym protokole. | ||
Protokół UDP wykorzystuje bardzo prosty format nagłówka, który został przedstawiony na rysunku. | Protokół UDP wykorzystuje bardzo prosty format nagłówka, który został przedstawiony na rysunku. | ||
Linia 139: | Linia 139: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd13.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd13.png|thumb|500px]] | ||
|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. | ||
Linia 157: | Linia 157: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd14.png]] | |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 źródłowego - 16 b - numer portu | ||
Linia 183: | Linia 183: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd15.png]] | |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. | 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 192: | Linia 192: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd16.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd16.png|thumb|500px]] | ||
|valign="top"|2) Serwer odbiera pakiet. Po analizie flagi rozpoznaje, że jest to próba nawiązania połączenia. Serwer rejestruje zatem numer sekwencyjny ‘x’, przydziela dla tego połączenia bufory i zmienne stanu. Odpowiedź będzie zawierała oprócz ustawionego bitu flagi SYN również ustawiony bit flagi ACK. Ustawione bity flag sygnalizują, że będzie to początek konwersji zwrotnej. Serwer wysyła swój własny numer ‘y’ w polu numer sekwencyjny oraz w polu numer sekwencyjny potwierdzenia wysyła wartość ‘x+1’. Wartość wpisana w to ostatnie pole informuje klienta, którą następną porcję bajtów oczekuje serwer. Dodatkowo serwer wysyła rozmiar okna. Wielkość ta informuje klienta o rozmiarze bufora, który został zarezerwowany po stronie serwera na segmenty, które będą przesyłane od klienta. | |valign="top"|2) Serwer odbiera pakiet. Po analizie flagi rozpoznaje, że jest to próba nawiązania połączenia. Serwer rejestruje zatem numer sekwencyjny ‘x’, przydziela dla tego połączenia bufory i zmienne stanu. Odpowiedź będzie zawierała oprócz ustawionego bitu flagi SYN również ustawiony bit flagi ACK. Ustawione bity flag sygnalizują, że będzie to początek konwersji zwrotnej. Serwer wysyła swój własny numer ‘y’ w polu numer sekwencyjny oraz w polu numer sekwencyjny potwierdzenia wysyła wartość ‘x+1’. Wartość wpisana w to ostatnie pole informuje klienta, którą następną porcję bajtów oczekuje serwer. Dodatkowo serwer wysyła rozmiar okna. Wielkość ta informuje klienta o rozmiarze bufora, który został zarezerwowany po stronie serwera na segmenty, które będą przesyłane od klienta. | ||
|} | |} | ||
Linia 200: | Linia 200: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd17.png]] | |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 w 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. | |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 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. | ||
Linia 212: | Linia 212: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd18.png]] | |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. | ||
Linia 226: | Linia 226: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd19.png]] | |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 | ||
Linia 238: | Linia 238: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd20.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd20.png|thumb|500px]] | ||
|valign="top"|W trakcie nawiązywania połączenia TCP ustalane są również zmienne stanu, które określają podstawowe parametry połączenia. Część z nich została przedstawiona na slajdzie. | |valign="top"|W trakcie nawiązywania połączenia TCP ustalane są również zmienne stanu, które określają podstawowe parametry połączenia. Część z nich została przedstawiona na slajdzie. | ||
Linia 250: | Linia 250: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd21.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd21.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} | ||
Linia 258: | Linia 258: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd22.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd22.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} | ||
Linia 266: | Linia 266: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd23.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd23.png|thumb|500px]] | ||
|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. | ||
Linia 278: | Linia 278: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd24.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd24.png|thumb|500px]] | ||
|valign="top"|W trakcie nawiązywania połączenia TCP ustalane są wielkości buforów do przechowywania segmentów TCP zarówno po stronie klienta jak i serwera. Oba hosty będą miały oddzielnie zaimplementowane bufory. Dzięki temu, że wielkość ich została ustalona w procesie inicjacji warstwa transportowa wie w jaki sposób należy sterować przepływem danych. | |valign="top"|W trakcie nawiązywania połączenia TCP ustalane są wielkości buforów do przechowywania segmentów TCP zarówno po stronie klienta jak i serwera. Oba hosty będą miały oddzielnie zaimplementowane bufory. Dzięki temu, że wielkość ich została ustalona w procesie inicjacji warstwa transportowa wie w jaki sposób należy sterować przepływem danych. | ||
|} | |} | ||
Linia 286: | Linia 286: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd25.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd25.png|thumb|500px]] | ||
|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. | ||
Linia 298: | Linia 298: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd26.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd26.png|thumb|500px]] | ||
|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. | ||
Linia 312: | Linia 312: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd27.png]] | |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 | ||
Linia 323: | Linia 323: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd28.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd28.png|thumb|500px]] | ||
|valign="top"|Jak już zostało to wcześniej wspomniane protokół TCP posiada mechanizmy sterowania przepływem. W przypadku, gdy host docelowy nie jest w stanie obsłużyć nadchodzących segmentów wysyła potwierdzenie z wpisanym mniejszym rozmiarem okna. Host wysyłający powinien wtedy zmniejszyć ilość wysyłanych segmentów (rozmiar okna). Sytuacja taka może mieć miejsce, gdy serwer odpytywany jest przez dużą liczbę klientów i nie jest w stanie jednocześnie obsłużyć tych żądań. | |valign="top"|Jak już zostało to wcześniej wspomniane protokół TCP posiada mechanizmy sterowania przepływem. W przypadku, gdy host docelowy nie jest w stanie obsłużyć nadchodzących segmentów wysyła potwierdzenie z wpisanym mniejszym rozmiarem okna. Host wysyłający powinien wtedy zmniejszyć ilość wysyłanych segmentów (rozmiar okna). Sytuacja taka może mieć miejsce, gdy serwer odpytywany jest przez dużą liczbę klientów i nie jest w stanie jednocześnie obsłużyć tych żądań. | ||
Linia 336: | Linia 336: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd29.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd29.png|thumb|500px]] | ||
|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). | ||
Linia 346: | Linia 346: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd30.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd30.png|thumb|500px]] | ||
|valign="top"|Protokół TCP wykorzystuje numery sekwencyjne zarówno przy nadawaniu jak i odbieraniu (numer potwierdzenia). Wynika to z potrzeby zapewnienia niezawodności przesyłania danych. Przy przesyłaniu danych pochodzących z wyższych warstw modelu dane są dzielone na segmenty, a następnie przesyłane do niższych warstw. Ze względu na specyfikę protokołu IP pakiety mogą być przesyłane różnymi ścieżkami. Część z nim może po drodze zostać odrzucona. Po dotarciu do adresata istnieje potrzeba złożenia w całość przesyłanych segmentów. Dzięki stosowanym numerom sekwencyjnym złożenie komunikatu nie jest trudne. Również zaginięcie segmentu łatwo zidentyfikować i dokonać powtórnej transmisji w razie potrzeby. | |valign="top"|Protokół TCP wykorzystuje numery sekwencyjne zarówno przy nadawaniu jak i odbieraniu (numer potwierdzenia). Wynika to z potrzeby zapewnienia niezawodności przesyłania danych. Przy przesyłaniu danych pochodzących z wyższych warstw modelu dane są dzielone na segmenty, a następnie przesyłane do niższych warstw. Ze względu na specyfikę protokołu IP pakiety mogą być przesyłane różnymi ścieżkami. Część z nim może po drodze zostać odrzucona. Po dotarciu do adresata istnieje potrzeba złożenia w całość przesyłanych segmentów. Dzięki stosowanym numerom sekwencyjnym złożenie komunikatu nie jest trudne. Również zaginięcie segmentu łatwo zidentyfikować i dokonać powtórnej transmisji w razie potrzeby. | ||
|} | |} | ||
Linia 354: | Linia 354: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd31.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd31.png|thumb|500px]] | ||
|valign="top"|Mechanizm uzgadniania trójetapowego wykorzystywany jest nie tylko do ustanawiania połączenia, ale również w celu zablokowania dostępu do serwera dla innych klientów. Atak tego typu jest określany jako DoS (ang. Denial of Service) - odmowa świadczenia usługi. | |valign="top"|Mechanizm uzgadniania trójetapowego wykorzystywany jest nie tylko do ustanawiania połączenia, ale również w celu zablokowania dostępu do serwera dla innych klientów. Atak tego typu jest określany jako DoS (ang. Denial of Service) - odmowa świadczenia usługi. | ||
Linia 366: | Linia 366: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd32.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd32.png|thumb|500px]] | ||
|valign="top"|Tabela na slajdzie przedstawia porównanie cech protokołów warstwy transportowej. | |valign="top"|Tabela na slajdzie przedstawia porównanie cech protokołów warstwy transportowej. | ||
|} | |} | ||
Linia 374: | Linia 374: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd33.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd33.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} | ||
Linia 382: | Linia 382: | ||
{| border="0" cellpadding="4" width="100%" | {| border="0" cellpadding="4" width="100%" | ||
|valign="top" width="500px"|[[Grafika:SK_M8_Slajd34.png]] | |valign="top" width="500px"|[[Grafika:SK_M8_Slajd34.png|thumb|500px]] | ||
|valign="top"| | |valign="top"| | ||
|} | |} |
Wersja z 11:06, 21 wrz 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. |
![]() |
![]() |