Laboratorium
Transkrypt
Laboratorium
Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Laboratorium - Zjazd 7/8 Warstwa transportowa i warstwa sesji Protokoły warstwy transportowej zapewniają logiczną komunikację między aplikacjami pracującymi na różnych maszynach. Mówiąc o logicznej komunikacji, mamy na myśli to, że z punktu widzenia aplikacji jest tak, jakby połączone siecią komputery były ze sobą bezpośrednio połączone. W rzeczywistości maszyny mogą się znajdować na przeciwległych miejscach planety i być połączone za pośrednictwem bardzo złożonej sieci. Aplikacje komunikują się poprzez warstwy niższe i nie muszą się przy tym "przejmować" szczegółami dotyczącymi fizycznej infrastruktury wykorzystywanej do transmisji danych. Protokoły warstwy transportowej są stosowane w przypadku systemów końcowych, a nie infrastruktury sieciowej. Urządzenia pracujące w niższych warstw nie mają dostępu do parametrów komunikacji wykorzystywanych przez warstwę transportową, bo najczęściej nie ma takiej potrzeby. Dzięki temu możliwe jest uproszczenie wielu urządzeń sieciowych. Od tej reguły nierzadko pojawiają się odstępstwa ze względu na ograniczenia, jakie niekiedy administrator sieci pragnie narzucić na pracę warstwy transportowej. Zwykle tylko na poziomie warstwy transportowej lub wyżej można skutecznie kontrolować treść przesyłanych danych. Warstwa transportowa dba o poprawność przesyłania danych. W tej warstwie standardowa "paczka" danych oznaczana jest jako TPDU (ang. Transport Protocol Data Unit). Aby informacje mogły zostać przesłane w dół, często muszą zostać podzielone na mniejsze fragmenty. Jeżeli danych nie uda się przesłać poprawnie za pierwszym razem, warstwa transportowa próbuje to zrobić, aż do wyczerpania limitu przekazów. Ważnym zadaniem warstwy transportowej jest segregowanie przekazywanych danych według priorytetów i przydzielanie im określonego pasma transmisji. Jeżeli wydajność niższych warstw sieciowych jest zbyt mała w stosunku do ilości przekazywanych z góry danych, to warstwa transportowa układa je w określonych kolejkach według priorytetu. W ostateczności, kiedy kolejki się przepełniają warstwa transportowa zwraca do góry komunikaty o ich zapełnieniu i usuwa nadmiarowe dane. Warstwa transportowa rejestruje również komunikaty o przerwaniu połączenia i pozwala na bezpieczne zakończenie komunikacji. W jednej sieci może równolegle funkcjonować kilka protokołów transportowych. W niektórych aplikacjach od pewności dostarczenia każdej porcji danych, ważniejsza jest szybkość transmisji. Wielość dostępnych protokołów transportowych pozwala autorom na dokonanie wyboru, co jest dla nich najważniejsze. Kontrola przepływu w warstwie transportu Podczas przesyłania segmentów danych przez warstwę transportową podejmowane są starania, aby nie dopuścić do utraty danych. Przyczyną utraty danych może być sytuacja, w której host odbierający nie jest w stanie przetwarzać danych z taką szybkością, z jaką one do niego docierają. Host odbierający jest wtedy zmuszony do ich odrzucenia. Kontrola przepływu zapobiega problemowi przepełnienia buforów hosta odbierającego. Protokół TCP zawiera mechanizmy kontroli przepływu polegające na umożliwieniu komunikacji pomiędzy hostem wysyłającym i odbierającym. W ten sposób oba hosty ustalają prędkość transferu danych na wartość odpowiadającą każdemu z nich. Mechanizmy kontroli przepływu odpowiadają za: Dostosowanie tempa transmisji poprzez wprowadzenie mechanizmów potwierdzeń umożliwiających spowolnienie tempa nadawania; Transmisja określonych sekwencji danych poprzez wprowadzenie numerów ramek i uwzględnienie ich w numerach potwierdzeń; Wprowadzenie metod korekcji błędów - definicje sposobów wykrywania błędów transmisji (CRC16,CRC32) oraz reakcji na nie (mechanizmy ARQ - Automatic Repeat Request); Stop And Wait (SAW) ARQ W najprostszej metodzie SAW (Stop-And-Wait) (czasami nazywanej również unnumbered ARQ), po wysłaniu bloku, nadajnik czeka na odpowiedź od odbiornika. W przypadku odebrania potwierdzenia (ACK) przesyłany jest kolejny blok, jeżeli zostanie odebrane negatywne potwierdzenie (NACK) - był błąd, blok jest ponownie transmitowany. Jest to metoda nadająca się dla Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak systemów pracujących w pół-dupleksie. Przykładową konwersację hostów w oparciu o metodę SAW przedstawia poniższy rysunek: Rys. 1 Stop-And-Wait ARQ Go Back N ARQ (GBN) (Go-Back-N) W metodzie GBN nadajnik wysyła ponumerowane bloki w sposób ciągły, a kanałem zwrotnym odbiera potwierdzenia. Nadajnik powtarza blok błędny oraz wszystkie wysłane po nim bloki. Przykładowa konwersacja hostów w oparciu o metodę GBN przedstawia poniższy rysunek: Rys. 2 Go-Back-N ARQ Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Protokoły warstwy transportowej Protokół TCP (ang. Transmission Control Protocol) Protokół TCP jest należącym do warstwy 4 protokołem zorientowanym połączeniowo, który zapewnia niezawodną transmisję danych w trybie pełnego dupleksu. TCP jest częścią stosu protokołów TCP/IP. W środowisku zorientowanym połączeniowo przed rozpoczęciem transferu informacji musi zostać ustanowione połączenie między dwoma stacjami końcowymi. Protokół TCP jest odpowiedzialny za podział wiadomości na segmenty, ponowne złożenie ich na stacji docelowej, ponowne wysłanie wszystkich nieodebranych informacji i scalenie wiadomości z segmentów. Zapewnia on obwód wirtualny pomiędzy aplikacjami użytkowników końcowych. Protokoły, które wykorzystują protokół TCP: protokół FTP (ang. File Transfer Protocol) protokół HTTP (ang. Hypertext Transfer Protocol) protokół SMTP (ang. Simple Mail Transfer Protocol) protokół Telnet Poniżej podano definicje pól segmentu TCP: Pola PORT NADAWCY i PORT ODBIORCY (ang. Source Port, Destination Port)- [16-bitowe] - zawierają numery portów procesów aplikacyjnych korzystających z usług TCP. Kombinacja tych numerów z adresami sieciowymi określa parę gniazd tworzących połączenie protokołu TCP. Pole NUMER KOLEJNY (ang. Sequence Number) - [32-bitowe] - zawiera wartość identyfikacyjną przypisaną nadanemu pakietowi przed fragmentacją (jeżeli miałaby ona miejsce). W przypadku fragmentacji określa ona przynależność fragmentu do datagramu. Pole NUMER POTWIERDZENIA (ang. Acknowledgement Number)- [32-bitowe] - zawiera potwierdzenie odbioru określonej porcji danych, dzięki czemu nadawanie i potwierdzenie odbioru są ze sobą zsynchronizowane. Pole PRZESUNIĘCIE DANYCH - [4-bitowe] - zawiera liczbę 32-bitowych słów w nagłówku TCP (określa długość nagłówka TCP). Pole ZAREZERWOWANE (ang. Reserved)- [6-bitowe] - jest zarezerwowane do przyszłego wykorzystania. Zawiera same zera. Pole FLAGI - [6-bitowe] - zawiera informację o przeznaczeniu zawartości segmentu. Kolejne bity oznaczają: URG - wskazuje na ważność pola PRIORYTET, ACK - wskazuje na ważność pola NUMER POTWIERDZENIA, PSH - funkcja wymuszająca przesyłanie segmentu, RST - zresetuj połączenie, SYN - zsynchronizuj kolejne numery, FIN - nie pobieraj więcej danych od nadawcy - sygnał końca danych. Pole SZEROKOŚĆ OKNA (ang. Window)- [16-bitowe] - zawiera liczbę bajtów danych, które nadawca zgodzi się przyjąć w danej chwili. 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ą wartością w tym polu. W ten elegancki sposób komputer może bronić się przed zalewem zbyt dużej ilości informacji. Pole SUMA KONTROLNA (ang. Checksum)- [16-bitowe] - niesie informacje o tym, czy transmisja przebiegła bezbłędnie. Jest ona obliczana dla całego pakietu, nie tylko dla samego nagłówka. Pole PRIORYTET (ang. Urgent Pointer)- [16-bitowe] - jest interpretowane tylko wtedy, gdy flaga URG jest równa 1. Pole to pozwala wyróżnić wiadomości, które są szczególnie ważne, a które nie. Pole OPCJE (ang. Options)- [długość zmienna będąca wielokrotnością 8 bitów] - zawiera numery opcji - każdy numer zapisany jest w jednym bajcie. Dla protokołu TCP zdefiniowano trzy opcje: 0 - koniec listy opcji, 1 - brak działania, 2 - maksymalna długość segmentu Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Rys. 5. Nagłówek TCP Protokół UDP (ang. User Datagram Protocol) Protokół UDP jest bezpołączeniowym protokołem transportowym należącym do stosu protokołów TCP/IP. Protokół UDP to prosty protokół wymiany datagramów bez potwierdzania czy gwarancji ich dostarczenia. Przetwarzanie błędów i retransmisja muszą być obsłużone przez protokoły wyższych warstw. Protokół UDP nie wykorzystuje mechanizmów okienkowania ani potwierdzeń, więc niezawodność, jeśli jest wymagana, musi być zapewniana przez protokoły warstwy aplikacji. Protokół UDP jest zaprojektowany dla aplikacji, które nie mają potrzeby składania sekwencji segmentów. Protokoły warstw wyższych, które wykorzystują protokół UDP: protokół TFTP (ang. Trivial File Transfer Protocol), protokół SNMP (ang. Simple Network Management Protocol), protokół DHCP (ang. Dynamic Host Control Protocol), protokół DNS (ang. Domain Name System). Poniżej podano definicje pól segmentu UDP: port źródłowy: numer portu nadającego, port odbiorcy: numer wywoływanego portu, długość: liczba bajtów nagłówka i danych, suma kontrolna: suma kontrolna obliczona na podstawie pól nagłówka i danych, dane: dane protokołu wyższej warstwy. Rys. 6. Nagłówek datagramu UDP Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Protokół SCTP (ang. Stream Control Transmission Protocol) Protokół Sterowania Transmisją Strumieniową to protokół internetowy został zdefiniowany w 2000 roku przez IETF (RFC 2960) a dokładnie przez jej Signaling Transport (SIGTRAN) working group. Jako protokół transmisyjny, SCTP jest bardzo podobny do protokołów TCP i UDP. Zapewnia on działanie takich samych usług jak TCP - zapewnienie wytrzymałego, uporządkowanego transportu informacji z kontrolą zatłoczenia. Podczas gdy TCP jest protokołem strumieniowym przesyłającym pakiety bitów, SCTP służy do przesyłania pakietów z ukształtowanymi wiadomościami. Cechy protokołu SCTP: Wielopowrotowe wsparcie, gdzie jedno (albo obie) końcówki połączenia mogą składać się z więcej niż jednego adresu IP, co umożliwia rozpoznawanie poszczególnych komputerów w sieci lokalnej; Dostawa danych w pakietach w obrębie niezależnych strumieni, co eliminuje niepotrzebne blokowanie początków linii w przeciwieństwie do transportu strumieniowego TCP; Wybór ścieżki oraz monitoring; Mechanizm zatwierdzająco-potwierdzający - chroni przed efektem potocznie nazywanym "floodingiem" oraz zawiadamia o zduplikowanych lub utraconych fragmentach danych. Za pomocą SCTP/IP firmy telekomunikacyjne będą mogły wymieniać informacje między systemami komutacyjnymi, wykorzystując technologię internetową, a także łatwiej wprowadzać nowe usługi z uwarunkowaniami czasowymi, takie jak telefonia IP. Nowy protokół, zaprojektowany z myślą o zwiększeniu wydajności i niezawodności protokołów IP, już zaczyna zajmować eksponowane miejsce w stosie protokołów IP – obok tych od dawna uznanych: UDP (User Data Protocol) i TCP (Transmission Control Protocol). Uzgadnianie trójetapowe Protokół TCP jest protokołem zorientowanym połączeniowo. Wymaga on ustanowienia połączenia przed rozpoczęciem przesyłania danych na tym etapie modelu ISO OSI. Aby ustanowić lub zainicjować połączenie, muszą zostać zsynchronizowane początkowe numery sekwencyjne (ISN) obu hostów. Synchronizacja polega na wymianie ustanawiających połączenie segmentów zawierających bit kontrolny zwany SYN (synchronizacja) oraz numery ISN. Segmenty zawierające bit SYN są również nazywane segmentami „SYN". Rozwiązanie to wymaga odpowiedniego mechanizmu wybierania początkowego numeru sekwencyjnego oraz procesu uzgadniania służącego do wymiany numerów ISN. Synchronizacja wymusza wysłanie przez każdą ze stron własnego początkowego numeru sekwencyjnego i odbiór potwierdzenia wymiany (ACK) od strony przeciwnej. Każda strona musi również odebrać od drugiej strony numer ISN i wysłać potwierdzenie ACK. Kolejność jest następująca: Wysyłająca stacja A inicjuje połączenie przez wysłanie pakietu SYN do odbiorcy (stacja B) ze swoim numerem początkowym ISN = 100; B otrzymuje pakiet, zapamiętuje, że numer sekwencyjny seq stacji A = 100, odpowiada pakietem z ustawionym bitem ACK i numerem potwierdzenia 100 + 1, a także określa swój numer początkowy ISN = 100. Potwierdzenie ACK z numerem 100 + 1 oznacza, że stacja B otrzymała wszystkie oktety do oktetu 100 włącznie i będzie oczekiwała na oktet o numerze 100 + 1 A otrzymuje pakiet od B, wie, że numer sekwencyjny seq stacji B = 100, i odpowiada pakietem z ustawionym bitem ACK i numerem potwierdzenia 100 + 1, co kończy proces ustanawiania połączenia. Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Rys. 3 Procedura uzgadniania trójetapowego Wymiana ta jest zwana uzgadnianiem trójetapowym. Uzgadnianie trójetapowe jest konieczne ze względu na to, że numery sekwencyjne nie są związane z globalnym zegarem w sieci i protokoły TCP mogą mieć różne mechanizmy wybierania numeru ISN. Odbiorca pierwszego segmentu SYN nie ma innego sposobu na rozpoznanie starego lub spóźnionego segmentu niż pamiętanie ostatniego numeru podczas kolejnego połączenia. Pamiętanie tego numeru nie zawsze jest możliwe. Dlatego odbiorca musi zwrócić się do wysyłającego o weryfikację segmentu SYN. Przykładowa procedura Three-Way Handshaking zarejestrowana przy pomocy programu Packetyzer: Rys. 4 Procedura uzgadniania trójetapowego zarejestrowana przy pomocy programu Packetyzer Warstwa sesji Najniższe warstwy zajmują się odnajdywaniem odpowiedniej drogi do celu, gdzie ma być przekazana konkretna informacja. Dzielą również dane na odpowiednie dla urządzeń sieciowych pakiety określane często skrótem PDU (ang. Protocol Data Unit). Dodatkowo zapewniają weryfikację bezbłędności przesyłanych danych. Ważną cechą warstw dolnych jest całkowite ignorowanie sensu przesyłanych danych. Dla warstw dolnych nie istnieją aplikacje, tylko pakiety (ramki) danych. Warstwy dolne to warstwa transportowa, sieciowa, łącza danych oraz fizyczna. Warstwa sesji wykonuje następujące zadania: Umożliwia procesom aplikacji rejestrację niepowtarzalnych adresów procesów, jak nazwy NetBIOS. Warstwa sesji rozwiązuje te adresy na adresy kart sieciowych. Tworzenie, monitorowanie i zamykanie sesji obwodów wirtualnych między dwoma procesami identyfikowanymi przez swoje adresy procesów. Sesja obwodu wirtualnego jest bezpośrednim połączeniem istniejącym między nadawcą i odbiorcą. Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Rozgraniczanie komunikatów, aby dodać informację nagłówka, informującego o początku i końcu komunikatu. Odbierająca warstwa sesji może dzięki temu wstrzymać przekazywanie danych leżącej ponad nią aplikacji do czasu skompletowania całego komunikatu. Synchronizacja komunikatów. Synchronizacja komunikatów jest stanem transmisji występującym między warstwami sesji systemu nadawcy i odbiorcy. Synchronizacja zapobiega przekroczeniu możliwości odbierania danych przez warstwę sesji odbiorcy. Transmisja koordynowana jest przy pomocy komunikatów potwierdzających (ACK). Komunikaty ACK przesyłane są pomiędzy węzłami końcowymi informując, że bufor odbierający jest gotowy na przyjęcie kolejnej porcji danych. Spełnianie funkcji dodatkowych, jak uwierzytelnianie użytkowników czy zabezpieczenia dostępu do zasobów. Fazy sesji Nawiązanie połączenia (sesji) Wymiana danych Zakończenie połączenia (sesji) Rys. 7. Warstwa sesji - procedura nawiązania połączenia Głównym zamysłem wprowadzenia warstwy sesji było umożliwienie transmisji współbieżnej informacji pochodzących z rożnych strumieni (źródeł danych) poprzez mechanizmy znakowania usług i odpowiedniej synchronizacji dialogu komunikacyjnego. Wybrane protokoły warstwy sesji NetBIOS (Network Basic Input Output System) Oryginalnie zaprojektowany przez firmę IBM) zapewnia podstawowy interfejs łączenia aplikacji z innymi komputerami oraz współdzielenie danych. NetBIOS działa w warstwie sesji modelu OSI. NetBIOS transmitowany w TCP/IP (NetBIOS over TCP/IP) używa portów: 137 - NetBIOS Name 138 - NetBIOS Datagram 139 - NetBIOS Session NetBIOS spełnia następujące założenia: wszystkie stacje w danej sieci traktowane są jednakowo aplikacje nie zajmują się szczegółami transportu usługi nie zależą od tego, jak sieć została zrealizowana sprzętowo istnieje wsparcie dla nazw "przyjaznych" - nie ma potrzeby posługiwania się adresami Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Komunikacja w NetBIOS wykorzystuje dwie metody: bezpołączeniowa - w formie datagramów bez potwierdzenia ich dotarcia na miejsce - najczęściej wykorzystywana w trybie rozgłaszania (broadcast) połączeniowa - w formie sesji - transmisja odbywa się niezawodnie (z potwierdzeniami) RPC (Remote Procedure Call Protocol) RPC to protokół zdalnego wywoływania procedur, stworzony przez Suna i swego czasu dość popularny na Unix'ach, obsługiwany w bibliotekach języka Java, a współcześnie wypierany przez bardziej rozbudowane protokoły takie jak CORBA czy XML-RPC. Standard RPC zdefiniowany jest w RFC 1057. RPC używa do kodowania danych formatu XDR (eXternal Data Representation) zdefiniowanego w RFC 1832. Protokoły tego typu (jak RPC, CORBA, DCOM, czy XML-RPC) mają na celu ułatwienie komunikacji pomiędzy komputerami. Zazwyczaj wyglądało to tak: Serwer (czyli program oferujący usługi, np. drukowania) przez cały czas nasłuchuje na wybranym porcie, czy ktoś się z nim nie łączy. Klient (czyli program który potrzebuje jakiejś usługi od serwera na innym komputerze) nawiązuje z nim łączność poprzez sieć komputerową. Klient wysyła swoje dane we wcześniej ustalonym przez programistów klienta i serwera formacie. Serwer realizuje usługę i odsyła potwierdzenie lub kod błędu. Powyższe protokoły same zapewniają cały powyższy mechanizm, ukrywając go przed klientem. Może on nawet nie wiedzieć, że łączy się z innym komputerem - z punktu widzenia programisty zdalne wywołanie procedury serwera wygląda jak wywołanie dowolnej innej procedury z programu klienta. RTP (Real-time Transport Protocol) Protokół transmisji w czasie rzeczywistym. Pakiet protokołu RTP zawiera informację o typie przesyłanych danych, numerze seryjnym pakietu oraz zawiera znacznik czasu. RTP nie gwarantuje jakości usługi (QoS). RTCP (Real-time Transport Control Protocol) RTCP jest protokołem sterującym wspierającym protokół RTP (ang. Real-time Transport Protocol) w transporcie danych czasu rzeczywistego takich jak np. audio czy wideo. Pozwala monitorować dostarczanie danych oraz zapewnia w ograniczonym zakresie funkcje sterujące i identyfikacyjne. Opiera się na okresowej transmisji pakietów kontrolnych do wszystkich uczestników sesji. Protokół RTCP spełnia cztery zadania: Dostarcza zwrotnej informacji odnośnie do poprawności odebranych danych, Przenosi stały identyfikator transportowy źródła protokołu RTP zwany nazwą kanoniczną – CNAME (zawsze niezmienny, w przeciwieństwie do identyfikatora SSRC (ang. Synchronization Source), który może zmienić wartość w przypadku wykrycia konfliktu lub restartu systemu), Dopasowuje częstotliwość wysyłanych pakietów kontrolnych do liczby użytkowników sesji, Opcjonalnie – przenosi zminimalizowaną informację kontrolną sesji – np. wyświetlanie identyfikatora użytkownika (nadawcy) na ekranie monitora odbiorcy pakietów. SCP (Secure Copy Protocol) SCP (ang. Secure CoPy) - protokół SCP jest bardzo podobny do protokołu RCP (BSD), jednak w przeciwieństwie do RCP SCP korzysta z szyfrowanego połączenia podczas transferu, dzięki temu podsłuchanie transmisji jest zdecydowanie trudniejsze. Sam protokół SCP nie zapewnia autentykacji, opiera się on na protokole SSH. Protokół SCP zajmuje sie tylko transmisją Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak plików, jego przewagą nad protokołem FTP jest to, że oprócz szyfrowania potrafi również przekazać razem z plikiem jego podstawowe atrybuty (np. uprawnienia). SSH (Secure Shell) SSH to standard protokołów komunikacyjnych używanych w sieciach komputerowych TCP-IP, w architekturze klient-serwer. W ścisłym znaczeniu SSH to tylko następca protokołu telnet, służącego do terminalowego łączenia się ze zdalnym komputerem. SSH różni się od telnetu tym, że transfer wszelkich danych jest zaszyfrowany, oraz możliwe jest rozpoznawanie użytkownika na wiele różnych sposobów. W szerszym znaczeniu SSH to wspólna nazwa dla całej rodziny protokołów, nie tylko terminalowych, lecz także służących do przesyłania plików (SCP, SFTP), zdalnej kontroli zasobów, tunelowania i wielu innych zastosowań. Wspólną cechą wszystkich tych protokołów jest identyczna z ssh technika szyfrowania danych i rozpoznawania użytkownika. Obecnie protokoły z rodziny SSH praktycznie wyparły wszystkie inne "bezpieczne" protokoły takie jak np: Rlogin i RSH. Ogólne założenia protokołu SSH powstały w grupie roboczej IETF. Istnieją jego dwie wersje SSH1 i SSH2. W jego wersji 2, możliwe jest użycie dowolnych sposobów szyfrowania danych i 4 różnych sposobów rozpoznawania użytkownika, podczas gdy SSH1 obsługiwał tylko stałą listę kilku sposobów szyfrowania i 2 sposoby rozpoznawania użytkownika (klucz RSA i zwykłe hasło). Najczęściej współcześnie stosowany sposób szyfrowania to AES, choć nadal część serwerów używa szyfrowania Blowfish i technik z rodziny DES. Rozpoznawanie użytkownika może się opierać na tradycyjnym pytaniu o hasło, klucz (RSA lub DSA) lub z użyciem protokołu Kerberos. Trzy najbardziej znane implementacje SSH to zamknięty ssh.com, oparty na licencji Open Source OpenSSH oraz wersja protokołu stosowana w programie PuTTY. Protokoły z rodziny SSH korzystają zwyczajowo z portu 22 protokołu TCP, choć w wielu zastosowaniach celowo stosuje się port o innym numerze w celu zwiększenia bezpieczeństwa serwera. Sama rodzina SSH znajduje się w warstwie aplikacji modelu OSI, ale do połączenia korzysta z protokołu TCP. Porty - znakowanie usług Numery portów Numery portów służą do rozróżniania rozmaitych konwersacji odbywających się w tym samym czasie w sieci. Projektanci aplikacji uzgodnili korzystanie z dobrze znanych numerów portów wydanych przez komitet Internet Assigned Numbers Authority (IANA). W każdym dialogu między aplikacjami FTP są wykorzystywane standardowe numery portów 20 i 21. Port 20 jest przeznaczony dla transmisji danych, zaś port 21 jest używany do sterowania. Do konwersacji, które nie dotyczą aplikacji z przypisanym dobrze znanym numerem portu, numery portów są przydzielane losowo z określonego zakresu powyżej numeru 1023. Niektóre porty są zarezerwowane zarówno w protokole TCP, jak i UDP, lecz aplikacje mogą ich nie obsługiwać. Numery portów mają przydzielone następujące zakresy: Numery poniżej 1024 są uważane za dobrze znane numery portów. Porty te przydzielane są przez IANA (Internet Assigned Numbers Authority) Numery portów powyżej 1023 są przydzielane dynamicznie. Zarejestrowane numery portów to takie, które zostały zarejestrowane dla określonych aplikacji producenta. Większość z nich znajduje się powyżej numeru 1024 (1024-65535) Stany portów Możliwe stany portów: LISTEN SYN-SENT SYN-RECEIVED ESTABLISHED FIN-WAIT-1 FIN-WAIT-2 CLOSE-WAIT Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak CLOSING LAST-ACK TIME-WAIT CLOSED Na rysunku przedstawiono kolejne stany portów, jakie występują w procesie komunikacyjnym: Rys. 9. Przejścia pomiędzy kolejnymi stanami portów w procesie komunikacyjnym Najczęściej spotykane stany portów: LISTEN - stan nasłuchiwania, oczekiwanie na połączenie ze zdalnego hosta (! typowy stan w aplikacjach serwerowych) SYN-SENT - stan oczekiwania na odpowiedz zdalnej strony z ustawionymi flagami SYN oraz ACK (wysłano SYN, 3-way handshake) SYN-RECEIVED - stan oczekiwania na odpowiedz zdalnej strony z potwierdzeniem ACK (wysłano SYN i ACK, 3-way handshake) ESTABLISHED - stan gotowości do wymiany danych (sesja zestawiona) Na rysunku przedstawiono zestawienie aktywnych połączeń w systemie Windows XP (polecenie netstat): Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Rys. 10. Zestawienie aktywnych połączeń w systemie Windows XP Gniazda Kombinację adresu IP i numeru portu określa się jako gniazdo. To połączenie umożliwia jednoznaczną identyfikację poszczególnych procesów sieciowych w ramach całego Internetu. Zapis ma następującą postać: adres IP:port, np. 192.168.1.1:666. Dwa gniazda definiują połączenie: jedno określa komputer źródłowy, drugie - docelowy. TCP i UDP mogą nadawać te same numery portów. Dopiero połączenie protokołu i numeru portu jest jednoznaczne. Numer portu 53 w TCP nie jest identyczny z numerem portu 53 w UDP. Netstat Polecenie netstat wyświetla aktywne połączenia protokołu TCP, porty, na których komputer nasłuchuje, statystykę sieci Ethernet, tabelę routingu protokołu IP, statystykę protokołu IPv4 (dla protokołów IP, ICMP, TCP i UDP) oraz statystykę protokołu IPv6 (dla protokołów IPv6, ICMPv6, TCP przez IPv6 i UDP przez IPv6). Polecenie netstat użyte bez parametrów powoduje wyświetlenie aktywnych połączeń protokołu TCP. Składnia netstat[-a ] [-e ] [-n ] [-o ] [-p protokół] [-r ] [-s ] [interwał] Parametry: -a Wyświetla wszystkie aktywne połączenia protokołu TCP oraz porty protokołu TCP i UDP, na których komputer nasłuchuje. -e Wyświetla statystykę sieci Ethernet, taką jak liczba wysłanych i odebranych bajtów i pakietów. Ten parametr można łączyć z parametrem -s . -n Wyświetla aktywne połączenia protokołu TCP, ale adresy i numery portów są wyrażane numerycznie i nie są podejmowane próby ustalenia nazw. Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak -o Wyświetla aktywne połączenia protokołu TCP i dołącza identyfikatory procesów (PID) poszczególnych połączeń. Aplikację można odnaleźć na podstawie identyfikatora PID na karcie Procesy w Menedżerze zadań Windows. Ten parametr można łączyć z parametrami -a , -n i -p . -p protokół Pokazuje połączenia protokołu określonego przez parametr protokół. W tym przypadku parametr protokół może przyjmować wartości tcp, udp, tcpv6 lub udpv6. Jeżeli ten parametr jest używany z parametrem -s w celu wyświetlania statystyki poszczególnych protokołów, parametr protokół może przyjmować wartości tcp, udp, icmp, ip, tcpv6, udpv6, icmpv6 lub ipv6. -s Wyświetla statystyki poszczególnych protokołów. Domyślnie pokazywane są statystki protokołów TCP, UDP, ICMP i IP. Jeżeli jest zainstalowany protokół IPv6, statystyki są pokazywane dla protokołów TCP przez IPv6, UDP przez IPv6, ICMPv6 i IPv6. Parametru -p można używać do określania zestawu protokołów. -r Wyświetla zawartość tabeli routingu protokołu IP. Ten parametr jest odpowiednikiem polecenia route print. interwał Powoduje ponowne wyświetlenie wybranych informacji zgodnie z liczbą sekund określoną przez parametr interwał. Aby zatrzymać ponowne wyświetlanie, należy nacisnąć klawisze CTRL+C. Jeżeli pominięto ten parametr, polecenie netstat powoduje wyświetlenie wybranych informacji tylko raz. Przed parametrami używanymi w tym poleceniu należy wpisywać prefiks w formie łącznika ( - ), a nie kreski ułamkowej (/). Polecenie netstat udostępnia statystykę dotyczącą następujących protokołów: Protokół (Proto) Nazwa protokołu (TCP lub UDP). Adres lokalny (Local Address) Adres IP komputera lokalnego i numer używanego portu. Nazwa komputera lokalnego odpowiadająca adresowi IP i nazwa portu są wyświetlane pod warunkiem, że nie określono parametru -n . Jeżeli port nie został jeszcze ustanowiony, jego numer jest pokazany w postaci gwiazdki (*). Obcy adres (Foreign Address) Adres IP i numer portu komputera zdalnego, z którym dane gniazdo jest połączone. Nazwy odpowiadające adresowi IP i portowi są wyświetlane pod warunkiem, że nie określono parametru -n . Jeżeli port nie został jeszcze ustanowiony, jego numer jest pokazany w postaci gwiazdki (*). Stan (State) Wskazuje stan połączenia protokołu TCP. Możliwe są następujące stany: CLOSE_WAIT CLOSED Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak ESTABLISHED FIN_WAIT_1 FIN_WAIT_2 LAST_ACK LISTEN SYN_RECEIVED SYN_SEND TIMED_WAIT Przykłady Aby wyświetlić statystyki sieci Ethernet oraz statystyki wszystkich protokołów, należy wpisać: netstat -e -s Aby wyświetlić tylko statystyki protokołów TCP i UDP, należy wpisać: netstat -s -p tcp udp Aby wyświetlać aktywne połączenia protokołu TCP i identyfikatory procesów co 5 sekund, należy wpisać: nbtstat -o 5 Aby wyświetlać aktywne połączenia protokołu TCP i identyfikatory procesów przy użyciu formatu numerycznego, należy wpisać: nbtstat -n -o Nmap Polecenie nmap (z ang. Network Mapper) jest to aplikacja służąca do skanowania portów. Program implementuje wiele różnych technik testowania portów TCP, w tym niestandardowe podejścia wynikające ze specyfiki implementacji stosów sieciowych, które potencjalnie mogą omijać zapory ogniowe lub platformy Intrusion Detection System. Dodatkowo, nmap posiada możliwość identyfikacji systemów operacyjnych na skanowanych hostach. Metody skanowania portów skanowanie oparte o pełne połączenie TCP (nmap -sT) - listuje porty, z którymi udało się nawiązać połączenie skanowanie SYN (tzw. półotwarte) (nmap -sS) - polega na wysyłaniu pakietów z ustawioną flagą SYN i oczekiwaniu na odpowiedź. Jeżeli serwer odpowie pakietem SYN-ACK oznacza to otwarty port. Serwer oczekuje na pakiet z bitem ACK, jednak nigdy go nie otrzymuje, a połączenie nie jest logowane. metoda ACK (nmap -sA) - wykorzystywana jest najczęściej do poznania ustawień firewalla (rozpoznawania prostych filtrów pakietów). Nmap wysyła do wskazanych portów pakiety ACK. Jeśli otrzyma pakiet RST, port uznawany jest za niefiltrowany, jeżeli zaś nie otrzymuje odpowiedzi, uznaje go za filtrowany skanowanie FIN (nmap -sF) - korzysta z pakietów z ustawioną wyłącznie flagą FIN, czego host docelowy nie oczekuje. Porty niewykorzystane odpowiadają wówczas pakietem RST metoda Xmas Tree (nmap -sX) - wykorzystuje pakiety z bitami FIN, URG i PUSH, porty zamknięte odpowiadają pakietem z flagą RST skanowanie Null (nmap -sN) - korzysta z pakietów bez ustawionych żadnych flag skanowanie portów UDP (nmap -sU) - listuje otwarte porty, korzystające z protokołu UDP skanowanie ping (nmap -sP) - pozwala ono określić, które z hostów są aktywne w danym momencie skanowanie RPC (nmap -sR) - znajduje usługi dostępne przez RPC Nmap jest jednak skanerem aktywnym. Wiąże się to z generowaniem przez niego dużej ilości ruchu, a w związku z tym mimo dużej skuteczności - łatwo jest go wykryć. Sieci Komputerowe –2011/2012 Wyższa Szkoła Gospodarki Krajowej w Kutnie – dr inż. Robert Banasiak Zadania Zbadaj przy pomocy narzędzia netstat nasłuchujące porty TCP i UDP oraz nawiązane połączenia TCP w systemie Windows. Utwórz połączenie TCP (np. przeglądarką WWW, klientem poczty, telnet czy ssh) i wykaż jego obecność. Zrealizuj połączenie z serwerem FTP. Prześledź przy pomocy odpowiednich narzędzi kolejno zmieniające się stany portów biorących udział w komunikacji. Przy użyciu oprogramowania do przechwytywania ramek (np. Packetyzer) dokonaj rejestracji ramek uczestniczących w mechanizmie uzgadniania trójetapowego. Przeanalizuj numery sekwencyjne obydwu stacji nawiązujących komunikację. Przy użyciu oprogramowania do przechwytywania ramek (np. Packetyzer) przeanalizuj kolejne numery wysyłanych bloków oraz numery potwierdzeń.