Protokół Przesyłania Plików
Funkcjonować | Udostępnianie plików |
---|---|
Akronim | FTP |
Port |
21 (słuchaj) 20 (dane domyślne) |
RFC | RFC 3659 |
File Transfer Protocol ( Protokół z transferu plików ) lub FTP , to protokół komunikacyjny przeznaczony do plików akcje w sieci TCP / IP . Umożliwia kopiowanie plików z komputera na inny komputer w sieci lub usuwanie lub modyfikowanie plików na tym komputerze. Ten mechanizm kopiowania jest często używany do zasilania strony internetowej hostowanej przez stronę trzecią.
Wariant FTP chroniony przez SSL lub TLS (SSL jest poprzednikiem TLS) nazywa się FTPS .
FTP działa zgodnie z modelem klient-serwer , czyli jedna z dwóch stron, klient , wysyła żądania, na które reaguje druga, zwana serwerem . W praktyce serwer jest komputerem, na którym działa oprogramowanie zwane serwerem FTP , które upublicznia drzewo plików podobne do systemu plików UNIX . Aby uzyskać dostęp do serwera FTP, używane jest oprogramowanie klienta FTP (z interfejsem graficznym lub wierszem poleceń ).
FTP, który należy do warstwy aplikacji w modelu OSI i modelu ARPA , używa TCP połączenia .
Zgodnie z konwencją przydzielane są dwa porty ( dobrze znane porty ) dla połączeń FTP: port 21 dla poleceń i port 20 dla danych. W przypadku tak zwanych niejawnych FTPS , konwencjonalne porty to 990 dla poleceń i 989 dla danych.
Ten protokół może współpracować z IPv4 i IPv6 .
FTP wywodzi się z RFC 114 utworzonego 16 kwietnia 1971. Ta specyfikacja została zastąpiona przez RFC 765 w czerwcu 1980. Sama została przestarzała przez RFC 959 w październiku 1985, ostateczną wersję specyfikacji.
Szereg dokumentów RFC uzupełnia tę specyfikację, np. RFC 2228 z czerwca 1997 r. o rozszerzenia zabezpieczeń lub RFC 2428 z września 1998 r., który dodaje obsługę protokołu IPv6 i definiuje nowy typ trybu pasywnego.
Protokół FTP nie zawsze zapewnia interoperacyjność między różnymi platformami i różnymi regionami poprzez odpowiednie zarządzanie kodowaniem nazw plików. Gwarantuje to jedynie oprogramowanie serwerowe i klienckie zgodne ze standardem RFC 2640, dzięki zastosowaniu kodowania UTF-8 i notabene nowej komendzie LANG pozwalającej na wybór języka komunikatów zwracanych przez serwer podczas sesji FTP. Kodowanie UTF-8 pozwala na kodowanie nazw plików z dowolnego kraju, chociaż serwer może zawsze używać bardziej szczegółowego kodowania lokalnie, z konwersją do UTF-8 według własnego uznania.
Aby uzyskać dostęp do serwera FTP, używane jest oprogramowanie (klient FTP). Oprogramowanie to istnieje z wierszem poleceń lub interfejsem graficznym. Standard FTP jest tak rozpowszechniony, że to oprogramowanie jest teraz dołączane do najnowszych dystrybucji Windows i Linux.
Użycie linii poleceń, zarówno pod Windows, jak i pod Linuksem, odbywa się zazwyczaj za pomocą polecenia ftp adres_du_serwer wpisanego w konsoli. (tutaj ftp to nazwa oprogramowania, a parametr nazwa serwera)
W interfejsach graficznych, takich jak przeglądarki internetowe, używany jest zwykły formularz, a mianowicie: ftp: // adres_serwera . W tym przypadku ftp to nazwa protokołu, po której następuje nazwa serwera.
W systemie Windows ( Vista i 7 ) na komputerze jest zainstalowane oprogramowanie klienta FTP, ponieważ jest ono zawarte w systemie Windows. Dostęp do niego można uzyskać poprzez folder Komputer, a następnie polecenie Dodaj lokalizację sieciową .
Obsługa FTP została wycofana w Google Chrome od października 2020 r., a w Mozilla Firefox od lipca 2021 r.
Protokół wykorzystuje dwa typy połączeń TCP:
FTP może być używany na dwa różne sposoby.
W trybie aktywnym klient FTP określa port połączenia, który ma być używany w celu umożliwienia przesyłania danych. W ten sposób, aby wymiana danych mogła mieć miejsce, serwer FTP zainicjuje połączenie ze swojego portu danych (port 20) na port wskazany przez klienta. Następnie klient będzie musiał skonfigurować swój firewall, aby umożliwić nowe połączenia przychodzące, aby mogła mieć miejsce wymiana danych. Ponadto może to być problematyczne dla użytkowników próbujących uzyskać dostęp do serwerów FTP, gdy znajdują się oni za bramą NAT . Biorąc pod uwagę sposób działania NAT , serwer FTP inicjuje połączenie danych, łącząc się z zewnętrznym adresem bramy NAT na wybranym porcie. W przypadku niektórych bram NAT, które nie pasują do odebranego pakietu w tabeli stanów, pakiet zostanie zignorowany i nie zostanie dostarczony do klienta.
W trybie pasywnym serwer FTP sam określa port połączenia, który ma być używany do przesyłania danych (połączenie danych) i przekazuje go klientowi. Jeśli przed serwerem znajduje się zapora, należy ją skonfigurować tak, aby zezwalała na połączenie danych. Zaletą tego trybu jest to, że serwer FTP nie inicjuje żadnego połączenia. Ten tryb działa dobrze z klientami znajdującymi się za bramą NAT . W nowych implementacjach klient inicjuje się i komunikuje bezpośrednio przez port 21 serwera; upraszcza to konfiguracje zapory serwera.
To połączenie działa w trybie tekstowym i dlatego jest łatwe do symulacji za pomocą usługi Telnet .
Klient wysyła polecenie w postaci wiersza tekstu zakończonego \r\nznakiem nowej linii (CR po którym następuje LF, czyli 0D0A w systemie szesnastkowym lub znak 13 i znak 10).
Na przykład następujące polecenie żąda pobrania pliku „file.txt”:
RETR fichier.txtUwaga : Polecenia takie jak GET lub PUT nie są rozpoznawane w protokole FTP, ale są często używane przez oprogramowanie klienta FTP.
Po wysłaniu polecenia klient otrzymuje jedną lub więcej odpowiedzi z serwera. Każda odpowiedź jest poprzedzona kodem dziesiętnym umożliwiającym klientowi FTP przetworzenie odpowiedzi, która może zawierać jeden lub więcej wierszy tekstu.
W poprzednim przykładzie, jeśli serwer znajdzie żądany plik, wysyła klienta:
150 File status okay; about to open data connection.W zależności od tego, co ustalili klient i serwer, jeden z dwóch nasłuchuje na uzgodnionym porcie TCP, a drugi łączy się z nim, aby ustanowić połączenie danych. Następnie serwer wysyła zawartość żądanego pliku do klienta, zamyka połączenie danych i wysyła następującą odpowiedź na połączenie sterujące:
226 Closing data connection.Połączenie sterujące ponownie wykorzystuje protokół sterowania terminalem NVT pierwotnie wprowadzony dla usługi Telnet , w uproszczonej formie. Oznacza to w szczególności, że kod dziesiętny 255 jest używany do wprowadzenia sekwencji sterowania wyświetlaczem.
Połączenie danych jest nawiązywane na czas transmisji danych (zawartość pliku lub lista plików). Zazwyczaj jest ustawiony na transfer danych jednym poleceniem, chyba że inny tryb transmisji jest wybrany i obsługiwany przez serwer.
Polecenie PASVmówi serwerowi, aby pasywnie czekał na połączenie, nasłuchując portu TCP. Port nasłuchiwany przez serwer jest wskazany w odpowiedzi:
227 Entering Passive Mode (h1,h2,h3,h4,p1,p2).Gdzie h1by h4się 4 liczby całkowite od 0 do 255 reprezentująca adres IP serwera, a p1i p2przedstawicielami portu TCP, na którym serwer czeka na połączenia, w postaci dwóch liczb całkowitych od 0 do 255 ( port_TCP = p1 * 256 + p2).
W odwrotnym przypadku, gdy klient oczekuje na połączenie na porcie TCP, wskazuje w tej samej formie nasłuchiwany port wysyłając komendę PORT :
PORT h1,h2,h3,h4,p1,p2Jeśli wszystko pójdzie dobrze, serwer odpowie:
200 Command okay.Podczas przesyłania plików przez połączenie danych można użyć dwóch trybów:
Specyfikacja protokołu FTP określa, że możliwe jest przesyłanie plików bezpośrednio między dwoma serwerami FTP.