Protocol de transfer de fișiere
File Transfer Protocol (FTP) (File Transfer Protocol), în informatică și telecomunicații , este un protocol de aplicații de nivel pentru transmiterea datelor între arhitectura TCP bazată pe gazdă și arhitectura client-server .
Protocolul utilizează conexiuni TCP separate pentru a transfera date și pentru a controla transferurile și necesită autentificarea clientului prin nume de utilizator și parolă, deși serverul poate fi configurat pentru conexiuni anonime cu acreditări false. Deoarece FTP transmite atât aceste acreditări, cât și orice altă comunicare în text clar, și din moment ce nu are mecanisme de autentificare a serverului la client, protocolul este adesea securizat folosind un substrat SSL / TLS și această variantă se numește FTPS . Acronimul SFTP desemnează în schimb un alt protocol care, deși foarte asemănător cu acesta din urmă din punct de vedere funcțional, este destul de diferit de cel tehnologic: SSH File Transfer Protocol .
fundal
FTP este unul dintre primele protocoale definite pe internet și a cunoscut o lungă evoluție de-a lungul anilor. Prima specificație, dezvoltată la MIT , datează din 1971 ( RFC-114 ). Specificația actuală se referă la RFC-959 .
Principalele obiective ale FTP descrise în RFC -ul său oficial au fost:
- Promovați partajarea de fișiere (programe sau date)
- Încurajați utilizarea indirectă sau implicită a computerelor la distanță.
- Rezolvați în mod transparent incompatibilitățile dintre diferite sisteme de stocare a fișierelor între gazde .
- Transferați datele în mod fiabil și eficient.
Descriere
Șablon
Unde este:
- PI ( protocol interpreter ) este interpretul de protocol, utilizat de client (User-PI) și server (Server-PI) pentru schimbul de comenzi și răspunsuri. În limbajul comun, acesta este denumit „canal de comandă”.
- DTP ( proces de transfer de date ) este procesul de transfer de date, utilizat de client (User-DTP) și server (Server-DTP) pentru schimbul de date. În limbajul comun, este denumit „canal de date”.
Funcționare generală
FTP, spre deosebire de alte protocoale precum HTTP , utilizează două conexiuni separate pentru a gestiona comenzile și datele. Un server FTP ascultă de obicei pe portul 21 TCP la care se conectează clientul . Conexiunea de către client determină inițializarea canalului de comandă prin care clientul și serverul schimbă comenzi și răspunsuri. Schimbul real de date (cum ar fi un fișier ) necesită deschiderea canalului de date, care poate fi de două tipuri.
Într-un canal de date activ , clientul deschide un port de obicei aleatoriu, prin canalul de comandă face cunoscut numărul acestui port către server și așteaptă ca acesta să se conecteze. Odată ce serverul a activat conexiunea de date la clientul FTP, acesta din urmă leagă portul sursă de portul 20 al serverului FTP. Comenzile PORT sau EPRT pot fi utilizate pentru aceasta, în funcție de protocolul de rețea utilizat (de obicei IPv4 sau IPv6 ).
Într-un canal de date pasiv serverul deschide un port de obicei aleatoriu (mai mare de 1023), prin canalul de comandă face cunoscut numărul acestui port clientului și așteaptă ca acesta să se conecteze. Comenzile PASV sau EPSV pot fi utilizate pentru aceasta, în funcție de protocolul de rețea utilizat (de obicei IPv4 sau IPv6 ).
Atât canalul de comandă, cât și canalul de date sunt conexiuni TCP ; FTP creează un nou canal de date pentru fiecare fișier transferat în cadrul sesiunii de utilizator, în timp ce canalul de comandă rămâne deschis pe întreaga durată a sesiunii de utilizator, cu alte cuvinte, canalul de comandă este persistent în timp ce canalul de date este non-persistent.
Un server FTP oferă mai multe funcții care permit clientului să interacționeze cu sistemul său de fișiere și fișierele care îl populează, inclusiv:
- Descărcare / încărcare fișier.
- Reluarea transferurilor întrerupte.
- Eliminarea și redenumirea fișierelor.
- Crearea directorului .
- Navigare prin directoare.
FTP oferă, de asemenea, un sistem de autentificare clar (necriptat) pentru accesări. Este posibil ca clientul care se conectează să furnizeze acreditări în funcție de care i se vor atribui anumite privilegii pentru a opera pe sistemul de fișiere. Așa-numita autentificare „anonimă” necesită ca clientul să nu specifice nicio parolă de acces și să aibă privilegii care sunt, în general, „numai în citire”.
Comenzi
Lista comenzilor definite în RFC-959 .
Nume | Comanda | Parametrii | Descriere |
---|---|---|---|
Abortează | ABOR | Oprește transferul de date. | |
Cont | ACCT | <account-information> | Informații despre cont (utilizate rar). |
Alocat | ALLO | <decimal-integer> | Alocați suficient spațiu pentru a primi un fișier (rar folosit). |
Adăugați (cu creați) | APPE | <pathname> | Adaugă date la un fișier existent. |
Treceți la directorul părinte | CDUP | Accesați directorul părinte. | |
Schimbați directorul de lucru | CWD | <pathname> | Schimbați directorul curent. |
Șterge | DELE | <pathname> | Sterge fisierele. |
Ajutor | HELP | <command> | Returnează lista de comenzi acceptate de server. Cu argument oferă explicații despre comanda specificată. |
Listă | LIST | <pathname> | Enumerați conținutul unui director sau proprietățile unui singur fișier. |
Mod de transfer | MODE | <mode-type> | Setați modul de transfer ( S=stream , B=block , C=compressed ). |
Creați director | MKD | <pathname> | Creați director. |
Lista de nume | NLST | <pathname> | Returnează numele fișierelor din directorul specificat. |
Noop | NOOP | Nu face nimic (utilizat mai ales pentru a preveni deconectările din cauza inactivității prelungite). | |
Parola | PASS | <password> | Specifică parola utilizatorului. |
Pasiv | PASV | Inițializați conexiunea pasivă de date. | |
Data portului | PORT | <host-port> | Inițializați conexiunea de date activă. |
Imprimați directorul de lucru | PWD | Returnează numele directorului curent. | |
Deconectați-vă | QUIT | Deconectat. Dacă un transfer este încă în desfășurare, așteptați să se termine înainte de a închide sesiunea. | |
Reinițializați | REIN | Deconectați-vă de utilizatorul conectat. | |
Repornire | REST | <marker> | Transferul se reia de la compensarea indicată. |
Recupera | RETR | <pathname> | Obțineți fișiere (de la server la client). |
Eliminați directorul | RMD | <pathname> | Eliminați directoarele. |
Redenumiți din | RNFR | <pathname> | Redenumiți (sursa). |
Redenumiți în | RNTO | <pathname> | Redenumiți (destinație). |
Parametrii site-ului | SITE | <command> | Trimiteți comanda specifică serverului (nu este standardizată; variază între implementări). |
Montare structură | SMNT | <pathname> | Structura monturii (rar folosită). |
stare | STAT | <pathname> | Returnează statisticile serverului. Cu argument listează conținutul unui director folosind canalul de comandă. |
Magazin | STOR | <pathname> | Trimiteți un fișier (client către server). |
Magazin unic | STOU | <pathname> | Trimite un fișier (client către server) folosind un nume unic. |
Structura fișierului | STRU | <structure-code> | Setați structura datelor ( F=file , R=record , P=page ). Practic nefolosit. Valoarea implicită este F |
Sistem | SYST | Returnează tipul de sistem de operare. | |
Tipul de reprezentare | TYPE | <type> | Setați modul de transfer ( A=ASCII , E=EBCDIC , I=Binary , L=Local ). Valoarea implicită este A EBCDIC și Local sunt rareori utilizate (exemplu: numai pe sistemele mainframe). |
Nume de utilizator | USER | <username> | Specificați numele de utilizator. |
Coduri de răspuns
- 1xx: Răspuns pozitiv preliminar. Acțiunea solicitată a început, dar va exista un alt răspuns care indică faptul că este într-adevăr finalizat.
- 2xx: Răspuns pozitiv final. Acțiunea solicitată este finalizată. Clientul poate trimite acum alte comenzi.
- 3xx: Răspuns pozitiv intermediar. Comanda a fost acceptată, dar trebuie trimisă o a doua comandă pentru ca cererea să fie definitiv finalizată.
- 4xx: Răspuns negativ temporar. Comanda a eșuat, dar poate funcționa mai târziu.
- 5xx: Răspuns negativ final. Comanda a eșuat și clientul nu ar trebui să o mai repete.
- x0x: eroare de sintaxă.
- x1x: Răspuns la o solicitare de informații.
- x2x: Răspuns legat de conexiune.
- x3x: Răspuns cont și / sau permisiuni.
- x4x: Nu este mai bine specificat.
- x5x: răspuns la sistemul de fișiere.
Probleme de securitate
Specificația FTP originală nu furnizează nicio criptare pentru datele schimbate între client și server. Aceasta include nume de utilizator, parole, comenzi, coduri de răspuns și fișiere transferate care pot fi „adulmecate” sau vizualizate de atacatori în anumite situații (exemplu: medii intranet ).
Problema este comună mai multor alte protocoale utilizate înainte de răspândirea SSL, cum ar fi HTTP , TELNET și SMTP . Pentru a depăși această problemă, a fost definită o nouă specificație care adaugă un strat de criptare SSL / TLS plus un nou set de comenzi și coduri de răspuns la protocolul FTP original. Protocolul se numește FTPS și este definit în RFC-4217 . Nu trebuie confundat cu SFTP, care este încă o alternativă validă pentru a depăși problema descrisă.
Aplicații care utilizează FTP
FileZilla , Fire Downloader, JDownloader sunt unii dintre numeroșii manageri de descărcare care vă permit să transferați date prin conexiune FTP.
Cu toate acestea, în sistemele de operare , în general, vă puteți conecta și prin linia de comandă .
Server FTP
Unele servere FTP populare sunt [1] :
- Server FileZilla (Windows și Linux)
- Server FTP Titan [2] (Windows)
- Pure-FTPd (Unix)
- VsFTPd (Unix)
- ProFTPd (Unix)
Notă
- ^ 4 Servere FTP populare revizuite | TechWench , la www.techwench.com . Adus la 4 aprilie 2019 .
- ^ Software SFTP Server pentru Windows , la www.TitanFTP.com . Arhivat din original la 19 august 2013. Adus pe 5 noiembrie 2019 .
Elemente conexe
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere în Protocolul de transfer de fișiere
linkuri externe
- ( EN ) RFC 959 FTP ( traducere în italiană )
- ( EN ) Extensii de securitate RFC 2228 FTP
- ( EN ) RFC 2640 Internaționalizarea FTP
- ( EN ) RFC 4217 Securizarea FTP cu TLS
- ( EN ) Diferența dintre FTP și SFTP
- ( EN ) Diferența dintre FTP activ și pasiv
- ( EN ) Test online server FTP
Controlul autorității | LCCN (EN) sh95000465 · GND (DE) 4268371-3 |
---|