Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałFelicjan Ławrynowicz Został zmieniony 11 lat temu
1
PRZEGLĄD INNYCH PROTOKOŁÓW WARSTWY ZASTOSOWAŃ 1. Telnet Telnet jest prostym protokołem, stanowiącym prawie bezpośrednią obudowę protokołu TCP. Służy do transmisji ciągu znaków od klienta do serwera i w drugą stronę. Nie stosuje szyfrowania. Zasadniczo został zaprojektowany do otwierania zdalnej sesji pracy w trybie tekstowym na systemie unixowym (w takim przypadku klient komunikuje się z serwerem usługi Telnet przez port TCP 23). Serwer Telnet uruchamia proces interpretera poleceń, który następnie przeprowadza uwierzytelnienie użytkownika (login shell) i, w przypadku pomyślnym, umożliwia mu wydawanie poleceń. Polecenie exit kończy sesję pracy z interpreterem i powoduje automatycznie zakończenie połączenia TCP. Klient Telnet może być wykorzystywany również do komunikowania się (przez inne porty TCP) z serwerami innych usług (nie stosującymi szyfrowania). W takim przypadku polecenie uruchomienia klienta musi jako argument otrzymać nie tylko adres/nazwę internetową komputera docelowego, ale również numer portu TCP (23 jest domyślny).
2
W niektórych przypadkach po zakończeniu wymiany komunikatów klienta z serwerem połączenie TCP może pozostać nie zerwane (czyli znaki wypisywane przez użytkownika w wierszu poleceń w dalszym ciągu będą wysyłane przez klienta Telnet). Kombinacja kluczy ctrl-] służy do przełączenia klienta z trybu przekazywania znaków do hosta odległego w tryb przyjmowania poleceń (lokalnych), co umożliwia poprawne zakończenie jego działania. 2. SSH (Secure SHell) Protokół ten jest funkcjonalnym równoważnikiem protokołu Telnet, ale stosującym dodatkowo szyfrowanie (w związku z tym nie nadaje się do komunikacji z serwerami usług nie stosującymi szyfrowania). Standardowym portem nasłuchu serwera SSH jest port TCP 22. Protokół SSH wykorzystuje szyfrowanie z kluczem asymetrycznym. Oznacza to, że zarówno klient, jak i serwer, w chwili nawiązania pierwszego połączenia ze sobą, generują parę kluczy: publiczny i prywatny. Klucz publiczny jest przesyłany przeciwnej stronie procesu komunikacji i jest stosowany do szyfrowania informacji, zaś klucz prywatny jest pozostawiany na miejscu i służy do deszyfrowania.
3
Uwaga Klucz publiczny i prywatny muszą być generowane łącznie jest praktycznie niemożliwe obliczyć jeden z nich na podstawie drugiego. Idea szyfrowania z kluczem asymetrycznym bazuje na istnieniu funkcji, dla których bardzo trudno jest obliczyć funkcję odwrotną (tak zwanych funkcji jednokierunkowych). Typowym przykładem takiej funkcji jest iloczyn dwóch bardzo dużych liczb pierwszych (stucyfrowych lub dłuższych) – rozkład takiego iloczynu na czynniki pierwsze jest praktycznie niemożliwy dla współczesnych komputerów. Pary kluczy wygenerowane przy pierwszym komunikowaniu się danej pary hostów są przechowywane przez nie (w odpowiednich plikach) i używane w ich kolejnych połączeniach. W przypadku reinstalacji/rekonfiguracji serwera SSH klient próbujący skomunikować się z nim przy użyciu dotychczasowego klucza nie osiągnie celu i może wyświetlać komunikaty dla użytkownika o podejrzeniu podszywania się obcego hosta pod serwer. W takim przypadku należy usunąć zawartość pliku z kluczami po stronie klienta (i wymusić w ten sposób wygenerowanie nowych par kluczy).
4
3. FTP (File Transfer Protocol) Protokół FTP służy do przesyłania plików pomiędzy komputerem, na którym działa klient, a komputerem, na którym działa serwer (w obu kierunkach). W pewnej części (nawiązywanie połączenia) jest oparty na protokole Telnet. Serwer wykorzystuje do nasłuchu i przyjmowania poleceń od klienta port TCP 21. W przypadku, gdy nie jest wykorzystywana usługa anonimowego FTP (anonymous FTP), serwer przeprowadza uwierzytelnianie klienta (przyjmuje login i hasło). Protokół FTP nie zapewnia szyfrowania (ani poleceń, ani treści plików). Przesyłanie zawartości plików odbywa się przy użyciu innego portu TCP po stronie serwera, niż 21. Możliwe są dwa tryby inicjowania transferu: aktywny i pasywny. W przypadku aktywnego FTP (metoda starsza, mniej bezpieczna) serwer używa portu TCP 20 do otwarcia drugiego połączenia z portem po stronie klienta. W przypadku pasywnego FTP (metoda nowsza, bezpieczniejsza) serwer pobiera od systemu operacyjnego i przekazuje klientowi numer portu doraźnego TCP (powyżej 1023), a następnie klient nawiązuje połączenie z tym portem.
5
Samo przesyłanie zawartości plików również może odbywać się w dwóch trybach: binarnym lub tekstowym (ASCII). W trybie binarnym plik jest przenoszony bez zmiany (w przeciwieństwie do protokołów pocztowych FTP nie ma z tym problemów, gdyż został od razu zaprojektowany pod kątem obsługi bajtów 8-bitowych). W trybie tekstowym (służącym do przenoszenia plików tekstowych) konwersji mogą podlegać znaki sterujące w tekście (znaki zmiany linii, znaki tabulacji) tak, aby plik mógł być prawidłowo interpretowany pod docelowym systemem operacyjnym (różnicę pomiędzy trybem binarnym a tekstowym łatwo można zaobserwować przenosząc pliki tekstowe między systemami Windows i Linux). Współczesne klienty FTP zazwyczaj dysponują graficznym łączem użytkownika, które wyświetla dwa panele: obraz katalogu bieżącego po stronie serwera i obraz katalogu bieżącego po stronie klienta, i pozwala łatwo kopiować pliki z jednego panelu do drugiego (w szczególności współczesne przeglądarki internetowe również pozwalają na użycie protokołu FTP). Takie klienty na ogół rozpoznają typ pliku (tekstowy czy binarny) automatycznie i stosują właściwy tryb transmisji.
6
Najprostsze klienty FTP posiadają jedynie tekstowy interfejs użytkownika. Oferują one kolekcję poleceń, które po podaniu przez użytkownika są w dość prosty sposób (ale nie 1-1) tłumaczone na komendy protokołu. Linuksowy program ftp może być uruchomiony bez argumentów w linii poleceń, lub z argumentem będącym adresem IP lub nazwą internetową hosta docelowego: ftp nazwa_hosta. Jego podstawowe polecenia to: open nazwa_hosta inicjuje połączenie z serwerem (co zwykle wiąże się z uwierzytelnieniem użytkownika) ascii ustawia tryb transmisji na tekstowy (ASCII) binary ustawia tryb transmisji na binarny ls wyświetla zawartość katalogu bieżącego po stronie serwera cd nazwa_katalogu zmienia katalog bieżący po stronie serwera get nazwa_pliku kopiuje plik z katalogu bieżącego po stronie serwera do katalogu bieżącego po stronie klienta
7
put nazwa_pliku kopiuje plik z katalogu bieżącego po stronie klienta do katalogu bieżącego po stronie serwera quit kończy sesję pracy i rozwiązuje połączenie TCP Polecenia ls i cd nie posiadają pełnych funkcjonalności analogicznych poleceń basha. Uwaga W przypadku kopiowania plików przez FTP należy zwracać uwagę na prawa dostępu do powstających kopii i w razie potrzeby od razu je zmieniać. 4. SCP (Secure CoPy) Protokół SCP jest funkcjonalnym odpowiednikiem FTP stosującym szyfrowanie. W pewnej części (nawiązywanie połączenia, szyfrowanie) jest oparty na protokole SSH. Linuksowe polecenie scp ma następującą składnię: scp użytkownik1@host1:plik1 użytkownik2@host2:plik2 i po podaniu automatycznie powoduje żądanie uwierzytelnienia użytkownika.
8
5. HTTP (HyperText Transfer Protocol) Protokół HTTP jest jednym z najpowszechniej używanych protokołów. Służy do przesyłania od klienta do serwera żądań dostarczenia zawartości plików opisujących strony domowe (czasem też do dostarczenia przez klienta pewnych danych, takich jak hasła, dane wpisane do formularza czy zawartości plików cookie), a od serwera do klienta – plików ze stronami domowymi (lub komunikatów o ich niedostępności). Standardowym portem nasłuchu serwera jest port TCP 80. Protokół HTTP nie zawiera mechanizmów szyfrowania i, aby zapewnić tajność przesyłanych danych, musi współpracować z protokołami pomocniczymi (na przykład TLS lub SSL). Typową postacią klienta HTTP jest przeglądarka internetowa (zaopatrzona w graficzne łącze użytkownika i umiejąca obsługiwać również niektóre inne protokoły). Istnieją również bardzo proste klienty, mogące tylko wyświetlać otrzymane zawartości plików we wzbogaconym trybie tekstowym. Prawdopodobnie najbardziej obecnie rozpowszechnionym na świecie serwerem HTTP jest linuksowy serwer Apache.
9
Zasadniczo dostęp do serwera HTTP nie wymaga uwierzytelnienia – HTTP służy do publikowania plików, podobnie, jak, w starszej formie, anonimowy FTP. Publikowane pliki są umieszczane w katalogu o standardowej nazwie public_html i mają przyporządkowane identyfikatory unikalne w skali całego Internetu (URL – Uniform Resource Locator). Pojęcie URL ma szersze znaczenie, niż tylko w odniesieniu do HTTP. Ogólna postać URL jest następująca: protokół : // host : port / ścieżka / plik protokół – zwykle http lub ftp, ale mogą też być inne host – nazwa lub adres internetowy hosta port – numer portu TCP ścieżka / plik – bezwzględna nazwa ścieżkowa pliku (może zawierać znak zastępczy ~)
10
Niektóre z wyżej wymienionych składowych mogą być pominięte w zapisie (są wtedy uwzględniane wartości domyślne): protokół – w przeglądarkach internetowych domyślny jest http; port – przyjmowany jest standardowy port nasłuchu dla danego protokołu; plik – w przypadku protokołu http domyślny jest index.html, zaś jeśli nie jest dostępny, wyświetlana jest zawartość katalogu public_html (jeśli prawa dostępu pozwalają na to). Serwer HTTP z założenia powinien działać bardzo szybko (żeby być w stanie wydajnie obsłużyć jak największą liczbę klientów), w związku z tym z własnej inicjatywy zrywa połączenie TCP z klientem, kiedy tylko przekaże mu żądany plik. Strony domowe udostępniane przez sewer HTTP mogą być statyczne (umieszczone w pliku w stałej postaci) lub dynamiczne (tworzone na bieżąco na podstawie nie tylko zawartości pliku, ale również innych danych, np. danych wpisanych przez użytkownika do formularza lub wybranych myszą, zapisanych w pliku cookie, historii wizyt użytkownika pamiętanej po stronie serwera, bieżącej pory dnia, adresu IP, spod którego klient zgłosił się, itp.).
11
Dane przesyłane od klienta do serwera mają postać pojedynczego łańcucha znaków alfanumerycznych, w którym znaki sterujące są pozamieniane na zwykłe znaki (lub ich sekwencje), na przykład spacje są zamieniane na +, separatory pól w formularzu na &, a znaki +, & czy % na dwucyfrowe kody szesnastkowe poprzedzone znakiem %. Dane mogą być przekazywane do serwera metodą GET (przeznaczoną dla krótkich danych, mniej bezpieczną, dane są uwidocznione w pasku adresowym przeglądarki) lub metodą POST (dowolne dane, bezpieczniejsza, dane nie są uwidocznione). Po stronie serwera dane są uzyskiwane ze zmiennej środowiska QUERY_STRING w przypadku metody GET, zaś z wejścia standardowego w przypadku metody POST. Do przetwarzania danych po stronie serwera i generowania dynamicznych stron domowych zostało zaprojektowanych wiele różnych technologii. Do klasycznych należą: - SSI (Server-Side Includes) – najstarsza, najmniej bezpieczna, obecnie już nie używana; - CGI (Common Gateway Interface) – najbardziej uniwersalna (umożliwia użycie dowolnego języka programowania), średnio bezpieczna, obecnie dość rzadko używana; - PHP (różne interpretacje skrótu) – szeroko rozpowszechniona, może być wykorzystywana zarówno jako CGI, jak i (częściej) jako moduł serwera, umożliwia tworzenie wstawek w plikach HTML.
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.