FTP – File Transfer Protocol
Transkrypt
FTP – File Transfer Protocol
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