FTP

FTP (File Transfer Protocol)

 

Protokół FTP, zdefiniowany w dokumencie RFC 959 uaktualnionym przez RFC 2228, jest jednym z najstarszych protokołów internetowych i pozostaje jednym z najszerzej stosowanych. Wykorzystuje on oddzielne połączenia do poleceń i do danych — interpretator protokołów implementuje operacje protokołu FTP, a proces przesyłania danych (DTP) przesyła dane. Protokół i ruch przesyłu danych korzystają z całkowicie oddzielnych sesji TCP. Serwery FTP oczekują na sygnał z portu 21, a serwer inicjuje połączenia transmisji danych z portu 20 serwera do określonego portu w kliencie. Połączenie transmisji danych może być stosowane w obu kierunkach i nie musi istnieć przez cały czas. Ustalonym celem protokołu FTP jest osłanianie użytkowników przed wahaniami w systemach przechowywania plików na hostach oraz niezawodny i wydajny przesył danych. Chociaż można go używać bezpośrednio na terminalu za pomocą polecenia ftp, jest on zaprojektowany głównie do wykorzystywania przez aplikacje. Protokół FTP może przesyłać pliki o różnym formacie danych i różnej długości słów. Dane są pakowane w 8-bitowe bajty transmisji na hoście wysyłającym i rozpakowywane do formatu macierzystego na hoście odbierającym. Struktury plików i tryby transmisji protokołu FTP

Protokół FTP pozwala również na określanie struktury pliku.

Zdefiniowane są trzy struktury:
struktura pliku
- nie ma żadnej struktury wewnętrznej, a plik uważany jest za nieprzerwany ciąg bajtów danych,
struktura rekordu - plik składa się z rekordów sekwencyjnych,
struktura strony - plik składa się z niezależnych stron indeksowanych.
Strukturą domyślną jest struktura pliku, ale zarówno struktura pliku, jak i struktura rekordu są akceptowane dla plików tekstowych, takich jak pliki ASCII (Amerykański Standard Kodowy Wymiany Informacji), przez wszystkie implementacje protokołu FTP. Struktura pliku ma wpływ zarówno na jego tryb transmisji, jak i na jego interpretację i przechowywanie.


Są trzy tryby transmisji:
Tryb strumieniowy
- plik jest transmitowany jako strumień bajtów, bez żadnych ograniczeń dotyczących wykorzystywanego typu danych. Dozwolone są struktury rekordu. W pliku o strukturze rekordu, koniec rekordu (End-of-Record, EOR) oraz koniec pliku (End-of-File, EOF) identyfikowane są po 2-bajtowym kodzie kontrolnym. W strukturze pliku, zamknięcie połączenia transmisji danych przez hosta wysyłającego wyznacza EOF. Wszystkie bajty w komunikacie o strukturze pliku są więc bajtami danych.
Tryb blokowy - plik jest transmitowany jako szereg bloków danych poprzedzonych jednym lub większą ilością bajtów nagłówka. Bajty nagłówka zawierają pole liczby oraz kod deskryptora. Pole liczby zawiera całkowitą długość bloku danych w bajtach, oznaczając w ten sposób początek następnego bloku danych. Kod deskryptora definiuje atrybuty bloków, takie jak ostatni blok w pliku (EOF), ostatni blok w rekordzie (EOR), znacznik ponownego uruchomienia, czy dane podejrzane. W tym trybie dozwolone są struktury rekordu i może być stosowany każdy typ reprezentacji.
Tryb zagęszczony - umożliwia kompresję danych składających się z bajtów wypełniacza lub replikacji. Nagłówek trybu zagęszczonego określa liczbę takich bajtów (do 127). Te są następnie wysyłane po upakowaniu do pojedynczego bajta.

Wskazówka: Kod danych podejrzanych nie służy do korygowania błędów. Jest on wykorzystywany, kiedy ośrodki wymieniają dane (takie jak dane pogodowe), które mogą być podatne na błąd lokalny. Kod ten sygnalizuje, że powinny zostać wymienione wszystkie informacje, pomimo że podejrzane są niektóre ich części.

Protokół FTP ma również dwa tryby przesyłania:
tryb ascii - wykorzystuje standardowy 8-bitowy kod ASCII do przesyłania plików tekstowych,
tryb binarny - przesyła pliki binarne w formie procesu „bit po bicie”.

Protokół FTP wykorzystuje do wykrywania błędów protokół TCP, ale może zainicjować ponowne uruchomienie transmisji, jeżeli wystąpi gruby błąd, taki jak „padnięcie” hosta. Protokół standardowy nie ma żadnych zdolności do szyfrowania danych, czy informacji rejestracyjnych, chociaż specyfikacja RFC 2228 zajmuje się tym niedostatkiem. Z tego powodu łączność FTP jest często konfigurowana tak, aby umożliwiać tylko dostęp anonimowy, co zapobiega transmisji nazw użytkowników i haseł w tekście jawnym. Struktura pakietów FTP zależy od struktury plików, trybu transmisji oraz trybu przesyłu danych. Rysunki 9.1 i 9.2 przedstawiają typowe ramki FTP, korzystające z portów serwera — odpowiednio — 21 oraz 22. Rysunki te zostały wygenerowane z pliku przechwytywania Monitora sieci — ftp.cap, dostarczonego na CD-ROM-ie. Procedura służąca do wygenerowania podobnego pliku przechwytywania podana jest w rozwiązaniu natychmiastowym.

Ruch FTP korzystający z portu danych 20
Użytkownik może korzystać z konsoli poleceń, aby wpisywać z klawiatury polecenia FTP, takie jak get i put, albo uruchamiać plik opisowy zawierający te polecenia. Zazwyczaj jednak protokół FTP wykorzystywany jest przez aplikacje do przesyłania danych oraz przez internetowe usługi informacyjne (IIS), które implementują witryny FTP.

Akronim IIS może również oznaczać serwer internetowych usług informacyjnych. Jednak w tym rozdziale oznacza on usługi, które na nim działają. Polecenia FTP wydawane z konsoli poleceń mogą zyskiwać dostęp do witryny FTP. Przeglądarka WWW, taka jak Internet Explorer, może również uzyskać dostęp do witryny FTP, ale przy ograniczonych możliwościach. Pełny dostęp do FTP implementuje się zazwyczaj poprzez zastosowanie komercyjnego zestawu dostępu do FTP (np. CuteFTP - dostępny w plikowni).
 

 

 

 

by Krzysztof Pietrzak 2004

[TCP/IP] [FTP] [TFTP] [HTTP] [TELNET] [NTP]