Tytuł referatu: Porównanie działania protokołów internetowych TCP i
Transkrypt
Tytuł referatu: Porównanie działania protokołów internetowych TCP i
Tytuł referatu: Porównanie działania protokołów internetowych TCP i UDP Autor: Mateusz Alfut Data opracowania: 27.02.2012 1. Protokół TCP Jest to tak zwany protokół gwarantowanego przekazu danych, użytkownik ma pewność że pobierane dane z serwera dotrą do niego bez błędów. Wszystkie dane przesyłane za pomocą TCP są wysyłane w postaci segmentów. Każdy segment posiada sumę kontrolną, używaną przez odbierającego do sprawdzenia, czy dane nie zostały przekłamane. Jeśli dane są poprawne, odbierający wysyła do nadawcy pozytywne potwierdzenie. Gdy odebrane dane są niepoprawne, zostają zignorowane. Do segmentu jest dodawany pseudo nagłówek, odpowiednia liczba zerowych bitów na końcu, aby segment stanowił wielokrotność 16 bitów i dla tak uzyskanego wyniku jest obliczana 16-bitowa suma kontrolna. TCP nie wlicza do długości segmentu ani tego pseudo nagłówka, ani uzupełnienia długości segmentu; nie są one też przesyłane. Przy obliczaniu sumy kontrolnej dodatkowo zakłada się, że samo jej pole jest zerowe. Podobnie jak w przypadku innych sum kontrolnych TCP używa arytmetyki 16-bitowej i wykorzystuje uzupełnienie do jedności sumy obliczanej przy uzupełnianiu do jednego. U odbiorcy odbywają się te same obliczenia, aby sprawdzić, czy segment przybył bez uszkodzeń. Dzięki temu, że w segmencie są adresy zarówno nadawcy jak i odbiorcy, potwierdzenia są generowana automatycznie i natychmiast odsyłane. W przypadku nie odebrania potwierdzenia w określonym czasie serwer automatycznie wysyła go kolejny raz i tak aż do skutku. Dzięki algorytmowi retransmisji ( ponownego wysyłania danych ) z adaptacją, TCP dostosowuje się do zmiennych czasów oczekiwania na potwierdzenia. TCP zapisuje czas wysłania pakietu i czas odbioru potwierdzenia, na ich podstawie ma próbkę czasu potrzebnego na wysłanie pakietu i odbiór potwierdzenia, przy kolejnych próbach średnia ta jest korygowana na bieżąco. W ten sposób TCP dostosowuje się do zmian w wydolności połączeń. Zapychanie sieci pojawia się gdy powstaną zbyt duże opóźnienia między jakimkolwiek z odbiorców a serwerem. Gdy już powstanie przeciążenie, powstają coraz większe opóźnienia, np. na routerze, który musi kolejkować pakiety, które chce wysłać aż do momentu w którym będzie mógł wyznaczyć ich trasy. W najgorszym przypadku liczba pakietów tak wzrośnie, że na routerze zabraknie miejsca i pakiety będą tracone. W celu uniknięcia przeciążenia standard TCP zaleca obecnie używanie dwóch metod: metody powolnego startu i metody wielokrotnego zmniejszania. W celu kontrolowania przeciążenia TCP utrzymuje kolejne ograniczenie zwane ograniczeniem na okno przeciążeniowe lub oknem przeciążeniowym. W stanie ustabilizowanym okno przeciążeniowe jest tej samej wielkości, co okno odbiorcy. Zmniejszanie okna przeciążeniowego zmniejsza ruch, ruch który TCP wprowadza do połączenia. W celu określenia rozmiaru okna przeciążeniowego TCP zakłada, że większość danych, które są gubione, ginie w związku z przeciążeniem. TCP redukuje okno przeciążeniowe o połowę przy każdej utracie danych, przy powtarzających się stratach okno zmniejsza się wykładniczo. Jeżeli pojawia się podejrzenie, że powstało przeciążenie, TCP redukuje wykładniczo natężenie ruchu i częstość retransmisji. Jeżeli tracenie danych trwa, to TCP ogranicza transmisję do jednego segmentu danych i w dalszym ciągu podwaja czas opóźnienia przed retransmisją. Do zwiększenia transmisji TCP wykorzystuje metodę zwaną powolnym startem. TCP ustala okno przeciążeniowe na 1, wysyła początkowy segment i czeka. Gdy nadchodzi potwierdzenie, zwiększa wielkość okna na 2, wysyła 2 segmenty i czeka. Gdy przychodzą potwierdzenia dla tych 2 segmentów, każde z nich powoduje zwiększenie okna przeciążeniowego o 1, TCP może więc wysłać 4 segmenty. Potwierdzenia tych segmentów spowoduje zwiększenie okna przeciążeniowego do 8. Po czterech podróżach w obie strony TCP może wysłać 16 segmentów. W celu uniknięcia zbyt szybkiego wzrostu rozmiaru okna i wywołania dodatkowego przeciążenia TCP dodaje jeszcze jedno ograniczenie. Kiedy okno przeciążeniowe osiąga połowę swojego pierwotnego rozmiaru sprzed przeciążenia, TCP wchodzi w stan unikania przeciążenia i zmniejsza szybkość zwiększenia okna. W stanie unikania przeciążenia okno zwiększane jest o 1 tylko wtedy, gdy wszystkie segmenty w oknie zostały potwierdzone. Stosowanie TCP ma sens tylko w przypadku przesyłania danych które pod żadnym pozorem nie mogą zostać zniekształcone i zależy nam bardziej na jakości tych danych niż na czasie w jakim mamy je pobrać. 2. Budowa TCP Model TCP jest podzielony na cztery warstwy współpracujące ze sobą: Warstwa fizyczna ( dostępu do sieci ) Pierwszą warstwą jest warstwa fizyczna, jak można się sugerować nazwą jest ona związana z „fizyczną częścią internetu” a mianowicie odpowiada ona za komunikację między internetem a naszym komputerem. Nie jest to nic innego jak karta sieciowa lub modem i odpowiednie oprogramowanie w naszym systemie operacyjnym które umożliwia tą komunikację. Warstwa internet Jest to można powiedzieć szkielet internetu, najważniejsza ale prosta warstwa. Zajmuje się przerzucaniem danych z jednego komputera do drugiego. W tej warstwie jeszcze nie są te dane kontrolowane co do jakości mimo iż jest to część TCP. W skład tej warstwy wchodzą trzy mniejsze protokoły: IP ( internet Protocol ) odpowiedzialny za transport danych, ICMP ( internet control massage protocol ) i IGMP ( internet group management protocol ) odpowiedzialne za ustalanie „trasy” między serwerem a klientem. Warstwa transportowa W tej warstwie kontrolowane są przesyłane pakiety, każdy fragment danych jest umieszczany w pakiecie który zawiera parametry o nadawcy, adresacie, rodzaju przesyłanych danych. Ta warstwa jest odpowiedzialna za to aby przesyłane dane dotarły do odbiorcy bez żadnych zniekształceń, dokładniej jest za to odpowiedzialny mechanizm potwierdzeń który wymusza od odbiorcy wysłanie potwierdzenia ze odebrał dane w idealnym stanie, jeśli go nie otrzyma wysyła dane kolejny raz aż do skutku. Warstwa aplikacji Jest to interfejs pozwalający użytkownikowi korzystanie z usług sieciowych. Ta warstwa jest bezpośrednio wykorzystywana przez przeglądarki www, programy pocztowe, chaty. 3. UDP UDP ( user datagram protocol ) jest to protokół który obejmuje warstwę transportową. W przeciwieństwie do TCP w przypadku UDP nie mamy żadnej kontroli nad tym w jakim stanie dotrą do nas dane pobierane z serwera, co więcej nie mamy nawet pewności że w ogóle do nas dotrą. Przy dużym ruchu w sieci pakiety danych mogą po prostu zaginąć po drodze do odbiorcy co w żaden sposób nie przeszkadza w wysyłanie kolejnych pakietów. Jest on głównie wykorzystywany do serwerów multimedialnych w których zgubienie niewielkiej ilości pakietów jest praktycznie niezauważalne dla zwykłego użytkownika, a już na pewno nieszkodliwe. Może co najwyżej objawiać się to chwilowymi zakłóceniami takimi jak w radiu czy telewizji. Serwery takie jednak są dodatkowo wyposażane w kanał sterujący który sprawdza jakość połączenia i dzięki niemu można ograniczyć ilość przesyłanych pakietów przez np. zmniejszenie FPS ( klatek na sekundę ).