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ń.

Podobne dokumenty