Protokoły transportowe
Transkrypt
Protokoły transportowe
1. Cel ćwiczenia UNIWERSYTET KAZIMIERZA WIELKIEGO Celem ćwiczenia jest zapoznanie z funkcją protokołów warstwy transportowej TCP i UDP. Zaprezentowane zostaną możliwości połączeniowego protokołu TCP. Dzięki pojęciu portu w oprogramowaniu, możliwe będzie rozróżnienie aplikacji odbiorczych dla zawartości napływających segmentów. Dalej scharakteryzowany zostanie mechanizm translacji adresów NAT i NAPT oraz forwardowanie portów. Wydział Matematyki Fizyki i Techniki Zakład Teleinformatyki 2. Podstawy teoretyczne 2.1. Cel stosowania warstwy transportowej Protokoły warstwy 4 zapewniają przekazywanie danych między aplikacjami użytkownika przy wykorzystaniu dostępnych technologii w warstwie sieciowej. Aplikacje często dążą do przesłania zbioru lub strumienia danych o wielkości niedopasowanej do maksymalnej wielkości pola danych w pakiecie. Konieczny jest zatem podział napływającego strumienia na mniejsze porcje zwane segmentami TCP lub pakietami UDP. Drugim kluczowym zadaniem warstwy transportowej jest odbieranie segmentów otrzymanych z warstwy sieci i dostarczanie do oczekujących procesów oprogramowania hosta. Warstwa sieci przekazuje pakiety między hostami, nie rozróżnia aplikacji, demonów lub usług sieciowych uruchomionych na pojedynczej stacji. Protokoły warstwy transportowej muszą zatem być uruchomione na hostach. Nie są używane w rdzeniu sieci, rutery pracują w warstwie 3. Laboratorium Sieci Komputerowych 2.1.1. Pojęcie portu i gniazda Aby rozróżnić procesy i aplikacje uruchomione na hoście wprowadzono pojęcie portu, czyli wirtualnego punktu dowiązania komunikacji do procesu oprogramowania. Dla każdego z protokołów warstwy transportowej stosuje się osobną przestrzeń adresową portów, którą została podzielona następująco: 1...1023 – porty ogólnie znane (porty niskie), 1024…65535 – zarejestrowane (porty wysokie). Lista portów niskich została zdefiniowana w [3], popularnym aplikacjom zostały przypisane następujące porty TCP: 21 FTP - File Transfer Protocol 22 SSH - Secure Shell 23 TELNET – nieszyfrowany zdalny dostęp do hosta 25 SMTP - Simple Mail Transfer Protocol 53 DNS - Domain Name Server 80 World Wide Web http 88 Kerberos 110 Post Office Protocol - Version 3 115 Simple File Transfer Protocol 443 HyperText Transfer Protocol Secure ćwiczenie: 9 Protokoły transportowe prowadzący: mgr inż. Piotr Żmudziński [email protected] Wymiana informacji następuje między dwoma gniazdami, czyli parami adres_IP_hosta + port_protokół_transportowy, jak pokazano na Rys.1. Jeżeli wykorzystywany jest protokół TCP, mówi się o połączeniu między gniazdami ze względu na konieczny proces jego zestawienia lub zerwania. pakietu UDP lub Bydgoszcz 2011r. (c) P.Żmudziński 12.2010r. ver.3.0 1 segmenty TPC enkapsulowane są w pakietach protokołu IP i przesyłane zgodnie z zasadami rutingu tej sieci. Tab. 2 Budowa segmentu TCP słowa warstwa transportowa (TCP / UPD) bity 0 1 warstwa sieciowa ( IP) warstwa fizyczna (Ethernet) system pośredniczący RUTER system końcowy A łącze PRZEŁĄCZNIK 8 12 16 20 24 1 Port źródłowy Port przeznaczenia 2 Długość Suma kontrolna 3… Port źródłowy 20 Przes. Zarezerw. 24 31 Port przeznaczenia Numer potwierdzenia 7… Flagi Okno Suma kontrolna Wskaźnik pilności Opcje Uzupełnienie DANE Znaczenie pola port źródłowy / port przeznaczenia [16b] jest takie jak poprzednio. Pole numer kolejny [32b] oznacza kolejny numer bajtu wiadomości przed fragmentacją będącego pierwszym bajtem w polu dane. Jeżeli flaga SYN=1 to numer pole przenosi inicjujący numer kolejny ISN (Initial Sequence Number). Pole potwierdzenie numeru [32b] jeśli flaga ACK=1 zawiera wartość następnego numeru, który nadawca spodziewa się otrzymać. Jest on jednocześnie potwierdzeniem poprawnego odebrania bajtów o numerach kolejno mniejszych od zawartego w tym polu. Przesunięcie [4b] liczba 32-bitowych słów w nagłówku TCP, pole konieczne ze względu na zmienną długość nagłówka. Pole zarezerwowane [6b] do wykorzystania w przyszłości, obecnie powinno mieć wartość 0. Flagi [6b] służą do przesyłania dodatkowych informacji o połączeniu: − URG — oznaczenia pola pilnego wskaźnika, − ACK — oznaczenia pola potwierdzenia, − PSH — funkcja przepychania (wymuszanie wysłania segmentu), − RST — zresetuj połączenie (natychmiastowe zakończenie), − SYN — ustawiona podczas nawiązywania połączenia oznacza, że w polu Numer kolejny, umieszczony jest ISN; używana do synchronizacji numerów kolejnych podczas nawiązywania połączenia, − FIN — koniec połączenia. Okno [16b] – to liczba bajtów, które nadawca zgodzi się przyjąć. Pole to służy do sterowania przepływem danych. Okno o wartości zero informuje nadawcę, że powinien wstrzymać transmisję, dopóki nie otrzyma segmentu z inną. Opcje [0-44b] przenoszenie dodatkowych informacji, wielokrotność 8b. Uzupełnienia uzupełnia w razie potrzeby pole Opcje do wielokrotności 32b. wartością w tym polu. bity 4 16 3 6 Tab. 1 Budowa pakietu UDP 0 12 Numer kolejny 5 2.2. Protokół UDP (User Datagram Protocol) Protokół pakietów użytkownika świadczy usługę bezpołączeniowego dostarczania pakietów tzn. nie ustanawia w żaden sposób połączenia i nie sprawdza gotowości odległego hosta do odebrania przesyłanych danych oraz poprawności ich dostarczenia. Host wysyła porcję danych i nie sprawdza w żaden sposób, czy dotarły do celu. Dzięki takiemu uproszczeniu funkcji zmniejszona została ilość przesyłanych informacji kontrolnych, co zwiększa efektywność tego protokołu. Protokół wykorzystywany w usługach strumieniowych pracujących w czasie rzeczywistym (VoIP, VoD) oraz przez aplikacje rozsiewcze np. emisja programów radiowych czy wideo. 8 2 4 system końcowy B Rys. 1 Komunikacja między systemami końcowymi słowa 4 31 DANE Nagłówek UDP jest niewielki. Pola adresów [16b] oznaczają porty źródłowy i docelowy, do których dowiązane są aplikacje wymieniające wiadomości przez sieć. Pole długość pakietu UDP liczone jako suma nagłówka i pola danych. Suma kontrolna obliczona jest na podstawie nagłówka i pola danych. 2.3. Protokół TCP (Transmission Control Protocol) Dla aplikacji wymagających bezbłędnej transmisji danych zastosowanie ma protokół TCP, który jest protokołem połączeniowym i niezawodnym. TCP dostarcza dane między końcami połączenia niezawodnie, posiada wbudowane mechanizmy: − potwierdzania przesyłanych segmentów, − retransmisji zagubionych segmentów, − sortowania odebranych segmentów, jeśli otrzymano w złej kolejności, − usuwania duplikatów otrzymanych segmentów. Podstawowym pojęciem TCP jest pojęcie połączenia, czyli dwukierunkowa komunikacja między dwoma gniazdami. Nie należy połączenia w aspekcie TCP mylić z (c) P.Żmudziński 12.2010r. ver.3.0 2 potocznie używanym słowem połączenie, także widocznym w systemie Windows2000 oznaczającym łączność z przełącznikiem bądź możliwość wysyłania/ odbierania pakietów IP przez sieć. Host1 Proces 1, IP1, Port1 Wyjście Wejście Wejście Wyjście Host2 Proces 2, nr IP2, Port2 Rys. 2 Multipleksacja połączeń TCP w pojedynczym łączu Wiele połączeń TCP może współdzielić pojedyncze łącze sieciowe pozwalając użytkownikowi uruchomić lub korzystać z wielu usług sieciowych. Przykład komunikacji stacji sieciowej pokazano na Rys.2. W celu zapewnienia niezawodności przesyłania danych wykorzystuje się mechanizm potwierdzenia z retransmisją (Positive Acknowledgement with Retransmission). Dane przesyłane dopóty, dopóki system wysyłający nie otrzyma potwierdzenia przesłania bezbłędnego. Każdy segment TCP zawiera sumę kontrolną wykonywaną przez odbiorcę do sprawdzenia poprawności przesłanych danych. Jeżeli otrzymano segment bezbłędny wysyłane jest potwierdzenie. Jeśli nadawca nie otrzyma przez pewien czas potwierdzenia wysyła segment powtórnie. 2.4. Realizacja połączenia za pomocą TCP Do każdego portu TCP może być realizowanych wiele połączeń, co jest praktyką powszechnie stosowaną w serwerach www, gdzie klienci łączą się z serwerem o znanym adresie i porcie usługi http, z którym związany jest np. demon httpd obsługujący usługę przeglądanie stron www. Rys. 3 Przykład połączeń protokołu TCP 2.4.1. Nawiązywanie połączenia TCP jest protokołem połączeniowym, zatem przed wysłaniem pierwszego bajtu aplikacji konieczne jest nawiązanie połączenia, którego celem jest stwierdzenie czy obie strony komunikacji są gotowe do wymiany informacji oraz uzgodnienie wielkości przesyłanych segmentów. W tym celu wykorzystywany jest mechanizm trzyetapowego porozumienia (threeway handshake). Pierwszy segment, z numerem sekwencyjnym (Nr_sek) o wartości x, wysyłany przez stronę A, jest rozróżniany przez ustawienie flagi SYN i stanowi żądanie nawiązania połączenia. Strona B po otrzymaniu tego segmentu wysyła zgodę na nawiązanie połączenia dodając swój własny numer sekwencyjny y i potwierdzenie dla strony A (ACK=x+1). Jeśli wiadomość ta zostanie odebrana poprawnie, strona A uznaje połączenie za nawiązane i wysyła potwierdzenie nawiązania połączenia dla stacji B (ACK=y+1). Po otrzymaniu segmentu potwierdzającego obie strony są gotowe do wymiany danych oraz posiadają uzgodnione numery sekwencyjne. (c) P.Żmudziński 12.2010r. ver.3.0 3 Rys. 4 Proces nawiązania połączenia (u góry) i rozłączenia (u dołu) Proces rozłączenia jest bardzo podobny, każda ze stron oddzielnie kończy połączenie i otrzymuje potwierdzenie. Rys.5 Graf stanów gniazda TCP 2.5. Stan gniazda Korzystając z Internetu pewna grupa programów inicjuje połączenia do zdalnych hostów, inne umożliwiają połączenie do danego hosta. Nawiązywanie połączenia realizowane jest przy pomocy wcześniej opisanego mechanizmu gniazd. Oprogramowanie gniazda, będące częścią systemu operacyjnego, może znajdować się w różnym stanie w zależności od przebiegu scenariusza połączenia. Na rysunku 5 przedstawiony został graf stanów i przejść zaimplementowany w systemie Linux 2.6. Odwzorowanie portów i adresów Ze względów bezpieczeństwa pewne organizacje nie życzą sobie, aby istniała możliwość nawiązywania połączenia z hostami znajdującymi się wewnątrz ich sieci. Dobrym rozwiązaniem jest ukrycie hostów przez zmianę adresowania publicznego na adresowanie z klas prywatnych. Niezbędna komunikacja z sieciami zewnętrznymi realizowana jest przez ruter realizujący mechanizm NAT (Network Address Translation), implementowany powszechnie w ruterach dostępowych. Kolejną przyczyną stosowania translacji adresów jest chęć dołączenia całej sieci prywatnej dysponując niewystarczającą liczbą adresów publicznych, w przypadku skrajnym, mając jeden publiczny adres IP. Jest to powszechna sytuacja, ponieważ dostawcy usług dostępu do Internetu (ISP) często przypisują każdemu łączu technologii xDSL jeden adres IP. 2.6.1. Prosty NAT (Basic Network Address Translation) (c) P.Żmudziński 12.2010r. ver.3.0 4 Polega na odwzorowaniu prywatnej klasy adresowej na publiczną klasę adresów o tej samej liczności. Dzięki temu stacje sieci lokalnej posiadające adresy prywatne (np. z klasy 192.168.x.x) widoczne są na zewnątrz pod zupełnie innymi adresami. Na powracających pakietach dokonywana jest operacja odwrotna. Przykładem może być odwzorowanie 192.168.1.0/24 na 197.197.197.0/24. Prezentowaną translację często nazywa się statyczną. W wychodzącym pakiecie zmieniane są: Adres źródła, a co za tym idzie i Suma kontrolna nagłówa. Pola, które mogą się zmienić, to: Długość całkowita, Przesunięcie fragmentacji, Numer kolejny, Numer potwierdzenia. Wymienione pola wyróżniono w Tab.3. nagłówków. Pola, które mogą się zmienić, to: Długość całkowita, Przesunięcie fragmentacji, Numer kolejny, Numer potwierdzenia (Tab.4). Tab.3 Pola TCP/IP zmieniane przez prosty NAT bity 2 3 Wersja 8 IHL 12 16 Typ usługi Identyfikator Czas życia 20 31 Długość całkowita Przesunięcie fragmentacji Suma kontrolna 4 Adres źródła 5 Adres przeznaczenia 7 28 Flagi Protokół 6 24 Opcje Port źródłowy Uzup. Port przeznaczenia 8 Numer kolejny 9 10 11 12 Numer potwierdzenia Przes. Zarez. Flagi Okno Suma kontrolna Wskaźnik pilności Opcje Uzupełnienie 13… DANE ... Rys. 6 Połączenie z siecią WAN za pomocą NAPT W literaturze często spotyka się nieprecyzyjne używanie nazw machanizmów translacji. Niektóre podręczniki nie rozróżniają rodzaju translacji, wszystkie możliwości ukryte są pod akronimem NAT, w innych przypadkach używany jest zamiennie z NAPT – PAT (Port Address Translation). Ze względu na możliwość manipulacji adresami IP i portami w pakiecie, powstało kilka ciekawych rozwiązań pozwalających udostępnić usługi sieciowe na zewnątrz sieci za NAP. Mechanizm ten nazywa się przekazywaniem portów (port forwarding) i pozwala na przekazywanie wszystkich połączeń skierowanych na dany port adresu zewnętrznego rutera, na wskazany port serwera w sieci prywatnej. Dla zwiększenia bezpieczeństwa należy stosować strefy DMZ (Demilitarized Zone). 2.6.2. NAPT (Network Address Port Translation) Odmianą translacji jest NAPT pozwalający odwzorować całą sieć prywatną na jeden adres IP. Aby tego dokonać, musimy znaleźć element, na podstawie, którego możliwe będzie rozróżnienie pakietów przy odwzorowaniu powrotnym. W tym celu wykorzystuje się integralną cechę protokołów transportowych – istnienie 216 portów. Przykład realizacji NAPT pokazany jest na Rys.6, adresy sieci lokalnej 192.168.1.0/24 tłumaczone są na jeden adres zewnętrzny 197.197.197.1/24. Host o adresie 192.168.1.13 rozpoczyna transmisję z losowo wybranego portu np. 1321. Po przejściu przez ruter segment ma adres źródłowy 197.197.197.1 i port 2222 (wylosowany przez ruter). Realizując NAPT, ruter tworzy i utrzymuje tablicę translacji gniazd aby istniała możliwość nawiązania połączenia zwrotnego. Mechanizm NAPT umożliwia zmianę: Adres źródła, Port źródłowy i Sumy kontrolne Tab.4 Pola TCP/IP zmieniane przez NPAT słowa bity 0 1 (c) P.Żmudziński 12.2010r. ver.3.0 5 Wersja 4 8 IHL 12 Typ usługi 16 20 24 Długość całkowita 28 31 ó w e k 1 4 Nagłówek IP 0 Nagłówek TCP słowa 3 Identyfikator Czas życia Protokół 4 Adres źródła 5 Adres przeznaczenia 6 7 2.8. Interfejs administracyjny rutera Repotec IP-515 Po zalogowaniu do urządzenia na domyślny adres 192.168.0.1 (hasło puste), dostępny jest panel administracyjny urządzenia. Z menu w lewym panelu można wybrać kilka podstron grupujących logicznie opcje konfiguracyjne. W lewym panelu pogrupowane są strony związane z konfiguracją oraz weryfikacją ustawień rutera. Przesunięcie fragmentacji Suma kontrolna Flagi Opcje Port źródłowy Uzup. Port przeznaczenia 8 Numer kolejny 9 10 11 12 13… Numer potwierdzenia Przes. Zarez. Flagi Okno Suma kontrolna Wskaźnik pilności Opcje Uzupełnienie DANE ... Nagłówek TCP 2 2.7. Przekierowanie portów (PF Port Forwarding) Przekierowanie portów jest techniką pozwalającą na uzyskanie dostępu do wybranych aplikacji uruchomionych na hostach w sieci prywatnej przez hosty z sieci publicznej. Ponieważ sieć prywatna przyłączona jest do publicznej sieci IP za pomocą rutera z funkcjonalnością NAT, komputery w sieci prywatnej nie są z zewnątrz identyfikowane. Aby zrealizować PF należy utworzyć logiczne przekierowanie ruchu z gniazda (socket) po stronie WAN na gniazdo po stronie LAN. Mechanizm PF często wykorzystywany jest do udostępniania usług do do sieci publicznej np. FTP, WWW czy VNC. Rys. 8 Konfiguracja interfejsu WAN Rys. 7 Połączenie z siecią WAN za pomocą NAPT Konfiguracja PF na Rys. 7 polega na wprowadzeniu relacji 10.10.10.100:80 <-- --> 192.168.0.3:80 (c) P.Żmudziński 12.2010r. ver.3.0 6 Rys. 9 Konfiguracja portu LAN Rys. 11 Przekierowanie popularnych portów usług (Virtual Server) Rys. 12 Przekierowanie portów dla dowolnych usług (User Defined Virtual Server) Rys. 10 Zaawansowane usługi rutera W menu Advanced Internet dostępne są dwa menu związane z konfiguracją przekierowania portów – PF. (c) P.Żmudziński 12.2010r. ver.3.0 7 3. Zagadnienia do przestudiowania 1. 2. 3. 4. W jaki sposób TCP realizuje niezawodność połączenia Co to jest kontrola przepływy i jak realizowana jest w TCP Co to jest mechanizm szybkiego startu i reguła karna Czym różni się implementacja Tahoe od Reno 4. Bibliografia [1] Vademecum teleinformatyka I / II / III, Warszawa, IDG 2002-2006 [2] K. Krysiak, Sieci komputerowe – Kompendium, wydanie I / II, Helion, Gliwice 2003 / 2006 [3] M. Hassan, R.Jain: Wysoko wydajne sieci TCP/IP, Gliwice, Helion 2004 [4] http://www.tele.pw.edu.pl/stin/doc/stin_tcp.pdf (c) P.Żmudziński 12.2010r. ver.3.0 8 5. Przebieg ćwiczenia 1. 2. Ćwiczenie 9 realizowane jest na stanowisku oznaczonym literą A, z wykorzystaniem PC1/2/3 oraz ruterów Repotec IP-515 oraz Cisco 2601. Wymagane oprogramowanie to platforma Windows, aplikacja Ability server, oraz analizator protokołów WireShark. Do realizacji ćwiczenia wybrano prosty ruter segmentu SOHO, który wykorzystywany jest do współdzielenia łącza w technologii Ethernet. Ruter R10 będzie symulował dowolny serwer Internetowy z usługami: www, telnet, SSH i został skonfigurowany przed zajęciami. 5.2. Identyfikacja stanów portów w TCP W trakcie zajęć używane będzie jedynie połączenie LAB skojarzone z kartą RTL. Pozostałe połączenie sieciowe należy wyłączyć. 1. 2. 2. 3. 4. 5.1. Identyfikacja portów nasłuchiwania Na PC3 uruchomić aplikację Ability Server Sprawdzić stan portów na PC3 (), w linii komend wydać polecenie netstat, polecenie można wyposażyć w przełącznik: –a wyświetla wszystkie aktywne połączenia i porty nasłuchiwania, –o powala wyświetlić PID lokalnego procesu skojarzonego z danym portem –s pozwala uzyskać statystykę aktywności, –n rozwiązuje adresy domenowe na IP. 1. 2. 3. 4. Połączyć sieć zgodnie ze schematem Rys.13 Skonfigurować adresacją IP dla hostów zgodnie z rysunkiem. Za pomocą przeglądarki internetowej PC2 zalogować się do panelu administracyjnego rutera IP515 na domyślny adres: 192.168.0.1. Hasło domyślnie jest puste. Zapoznać się z interfejsem administracyjnym urządzenia. Skonfigurować interfejsy WAN i LAN zgodnie z opisem Rys.13 W menu WAN > Direct Connection to ISP > Fixed IP Addess wpisać odpowiedni adres. W menu LAN skonfigurować adres wewnętrzny. Uruchomić na PC1 rejestracje ramek za pomocą programu WireShark. Otworzyć na PC2 stronę www z adresu 10.10.10.254 Ustanowić sesję telnet z PC2 do 10.10.10.254 (hasło: cisco) Wyświetlić stan portów na PC2 (netstat i netstat –n) () 5.3. Realizacja mechanizmu NAT / NAPT 1. W sieci jak na Rys.13, uruchomić na wszystkich hostach rejestrację ramek 2. Nawiązać sesję telnet z PC2 do serwera 10.10.10.254 Przeanalizować ruch zarejestrowany w obu segmentach sieci Rys.6 (). Zwrócić szczególną uwagę na pola adresów IP oraz numery portów źródłowych i docelowych połączenia. Zaznaczyć numer portu wychodzącego z rutera po stronie WAN. Połączyć oba znaczniki. Podobnie połączyć linią port wyjściowy rutera z portem serwera telnet. W prostokątach wpisać odpowiednie adresy IP. 3. 4. 5. 1. 2. 3. 4. 5. Rys. 13 Konfiguracja sieci laboratoryjnej 6. Uruchomić na wszystkich hostach rejestrację ramek Z PC2 otworzyć stronę www zlokalizowaną w R10. Zanotować translację portów i adresów realizowaną przez ruter IP515 (). 5.4. Przekierowanie portów Aby użytkownicy sieci publicznej 10.0.0.0/8 mogli korzystać z serwera zlokalizowanego z NAT, należy skonfigurować przekazywani portów z zewnętrznej strony rutera na znany port wskazanego serwera zlokalizowanego w LAN. Uruchomić panel administracyjny poprzez przeglądarkę z sieci LAN Nazwa interfejsu: LAN, WAN związana jest tylko z prostymi ruterami, pozostałe rutery np. Cisco nie rozróżniają sieci LAN i WAN !!! Skonfigurować wpis w zakładce Advanced Internet > Virtual Server > Web i podać adres serwera www po stronie lokalnej, w tym przypadku PC3. Na PC3 uruchomić serwer Ability, aktywować serwer www. Uruchomić rejestrację ramek na PC1 i PC2. Na PC1 otworzyć stronę internetową zlokalizowaną pod adresem WAN rutera IP515, czyli 10.10.10.100. Uzupełnić schemat (). 6. Sprawozdanie (c) P.Żmudziński 12.2010r. ver.3.0 9 UNIWERSYTET KAZIMIERZA WIELKIEGO, WMFiT, ZT Laboratorium Sieci Komputerowych Sprawozdanie z wykonania ćwiczenia nr ćwiczenia: 11 grupa : zespół: data: ocena : Protokoły transportowe Imię i Nazwisko członków zespołu (drukowanymi literami) 1. 2. 3. 4. 6.1 Identyfikacja portów nasłuchiwania PC3 numery otwartych portów TCP UDP 6.2 Identyfikacja stanów portów w TCP, nawiązane połączenia dla www i telnet połączenie dla www protokół TCP IP lokalne port lokalny IP zdalne port zdalny połączenie dla telnet protokół TCP IP lokalne IP zdalne port zdalny port lokalny 6.4 Przekierowanie portów 6.3 Realizacja mechanizmu NAT / NAPT Na szkicu poniżej uzupełnić brakujące adresy IP oraz zaznaczyć numery portów, połączyć pionowe linie obrazujące przestrzeń portów TCP, tak aby odpowiadały rzeczywistym połączeniom, podobnie jak na Rys.6. Połączenie zawsze nawiązane jest między hostami obsługującymi warstwę transportową. Jakie porty zostały przekierowane? . . . . . . . . . . . . . . . . . . . (c) P.Żmudziński 12.2010r. ver.3.0 1