Systemy internetowe Wykład 5 Architektura WWW Architektura WWW Serwer to program, który: Obsługuje repozytorium dokumentów Udostępnia dokumenty klientom Komunikacja: protokół HTTP Warstwa klienta HTTP Warstwa serwera HTTP Klient to program użytkowy, który: Wysyła żądania pobrania dokumentów Wizualizuje pobrane dokumenty Obsługuje interakcje z użytkownikiem 1
Obsługa użytkowników Otwarcie p. www.wp.pl/info.html Wizualizacja graficzna Klient HTTP Żądanie Odpowiedź Zamknięcie p. Serwer HTTP www.wp.pl Klient HTTP Program użytkowy odpowiadający m. in. za: inicjowanie połączeń HTTP z serwerem HTTP, wysyłanie żądań pobrania dokumentów, odbieranie dokumentów od serwera HTTP, wizualizację dokumentów, obsługę interakcji użytkownika końcowego z graficznym interfejsem użytkownika zawartym w pobranym dokumencie, szyfrowanie połączeń sieciowych z serwerami HTTP. Przykłady: Firefox, Chrome, Opera, Edge 2
Serwer HTTP (serwer WWW) Program systemowy, nieprzerwanie pracujący, Zadania podstawowe: nasłuch sieciowy w celu odbioru żądań od klientów HTTP, przekazanie żądanego dokumentu do klienta HTTP, Zadania dodatkowe: rejestracja obsługiwanych żądań, uwierzytelnianie i kontrola dostępu użytkowników, szyfrowanie komunikacji sieciowej z klientem HTTP, automatyczny wybór odpowiedniej wersji językowej dokumentu, Przykłady: Apache, Jigsaw, Sun Java System Web Server. Serwer Proxy Serwer HTTP proxy aplikacja pośrednicząca między serwerem HTTP, a klientem HTTP. Serwer HTTP proxy może: pełnić rolę zapory ogniowej pełnić rolę bufora dokumentów, umożliwiać korzystanie z zasobów sieci Internet użytkownikom pracującym w sieci lokalnej. Kategorie serwerów proxy: przeźroczyste (transparent HTTP proxy) nieprzeźroczyste (non-transparent HTTP proxy) 3
Protokół HTTP HTTP - Hypertext Transfer Protocol, RFC 2616 - http://tools.ietf.org/html/rfc2616 tekstowy protokół sieciowy (oparty na TCP), transport dokumentów udostępnianych przez serwery HTTP (tekstowych i binarnych), port 80, model komunikacyjny klient-serwer, protokół ma charakter bezstanowy (niezależne rozpatrywanie żądań; cookies) i bezsesyjny (osobne pobieranie dokumentów; persistent connection i mechanizm sesji). Elementy Komunikatu HTTP Elementy komunikatu HTTP: wiersz początkowy, zero lub wiele wierszy nagłówkowych, wolny wiersz, opcjonalne ciało komunikatu. Wiersz początkowy żądanie: GET /ścieżka/plik.html HTTP/1.0 odpowiedź: HTTP/1.0 200 OK 404 (Not Found); 500 (Server Error)... 4
Elementy komunikatu HTTP cd. Wiersze nagłówkowe: metadane opisujące żądanie/odpowiedź HTTP Nazwa-pola: wartość (User-Agent: Mozilla/5.0) Ciało komunikatu: żądany dokument (odpowiedź HTTP) wartości parametrów/pliki wprowadzone przez użytkownika jeżeli komunikat ma ciało, to ma też wiersze nagłówkowe: Content-Type (format pliku, zgodny ze specyfikacją MIME) Content-Length (rozmiar dokumentu w bajtach) MIME RFC1521 image/gif; text/css; application/zip... Komunikat żądania POST /pracownicy.html HTTP/1.1 User-Agent: Mozilla/5.0 Host: www.zut.pl:8888 Accept-Language: pl; q=0.9, en; q=0.6 Accept: text/html, text/xml; q=0.9; text/plain; q=0.7 Accept-Charset: utf-8; q=0.9, *; q=0.7 Keep-Alive: 200 Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 63 imie=marek&nazwisko=prawi%f1ski&wiek=22+lata 5
Komunikat odpowiedzi HTTP/1.1 200 OK Date: Fri, 09 Jun 2006 17:59:10 GMT Server: Apache/1.0.0 Set-Cookie: PSID=d6dd02e9957fb162d2385ca6f2829a73 Last-Modified: Fri, 09 Jun 2006 17:55:44 GMT Keep-Alive: timeout=15, max=100 Connection: keep-alive Content-Length: 200 Content-Type: text/html; charset=utf-8 <html> <body>... Persistent Connection HTTP/1.0: Jedno żądanie użytkownika seria żądań HTTP. Jedno żądanie HTTP jeden plik. Jedno połączenie jedno żądanie. HTTP/1.1 - Persistent Connections - umożliwienie klientowi HTTP wysłania kolejnego żądania HTTP poprzez zestawione już połączenie. Zagrożenie atakami typu DoS : ograniczenie liczby żądań HTTP, oraz czasu bezczynności otwartego połączenia. 6
Rozkazy HTTP HEAD klient otrzymuje wyłącznie wiersze nagłówkowe odpowiedzi HTTP, bez załączonego ciała; pobranie metadanych opisujących dokument (weryfikacja poprawności adresów i łączy URL). POST - do żądania HTTP dołączone jest ciało, które reprezentuje dane wysyłane przez klienta HTTP do serwera HTTP (np. parametry, plik). GET brak ciała żądania; parametry zostają przesłane w adresie. POST - ciało GET URL (nagłówek) imie=marek&nazwisko=prawi%f1ski&wiek=22+lata Cookies (RFC6265) Serwer: powołuje zmienną Cookie, przesyła ją do klienta. Klient: przechowuje zmienną Cookie wysyła ją do serwera HTTP wraz z kolejnymi żądaniami. Każda zmienna Cookie posiada: nazwę, wartość, czas życia (jak długo klient powinien ją przechowywać), zasięg (dziedzinę adresów URL, którym zmienna ta będzie udostępniana). 7
Wady ciasteczek Są do dane tymczasowe: wygasają automatycznie po pewnym czasie mogą być usunięte lub zablokowane przez użytkownika Identyfikują przeglądarkę, a nie użytkownika Problemy z bezpieczeństwem nie są domyślnie szyfrowane (można to zmienić) są wielokrotnie przesyłane do serwera. Dyrektywa Unii Europejskiej 2012r. Ustawa Prawo telekomunikacyjne zmiana w 2013r. Przesyłanie cookies Żądanie HTTP Odpowiedź HTTP Set-Cookie: imie =Marek imie=marek Żądanie HTTP Cookie: imie=marek Żądanie HTTP Cookie: imie=marek... 8
Protokół HTTPS (1) Wadą protokołu HTTP jest brak zabezpieczenia poufności komunikacji pomiędzy klientem HTTP a serwerem HTTP. Protokół HTTPS szyfrowanie komunikacji. Protokół HTTPS wykorzystuje protokół: SSL (Secure Socket Layer) Od 1999 TLS (Transport Layer Security) SSL (TSL) wykorzystuje algorytm szyfrowania: symetrycznego, asymetrycznego (z kluczem publicznym). Protokół HTTPS (2) Uwierzytelnianie serwera: Podczas nawiązywania połączenia HTTPS klient HTTP otrzymuje od serwera HTTP certyfikat klucza publicznego, na podstawie którego potwierdzana jest tożsamość serwera. Aby certyfikat został uznany przez klienta HTTP, wystawiający go urząd certyfikacyjny powinien zostać uprzednio zarejestrowany w aplikacji klienta HTTP. Certyfikat klucza publicznego jest przyznawany przez tzw. Urzędy Certyfikacji (CA - Cerfificate Authority). Zarządca domeny wysyła Certificate Signing Request 9
Protokół HTTPS (3) Uwierzytelnianie użytkownika końcowego - serwer HTTP żąda od klienta HTTP przesłania certyfikatu użytkownika. Żeby certyfikat klienta mógł zostać przesłany do serwera, musi od zostać uprzednio zarejestrowany w aplikacji klienta HTTP. Połączenie HTTPS przebiega w dwóch etapach: Handshake - seria komunikatów prowadząca do zestawienia bezpiecznego połączenia i ustalenia kluczy szyfrujących etap faktycznej wymiany zaszyfrowanych danych. Handshake 1 2 ClientHello ServerHello; Certificate; ServerKeyExchange; ServerHelloDone 3 Weryfikacja certyfikatu 4 ClientKeyExchange ChangeCipherSpec; Finished 6 5 ChangeCipherSpec; 5 Finished Generowanie Generowanie 7 klucza klucza 10
Dziękuję za uwagę 11