Sieci komputerowe Wykład 8: Warstwa zastosowań: FTP i HTTP Marcin Bieńkowski Instytut Informatyki Uniwersytet Wrocławski Sieci komputerowe (II UWr) Wykład 8 1 / 26
Przypomnienie: Internetowy model warstwowy 5 4 DNS BSD sockets interface UDP FTP TCP HTTP 3 IP ICMP 2 1 Ethernet ARP / RARP Sieci komputerowe (II UWr) Wykład 8 2 / 26
Spis treści 1 FTP 2 HTTP Serwery proxy Sieci komputerowe (II UWr) Wykład 8 3 / 26
FTP FTP Sieci komputerowe (II UWr) Wykład 8 4 / 26
FTP FTP File Transfer Protocol Protokół służacy do przesyłania plików z serwera / na serwer. Serwer działa na porcie 21. Po połaczeniu możemy wydawac polecenia (podobne do uniksowych poleceń). Jeśli przesyłane sa dane (pliki) to otwierane jest dodatkowe połaczenie. prezentacja Sieci komputerowe (II UWr) Wykład 8 5 / 26
Połaczenie dla danych FTP Tryb aktywny Klient FTP wybiera port, informuje o nim serwer, po czym zaczyna na nim nasłuchiwać Serwer FTP łaczy się z tym portem i wysyła tam żadane dane Problem jeśli klient jest za routerem z NAT. Tryb pasywny Klient żada, żeby serwer wybrał port Serwer wybiera port, informuje o nim klienta, zaczyna nasłuchiwać Klient łaczy się z tym portem i pobiera stamtad żadane dane Sieci komputerowe (II UWr) Wykład 8 6 / 26
HTTP HTTP Sieci komputerowe (II UWr) Wykład 8 7 / 26
HTTP HyperText Transfer Protocol Protokół służacy do przesyłania plików (tak jak FTP) Bardzo dojrzały i złożony (choć nieskomplikowany) protokół wersja 1.1 Działa w przestrzeni nazw rozłacznej z FTP Korzysta z portu 80. Sieci komputerowe (II UWr) Wykład 8 8 / 26
HTTP URL (Uniform Resource Locator) (1) URL: Indentyfikuje dany zasób Składa się z 2 części rozdzielonych dwukropkiem schemat: (http, ftp, mailto, file,...) część zależna od rodzaju zasobu Przykłady: http://www.ii.uni.wroc.pl/index.html http://pl.wikipedia.org/wiki/url ftp://ftp.kernel.org/pub/index.html mailto:jan.kowalski@serwer.com Sieci komputerowe (II UWr) Wykład 8 9 / 26
URL (2) HTTP URL dla schematów http, ftp Cześć po dwukropku to: // nazwa DNS serwera opcjonalnie :port / identyfikator zasobu wewnatrz serwera Przykład: http://www.ii.uni.wroc.pl:80/ mbi/dyd/sieciw_13s/ Uwagi: / w identyfikatorze wskazuje na hierarchię. Identyfikator zasobu niekoniecznie jest ścieżka do pliku! Sieci komputerowe (II UWr) Wykład 8 10 / 26
URL (2) HTTP URL dla schematów http, ftp Cześć po dwukropku to: // nazwa DNS serwera opcjonalnie :port / identyfikator zasobu wewnatrz serwera Przykład: http://www.ii.uni.wroc.pl:80/ mbi/dyd/sieciw_13s/ Uwagi: / w identyfikatorze wskazuje na hierarchię. Identyfikator zasobu niekoniecznie jest ścieżka do pliku! Sieci komputerowe (II UWr) Wykład 8 10 / 26
HTTP Żadanie i odpowiedź HTTP Jak to działa: Przegladarka WWW dostaje URL, rozbija go na człony (zakładamy, że schemat = http). Nawiazuje połaczenie z serwerem WWW na porcie 80. Wysyła żadanie HTTP (metoda GET) przykład. Serwer analizuje żadanie, pobiera z dysku odpowiedni plik. Serwer ustawia odpowiedni nagłówek i typ MIME pliku. Serwer wysyła plik przykład. Serwer zamyka połaczenie (lub czeka na następne polecenie) Przegladarka wykonuje akcję w zależności od typu MIME (wyświetla, używa wtyczki, używa zewnętrznej aplikacji). Sieci komputerowe (II UWr) Wykład 8 11 / 26
Połaczenia trwałe HTTP Nawiazywanie połaczenia TCP = duży narzut Zazwyczaj przegladarka pobiera wiele dokumentów naraz (np. strona WWW + obrazki) Standard HTTP/1.1: połaczenie jest domyślnie otwarte Zamknięcie połaczenia, jeśli w żadaniu wyślemy Connection: close prezentacja Sieci komputerowe (II UWr) Wykład 8 12 / 26
Typ MIME HTTP Serwer HTTP dla każdego wysłanego pliku w nagłówku odpowiedzi powinien ustawić poprawnie pole Content-type. Przykłady: text/plain plik tekstowy text/html strona HTML image/jpeg obrazek JPEG video/mpeg film MPEG application/msword dokument DOC application/pdf dokument PDF application/octet-stream ciag bajtów bez interpretacji Sieci komputerowe (II UWr) Wykład 8 13 / 26
Odpowiedzi HTTP HTTP Ważniejsze typy odpowiedzi: 200 OK 301 Moved Permanently 302 Found 304 Not Modified 401 Unauthorized 403 Forbidden 404 Not Found 500 Internal Server Error Sieci komputerowe (II UWr) Wykład 8 14 / 26
HTML HTTP HTTP zaprojektowany został do przesyłania hipertekstu = tekstu z odnośnikami do innych dokumentów. Taka rolę pełnia dokumenty napisane w języku HTML. HTTP + HTML = WWW. Standaryzacja HTML-a zajmuje się organizacja W3C. Przegladarka pobiera stronę HTML i znajdujace sie na niej elementy (obrazki, filmy, elementy osadzone itp.), każdy w osobnej transakcji HTTP (ale być może w jednym połaczeniu TCP). Sieci komputerowe (II UWr) Wykład 8 15 / 26
Wersje HTML HTTP Bardzo pobieżny przeglad HTML 1.0, 2.0, głównie środowiska akademickie, ważna treść HTML 3.0, 3.2, 4.0, ciężar przenosi się na prezentację (wymieszana z treścia) HTML 4.01 czyli wszystko dozwolone + 95% niechlujnie napisanych stron przegladarka musi sobie radzić nie tylko ze standardem ale i z milionem odstępstw od niego. XHTML 1.0, oparty na XML, sztywna struktura, oddzielenie treści i struktury (HTML) od prezentacji (style CSS), sztywny format = łatwiejsze przetwarzanie automatyczne przetwarzanie informacji na stronie, jeden HTML, różne CSS = różne wersje dla różnych odbiorców (PDA, komórki, niewidomi,...) Sieci komputerowe (II UWr) Wykład 8 16 / 26
HTTP Przegladarki (udział w rynku) Obrazek ze strony http://en.wikipedia.org/wiki/comparison_of_web_browsers Sieci komputerowe (II UWr) Wykład 8 17 / 26
HTTP Dynamiczne strony WWW Dynamika po stronie klienta Javascript: prosty obiektowy interpretowany język, kod programu jest wbudowany w HTML. Aplety Javy, aplikacje Flash, Silverlight (wykonanie realizowane przez odpowiednie wtyczki do przegladarki) Dynamika po stronie serwera URI może wskazywać na program, którego wynikiem działania jest HTML (+ ewentualnie nagłówek HTTP) CGI (Common Gateway Interface): standard umożliwiajacy wykonanie dowolnego zewnętrznego programu Mechanizmy zintegrowane z serwerem WWW (PHP, JSP, ASP, mod_perl,...) Formularze, przekazywanie parametrów (metody GET i POST) Cookies = utrzymywanie stanu sesji Sieci komputerowe (II UWr) Wykład 8 18 / 26
HTTP Dynamiczne strony WWW Dynamika po stronie klienta Javascript: prosty obiektowy interpretowany język, kod programu jest wbudowany w HTML. Aplety Javy, aplikacje Flash, Silverlight (wykonanie realizowane przez odpowiednie wtyczki do przegladarki) Dynamika po stronie serwera URI może wskazywać na program, którego wynikiem działania jest HTML (+ ewentualnie nagłówek HTTP) CGI (Common Gateway Interface): standard umożliwiajacy wykonanie dowolnego zewnętrznego programu Mechanizmy zintegrowane z serwerem WWW (PHP, JSP, ASP, mod_perl,...) Formularze, przekazywanie parametrów (metody GET i POST) Cookies = utrzymywanie stanu sesji Sieci komputerowe (II UWr) Wykład 8 18 / 26
Formularze HTTP prezentacja hydeparku Wysyłanie przez GET Po wysłaniu przegladarka pobiera przykładowo stronę http://domena/program?par1=value1&par2=value2 Serwer WWW uruchamia program i przekazuje mu parametry. program coś robi + generuje odpowiedź HTML. Problemy: Widoczny URL. Hasła? Problem z dużymi danymi. Np. chcemy wysłać plik! Wysyłanie przez POST Przegladarka wysyła żadanie POST do serwera HTTP o stronę http://domena/program W treści żadania (nie nagłówku) znajduje się par1=value1&par2=value2 Sieci komputerowe (II UWr) Wykład 8 19 / 26
Formularze HTTP prezentacja hydeparku Wysyłanie przez GET Po wysłaniu przegladarka pobiera przykładowo stronę http://domena/program?par1=value1&par2=value2 Serwer WWW uruchamia program i przekazuje mu parametry. program coś robi + generuje odpowiedź HTML. Problemy: Widoczny URL. Hasła? Problem z dużymi danymi. Np. chcemy wysłać plik! Wysyłanie przez POST Przegladarka wysyła żadanie POST do serwera HTTP o stronę http://domena/program W treści żadania (nie nagłówku) znajduje się par1=value1&par2=value2 Sieci komputerowe (II UWr) Wykład 8 19 / 26
Formularze HTTP prezentacja hydeparku Wysyłanie przez GET Po wysłaniu przegladarka pobiera przykładowo stronę http://domena/program?par1=value1&par2=value2 Serwer WWW uruchamia program i przekazuje mu parametry. program coś robi + generuje odpowiedź HTML. Problemy: Widoczny URL. Hasła? Problem z dużymi danymi. Np. chcemy wysłać plik! Wysyłanie przez POST Przegladarka wysyła żadanie POST do serwera HTTP o stronę http://domena/program W treści żadania (nie nagłówku) znajduje się par1=value1&par2=value2 Sieci komputerowe (II UWr) Wykład 8 19 / 26
HTTP Protokół HTTP jako warstwa transportowa Pisanie poprawnych programów wykorzystujacych TCP nie jest trywialne. A może wykorzystać HTTP do przesyłania danych? Testowego klienta (przegladarkę www) mamy za darmo. Przykład: REST Zautomatyzowany dostęp do niektórych serwisów WWW (przykładowo do: ebay, Amazon, Twitter, Flickr,...) REST (Representational State Transfer) tworzenie usługi sieciowej wykorzystujac metody (GET, PUT, POST, DELETE) protokołu HTTP. REST nie jest standardem, raczej filozofia. Łatwy do zautomatyzowania, czytelny dla człowieka Sieci komputerowe (II UWr) Wykład 8 20 / 26
HTTP Protokół HTTP jako warstwa transportowa Pisanie poprawnych programów wykorzystujacych TCP nie jest trywialne. A może wykorzystać HTTP do przesyłania danych? Testowego klienta (przegladarkę www) mamy za darmo. Przykład: REST Zautomatyzowany dostęp do niektórych serwisów WWW (przykładowo do: ebay, Amazon, Twitter, Flickr,...) REST (Representational State Transfer) tworzenie usługi sieciowej wykorzystujac metody (GET, PUT, POST, DELETE) protokołu HTTP. REST nie jest standardem, raczej filozofia. Łatwy do zautomatyzowania, czytelny dla człowieka Sieci komputerowe (II UWr) Wykład 8 20 / 26
HTTP Serwery proxy Serwery proxy Sieci komputerowe (II UWr) Wykład 8 21 / 26
HTTP Serwery proxy Zamiast łaczyć się bezpośrednio z serwerem WWW, przegladarka może łaczyć się z tzw. serwerem proxy. Po co? Ograniczanie ruchu do/z zewnętrznych stron WWW przechowywanie zawartości stron w pamięci proxy. Kontrolowanie dostępu do zasobów WWW. Uwaga: serwer proxy zazwyczaj oznacza serwer proxy WWW, ale można wyobrazić sobie proxy dla wielu innych usług (ARP, DNS, DHCP) Sieci komputerowe (II UWr) Wykład 8 22 / 26
HTTP Serwery proxy Zamiast łaczyć się bezpośrednio z serwerem WWW, przegladarka może łaczyć się z tzw. serwerem proxy. Po co? Ograniczanie ruchu do/z zewnętrznych stron WWW przechowywanie zawartości stron w pamięci proxy. Kontrolowanie dostępu do zasobów WWW. Uwaga: serwer proxy zazwyczaj oznacza serwer proxy WWW, ale można wyobrazić sobie proxy dla wielu innych usług (ARP, DNS, DHCP) Sieci komputerowe (II UWr) Wykład 8 22 / 26
Serwer proxy HTTP Serwery proxy Działanie: Oczekuje na porcie 8080 lub 3128 (zazwyczaj). Jeśli w pamięci podręcznej (cache) nie ma żadanej strony lub jest nieaktualna, to: proxy łaczy się z zadana strona, zapamiętuje odpowiedź w pamięci podręcznej (cache). Proxy zwraca odpowiedź klientowi. Sieci komputerowe (II UWr) Wykład 8 23 / 26
Serwer proxy HTTP Serwery proxy Działanie: Oczekuje na porcie 8080 lub 3128 (zazwyczaj). Jeśli w pamięci podręcznej (cache) nie ma żadanej strony lub jest nieaktualna, to: proxy łaczy się z zadana strona, zapamiętuje odpowiedź w pamięci podręcznej (cache). Proxy zwraca odpowiedź klientowi. Sieci komputerowe (II UWr) Wykład 8 23 / 26
HTTP Serwery proxy Aktualność pamięci podręcznej Jak serwer proxy decyduje, czy strona w cache jest nadal aktualna: Serwer WWW ustawia pole Expires: w nagłówku odpowiedzi po tej dacie serwer proxy wyrzuca stronę z cache Serwer WWW może ustawić pole Pragma: no-cache lub/i Cache-Control: no-cache strona w ogóle nie będzie zapamiętywana na serwerze proxy Klient WWW może ustawić powyższe pole zawartość cache serwera zostanie pominięta W pozostałych przypadkach heurystyki oparte np. na polu Last-modified: Sieci komputerowe (II UWr) Wykład 8 24 / 26
HTTP Anonimowe serwery proxy Serwery proxy Zwykły serwer proxy dodaje do naszego żadania HTTP dodatkowe pola w nagłówku, m.in. X-Forwarded-For: (nasz adres IP) Via: (adres IP proxy) prezentacja. (Istnieja tzw. anonimowe serwery proxy, które nie dodaja tych nagłówków.) Sieci komputerowe (II UWr) Wykład 8 25 / 26
Lektura dodatkowa HTTP Serwery proxy Kurose, Ross: rozdział 2.2 2.3 Tanenbaum: rozdział 7.3 Sieci komputerowe (II UWr) Wykład 8 26 / 26