plik


ÿþUDP vs TCP Autor: Marcin Koczara IV FDS 1 STRESZCZENIE W sieciach komputerowych u|ywa si wielu protokoBów. W pewnym sensie prawie ka|de dziaBanie w sieci jest wykonywane w oparciu o taki czy inny protokóB. Niektóre z nich dziaBaj na ni|szym poziomie modelu sieciowego OSI, inne na wy|szym, a jeszcze inne pomidzy nimi.[3] W projekcie tym zostan przedstawione gBówne protokoBu warstwy transportowej, ich budowa, zastosowanie i sposób komunikowania si dwóch u|ytkowników za pomoc tych protokoBów. Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 2 SPIS TREZCI Streszczenie...............................................................................................................................1 1. Wstp.....................................................................................................................................3 2. ProtokóB UDP ........................................................................................................................3 2.1 Datagram UDP........................................................................................................4 2.2 PseudonagBówek UDP.............................................................................................4 2.3 Multipleksowanie i demultipleksowanie.................................................................5 2.4 Porty UDP................................................................................................................5 3. ProtokóB TCP...........................................................................................................................6 3.1 Format segmentu TCP.............................................................................................6 3.2 PseudonagBówek TCP..............................................................................................7 3.3 Porty TCP.................................................................................................................7 3.4 Pasywne i aktywne otwarcie....................................................................................8 3.5 Okna TCP.................................................................................................................8 3.6 Przekroczenie czasu i retransmisja..........................................................................9 3.7 Przeci|enia w sieci.................................................................................................9 3.8 Otwieranie poBczenia TCP...................................................................................10 3.9 Zamykanie poBczenia TCP...................................................................................11 3.10 WBasno[ci usBugi niezawodnego dostarczania.......................................................12 3.11 UsBuga zapewniana przez TCP programom u|ytkowym.......................................14 4. ZakoDczenie..........................................................................................................................15 Literatura...................................................................................................................................16 Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 3 1.WSTP Warstwa transportowa jest pierwsz warstw liczc od warstwy fizycznej majc nadzór nad caBo[ci poBczenia midzy stacja zródBow i stacj docelow. Ma ona za zadanie zagwarantowanie niezawodnego i przezroczystego przekazu danych midzy stacjami koDcowymi. W zale|no[ci od typu podsieci komunikacyjnej i jako[ci oferowanych przez nie usBug protokoBy transportowe mog sterowa przepBywem wykorzystujc podobnie jak w warstwie Bcza danych mechanizmy okienkowe oraz realizowa wykrywanie bBdów bdz straconych pakietów gwarantujc tym samym integralno[ przesyBanych wiadomo[ci. Jej dwa najwa|niejsze protokoBy to TCP (Transmission Control Protocol) i UDP (User Datagram Protocol). TCP zapewnia usBugi niezawodnie dostarczajce dane, z wykrywaniem na obu kraDcach bBdów transmisji i ich korekcj. UDP udostpnia usBugi dostarczajce datagramy z maBym narzutem, metod bezpoBczeniow.[6] ProtokóB komunikacyjny to zbiór zasad i norm, których musz przestrzega komunikujce si ze sob obiekty. Poniewa| protokoBy mog by do[ skomplikowane, nadaje im si struktur warstwowa. WedBug modelu OSI (ang. Open Systems Interconnection) wyró|niamy siedem takich warstw. Na samym spodzie wystpuje warstwa fizyczna, nastpnie idc w gór kolejno warstwy Bcza danych, sieciowa, transportowa, sesji, prezentacji i warstwa aplikacji. W ka|dej z wy|ej wymienionych warstw zdefiniowane s osobne protokoBy. Tryb poBczeniowy (ang. connection oriented) polega na ustanowieniu logicznego poBczenia pomidzy dwoma komunikujcymi si ze sob procesami. Aby nawiza komunikacje trzeba najpierw nawiza poBczenie. Z obsBugi poBczeniowej korzysta si wtedy, gdy powstaje potrzeba przesyBania wielu komunikatów w dwu kierunkach. Najlepszym przykBadem takiego poBczenia jest telnet, a protokóB poBczeniowy to TCP. Tryb bezpoBczeniowy (lub obsBuga datagramowa) jest przeciwstawieniem do trybu poBczeniowego. W tym przypadku komunikaty przekazywane s zupeBnie niezale|nie. Typowym przykBadem trybu bezpoBczeniowego jest usBuga poczty elektronicznej, a protokóB bezpoBczeniowy to UDP.[7] 2. PROTOKÓA UDP ProtokóB UDP zapewnia podstawowy mechanizm wykorzystywany przez programy u|ytkowe przy przesyBaniu datagramów do innych programów u|ytkowych, a do rozró|niania poszczególnych programów wykonywanych na pojedynczej maszynie zapewnia on porty protokoBów. Zatem oprócz wysyBanych danych, ka|dy komunikat UDP zawiera numer portu odbiorcy i numer portu nadawcy, dziki czemu oprogramowanie UDP odbiorcy mo|e dostarczy komunikat do wBa[ciwego adresata oraz umo|liwia wysyBanie odpowiedzi. Do przesyBania komunikatów midzy maszynami UDP u|ywa podstawowego protokoBu IP i ma t sam niepewn, bezpoBczeniow semantyk dostarczania datagramów. Nie u|ywa potwierdzeD w celu upewnienia si o dotarciu komunikatów, nie porzdkuje przychodzcych komunikatów i nie zapewnia mechanizmu sprz|enia zwrotnego do kontroli szybko[ci przesyBania danych midzy maszynami. Z tego powodu komunikaty UDP mog by gubione, duplikowane lub przychodzi w innej kolejno[ci ni| byBy wysBane, a tak|e mog przychodzi szybciej ni| odbiorca mo|e je przetworzy. Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 4 Program u|ytkowy korzystajcy z UDP bierze na siebie peBn odpowiedzialno[ za rozwizywanie problemów niezawodno[ci, w szczególno[ci za gubienie komunikatów, ich duplikowanie, opóznienia, dostarczanie w niewBa[ciwej kolejno[ci i utrat Bczno[ci z adresatem. Dlatego te| wiele programów opartych na UDP dobrze pracuje w [rodowisku lokalnym, ale zawodz one w wikszych intersieciach TCP/IP.[2] 2.1 Datagram UDP Ka|dy komunikat UDP nazywa si datagramem u|ytkownika. Datagram taki mo|na podzieli na nastpujce dwie cz[ci: nagBówek UDP i obszar danych UDP. NagBówek skBada si z czterech 16-bitowych pól, które okre[laj port, z którego wysBano komunikat, port odbiorcy, dBugo[ komunikatu i sum kontroln UDP. Bity 0 16 31 Port UDP nadawcy Port UDP odbiorcy DBugo[ komunikatu UDP Suma kontrolna UDP DANE ... Rys 2.1 Format pól w nagBówku datagramu UDP[9] Pola port nadawcy i port odbiorcy zawieraj 16-bitowe numery portów UDP u|ywane do odnajdywania procesu oczekujcego na dany datagram. Pole port nadawcy jest opcjonalne. Gdy jest u|ywane, zawiera numer portu, do którego nale|y wysBa odpowiedz, w przeciwnym razie powinno zawiera zero. Pole dBugo[ zawiera warto[ odpowiadajc liczbie oktetów datagramu UDP, wliczajc nagBówek i dane u|ytkownika. Minimalna warto[ pola dBugo[ wynosi osiem, czyli dBugo[ samego nagBówka. Suma kontrolna UDP jest opcjonalna i nie musi by u|ywana: warto[ zero w polu suma kontrolna oznacza, |e nie obliczono sumy kontrolnej. Jednak|e sumy kontrolne UDP stanowi jedyn gwarancj, |e dane nie zostaBy uszkodzone i mo|na je wykorzysta.[2] 2.2 PseudonagBówek UDP Suma kontrolna UDP dotyczy wikszej ilo[ci informacji ni| sam datagram UDP. W celu wyliczenia tej sumy UDP dodaje na pocztku datagramu pseudonagBówek, na koDcu oktet zer, aby dopeBni datagram do wielokrotno[ci 16 bitów, i wylicza sum kontroln tak uzyskanego obiektu. Oktety dopeBniajce i pseudonagBówek nie s przesyBane wraz z datagramem UDP, nie s te| uwzgldniane w polu dBugo[. W celu wyliczenia sumy kontrolnej oprogramowanie umieszcza najpierw zero w polu suma kontrolna, a nastpnie tworzy 16-bitow sum uzupeBnieD do jedno[ci dla caBego obiektu, w tym pseudonagBówka, nagBówka UDP i danych u|ytkownika. PseudonagBówek jest umieszczony w celu zapewnienia, |e datagram dotarB do wBa[ciwego adresata. Kluczem do zrozumienia pseudonagBówka jest stwierdzenie, |e wBa[ciwy odbiorca jest wyznaczony przez wskazanie konkretnej maszyny i konkretnego portu odbiorcy. NagBówek UDP okre[la jedynie numer portu protokoBu. Dlatego w celu zweryfikowania odbiorcy, UDP na maszynie nadajcej datagram wylicza sum kontroln, która obejmuje zarówno adres IP, jak i datagram UDP. Oprogramowanie UDP odbiorcy sprawdza sum kontroln nadawcy, u|ywajc adresu IP nadawcy uzyskujc z nagBówka datagramu IP, w Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 5 którym wdrowaB komunikat UDP. Je[li sumy si zgadzaj, to datagram dotarB zarówno do wBa[ciwego komputera docelowego, jak i portu na tym komputerze. PseudonagBówek u|ywany przy wyliczaniu sumy kontrolnej UDP skBada si z 12 oktetów danych. Pola oznaczone adres ip nadawcy i adres ip odbiorcy zawieraj adresy IP nadawcy i odbiorcy, które zostan u|yte przy wysyBaniu komunikatu UDP. Pole proto zawiera typ kodu protokoBu IP (17 dla UDP), a pole oznaczone dBugo[ UDP zawiera dBugo[ datagramu UDP (bez pseudonagBówka). W celu sprawdzenia sumy kontrolnej odbiorca musi wyznaczy te pola na podstawie nagBówka IP, zbudowa z nich pseudonagBówek i obliczy sum kontroln. 2.3 Multipleksowanie i demultipleksowanie Teoretycznie wszelkie multipleksowanie i demultipleksowanie midzy oprogramowaniem UDP i programami u|ytkowymi jest realizowane przez mechanizm portów. W praktyce ka|dy program u|ytkowy musi uzyska od systemu operacyjnego port protokoBu i odpowiadajcy mu numer portu, zanim bdzie mógB wysBa datagram UDP. Po przydzieleniu portu ka|dy datagram, który jest wysyBany przez program u|ytkowy przez ten port, bdzie miaB odpowiedni numer portu w polu port nadawcy udp. Przy przetwarzaniu danych wej[ciowych UDP przyjmuje datagramy nadchodzce od oprogramowania IP i demultipleksuje je w zale|no[ci od portu UDP odbiorcy. W wikszo[ci implementacji, gdy program u|ytkowy |da od systemu przydzielenia okre[lonego portu, system tworzy wewntrzn kolejk nadchodzcych komunikatów. Czsto program mo|e poda lub zmieni rozmiar tej kolejki. UDP, otrzymujc datagram, sprawdza, czy numer portu odbiorcy odpowiada któremu[ z obecnie u|ywanych portów. Je[li nie, to wysyBa komunikat ICMP  port niedostpny i porzuca datagram. Je[li który[ z portów pasuje, to UDP umieszcza nowy datagram w kolejce portu, skd program u|ytkowy mo|e go pobra. Oczywi[cie w przypadku przepeBnienia kolejki wystpuje bBd i UDP porzuca datagram.[2] 2.4 Porty UDP Je[li np. komputer A chce uzyska plik od komputera B, to musi wiedzie, jakiego numeru portu u|ywa program przesyBania plików komputera B. Istniej dwa ró|ne podej[cia do problemu przydzielania numerów portów. Jedno z nich opiera si na centralnym autorytecie. Ka|dy zgadza si na przydzielenie numerów portów, wedBug potrzeb, przez wBadz centraln, która publikuje listy przydzielonych numerów. Nastpnie wszelkie oprogramowanie u|ywa numerów okre[lonych na takiej li[cie. To podej[cie jest czasami nazywane powszechnym przyporzdkowaniem, a przydziaB portów powszechnie znanym przydziaBem portów. Drugie podej[cie do zagadnienia przydzielania portów wykorzystuje wizania dynamiczne. W tym przypadku numery portów nie s znane globalnie. Kiedy program potrzebuje portu, zostaje on przydzielony przez oprogramowanie sieciowe. Aby ustali bie|cy przydziaB portów na danym komputerze, trzeba wysBa zapytanie typu  którego portu u|ywa usBuga przesyBania plików? . Maszyna docelowa odpowiada, wysyBajc numer odpowiedniego portu.[2] Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 6 3. PROTOKÓA TCP Aplikacje, które wymagaj od protokoBu transportowego niezawodnego dostarczania danych, u|ywaj protokoBu TCP. ProtokóB ten sprawdza, czy dane dokBadnie dotarBy do miejsca przeznaczenia i czy zrobiB to we wBa[ciwej kolejno[ci. TCP zapewnia niezawodno[ za pomoc mechanizmu zwanego pozytywne potwierdzenie z retransmisj  wysyBa on dane ponownie, dopóki nie otrzyma informacji, |e dane zostaBy poprawnie odebrane. Jednostka danych wymieniana midzy wspóBpracujcymi moduBami TCP nosi nazw segmentu. Ka|dy segment posiada sum kontroln, u|ywan przez odbierajcego do sprawdzenia, czy dane nie zostaBy przekBamane. Je[li dane s poprawne, odbierajcy wysyBa do nadawcy pozytywne potwierdzenie. Gdy odebrane dane s niepoprawne, zostaj zignorowane. Po okre[lonym czasie nadajcy moduB TCP retransmituje dane, na które nie otrzymaB potwierdzenia.[5] 3.1 Format segmentów TCP Mianem segmentu okre[la si jednostkow porcj danych przesyBanych midzy oprogramowaniem TCP na dwu ró|nych maszynach. Segmentów u|ywa si równie| do ustanawiania poBczenia, do przesyBania danych, do potwierdzenia, do wysyBania propozycji okien oraz do zamykania poBczeD. bity sBowa 0 4 8 12 16 20 24 28 31 1 Port nadawcy Port odbiorcy 2 Numer porzdkowy 3 Numer potwierdzenia NagBówek 4 DB. nagB. Zarezerwowane Bity kodu Okno 5 Suma kontrolna Wskaznik pilnych danych 6 Opcje UzupeBnienie 7 DANE ... Rys 3.1 Format segmentu TCP z nagBówkiem[9] Ka|dy segment jest podzielony na dwie cz[ci: nagBówek i dane. Pola port nadawcy i port odbiorcy zawieraj numery portów TCP, które identyfikuj programy u|ytkowe na koDcach poBczenia. Pole numer porzdkowy wyznacza pozycj danych segmentu w strumieniu bajtów nadawcy. Pole numer potwierdzenia wyznacza numer oktetu, który nadawca spodziewa si otrzyma w nastpnej kolejno[ci. Pole dBugo[ nagBówka zawiera liczb caBkowit, która okre[la dBugo[ nagBówka segmentu mierzon w wielokrotno[ciach 32 bitów. Jest ono konieczne, gdy| pole opcje ma zmienn dBugo[ w zale|no[ci od tego, jakie opcje zostaBy obrane. 6-bitowe pole nazwane zarezerwowane jest pozostawione do wykorzystania w przyszBo[ci. Oprogramowanie TCP u|ywa 6-bitowego pola bity kodu do wyznaczania przeznaczenia zawarto[ci segmentu: - URG  wskaznik pilno[ci jest istotny - ACK  pole potwierdzenia jest istotne - PSH  ten segment stanowi pro[b o wypchnicie - RST  skasuj poBczenie - SYN  zsynchronizuj numery porzdkowe - FIN  koniec strumienia bajtów u nadawcy[2] Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 7 3.2 PseudonagBówek TCP Pole suma kontrolna w nagBówku TCP zawiera liczb caBkowit sBu|c do sprawdzania, czy dane i nagBówek nie zostaBy naruszone, a oblicza si ja podobnie jak przy UDP. Do segmentu jest dodawany pseudonagBówek, odpowiednia liczba zerowych bitów na koDcu, aby segment stanowiB wielokrotno[ 16 bitów i dla tak uzyskanego wyniku jest obliczana 16-bitowa suma kontrolna. TCP nie wlicza do dBugo[ci segmentu ani tego pseudonagBówka, ani uzupeBnienia dBugo[ci segmentu; te twory nie s te| przesyBane. Przy obliczaniu sumy kontrolnej dodatkowo zakBada si, |e samo jej pole jest zerowe. Podobnie jak w przypadku innych sum kontrolnych TCP u|ywa arytmetyki 16-bitowej i wykorzystuje uzupeBnienie do jedno[ci sumy obliczanej przy uzupeBnianiu do jednego. U odbiorcy odbywaj si te same obliczenia, aby sprawdzi, czy segment przybyB bez uszkodzeD. PseudonagBówek jest u|ywany w dokBadnie tym samym celu, co w UDP. Umo|liwia on odbiorcy sprawdzenie, czy segment dotarB do swojego rzeczywistego odbiorcy, którego opisuje zarówno adres IP wzBa, jak i numer portu protokoBu. Dla TCP wa|ne s oba adresy: nadawcy i odbiorcy, gdy| TCP u|ywa obydwu do identyfikacji poBczenia. Std, gdy przybywa datagram nioscy segment TCP, IP musi przekaza do TCP oprócz samego segmentu tak|e znajdujce si w nim adresy nadawcy i odbiorcy. PseudonagBówek u|ywany przy wyliczaniu sumy kontrolnej skBada si z 12 oktetów danych. TCP u nadawcy przypisuje polu protokóB warto[, któr bdzie u|ywaB bazowy system dostarczania w swoim polu typu protokoBu. W przypadku datagramów IP przenoszcych segment TCP ta warto[ to 6. Pole dBugo[ TCP wyznacza caBkowit dBugo[ segmentu TCP, która obejmuje równie| nagBówek TCP. U odbiorcy informacje u|ywane w pseudonagBówku s wydobywane z datagramu IP, który przyniósB segment.[2] 3.3 Porty TCP TCP umo|liwia wielu dziaBajcym na jednej maszynie programom u|ytkowym jednoczesne komunikowanie si oraz rozdziela midzy programy u|ytkowe przybywajce pakiety TCP. Podobnie jak protokóB UDP, TCP u|ywa numerów portów protokoBu do identyfikacji w ramach maszyny koDcowego odbiorcy. Ka|dy z tych portów ma przypisan maB liczb caBkowit, która jest u|ywana do jego identyfikacji. Porty TCP s bardziej zBo|one, gdy| dany numer portu nie odpowiada bezpo[rednio pojedynczemu obiektowi. TCP dziaBa, wykorzystujc poBczenia, w których obiektami s obwody wirtualne, a nie poszczególne porty. Podstawowym pojciem TCP jest pojcie poBczenia, a nie portu protokoBowego. PoBczenia s identyfikowane przez par punktów koDcowych. TCP definiuje punkt koDcowy jako par liczb caBkowitych (wzeB, port), gdzie wzeB oznacza adres IP wzBa, a port jest portem TCP w tym wzle. Dwa poBczenia mog równocze[nie na tej samej maszynie u|ywa tego samego portu TCP, gdy| przyporzdkowuje on przychodzce komunikaty poBczeniom, a nie portom protokoBów  u|ywa ono obu punktów koDcowych do zidentyfikowania odpowiedniego poBczenia.[2] Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 8 3.4 Pasywne i aktywne otwarcie W przeciwieDstwie do UDP, TCP jest protokoBem zorientowanym na poBczenia i wymaga, aby obydwa punkty koDcowe zgodziBy si na wspóBprac. Zanim zostan przesBane dane, programy u|ytkowe na obydwu koDcach poBczenia musz porozumie si. W tym celu jeden z programów u|ytkowych wykonuje funkcj pasywnego otwarcia, kontaktujc si z systemem operacyjnym i zaznaczajc, |e akceptuje poBczenie. W tym momencie system operacyjny przypisuje temu koDcowi poBczenia odpowiedni numer portu TCP. Program u|ytkowy na drugim koDcu musi nastpnie u|ywajc funkcji aktywnego otwarcia, skontaktowa si ze swoim systemem operacyjnym. Je|eli ma zosta ustanowione poBczenie, to te dwa moduBu TCP musz si skontaktowa. Z chwil utworzenia poBczenia programy u|ytkowe mog zacz przekazywa dane. ModuBy TCP na obu koDcach wymieniaj komunikaty, które gwarantuj niezawodno[ dostarczania.[4] 3.5 Okna TCP TCP widzi strumieD jako cig oktetów lub bajtów, który dzieli na segmenty przeznaczone do transmisji. Zwykle ka|dy z takich segmentów podró|uje przez intersie w pojedynczym datagramie IP. TCP, aby rozwiza problem efektywnego przesyBania i kontrolowania przepBywu u|ywa specjalizowanego mechanizmu przesuwajcego si okna. TCP umo|liwia wysyBanie wielu segmentów zanim nadejdzie potwierdzenie, dziki czemu zwiksza si przepBywno[, gdy| sie przez caBy czas pracuje. Wersja protokoBu przesuwajcego si oka w TCP rozwizuje te| problem kontroli przepBywu midzy koDcami, zezwalajc odbiorcy na ograniczenie transmisji do momentu, kiedy jego bufory bd miaBy odpowiedni ilo[ wolnego miejsca. Mechanizm przesuwajcych si okien dziaBa w TCP na poziomie oktetów, a nie segmentów lub pakietów. Oktetom w strumieniu danych s nadawane numery porzdkowe, a nadawca utrzymuje zwizane z ka|dym poBczeniem trzy wskazniki. Pierwszy wskaznik wyznacza lewy skraj okna, oddzielajcy oktety, które ju| zostaBy wysBane i potwierdzone, od oktetów, które maj dopiero zosta potwierdzone. Drugi wskaznik wyznacza prawy skraj okna i definiuje najdalszy oktet, który mo|e zosta wysBany, zanim nadejd potwierdzenia. Trzeci wskaznik wyznacza granic wewntrzn okna, która oddziela oktety ju| wysBane od tych, które jeszcze nie zostaBy wysBane. Oprogramowanie protokoBów wysyBa bez |adnego oczekiwania wszystkie oktety z okna, wic granica wewntrz okna porusza si szybko. TCP umo|liwia zmian rozmiaru okna w czasie; ka|de potwierdzenie, które zawiera informacje o liczbie odebranych oktetów zawiera te| propozycj rozmiaru okna, która wyznacza liczb oktetów danych, które odbiorca jest gotów dodatkowo odebra. W odpowiedzi na wiksz propozycj okna, nadawca zwiksza rozmiar swojego przesuwajcego si okna i w dalszym cigu wysyBa oktety. W odpowiedzi na ogBoszenie zmniejszonego okna nadawca zmniejsza rozmiar swojego okna. Zalet u|ywania okien o zmiennym rozmiarze jest taka, |e umo|liwia to zarówno kontrol przepBywu, jak i niezawodne przesyBanie. Je|eli bufory odbiorcy zaczynaj by wypeBnione, to nie mo|e on przyjmowa wikszej liczby pakietów, wysyBa wic propozycj mniejszego okna. W kraDcowym przypadku odbiorca oferuje zerowe okno, co powoduje wstrzymanie przesyBania, a| do momentu gdy znajdzie si miejsce w buforze.[2] Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 9 3.6 Przekroczenie czasu i retransmisja Jeden z najwa|niejszych i najbardziej zBo|onych pomysBów TCP jest zawarty w sposobie obsBugi przekroczenia czasu i retransmisji. Jak inne niezawodne protokoBy, TCP spodziewa si, |e nadawca wysyBa potwierdzenia zawsze, gdy przybywaj nowe oktety strumienia danych. Za ka|dym razem gdy jest przesyBany segment, TCP uruchamia zegar i czeka na potwierdzenie. Gdy wyznaczony czas upBynie zanim zostanie uzyskane potwierdzenie dla danego z segmentu TCP retransmituje go. TCP dostosowuje si do zmiennych czasów oczekiwania w intersieci, wykorzystujc algorytm retransmisji z adaptacj. TCP bada wydolno[ wszystkich poBczeD i okre[la pewn warto[ czasów oczekiwania na potwierdzenie. W miar jak nastpuj zmiany w wydolno[ci poBczeD, TCP zmienia warto[ci tych czasów (tzn. adaptuje si do zmian). Aby zebra dane potrzebne algorytmowi z adaptacj, TCP zapisuje czas, w którym segment jest wysBany i czas, w którym przychodzi potwierdzenie dla danych z tego segmentu. Na podstawie tych dwóch warto[ci TCP oblicza czas, który nazywany jest jako próbka czasu podró|y w obie strony albo jako próbka podró|y w obie strony. Za ka|dym razem gdy TCP uzyskuje now próbk czasu poprawia warto[ [redniego czasu podró|y przy danym poBczeniu.[2] 3.7 Przeci|enia w sieci Przeci|enie to sytuacja, w której powstaBy znaczce opóznienia spowodowane natBokiem datagramów w co najmniej jednym punkcie wymiany pakietów. Gdy powstaje przeci|enie, opóznienia wzrastaj i np. ruter zaczyna kolejkowa datagramy, a| do momentu, gdy bdzie mógB wyznaczy ich trasy. W najgorszym przypadku caBkowita liczba datagramów przybywajcych do przeci|onego rutera ro[nie, a| do zapeBnienia jego pamici, po czym nastpuje tracenie datagramów. W punktach koDcowych zwykle nie s znane szczegóBy tego gdzie i z jakiej przyczyny pojawiBy si przeci|enia. Przeci|enie jest tam widziane jak zwikszone opóznienie. Niestety wikszo[ protokoBów transportowych u|ywa czasów oczekiwania na retransmisj, na zwikszajce si opóznienia reaguj one retransmitujc datagramy. Retransmisje za[ powikszaj przeci|enie zamiast je zmniejsza. Gdyby taka sytuacja byBa niekontrolowana, to zwikszony ruch, powodujc zwikszone opóznienia, prowadziBby do dalszego zwikszenia ruchu i tak dalej a| do momentu gdy sie staBaby si bezu|yteczna. Taka sytuacja znana jest jako zapa[ z powodu przeci|enia. W celu uniknicia tej zapa[ci TCP musi zmniejszy szybko[ transmisji. Routery sprawdzaj dBugo[ kolejek i u|ywaj np. metody tBumienia zródBa w ICMP, która polega na poinformowaniu wzBa, |e pojawiBo si przeci|enie, jednak protokoBy transportowe mog automatycznie pomaga w unikaniu przeci|enia przy zwikszeniu opóznienia, zmniejszajc szybko[ transmisji. W celu uniknicia przeci|enia standard TCP zaleca obecnie u|ywanie dwóch metod: metody powolnego startu i metody wielokrotnego zmniejszania. S one ze sob powizane i Batwe w implementacji. 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 poBczenia. W celu okre[lenia rozmiaru okna przeci|eniowego TCP zakBada, |e wikszo[ datagramów, które s gubione, ginie w zwizku z przeci|eniem. TCP redukuje okno Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 10 przeci|eniowe o poBow przy ka|dej utracie datagramu, przy powtarzajcych si stratach okno zmniejsza si wykBadniczo. Je|eli pojawia si podejrzenie, |e powstaBo przeci|enie, TCP redukuje wykBadniczo nat|enie ruchu i czsto[ retransmisji. Je|eli tracenie danych trwa, to TCP ogranicza transmisj do jednego datagramu i w dalszym cigu podwaja czas opóznienia przed retransmisj. Do zwikszenia transmisji TCP wykorzystuje metod zwan powolnym startem. Uwalnia on intersie od zalania dodatkowym ruchem tu| po zlikwidowaniu przeci|enia oraz przy nagBym pojawieniem si poBczeD. TCP ustala okno przeci|eniowe na 1, wysyBa pocztkowy segment i czeka. Gdy nadchodzi potwierdzenie, zwiksza wielko[ okna na 2, wysyBa 2 segmenty i czeka. Gdy przychodz potwierdzenia dla tych 2 segmentów, ka|de z nich powoduje zwikszenie okna przeci|eniowego o 1, TCP mo|e wic wysBa 4 segmenty. Potwierdzenia tych segmentów spowoduje zwikszenie okna przeci|eniowego do 8. Po czterech podró|ach w obie strony TCP mo|e wysBa 16 segmentów. W celu uniknicia zbyt szybkiego wzrostu rozmiaru okna i wywoBania dodatkowego przeci|enia TCP dodaje jeszcze jedno ograniczenie. Kiedy okno przeci|eniowe osiga poBow swojego pierwotnego rozmiaru sprzed przeci|enia, TCP wchodzi w stan unikania przeci|enia i zmniejsza szybko[ zwikszenia okna. W stanie unikania przeci|enia okno zwikszane jest o 1 tylko wtedy, gdy wszystkie segmenty w oknie zostaBy potwierdzone.[2] 3.8 Otwieranie poBczenia TCP W celu ustanowienia poBczenia TCP musi przesBa trzy komunikaty. Pierwszy segment w tej wymianie mo|e zosta zidentyfikowany, gdy| zawiera on w polu kodu ustanowiony bit SYN. Drugi komunikat ma ustawiony bit SYN i ACK, co wskazuje on, |e potwierdza pierwszy segment SYN oraz |e jest to dalszy cig wymiany komunikatów. KoDcowy krok to tylko potwierdzenie. Jest on u|ywany jedynie do powiadomienia odbiorcy, |e obydwie strony wiedz, |e poBczenie zostaBo ustanowione. Zwykle oprogramowanie TCP na jednej maszynie czeka biernie na dalszy cig wymiany, a oprogramowanie TCP na innej j inicjuje. Wymiana ta jest tak opracowana, aby dziaBaBa nawet wtedy, gdy obydwie maszyny próbuj naraz zainicjowa poBczenie. Wobec tego poBczenie mo|e zosta ustanowione z dowolnego koDca albo z obydwu równocze[nie. Z chwil ustanowienia poBczenia dane mog równie dobrze przepBywa w obydwu kierunkach. Ta trójetapowa wymiana jest zarówno konieczna, jak i wystarczajca do uzyskania poprawnej synchronizacji midzy obydwoma koDcami poBczenia. TCP jest zbudowane na bazie usBugi niepewnego dostarczania pakietów. Komunikaty mog wic by gubione, przychodzi z opóznieniem, by duplikowane oraz dostarczane nie w kolejno[ci. Wobec tego protokóB ten musi u|ywa mechanizmu przekraczania czasów oraz retransmitowa zagubione komunikaty. KBopoty si pojawiaj, gdy podczas ustanawiania poBczenia przybywa pierwotna pro[ba i pro[ba retransmitowana albo je|eli retransmisje pro[by zostaj opóznione i rozpoczynaj si, gdy poBczenie po ustanowieniu i wykorzystaniu zostaje zamknite. Trzykrotna wymiana rozwizuje te problemy.[1] Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 11 Wydarzenia w wzle 1 Komunikaty sieciowe Wydarzenia w wzle 2 WysyBanie SYN nr=x Odebranie segmentu SYN WysBanie SYN nr=y, ACK x+1 Odebranie segmentu z SYN+ACK WysBanie ACK y+1 Odebranie segmentu ACK Rys 3.2 Trójetapowa wymiana komunikatów przy ustanawianiu poBczenia[2] 3.9 Zamykanie poBczenia TCP Dwa programy u|ywajce TCP do komunikowania si mog za pomoc operacji Bagodnego zamykania zakoDczy swoj komunikacj. Wewntrznie TCP przy zamykaniu poBczenia u|ywa zmodyfikowanej trójstopniowej wymiany komunikatów. Gdy program u|ytkowy mówi TCP, |e nie ma ju| wicej danych do wysBania, TCP zamyka poBczenie w jednym kierunku. W celu zamknicia swojej poBowy poBczenia nadajce TCP koDczy przesyBa pozostajce jeszcze dane i czeka, a| odbiorca je potwierdzi, a nastpnie wysyBa segment z ustawionym bitem FIN. TCP odbiorcy potwierdza segment FIN i informuje program u|ytkownika na swoim koDcu, |e wicej danych ju| nie bdzie. Z chwil zamknicia poBczenia w danym kierunku TCP odmawia przyjmowania kolejnych danych stamtd napBywajcych. W tym czasie dane mog dalej pByn w odwrotn stron, dopóki odpowiedni nadawca jej nie zamknie. Nawet po zamkniciu przeciwnej strony poBczenia potwierdzenia nadal bd napBywaBy do nadawcy. Gdy obydwa kierunki ulegaj zamkniciu, oprogramowanie TCP na ka|dym z koDców kasuje zapisy dotyczce tego poBczenia. Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 12 Wydarzenia w wzle 1 Komunikaty sieciowe Wydarzenia w wzle 2 (program u|ytkowy zamyka poBczenie) WysBanie FIN nr=x Odebranie segmentu FIN WysBanie ACK x+1 (poinformowanie programu Odebranie segmentu ACK u|ytkowego) (program u|ytkowy zamyka poBczenie) WysBanie FIN nr=y, ACK x+1 Odebranie segmentu z SYN+ACK WysBanie ACK y+1 Odebranie segmentu ACK Rys 3.3 Zmodyfikowana trójstopniowa wymiana komunikatów u|ywana do zamykania poBczeD[2] Ró|nica midzy trójstopniow wymian u|ywan do ustanowienia poBczenia a t wykorzystywan do zamykania pojawia si wtedy, kiedy maszyna odbiera pierwszy segment FIN. Zamiast natychmiast generowa drugi segment FIN oprogramowanie TCP wysyBa potwierdzenie, a nastpnie informuje program u|ytkowy o propozycji zakoDczenia. Informowanie o tym fakcie programu u|ytkowego oraz otrzymywanie odpowiedzi mo|e zaj znaczco du|o czasu. Potwierdzenie sBu|y do zabezpieczenia przed retransmisj pierwotnego segmentu FIN podczas tego oczekiwania. Gdy program u|ytkowy poinstruuje TCP, |eby zamknBo poBczenie, TCP wysyBa drugi segment FIN, po czym pierwotny wzeB odpowiada trzecim komunikatem ACK.[2] 3.10 WBasno[ci usBugi niezawodnego dostarczania TCP organizuje dwukierunkow wspóBprac midzy warstw IP, a warstwami wy|szymi, uwzgldniajc przy tym wszystkie aspekty priorytetów i bezpieczeDstwa. Musi prawidBowo obsBu|y niespodziewane zakoDczenie aplikacji, do której wBa[nie wdruje datagram, musi równie| bezpiecznie izolowa warstwy wy|sze  w szczególno[ci aplikacje u|ytkownika  od skutków awarii w warstwie protokoBu IP. Scentralizowanie wszystkich tych aspektów w jednej warstwie umo|liwia znaczn oszczdno[ nakBadów na projektowanie oprogramowania. Interfejs midzy programami u|ytkowymi a usBugami niezawodnego dostarczania TCP mo|na scharakteryzowa za pomoc nastpujcych wBasno[ci: " PrzesyBanie strumieniami  gdy dwa programy u|ytkowe (procesy u|ytkownika) przesyBaj du|e ilo[ci danych, my[limy o tych danych jako o strumieniu bitów, który jest podzielony na 8-bitowe oktety nieformalnie nazywane bajtami. UsBuga Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 13 dostarczania strumieniami na maszynie docelowej to przekazanie odbiorcy dokBadnie tego samego cigu oktetów, który na swojej maszynie przekazaB nadawca. " Aczenie w obwód wirtualny  przed rozpoczciem przesyBania, programy u|ytkowe zarówno nadawcy, jak i odbiorcy musz si porozumie z wBasnymi systemami operacyjnymi, informujc je o potrzebie przesyBania za pomoc strumienia. ModuBy oprogramowania protokoBów w obu systemach porozumiewaj si, wysyBajc przez intersie odpowiednie komunikaty sprawdzajce czy transfer zostaB autoryzowany oraz czy obydwie strony znajduj si w stanie gotowo[ci. Po ustaleniu tych szczegóBów moduBy protokoBów informuj programy u|ytkowe, |e poBczenie zostaBo ustanowione i |e mo|na rozpocz przesyBanie. W trakcie komunikacji oprogramowanie protokoBów w dalszym cigu wymienia informacje, które potwierdzaj poprawno[ otrzymywanych danych. Jakiekolwiek zakBócenie komunikacji (np. z powodu awarii osprztu sieciowego na [cie|ce pomidzy nadawc a odbiorc) zostaje wykryte przez obie maszyny i powoduje poinformowanie odpowiednich programów u|ytkowych. Tego typu poBczenie okre[la si mianem obwodu wirtualnego, bo chocia| programy u|ytkowe widz to poBczenie tak, jakby istniaB tutaj specjalny obwód elektroniczny, to niezawodno[ jest zBudzeniem wywoBanym przez usBug dostarczania strumieniami. " PrzesyBanie z u|yciem buforów  programy u|ytkowe przesyBaj strumienie danych obwodami wirtualnymi dziki przekazywaniu kolejnych oktetów danych do oprogramowania protokoBów. Program u|ytkowy przesyBa dane w porcjach, które uwa|a za wygodne, a które mog by nawet wielko[ci jednego oktetu. U odbiorcy oprogramowanie protokoBów dostarcza oktety ze strumienia danych w takim samym porzdku, w jakim zostaBy wysBane, udostpniajc je odbierajcemu programowi u|ytkowemu, po otrzymaniu i sprawdzeniu. Oprogramowanie protokoBów ma swobod przy dzieleniu strumienia na pakiety i mo|e to robi niezale|nie od tego, jak strumieD jest dzielony przez program u|ytkowy. W celu zwikszenia efektywno[ci przesyBania i zminimalizowania ruchu w sieci przyjmuje si zwykle strategi czekania, a| uzbiera si tyle danych ze strumienia, |eby wypeBni datagram o rozsdnej wielko[ci zanim si go wy[le do intersieci. Dziki temu, nawet je[li program u|ytkowy generuje strumieD po jednym bajcie naraz, przesyBanie danych przez intersie mo|e by dosy efektywne. Podobnie je[li program u|ytkowy wygeneruje bardzo du|y blok danych, to oprogramowanie protokoBów mo|e podzieli go do transmisji na mniejsze porcje. Dla tych programów u|ytkowych, w których dane powinny zosta dostarczone, nawet je|eli bufor nie zostaB wypeBniony, udostpnia si mechanizm  wypychania (ang. Push), którego programy u|ytkowe u|ywaj do wymuszania przesyBania. Po stronie nadawcy operacja wypchnicia wymusza na oprogramowaniu protokoBów przesBanie wszystkich tych danych, które zostaBy dotd wygenerowane, bez czekania na wypeBnienie bufora. Po stronie odbiorcy za[ powoduje, |e TCP udostpnia dane programowi u|ytkownika be| opóznienia. " Brak strukturalizacji strumienia  usBuga przesyBania za pomoc strumieni TCP nie uwzgldnia strukturalizacji strumienia danych. Programy u|ytkowe wykorzystujce usBugi przesyBania za pomoc strumieni musz interpretowa zawarto[ strumienia i jeszcze przed rozpoczciem poBczenia zgadza si na format strumienia. " PoBczenie w peBni dwukierunkowe  poBczenia zapewniane przez usBug przesyBania za pomoc strumieni TCP s poBczeniami w peBni dwukierunkowymi (ang. Duplex). Z punktu widzenia programu u|ytkowego poBczenie w peBni dwukierunkowe skBada si z dwu niezale|nych strumieni danych pByncych w przeciwnych kierunkach bez |adnej jawnej interakcji midzy nimi. UsBuga przesyBania za pomoc strumieni pozwala procesowi u|ytkownika na zatrzymanie przepBywu w jednym z kierunków bez zakBócania przepBywu w drugim, co czyni poBczenie poBczeniem poBowicznie Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 14 dwukierunkowym (ang. Half duplex). Przy poBczeniu w peBni dwukierunkowym oprogramowanie protokoBów obsBugujcych mo|e wysyBa nadawcy informacje kontrolne zwizane z jednym strumieniem w datagramach nioscych dane w kierunku przeciwnym, co jest jego zalet. Powoduje to zmniejszenie ruchu w sieci. Rozpatrujc TCP z punktu widzenia funkcjonalno[ci mo|na potraktowa jego prac jako ustanowienie kanaBu wirtualnego realizujcego komunikacj midzy  koDcówkami  tak wyglda to z punktu widzenia programu u|ytkownika.[8] 3.11 UsBuga zapewniana przez TCP programom u|ytkowym Z punktu widzenia programu u|ytkowego usBuga oferowana przez TCP ma siedem gBównych cech: " Zorientowanie na poBczenie  TCP zapewnia usBug zorientowan poBczeniowo, w której program u|ytkowy musi najpierw poprosi o poBczenie do odbiorcy, aby nastpnie u|ywa go do przesyBania danych. " Komunikacja punk-do-punktu  ka|de poBczenie TCP ma dokBadnie dwa koDce. " PeBna niezawodno[  TCP gwarantuje, |e dane wysyBane poBczeniem bd dostarczone dokBadnie tak, jak byBy wysBane, bez |adnych braków czy dostarczania nie w kolejno[ci. " Komunikacja w peBni dwukierunkowa  poBczenie TCP pozwala, |eby dane przepBywaBy w ka|dym kierunku, a ka|dy program mo|e wysyBa dane w dowolnym momencie. TCP umo|liwia buforowanie wychodzcych i przychodzcych danych z obu kierunków, co pozwala programom na wysyBanie danych i dalsze wykonywanie obliczeD, podczas gdy te informacje s przesyBane. " Interfejs strumieniowy  oprogramowanie TCP zapewnia interfejs strumieniowy, w którym program wysyBa poBczeniem cigB sekwencj oktetów. Oznacza to, |e TCP nie udostpnia pojcia rekordu oraz nie gwarantuje, |e dane zostan dostarczone do programu odbierajcego w kawaBkach tego samego rozmiaru co wysyBane przez program nadajcy. " Niezawodne tworzenie poBczenia  protokóB TCP wymaga, aby dwa programy tworzce poBczenie, musiaBy si na nie zgodzi; duplikaty pakietów u|ywanych w poprzednich poBczeniach nie bd wygldaBy jak prawidBowe odpowiedzi ani te| w inny sposób nie bd zakBóca nowego poBczenia. " Aagodne koDczenie poBczenia  program u|ytkowy mo|e otworzy poBczenie, wysBa dowoln ilo[ danych, a nastpnie poprosi, aby poBczenie zostaBo zamknite. ProtokóB TCP gwarantuje niezawodne dostarczenie wszystkich danych przed zamkniciem poBczenia.[4] Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 15 4. ZAKOCCZNIE Wikszo[ systemów komputerowych umo|liwia jednoczesne wykonywanie wielu programów u|ytkowych. ProtokóB UDP sBu|y do rozró|niania procesów pracujcych na danym komputerze, umo|liwiajc nadawcy i odbiorcy dodanie do ka|dego komunikatu UDP dwóch 16-bitowych liczb nazywanych numerami portów. Numery portów identyfikuj nadawc i odbiorc. Niektóre numery portów UDP, nazywane powszechnie znanymi, s przydzielone na staBe i honorowane w obrbie caBego internetu, inne s dostpne dla dowolnych programów u|ytkowych. UDP nie zmienia zbytnio semantyki IP. Dostarcza jedynie programom u|ytkowym mo|liwo[ komunikowania si za po[rednictwem zawodnego bezpoBczeniowego mechanizmu dostarczania pakietów. Komunikaty UDP mog gin, by duplikowane, opózniane lub dostarczane w innej kolejno[ci ni| byBy wysyBane. Program u|ytkowy korzystajcy z UDP musi sam radzi sobie z tymi problemami.[2] ProtokóB UDP sBu|y temu samemu zadaniu co TCP, dysponuje jednak mniejsz liczb funkcji. Zarówno pakiety TCP, jak i UDP s przenoszone w pakietach IP, ale jedyn funkcj zapewnienia niezawodno[ci, jak dysponuje UDP jest ponowne rozsyBanie pakietów, które nie dotarBy do adresu docelowego. GBówn zalet UDP jest znacznie wiksza prdko[ w najprostszych poBczeniach sieciowych, takich jak wysyBanie strony internetowej do komputera-klienta. Poniewa| UDP nie posiada wielu funkcji sprawdzania i usuwania bBdów, powinien by u|ywany jedynie wtedy, je[li nie ma dla nas wikszego znaczenia, |e dane czasami zagubi si midzy punktami, lub gdy oprogramowanie jest w stanie samo przeprowadzi kontrol i usun bBdy.[3] ProtokóB TCP opisuje najwa|niejsz usBug oferowan przez intersie  dostarczanie pewnymi strumieniami. TCP zapewnia w peBni dwukierunkowe poBczenie midzy dwoma maszynami, co umo|liwia efektywn wymian du|ych ilo[ci danych. TCP u|ywa protokoBu przesuwajcego si okna, dziki czemu sie mo|e by efektywnie wykorzystana. ProtokóB ma niewiele zaBo|eD i jest na tyle elastyczny, |e mo|e dziaBa w wielu systemach. TCP realizuje kontrol przepBywu, umo|liwiajc nadawcy proponowanie, ile danych mo|e on przyj. Dziki mo|liwo[ci specyfikowania pilno[ci danych komunikaty mog by przesyBane poza pasmem transmisyjnym, a dziki mechanizmowi wypychania  przenoszenie danych mo|na wymusi. Obecny standard TCP okre[la wykBadnicze wydBu|anie czasów oczekiwania na retransmisj oraz algorytmy unikania przeci|enia, takie jak powolny start, wielokrotne zmniejszanie oraz stopniowe zwikszanie. Dodatkowo TCP u|ywa algorytmów heurystycznych sBu|cych do zapobiegania przesyBaniu maBych pakietów.[2] Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003 16 LITERATURA [1]. Stevens W. Richard  UNIX: programowanie usBug sieciowych , WNT, Warszawa 2002 [2]. Douglas Comer  Sieci komputerowe: intersieci , WNT, Warszawa 2000 [3]. Bruce Hallberg  Sieci komputerowe, kurs podstawowy ,  Edition2000 , Kraków 2001 [4]. Douglas E. Comer  Sieci komputerowe TCP/IP. Zasady, protokoBy i architektura , WNT, Warszawa 1997 [5]. Craig Hunt  TCP/IP  administracja sieci , Oficyna Wydawnicza Read Me, Warszawa 1996 [6]. Nowicki K. Wozniak J.  Sieci LAN, MAN, WAN  protokoBy komunikacyjne Wydawnictwo Postpu Technicznego, Kraków 1998 [7]. http://rainbow.mimuw.edu.pl/SO/Linux/index08.html [8]. http://main.amu.edu.pl/~psi/informatyka/tcpip/ [9]. http://www.net.pagina.pl/5transportowa.htm Politechnika Rzeszowska im. Ignacego Aukasiewicza ZakBad Systemów Rozproszonych Rzeszów 2003

Wyszukiwarka

Podobne podstrony:
Using LabVIEW with TCP IP and UDP
Modyfikacje Win Xp Jak Wykryć, Który Program Korzysta Z Danego Portu Tcp Udp
Sieci UDP TCP
Lista portów TCP i UDP używanych przez Apple
WST TCP UDP Ster przep ppt
Opis zawodu Ankieter
Opis
156792 re ct discussion anonymous vs cartels
FUNFACE DOS OPIS
Diagnostyka OBD EOBD OBD2 Opis VAG COM
Opis wspólnoty z Rybna
Opis
EU1 sem09 10 opis
Opis
opis bitwy

więcej podobnych podstron