FTP File Transfer Protocol Protokół pozwalający na transfer plików pomiędzy hostami w sieci TCP/IP. Protokół warstwy aplikacyjnej. Opiera się w warstwie transportowej na sesji TCP zapewnia kontrolę poprawności przsyłania danych. W odróżnieniu od TFTP zapewnia autoryzację użytkownika. Zwalnia użytkownika od znajomości systemów plikowych w różnych środowiskach Pozwala zarówno na dostęp interaktywny jak i z poziomu programów 1
FTP File Transfer Protocol RFC 959 oficjalna specyfikacja dla FTP oprogramowanie FTP (serwer jak i klient) musi być zgodne z tym dokumentem. Inne RFC mogą rozszerzać lub wyjasniać ten dokument Propozycje uzupełnień to np.: - RFC 2228 FTP Security Extensions (nowe komendy, mechanizmy dostarczające silnej autentyfikacji, zapewniające integralność i poufność danych) - RFC 2428 FTP Extensions for IPv6 and NAT - RFC 2577 Security Considerations (mechanizm pozwalający klientowi ustanowić kontrolę połączenia i transferu danych pomiędzy dwoma serwerami FTP proxy FTP 2
FTP Model procesu 3
FTP Model procesu Usługa FTP składa się z części obsługującej użytkownika (na kliencie), nazywanej User-FTP oraz z części Server-FTP. User-FTP składa się z interfejsu użytkownika (User Interface - UI), interpretera protokołu (User Protocol Interpreter User PI) oraz procesu obsługującego przesyłanie danych (User Data Transfer Process User DTP). Serwer składa się z podobnych modułów: Server PI, oraz Server DTP) 4
FTP Model procesu User PI inicjuje logiczne połączenie, które wykorzystuje protokół TELNET. Użytkoenik wykorzystuje przydzielony port dynamiczny, aby połączyć się z numerem portu serwera 21 (domyślnie), przydzielonym do obsługi kontroli FTP. Dane, które mają być wysłane, przechodzą przez inny przydzielony wewnętrznie numer prtu w części User DTP i wysyłane są do portu 20 na serwerz FTP. 5
FTP Model procesu Połączenia do przesyłania danych i uzywające ich procesy są tworzone dynamicznie w razie potrzeby, natomiast połączenie sterujące jest jedno na cała sesję Po zamknięciu połączenia sterującego sesja się kończy. Połączenie sterujące (kontrolne) służy do przesyłania komend i kodów odpowiedzi. Inicjuje ono połączenie z danymi. Połaczenie kontrolne wykorzystuje protokół TELNET, komendy i dpowiedzi są ciągami znaków. 6
FTP polecenia FTP Polecenia kontroli dostępu: - USER <nazwa użytkownika> - identyfikuje użytkownika - PASS <hasło> - przekazuje hasło użutkownika - CWD <ścieżka> - zmiana katalogu roboczego - CDUP przejście do katalogu wyższego poziomu - QUIT wylogowanie użytkownika 7
FTP polecenia FTP Polecenia parametrów przesyłania: - PORT <port host> - określa port danych, który będzie wykorzystywany - PASV każe serwerowi nasłuchiwać na porcie danych - TYPE <kod typu> - określa typ reprezentacji danych np. ASCII, EBCDIC, Image, Local - STRU <typ struktury> - określa strukturę pliku: File, Record, Page - MODE <typ trybu> - określa tryb przesyłania: Stream, Block lub Compressed. 8
FTP polecenia FTP Polecenia usług: - RETR <ścieżka> - pobranie kopii pliku - STOR <ścieżka> - umieszczenie danych na serwerze - APPE <ścieżka> - przesłanie pliku i dołączenie - REST <znacznik> rozpoczęcie transmisji od podanego miejsca - DELE <ścieżka> - usunięcie pliku z serwera - RMD <ścieżka> - usunięcie katalogu - MKD <ścieżka> - utworzenie katalogu - List [<ściezka>] transfer listy plików 9
FTP odpowiedzi Odpowiedzi są transmitowane przez połączenie Kontrolne. Odpowiedzi są pojedynczymi liniami zawierającymi: - trzycyfrowy numer - tekst komunikatu. Tekst komunikatu opisuje kod i jest zależna od implemntacji. 10
FTP odpowiedzi Wartości jakie przyjmuje pierwsza cyfra są następujące: - 1yz pozytywna odpowiedź wstępna (działa, czekać) - 2yz pozytywna odpowiedź kończąca (sukces) - 3yz pozytywna odpowiedź przejściowa (czeanie na więcej informacji) - 4yz przejściowa kończąca odpowiedź negatywna (błąd sprobuj później) - 5yz trwała kończąca odpowiedź negatywna (błąd) 11
FTP odpowiedzi Wartości drugiej cyfry: - x0z składnia (problem ze składnią komendy) - x1z informacja (odpowiedź na help) - x2z połączenie (problem z połączeniem) - x3z weryfikowanie autentyczności i prawa dostepu (problem z logowaniem) - x4z nieokreślona - x5z system plików Trzecia cyfra precyzuje komunikat. 12
FTP tryb pasywny A PASV request asks the server to accept a data connection on a new TCP port selected by the server. PASV parameters are prohibited. The server normally accepts PASV with code 227. Its response is a single line showing the IP address of the server and the TCP port number where the server is accepting connections. The PORT verb A PORT request asks the server to use a different mechanism of creating a data connection: the server makes a TCP connection to the client. The PORT request has a parameter in the form h1,h2,h3,h4,p1,p2 meaning that the client is listening for connections on TCP port p1*256+p2 at IP address h1.h2.h3.h4. (The RFC 959 formal syntax does not allow any of these numbers to be 0. The formal syntax is wrong.) The server normally accepts PORT with code 200. If the server was listening for a connection, it stops, and drops any connections already made. The server does not connect to the client's port immediately. After the client sends RETR and after the server sends its initial mark, the server attempts to connect. It rejects the RETR request with code 425 if the connection attempt fails; otherwise it proceeds normally. In theory, the client can send RETR without a preceding PORT or PASV. The server is then supposed to connect to port 20 at the client's IP address. In practice, however, servers refuse to do this. 13