Protokół FTP
Transkrypt
Protokół FTP
Plan wykładu 1. Protokół FTP. 2. Protokół HTTP, ● usługi www, ● model request-response (żądanie-odpowiedź), ● przekazywanie argumentów, ● AJAX. 1 Protokół FTP Protokół FTP (File Transfer Protocol) [RFC 959] umożliwia przesyłanie plików tekstowych i binarnych. Serwer FTP działa na porcie 21. [serwer] 220 serwer.adres FTP server ready. [klient] USER użytkownik<CRLF> [serwer] 331 Password required for użytkowinik. [klient] PASS hasło<CRLF> [serwer] 230 User użytkownik logged in. [klient] SYST<CRLF> [serwer] 215 UNIX Type: L8 Version: Compaq Tru64 UNIX V5.0 2 Protokół FTP [klient] PASV<CRLF> [serwer] 227 Entering Passive Mode (ip1,ip2,ip3,ip4,port1,port2) [klient] LIST<CRLF> [serwer] 150 Opening ASCII mode for data connection for /bin/ls (0.0.0.0,0) dane są przesyłane na innym porcie. Port 21 będzie przeznaczony tylko dla komunikatów kontrolnych. W celu odebrania danych należy otworzyć nowe połączenie z adresem: ip1.ip2.ip3.ip4:port1*256+port2. [serwer] 226 Transfer complete. 3 Protokół FTP [klient] PASV<CRLF> [serwer] 227 Entering Passive Mode (ip1,ip2,ip3,ip4,port1,port2) [klient] RETR jakis.plik<CRLF> [serwer] 150 Opening BINARY mode data connection for jakis.plik (0.0.0.0,0) ... [serwer] 226 Transfer complete. [klient] QUIT<CRLF> [serwer] Goodbye. [serwer] Zakończenie połączenia. 4 Serwery FTP proftpd (http://www.proftpd.org) vsftpd (http://vsftpd.beasts.org) Serwer ftp może korzystać z lokalnej bazy użytkowników (konta na serwerze) lub też autoryzować użytkownika poprzez inny niezależny mechanizm. Dostęp do ftp bez powłoki: modyfikacja /etc/passwd: ciesla:x:1002:21::/var/ftp/ciesla:/bin/false Autoryzacja „lokalna” przez PAM, plik /etc/pam.d/ftp #%PAM-1.0 auth required /lib/security/pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed auth required /lib/security/pam_unix.so shadow nullok #auth required /lib/security/pam_shells.so account required /lib/security/pam_unix.so session required /lib/security/pam_unix.so. 5 Usługi WWW WWW (World Wide Web) jest najpopularniejszym sposobem udostępniania informacji w sieci. Umożliwia umieszczenie w jednym dokumencie między innymi tekstu, grafiki, animacji oraz dźwięku. Standard WWW został opracowany w 1991 roku. Dwa lata później powstała pierwsza graficzna przeglądarka stron WWW – Mosaic. Strony są zapisane w języku HTML (HyperText Markup Language), a do ich przesyłania służy protokół HTTP (HyperText Transfer Protocol). WWW opiera się na modelu klient – serwer. Strony są identyfikowane za pomocą adresów URL. Domyślny port dla usługi HTTP to 80. 6 Protokół HTTP Protokół HTTP [RFC 2616] przykładowe połączenie: [klient] HEAD / HTTP/1.1 <CRLF> Host: www.if.uj.edu.pl <CRLF> <CRLF> [serwer] HTTP/1.1 200 OK Date: Sun, 10 Oct 2004 19:54:37 GMT Server: Apache/1.3.27 (Unix) mod_jk/1.2.0 PHP/4.3.2 Last-Modified: Thu, 23 Sep 2004 07:02:33 GMT ETag: "1357a3-294c-41527509" Accept-Ranges: bytes Content-Length: 10572 Content-Type: text/html [serwer]zamknięcie połączenia. Komenda HEAD zwraca ogólne informacje na temat wskazanego dokumentu. 7 Protokół HTTP W celu uzyskania treści wskazanego dokumentu należy użyć komendy GET lub POST. Za pomocą tych komend można również przekazać argumenty do serwera WWW. Schemat wywołania: [klient] GET /dokument?arg1=wart1&arg2=wart2 HTTP/1.1<CRLF> Host: www.if.uj.edu.pl<CRLF><CRLF> lub [klient] POST /dokument HTTP/1.1<CRLF> Host: www.if.uj.edu.pl<CRLF> Content-Type: application/x-www-form-urlencoded<CRLF> Content-Length: 21<CRLF><CRLF> arg1=wart1&arg2=wart2<CRLF> 8 Protokół HTTP Pozostałe komendy: ● OPTIONS – wykaz komend dostępnych dla wskazanego dokumentu (serwera), ● PUT – wstawia dokument pod określony adres URL, ● DELETE – kasuje dokument pod określonym adresem, ● TRACE – zwraca informacje o poprawności zapytania. Nie zwraca, zawartości dokumentu, ● CONNECT – zarezerwowana na potrzeby transmisji kodowanej (SSL). 9 Popularne serwery WWW ● Apache – http://httpd.apache.org – darmowy serwer z udostępnionym kodem źródłowym (licencja GPL). Posiada liczne moduły umożliwiające współpracę z innymi systemami (języki programowania, bazy danych). Może działać pod kontrolą różnych systemów operacyjnych, ● IIS (Internet Information Services) – http://www.microsoft.com/iis – komercyjny, wspiera technologię ASP (Active Server Pages). Współpracuje głównie z językami programowania firmy Microsoft. Działa w środowisku MS Windows, ● Tomcat – http://jakarta.apache.org/tomcat – darmowy serwer referencyjny dla technologii JSP (Java Server Pages), kontener servletów. Napisany w Javie. 10 Konfiguracja Apache'a Konfiguracja startowa programu serwera: /etc/conf.d/apache2: APACHE2_OPTS="-D DEFAULT_VHOST -D PHP5" Konfiguracja pracy serwera: /etc/apache2/httpd.conf: <VirtualHost *:80> ServerAdmin [email protected] DocumentRoot /var/www/docs/katalog.dla.adres.com ServerName adres.com ErrorLog /var/log/apache2/adres.com-error_log CustomLog /var/log/apache2/adres.com-access_log common </VirtualHost> 11 Serwer WWW model request-response przeglądarka WWW (JavaScript) żądanie danych Oprogramowanie serwera WWW strona HTML Moduły (np. CGI, PHP, Servlety, JSP, ASP, Perl, Python) Inne systemy System operacyjny Bazy danych 12 Przekazywanie argumentów <html> <body> Podaj proszę swoje imie: <form name="formularz" method="get" action="skrypt.php"> Imie: <input type="text" name="imie" /> <input type="submit" /> </form> </body> </html> http://empetrum.if.uj.edu.pl/skrypt.php?imie=Ala 13 Przekazywanie argumentów Skrypt php po stronie serwera: <?php $s = $_GET['imie'] ?> <html> <body> Witaj <?php echo $s ?> </body> <html> 14 Przekazywanie argumentów Przeglądarka i serwer mogą wymieniać się danymi: ● GET – argumenty wywołania skryptu/strony. Dane z przeglądarki do serwera. Przykład: http://phpbb3.pl/viewtopic.php?f=5&t=1018 ● POST – Analogiczne, z tym że argumenty nie są przesyłane poprzez adres URL. ● COOKIE – argumenty przesłane od serwera do przeglądarki w celu późniejszej identyfikacji klienta. ● SESSION – argumenty związane z klientem trzymane po stronie serwera oznaczone identyfikatorem sesji przekazywanym pomiędzy serwerem i klientem. 15 Cookies (ciasteczka) Serwer → przeglądarka: HTTP/1.1 302 Found Date: Sat, 25 Oct 2008 07:48:15 GMT Server: Apache ... Set-Cookie: imie=Michal; expires=Sat, 01 Nov 2008 07:48:15 GMT; path=/; domain=.uj.pl; HttpOnly Set-Cookie: nazwisko=Ciesla; path=/; domain=.uj.pl; HttpOnly Location: http://www.uj.pl/index.php?st=0 ... Przeglądarka → serwer: GET /index.php?st=0& HTTP/1.1 ... Cookie: imie=Michal; nazwisko=Ciesla; ... 16 Sesje Przekazywanie sesji (identyfikatora sesji) jest możliwe na dwa sposoby: 1. Poprzez Cookie: HTTP/1.1 302 Found Date: Sat, 25 Oct 2008 07:48:15 GMT Server: Apache ... Set-Cookie: s=94a576da1f8e5036a0c44fce6b1e1044; expires=Sat, 01 Nov 2008 07:48:15 GMT; path=/; domain=.uj.pl; HttpOnly ... 2. Poprzez dodatkowy argument GET – dodanie do każdego możliwego linka wysyłanego przez przeglądarkę członu http://...&sid=94a576da1f8e5036a0c44fce6b1e1044. 17 Sesje i cookies w PHP Ustawianie cookies: bool setcookie (string $cookiename [, string $value [, int $expire [, string $path [, string $domain [, bool $secure [, bool $httponly ]]]]]] ) Odczyt cookies: $_COOKIE['cookiename'] lub $_REQUEST['cookiename']. Sesje: bool session_start() Przykład: session_start(); echo 'Witaj na stronie $_SESSION['strona']<br />'; $_SESSION['strona']; = 'inna strona'; 18 JavaScript <SCRIPT TYPE="text/javascript"> <!-function Test(){ var s = document.formularz.imie.value; alert("Witaj " + s + "!"); } // --> </SCRIPT> <html> <body> Podaj proszę swoje imie: <form name="formularz" onSubmit="Test()"> Imie: <input type="text" name="imie" /> <input type="submit"/> </form> </body> </html> 19 AJAX AJAX (Asynchronous JavaScript and XML) jest techniką pozwalającą zapewnić ciągłą (asynchroniczną) komunikację pomiędzy przeglądarką internetową a serwerem www. AJAX nie stanowi odrębnej technologii a jedynie wykorzystuje już istniejące: HTTP, JavaScript, CSS, XML 20 AJAX - przykład <html> <body> <script type="text/javascript"> function ajaxFunction(){ var xmlHttp; try{ // Firefox, Opera 8.0+, Safari xmlHttp=new XMLHttpRequest(); }catch (e){ // Internet Explorer try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){ alert("W Twojej przeglądarce nie można używać AJAXa!"); return false; } } } 21 AJAX - przykład xmlHttp.onreadystatechange=function(){ if(xmlHttp.readyState==4){ document.formularz.time.value=xmlHttp.responseText; } } xmlHttp.open("GET","time.php",true); xmlHttp.send(null); } </script> <form name="formularz"> Imie: <input type="text" onkeyup="ajaxFunction();" name="imie" /> Czas: <input type="text" name="time" disabled /> </form></body> </html> 22 AJAX – shrypt time.php <?php header("Expires: Sat, 1 Jan 2000 00:00:00 GMT"); header("Last-Modified: ".gmdate( "D, d M Y H:i:s")."GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pragma: no-cache"); echo date("d M Y H:i:s"); ?> Czas będzie aktualizowany przy każdym wciśnięciu klawisza w polu „Imie”. Strona nie będzie przeładowywana. Przydatne linki: http://www.w3schools.com/Ajax/default.asp http://www.php.net http://httpd.apache.org. 23 Podsumowanie 1. Protokół FTP jest wykorzystywany do przesyłania plików w sieci internet. Usługi www są udostępniane poprzez protokół HTTP działający w modelu request-response. Ze względu na postępujący rozwój i dużą ilość zastosowań opracowano metody asynchronicznej wymiany danych w ramach protokołu HTTP, pomiędzy przeglądarką internetową a serwerem www. 24