Documente Academic
Documente Profesional
Documente Cultură
Alternativa acestor metode este utilizarea unui sistem de fişiere. În acest caz, maşina locală
oferă toate funcţiile necesare accesării fişierului pe maşina distantă. Userul şi aplicaţia de pe
maşina locală nu simt că fişierul este rezident pe o maşină distantă; ei citesc şi scriu fişierul ca
şi când acesta ar fi local. În acest caz există o singură copie a fişierului, iar sistemul de fişiere
este responsabul de coordonarea actualizării lui. Acest tip de funcţionalitate este furnizat de
Network File System (NFS), Andrew File System (AFS) şi Common Internet File System
(CIFS).
FTP utilizează protocolul de transport TCP pentru a furniza conexiuni cap-la-cap de încredere
şi implementează două tipuri de conexiuni în administrarea transferului de date. Clientul FTP
iniţiază prima conexiune, referită drept conexiune de control, către portul 21. Acesta este
portul pe care serverele FTP aşteaptă şi acceptă conexiuni noi. Conexiunea de control este
utilizată pentru toate comenzile pe care le lansează clientul cu scopul de a se conecta la server,
de a manipula fişiere şi de a încheia sesiunea. Tot pe această conexiune serverul va transmite
mesaje de răspuns pentru comenzile de control.
A doua conexiune utilizată de FTP se referă la conexiunea de date. Tipic, conexiunea de date
se stabileşte pe portul 20, dar, funcţie de cum se stabileşte conexiunea, atât clientul, cât şi
serverul, pot folosi alte porturi. FTP deschide conexiunea se date numai în cazul în care
clientul doreşte să descarce un fişier sau doreşte o listă a fişierelor disponibile. Este totuşi
posibil ca o sesiune FTP să înceapă şi să se încheie fără a deschide vreodată o conexiune de
date. Spre deosebire de conexiunea de control, în care comenzile şi răspunsurile merg de la
client la server şi invers, conexiunea de date este unidirecţională. FTP poate transfera date
numai de la client la server, sau numai de la server la client. Conexiunea de date, spre
deosebire de conexiunea de control, poate fi iniţiată fie de client, fie de server. Dacă este
iniţiată de client este pasivă, iar dacă este iniţiată de server este activă.
Page 1 of 12
Aplicaţia client FTP este construită cu un interpretor de protocol (protocol interpreter-PI), un
proces de transfer de date (data transfer process-DTP) şi o interfaţă utilizator. Aplicaţia server
FTP constă în mod tipic numai din PI şi DTP Figura 11.1).
Important: Pe fiecare conexiune de date nu se poate face decât un singur transfer de date.
Pentru transferuri multiple de date, cerute într-o singură sesiune FTP, se va deschide câte o
conexiune de control distinctă pentru fiecare transfer.
Când foloseşte FTP, utilizatorul realizează unele sau toate dintre următoarele operaţii:
Page 2 of 12
Pentru a executa un transfer de fişier, utilizatorul începe prin a accesa un host distant.
Aceasta este o metodă primară prin care este implementată securitatea în modelul FTP. Pasul
de autentificare poate fi evitat utilizând anonymous FTP.
Site Transmite informaţii către hostul extern, necesare pentru a furniza serviciile
specifice hostului respectiv.
După ce utilizatorul a fost autentificat şi s-a conectat la server, el poate naviga prin structura
de directoare a hostului distant în scopul localizării fişierului dorit, sau pentru a localiza
directorul în care va fi transferat un fişier local. Utilizatorul poate naviga şi în structura de
directoare a clientului. După ce au fost accesate directoarele locale şi distante, utilizatorul
poate vizualiza conţinutul directoarelor. Subcomenzile care realizează aceste funcţii sunt:
Lcd Schimbă directorul pe hostul local. Similar cu cd, poate fi specificată o cale
care trebuie însă să fie conformă cu structura de directoare a hostului local.
Dir Listează conţinutul directorului distant. Ca şi pentru comanda ls, lista generată
de această comandă este tratată ca “date”, de aceea cere utilizarea unei conexiuni de date.
Această comandă are intenţia de a crea un rezultat “citibil” de programe.
Transferul datelor între sisteme necesită uneori transformări ale datelor ca parte a procesului
de transfer. Utilizatorul poate decide în trei aspecte în ceea ce priveşte manevrarea datelor:
mode Specifică dacă fişierul este tratat ca având o structură într-un flux de octeţi:
Page 3 of 12
B Specifică faptul că va fi utilizat un bloc. Indică faptul că frontierele logice
ale înregistrării fişierului sunt păstrate.
S Specifică faptul că este utilizat modul flux (stream), adică fişierul este tratat
ca un flux de octeţi. Acest mod este implicit şi oferă cel mai eficient
transfer, dar poate să nu producă rezultatele dorite când se lucrează cu un
sistem de fişiere structurat (record-based).
file Indică faptul că fişierul nu are o structură internă şi este considerat ca fiind o
secvenţă continuă de octeţi.
Transferul fişierelor
Pentru a copia fişiere între clienţi şi servere FTP, se utilizează următoarele comenzi:
get Copiază un fişier de pe un host distant pe unul local. PI translatează comanda get
în comanda RETR.
Mget Copiază mai multe fişiere de pe un host distant pe cel local. PI translatează
comanda mget în mai multe comenzi RETR.
Put Copiază un fişier de pe hostul local pe hostul distant. PI translatează put în
comanda STOR.
Mput Copiază mai multe fişiere de pe hostul local pe hostul distant. PI translatează
mput într-o serie de comenzi STOR.
Page 4 of 12
quit Se deconectează de la hostul distant şi termină FTP. Unele implementări
utilizează subcomanda BYE.
CloseDeconectează de la hostul distant, dar lasă clientul FTP pornit. O comandă open
va stabili o nouă conexiune de control.
Un utilizator LAN are de transferat date de pe o staţie workstation pe un host distant remote
host. Datele sunt binare şi există într-un fişier numit mydata din directorul de pe workstation
/localfolder. Utilizatorul doreşte să transfere datele utilizând modul stream (flux) în directorul
de pe hostul distant numit /tmp, dorind ca noul fişier să se numească yourdata. Procesul care
are loc pentru a realiza aceste obiective este ilustrat în Figura 11.2.
Când se utilizează comenzile get, put, mget, mput, ls sau dir, FTP deschide o conexiune de
date prin care vor fi transferate datele. Majoritatea implementărilor folosesc transferul activ ca
variantă implicită în cazul în care nu este specificat că se doreşte un transfer pasiv. În
transferul activ clientul transmite serverului o comandă PORT, indicând adresa IP şi numărul
portului pe care clientul va aştepta conexiunea. După acceptarea comenzii PORT, serverul
FTP iniţiază o conexiune inversă către client folosind adresa IP şi portul indicate. După ce s-a
stabilit conexiunea, datele o vor parcurge, fie de la client spre server (pentru comenzile put
Page 5 of 12
sau mput), fie de la server la client (pentru comenzile get, mget, ls şi dir). Un exemplu de
astfel de secvenţă este prezentat în Figura 11.3.
Spre deosebire de conexiunea activă de date, transferul pasiv de date inversează direcţia de
stabilire a conexiunii de date. Clientul va trimite, în loc de comanda PORT, comanda PASV
care nu are parametri. La primirea acestei comenzi, serverul FTP răspunde transmiţând o
adresă IP şi un număr de port. Clientul iniţiază conexiunea către server spre adresa IP şi portul
indicate. Un exemplu de secvenţă este ilustrat în Figura 11.4.
Unul dintre motivele pentru care se utilizează transferul pasiv de date este trecerea peste
configuraţia firewall-ului care blochează conexiunile active de date. Din acest motiv
transferul pasiv mai este numit şi “firewall friendly mode”. În cazul în care clientul are activat
un firewall configurat să blocheze orice încercare de deschidere din exterior a unei conexiuni,
un server FTP care răspunde unei comenzi PORT va primi un mesaj de eroare când va încerca
să stabilească o conexiune către adresa IP şi portul indicate. În modul pasiv, deoarece clientul
iniţiază conexiunea din interiorul sistemului protejat, firewall-ul va permite stabilirea legăturii
şi transferul de date va putea fi realizat.
Page 6 of 12
Figura 11.4 Conexiune pasivă de date
FTP oferă posibilitatea unui client de a transfera date de pe un server FTP pe un alt server
FTP. Câteva dintre justificările unui astfel de transfer sunt:
- Transferul datelor de pe un host pe un alt host când nu este posibil accesul direct la
cele două hosturi.
- Trecerea peste o conexiune client lentă.
- Trecerea peste restricţii firewall.
- Reducerea traficului în interiorul reţelei clientului.
Procesul de setare a unui transfer proxi începe cu utilizarea comenzii proxy open. Poate fi
transmisă către serverul proxy orice comandă FTP, precedată de prefixul proxy. De exemplu,
execuţia comenzii dir va lista fişierele de pe serverul FTP primar. Executând comanda proxy
dir, se vor lista fişierele de pe serverul proxy. Pentru a realiza transferul între cele două
servere se pot utiliza comenzile proxy get şi proxy put. Procesul este ilustrat în Figura 11.5.
Page 7 of 12
Figura 11.5: Transfer proxy FTP printr-un firewall
În Figura 11.5:
Page 8 of 12
comandă a clientului, dar sunt necesare informaţii suplimentare din
partea clientului pentru a completa comanda.
4yz Răspuns de completare negativ temporar. Indică faptul că a eşuat
prelucrarea comenzii, dar o retransmitere a acesteia s-ar putea încheia cu
succes.
5yz Răspuns de completare negativ permanent. Comanda a eşuat, iar o
retransmitere a ei nu va avea succes.
6yz Răspuns protejat. Replica conţine informaţii referitoare la securitate.
Pentru fiecare comandă a clientului, figurată cu scriere bold, serverul FTP răspunde cu un cod
de trei cifre şi un mesaj, ilustrat cu scriere italică:
Multe site-uri TCP/IP au implementat ceea ce se numeşte anonymous FTP, ceea ce înseamnă
că site-ul permite accesul public la anumite directoare. Utilizatorul distant va fi nevoit să
utilizeze numele de logare anonymous şi parola guest sau o alta specificată de sistem în
momentul în care se iniţiază conectarea. Deoarece metoda de conectare este disponibilă
tuturor celor care sunt conectaţi la Internet, hosturile restricţionează fişierele accesibile
utilizatorilor anonimi.
Utilizarea în creştere a Ipv6 în reţele a avut un efect minor asupra implementărilor FTP,
deoarece adresarea Ipv6 este administrată de nivelul IP. Totuşi, apare o problemă cu
arhitectura comenzii PORT. Pentru a o înţelege, va trebui discutată în detaliu comanda PORT.
Page 9 of 12
Aşa cum s-a arătat în secţiunea 11.1.3. (transferul activ de date), clientul FTP utilizează
comanda PORT pentru a informa serverul pe ce port şi la ce adresă IP aşteaptă (clientul) să fie
deschisă o conexiune de date. Sintaxa acestei comenzi este:
În această sintaxă, h1 până la h4 reprezintă cei patru octeţi ai adresei IPv4, p1 reprezintă un
număr care va fi înmulţit cu 256 şi apoi adunat cu p2 pentru a obţine numărul portului. De
exemplu, să presupunem că un client FTP transmite următoarea comandă către serverul FTP:
PORT 10,1,200,201,9,8
Această comandă spune serverului FTP să deschidă o conexiune către adresa IP 10.1.200.201,
pe portul (9 11 256) + 8 = 2312.
Prin această definire a comenzii PORT este clar că aceasta a fost destinată utilizării adreselor
Ipv4, deoarece pentru adrese IPv6 sunt mult nmai multe câmpuri de precizat. Aceeaşi
problemă apare şi la utilizarea comenzii PASV, care , chiar dacă este lansată fără parametri,
va primi un răspuns din partea serverului FTP de forma:
în care semnificaţia h1-h4, p1, p2 este aceeaşi cu cea de mai sus. Rezultă astfel că şi la PASV
apar aceleaşi restricţii ca şi la PORT.
Pentru a acoperi aceste limite au fost create alte două comenzi care înlocuiesc comenzile
PORT şi PASV: EPRT, respectiv EPSV.
Comanda EPRT este procesată similar ccomenzii PORT, dar formatul ei este:
EPRT <d>protocol<d>address<d>port<d>
<d> reprezintă un delimitator ales din plaja 33-126 a caracterelor ASCII. Se recomandă
folosirea caracterului ASCII 124 ” | ”.
protocol Familia de adrese în care clientul cere conexiunea. Dacă valoarea este 1, atunci
se cere pe o adresă IPv4, iar o valoare 2 indică o adresă IPv6.
address Este adresa corespunzătoare (IPv4 sau IPv6) la care se va deschide conexiunea.
Urmează două exemple de utilizare a comenzii EPRT, în care adresa IPv4 10.1.200.201 a fost
convertită în notaţie IPv6:
Similar comenzii PASV, comanda EPSV poate fi lansată fără parametri. Răspunsul serverului
la comanda EPSV este:
Page 10 of 12
229 <text> (<d><d><d>port<d>)
Textul este opţional şi indică utilizatorului că este conctat în modul pasiv. Câmpul dintre
delimitatori trebuie să fie gol deoarece comanda EPSV presupune că iniţierea conexiunii de
date de către client se va face la aceeaşi adresă Ip ca şi conexiunea de control stabilită. Un
exemplu de răspuns al serverului la o comandă EPSV este:
După recepţionarea acestui răspuns, clientul va deschide o conexiune de date la portul 2312
pe aceeaşi adresă IP pe care este activă conexiunea de control. Comanda EPSV este utilă când
se stabileşte o conexiune FTP securizată peste un firewall care implementează NAT (Network
Address Translation). NAT cere translatarea adresei IP specificate în comanda client PORT
sau în răspunsul PASV al serverului. Translatarea va permmite rutarea mesajelor în afara
subreţelei clientului sau serverului. Dacă conexiunea de control a fost criptată, NAT nu are
acces la aceste adrese şi, ca urmare, aplicaţiile FTP nu vor putea stabili conexiunea de date.
Folisind comanda EPSV, serverul FTP cunoaşte deja adresa IP utilizată şi procedura de
stabilire a conexiunii de date poate demara fără intervenţia NAT.
Deşi FTP oferă securitate, cerând utilizatorilor să se conecteze utilizând un nume de utilizator
şi o parolă, această acţiune nu face altceva decât evită accesul neautorizat la sistem. Când se
transferă date de la un host la altul, datele din pachete (atât din conexiunea de control, cât şi
din cvea de date) sunt transmise în clar. De aceea, dispozitive din reţea pot captura aceste
pachete şi obţine acces la datele transferate. Mai mult, pot fi capturate chiar şi identificatorul
şi parola utilizatorului dând posibilitatea unui acces fraudulos la reţea.
Pentru a evita această problemă, FTP apelează la Transport Layer Security (TLS). TLS
reprezintă un standard de criptare a datelor între două hosturi. Aşa cum spune şi numele, el
este implementat la nivelul transport şi de aceea modul în care acţionează este transparent
pentru aplicaţiile care îl utilizează. Acestea nu trebuie să ştie decât cum să îl invoce.
ADAT Trece datele codate (Base64) utilizate în negocierea securităţii între client şi
server, specific mecanismului menţionat în comanda AUTH.
PBSZ Specifică dimensiunea maximă a buffer-ului prin care datele criptate vor fi
trecute de la client la server.
PROT Specifică nivelul de protecţie a canalului. Argumentul trebuie să fie unul din
următorii:
Page 11 of 12
S Safe: se realizează autentificarea, dar nu este implementată criptarea.
CCC Anunţă serverul FTP că nu mai sunt cerute comenzi protejate pentru sesiunea
FTP.
Page 12 of 12