Sunteți pe pagina 1din 17

UNIVERSITATEA POLITEHNICA BUCURETI

Sisteme Telematice
(tem de cas)

Cinjau Aura Ramona, anul I, master STT

File Transfer Protocol (FTP)


Protocolul pentru transfer de fiiere (FTP, dup engl. File Transfer Protocol) este un protocol (set de reguli) utilizat pentru accesul la fiiere aflate pe servere din reele de calculatoare particulare sau din Internet. FTP este utilizat ncepnd de prin anul 1985 i actualmente este foarte rspndit. Numeroase servere de FTP din toat lumea permit s se fac o conectare la ele de oriunde din Internet, i ca fiierele plasate pe ele s fie apoi transferate (ncrcate sau descrcate). Webul nu aduce aici mari schimbri, ajut doar ca obinerea fiierelor s se realizeze mai uor, avnd o interfa mai prietenoas dect aplicaiile (programele) de FTP. FTP este utilizat pentru a transfera fisiere ntre doua calculatoare conectate la Internet. Acest protocol este implementat sub forma unui program server care ruleaza pe un calculator si a unei aplicatii client care se conecteaza la server. ntre cele doua programe comunicarea respecta standardul FTP, care impune comenzile ce pot fi utilizate, succesiunea acestora, raspunsurile posibile si actiunile care trebuie executate n urma lor. Atunci cnd un utilizator foloseste FTP pentru a transfera fisiere, el este practic conectat la doua calculatoare: calculatorul client, sau local - de pe care se executa programul client de conectare la server, si pe care se lucra nainte de a lansa FTP si calculatorul server, sau aflat la distanta ("remote") - cel la care programul se conecteaza pentru a transfera fisiere. Exista comenzi specifice care permit deconectarea de la un serverul curent si conectarea la un alt server. Fizic, cele doua calculatoare pot fi situate n aceeasi ncapere sau la o distanta foarte mare, fara ca modul de utilizare al comenzilor sa fie influentat. Ceea ce se schimba este viteza de transfer, care poate fi mai mare sau mai mica, n functie de diversi factori, unul dintre acestia fiind pozitia relativa a calculatorului local si fata de serverul "la distanta". n general serverele de FTP accepta doua tipuri de conexiuni: anonima - n acest caz se permite un acces restrictionat la un director public de pe server, de unde se pot obtine diverse fisiere (n general programe, drivere, documente publice etc.). n anumite cazuri se permite si transferarea de fisiere pe server, n subdirectoare specifice (subdirectorul uzual se numeste incoming). Accesul n afara directorului public specificat nu este permisa. Conectarea anonima se realizeaza prin specificarea numelui de utilizator anonymous iar ca si parola - propria adresa de posta electronica. normala - aceasta conectare necesita identificarea utilizatorului: se specifica numele de utilizator si parola corespunzatoare, actiune n urma careia utilizatorul poate accesa propriul director de pe server. n continuare, este permis transferul de fisiere din si spre toate directoarele unde utilizatorul respectiv are acces.

Accesul la diverse fisiere de pe server este permis sau nu, n baza drepturile de acces pe care le are utilizatorul respectiv pe server. Exista comenzi specifice ce permit schimbarea utilizatorului cu care s-a realizat conectarea normala, pentru a obtine accesul la alte fisiere. Transferul de fisiere se poate realiza n: mod text - utilizat pentru transferul de fisiere text (acestea pot fi vizualizate cu comanda more). n cazul acestor fisiere, diferite sisteme de operare utilizeaza succesiuni de caractere specifice pentru a indica finalul de fisier, trecerea la linie noua etc. Programul de transfer va converti secventele astfel nct sa fie corecte pentru sistemul de operare al calculatorului destinatie. Printre fisierele care trebuie transmise cu acest mod sunt fisiere cu extensia .TXT, .BAT, .HTML, .HTM, .JS si altele. mod binar - acest tip de transfer se utilizeaza pentru a transfera fisiere ce contin date sau programe. Printre fisierele care trebuie transferate n mod binar se numara programele, imaginile, filmele video, fisierele cu muzica, dar si documente Word, Excel etc. Practic orice fisier, care nu contine text simplu, neformatat, trebuie transferat utiliznd modul binar. Protocoalele FTP folosete TCP pentru transport, ceea ce permite transferul sigur al datelor la destinaie. Protocolul FTP folosete coduri de comand i de rspuns n formatul NVT ASCII, definit de Telnet, i dou conexiuni TCP: conexiunea de date pentru transferul datelor i conexiunea de control pentru transmisia unor comenzi specifice. Implementarea FTP se realizeaz pe baza modelului client-server n sisteme de operare diverse (UNIX, DOS, Windows), prin programe simple, de tiplinie de comand, sau complexe, cu interfa grafic de utilizator (GUI - Graphic Unit Interface) i structur de meniuri, comode din punctul de vedere al utilizatorilor. Serverul FTP deschide o conexiune pasiv la portul de protocol 21, dup care ateapt cererile clienilor. O sesiune FTP se activeaz prin cererea clientului de stabilire a unei conexiuni TCP, la portul de protocol 21 al serverului, reprezentnd conexiunea de control, activ pe toat durata comunicrii. Dac serverul rspunde afirmativ, cu un cod de rspuns 220, se iniiaz faza d e autentificare, prin operaia de login, cu validarea numelui de utilizator (cod de rspuns 331) i a parolei proprii (cod de rspuns 230). Dup eventuala schimbare a directorului de lucru curent, pentru transferul datelor se deschid conexiuni de date separate pentru fiecare operaie de transfer de fiiere, spre server (upload) sau dinspre server (download). Clientul comunic serverului numrul de port la care s se conecteze, prin comanda FTP PORT, i deschide o conexiune pasiv. Serverul activeaz conexiunea pe portul specificat de client n aceast faz, clientul joac rolul de server pe conexiunea de date. Spre deosebire de serverul FTP, care pe o conexiune pasiv accept accesul oricrui client, clientul FTP nu va accepta pe conexiunea pasiv iniiat de el dect accesul de la adresa serverului FTP cu care a comunicat Procesul de preluare de fiiere (download) se iniiaz prin comanda RETR (Retrieve) iar cel de transfer a unui fiier pe server (upload) prin comanda de stocare STOR (Store). nchiderea unei sesiuni FTP se realizeaz prin comanda QUIT. Procesul de transfer al unui fiier poate fi ntrerupt n orice moment la solicitarea clientului, n modul de date urgente.

Codul 220 de rspuns la serverului marcheaz stabilirea conexiunii de date. Codul 550 semnific blocarea accesului pe server (Access denied).

Fig. 1. Configuraie FTP

Clientul i serverul utilizeaz fiecare cte o interfa de interpretare a protocoalelor (PI - Protocol Interpreter), ntre acestea fiind stabilit conexiunea de control pe toat durata transferului. Transferul fiierului se realizeaz prin conexiunea de date care se stabilete ntre procesele FTP-client i FTP-server.

Scopurile protocolului
Scopurile protocolului FTP sunt : s promoveze ideea de partajare de informaii organizate n fiiere(programe sau/i date) s incurajeze conexiunea implicit sau indirect ntre calculatoare aflate la distan ( prin intermediul programelor ) s protejeze utilizatorul de variaiile dintre diferitele sisteme de operare de pe calculatoare diferite s transfere date ntre calculatoare diferite eficient si stabil Acest protocol , dei poate fi folosit direct de utilizator la un terminal , este proiectat n principal pentru a fi folosit de aplicaii.

a) b) c) d) e)

Modelul protocolului FTP


Cu definitiile de mai sus in minte, urmatorul model ( Fig. 2.) este diagrama unei conexiuni FTP, in care, interpretorul protocolului pe partea de client initiaza conexiunea de control . Conexiunea de control urmeaza protocolul Telnet. La comenzile utilizatorului sunt

generate comenzi standard de interpretorul protocolului de pe partea de client si transmise procesului corespunzator de pe partea de server prin intermediul conexiunii de control.( Utilizatorul poate stabili o conexiune de control directa cu serverul serverul FTP, de la un terminal TAC si poate denera comenzi FTP standard independent,trecand peste procesul FTP client.) Raspunsurile standard la aceste comenzi sunt transmise de catre interpretorul protocolului pe partea de server catre corespondentul lui pe partea de client prin conexiunea de control. Comenzile FTP specifica parametrii pentru conexiunea de date ( portul, modul de transfer, tipul de reprezentare si structura ) si tipul operatiilor specifice sistemului de operare ( send,retrieve, append,delete,etc). ete,etc). Procesul client DTP sau cel care indeplineste functia sa trebuie sa asculte la portul specific, si serverul initiaza conexiunea de date si conexiunea de transfer in concordanta cu parametrii specificati. Trebuie specificat faptul ca portul de date dat nu trebuie sa fie pe aceeasi masina cu cea care initiaza comenzile FTP prin conexiunea de control, trol, dar clientul sau procesul FTP client trebuie sa se asigure ca asculta portul corespunzator.

Fig.2. Modelul utilizarii protocolului FTP

NOTA: : 1. Conexiunea poate fi folosita in ambele sensuri. 2. Nu este necesar ca legatura sa existe tot timpul. Trebuie specificat de asemenea faptul ca legatura de date poate fi folosita pentru trimiterea simultana si primirea simultana de informatii. Alta situatie este cea in care utilizatorul doreste sa transfer informatii intre doua host-uri, host uri, care sunt diferite diferit amandoua de calcultatorul utilizatorului. Acesta realizeaza o conexiune intre cele doua host-uri host . Astfel, controlul infomratiei este transferat interpretorului protocolului pe parte de client dar informatia este transferata intre procesele de transfer server. s

In continuare este prezentat modelul acestei interactiuni server-server. server server.

Fig. 3. Interactiunea client-server Protocolul necesita ca in momentul in care transferul informatiei este se desfasoara conexiunile de control sa fie deschise. Este de datoria utilizatorului sa ceara inchiderea acestor conexiuni cand a terminat de folosit serviciul FTP, si este datoria serverului sa faca acest lucru. Serverul poate sa inchida transfreul de informatii daca conexiunile de control sunt inchise fara comanda.

Organizarea datelor
Pentru ca FTP a fost proiectat astfel nct sa lucreze cu diferite platforme, tipuri de fisiere si seturi i de caractere, este nevoie ca utilizatorul sa aleaga dintr-o dintr o varietate de optiuni oferite Aceste optiuni se mpart n patru categorii: tipul fisierelor, formatul fisierelor, structura fisierelor si moduri de transmisie. n privinta tipurilor de fisiere FTP FTP recunoaste patru categorii: local, binar, ASCII si EBCDIC. Vorbim despre fisiere locale atunci cnd sistemele aflate n legatura folosesc octeti de marimi diferite. La transferul fisierelor binare (de tip imagine) continutul este considerat ca un sir continuu ntinuu de octeti. Adica nu se atribuie vreo semnificatie speciala valorii unui octet (ca de exemplu carriage-return return pentru sfrsitul unei linii). Daca ar fi sa facem o statistica a operatiilor de transfer atunci am putea observa ca de cele mai multe ori fisierele fisierele snt tratate ca fisiere binare. n cazul fisierelor ASCII (text) problema apare din cauza marcatorilor de sfrsit de linie. Am mai discutat despre faptul ca diferite platforme marcheaza diferit sfrsitul de linie. Pentru a rezolva problema a aparut aparut conventia NVT ASCII care statueaza ca sfrsitul unei linii se reprezinta prin perechea de caractere CR LF. Ca urmare sistemul care receptioneaza datele va trebui sa verifice fiecare octet pentru a determina sfrsitul unei linii. Apoi se face substituirea CR LF cu simbolul specific platformei respective. nsa aceasta operatie de verificare necesita timpi suplimentari de procesare.

Cnd un utilizator specifica tipul de fisier ASCII atunci trebuie sa precizeze si formatul. FTP defineste trei tipuri de formate de control: netiparibil, formatul Telnet, formatul FORTRAN. Pentru fisierele text formatul implicit este netiparibil. Acest lucru nseamna ca fisierul nu contine informatii privind formatarea verticala (tab-uri verticale), informatii necesare pentru pozitionarea hrtiei n imprimanta. n schimb formatul Telnet permite utilizarea acestor caractere speciale. La fel si n cazul formatului de control FORTRAN. n prezent cele mai multe implementari FTP permit doar formatul netiparibil. n final utilizatorul trebuie sa specifice care va fi modul de transmisie folosit. De la nceput trebuie spus ca se foloseste mai des stream mode. Altfel spus transmisia octetilor este continua fara a se mai adauga (la nivelul protocolului FTP) alte headere. FTP mai permite modul bloc, mod n care fisierul este transferat ca o serie de blocuri, fiecare bloc cuprinznd unul sau mai multi octeti pe post de header. Mai exista si posibilitatea utilizarii modului de transmisie comprimat. Acest mod foloseste un algoritm de comprimare simplu (RLE) ce nlocuieste aparitiile multiple ale aceluiasi octet. Ca o concluzie, se poate spune ca cele mai multe implementari FTP suporta doar formatul de control netiparibil si modul de transmisie stream. Singura alegere pe care trebuie sa o faca utilizatorul priveste tipul fisierului: ASCII sau binar.

Coordonarea conexiunilor
Dup cum spuneam mai la nceput, protocolul FTP impune crearea a doua conexiuni TCP ntre server si client. Conexiunea care asigura transmisia comenzilor, numita conexiune de control, permite clientului FTP sa ceara serverului executarea diferitelor actiuni legate de transferul fisierelor. Canalul de comunicatie care asigura circulatia datelor, diferit fata de canalul de control, permite transmiterea datelor n ambele sensuri: att dinspre server spre client ct si dinspre client spre server. n continuare vom analiza amanuntit modul n care se realizeaza fiecare dintre aceste conexiuni. n ceea ce priveste conexiunea de control, nu exista nici o diferenta notabila fata de aplicatiile pe care le-am dezvoltat n cadrul articolelor anterioare. Cu alte cuvinte, clientul creeaza un soclu iar apoi conecteaza acest soclu la portul bine-cunoscut al serverului. n continuare, prin intermediul conexiunii de control, clientul transmite comenzi FTP serverului exact n acelasi mod n care clientii SMTP si POP3 transmiteau comenzi serverelor corespunzatoare. n momentul n care clientul cere serverului sa nceapa transferul unui fisier se va stabili o a doua conexiune. Aceasta conexiune va fi ntretinuta doar att timp ct dureaza transferul. Adica, n momentul n care fisierul este transferat n ntregime canalul de date va fi nchis. n cazul n care se doreste transferarea a nca unui fisier se creeaza o noua conexiune care va fi mentinuta pna cnd fisierul n cauza va fi transferat complet. Din punct de vedere al modului n care se stabileste conexiunea si al comunicarii dintre client si server lucrurile se schimba putin fata de modul n care am abordat problema pna acum. Cnd ne referim la canalul de date, trebuie precizat de la nceput faptul ca programele care se bazeaza pe protocolul FTP folosesc acest canal n trei scopuri: 1. Transmisia listei de fisiere sau a listei de directoare de la server la client 2. Transferul unui fisier de la client la server

3. Transferul fisierului de la server la client Sa vedem n continuare cum se stabileste conexiunea pentru canalul de date. Sa presupunem ca un utilizator uman doreste sa transfere pe sistemul sau fisierul FIS1. n termenii relatiei client-server spunem ca se initiaza transferul lui FIS1 de la server la client. n acest scop clientul transmite pe canalul de comenzi o cerere prin care informeaza serverul ca vrea sa transfere FIS1. Serverul transmite o replica prin care informeaza clientul ca fisierul este disponibil si poate ncepe transferul. n acest moment apare necesitatea crearii canalului de comunicatie pentru transmisia datelor. Clientul FTP creeaza un soclu pe care l conecteaza la o adresa locala. Altfel spus, clientul FTP creeaza o conexiune pasiva. Pna acum clientii (finger, ping, SMTP etc.) creau o conexiune activa - dupa crearea soclului se facea conexiunea la un port bine cunoscut al serverului. Dupa crearea conexiunii pasive, clientul FTP i transmite serverului o comanda prin care l informeaza care este portul la accepta conexiunea pentru transferul fisierului. Recurgnd la o analogie cu serviciile postale putem invoca urmatorul caz: un client alege dintr-un catalog de produse (se citeste lista de fisiere) al unui producator (citeste server) un anumit obiect (fisier). Pentru a intra n posesia acelui obiect, clientul trimite o comanda producatorului n care pe lnga obiectul dorit specifica si adresa sa. Avnd acum toate datele, producatorul (serverul) poate pregati coletul si l poate trimite la adresa specificata de client. n termenii nostri, adresa locala reprezinta adresa host-ului pe care ruleaza clientul. n momentul n care serverul doreste sa transmita fisierul, el va stabili o conexiune activa la soclul si portul indicat de client. Ceea ce trebuie retinut foarte bine n acest moment este ca la transferul datelor nu se utilizeaza un port bine cunoscut (ca si n cazul canalului de comenzi) ci se utilizeaza un port liber, selectat de client. Ca si o concluzie la cele discutate putem spune ca un client FTP se comporta ca un server. Clientul creeaza un soclu, conecteaza soclul la o adresa locala, spune serverului ce adresa sa utilizeze si apoi "asculta" la portul ales eventualele cereri de conexiune. Diferenta dintre clientul FTP si serverul real este ca acest client accepta cereri de conexiune numai din partea serverului FTP. Cu alte cuvinte, clientul stocheaza adresa IP a serverului FTP n cadrul soclului creat pentru canalul de date. Daca va mai aduceti aminte, atunci cnd am discutat despre servere spuneam ca soclul unui server stocheaza un wildcard (*.*) n cmpul rezervat adresei sistemului de la distanta (remote system). Aceasta nseamna ca un server real accepta conexiuni din partea oricarui sistem aflat la distanta (adresa IP poate fi oarecare). Deci clientul FTP accepta conexiuni numai de la serverul FTP cu care se afla n legatura prin canalul de comenzi. Indiferent de sensul n care circula datele (clientul receptioneaza sau transmite un fisier) procesul decurge n acelasi mod. Deci n ambele cazuri clientul FTP realizeaza o conexiune pasiva si apoi serverul FTP initiaza o conexiune activa.

Comenzile protocolului FTP


Ceea ce trebuie spus acum este ca aceste comenzi se mpart n trei categorii: comenzi de acces si control, comenzi pentru specificarea parametrilor de transfer si comenzi pentru

apelul diferitelor servicii. Comenzile pentru acces si control identifica utilizatorul n fata serverului sau transmite serverului care este directorul pe care utilizatorul vrea sa-l acceseze. Comenzile pentru specificarea parametrilor de transfer permit clientului sa-si defineasca optiunile privind: tipul fisierului, formatul, structura si modul de transmisie. Comenzile pentru apelul serviciilor definesc operatiile de transfer pe care doreste sa le execute utilizatorul. n continuare, din categoria comenzilor pentru acces si control, vom aduce n discutie doar trei (username, password si quit), suficiente pentru implementarea programului nostru. Totdeauna, nainte de a putea accesa fisierele stocate pe un anumit sistem, trebuie sa parcurgem o secventa de ncarcare (login) care presupune ca utilizatorul sa furnizeze serverului FTP numele sau si parola aferenta. n acest scop protocolul FTP defineste comenzile USER si PASS. Comanda USER necesita un argument care are ca efect identificarea utilizatorului. n majoritatea cazurilor acest argument reprezinta numele utilizatorului. Dar tot asa de bine, parametrul poate reprezenta orice valoare pe care serverul o cere pentru a permite accesul la resursele stocate. n prezent o mare parte a serverelor FTP folosesc sistemul anonymous. n cazul nostru acest lucru nseamna ca parametrul comenzii USER este anonymous. De obicei, USER este prima comanda transmisa de client dupa stabilirea conexiunii de control. Dar aceasta comanda nu garanteaza accesul la server. Cu alte cuvinte, serverul poate impune furnizarea unor informatii suplimentare ca parola si\sau contul. Posibilele coduri ale replicilor serverului snt: 230, 331, 332, 421, 500, 501, 530. Comanda PASS este transmisa de catre client (mpreuna cu parametrul specificat) imediat dupa comanda USER. Dupa cum am aratat putin mai nainte, aceasta comanda necesita un argument care reprezinta parola utilizatorului. Cele mai multe programe client nu afiseaza pe ecran caracterele care constituie parola. Oricum, din punctul nostru de vedere, clientul transmite serverului parola ca un sir ASCII ordinar - necodificata. Comanda QUIT, dupa cum sntem obisnuiti prin utilizarea altor programe, este utilizata atunci cnd se doreste ncheierea unei sesiuni FTP. Daca la primirea comenzii QUIT nu se afla n desfasurare o operatie de transfer atunci serverul va nchide imediat conexiunea. n caz contrar, conexiunea va ramne deschisa atta timp ct este necesar pentru transmiterea unei replici. Imediat dupa transmiterea replicii serverul va nchide conexiunea.

Reprezentarea informatiei si stocarea ei


Informatia este transferata de pe un mediu de stocare de la un host catre un alt mediu de stocare pe alt host. Uneori este necesara realizarea unor anumite transformari ale informatiei deoarece reprezentarea informatiei pe cele doua sisteme de operare este diferita. De exemplu, NVT-ASCII are o reprezentare diferita in sisteme diferite. Sistemele de tip DEC TOPS-20 stocheaza fisierele in format NVT-ASCII sub forma de caractere ASCII de 7 biti, aliniate la stanga in cuvinte de 36 de biti. Sistemele de tip IBM Mainframe stocheaza fisierele folosind codificare EBCDIC pe 8 biti. Cele de tip Multics stocheaza fisierele folosind NVT-ASCII sub forma a 4 caractere de cate 9 biti in cuvinte de 36 biti. Este preferabila convertirea caracterelor in reprezentarea standard NVT-ASCII cand se transmite text intre sisteme

diferite. Host-urile care trimit si primesc vor trebui sa realizeze transformarile necesare intre reprezentarea standard a caracterelor si cea interna. O problema diferita apare in reprezentare cand se transmite informatie in format binar ( nu coduri de caracter ) intre host-uri diferite cu lungimi de cuvint diferite. Nu este intotdeauna clar felul in care cel care trimite informatia face acest lucru si nici felul in care in care cel care o primeste o stocheaza. De exemplu, cand se trimit octeti de 32 de biti de la sisteme care au reprezentarea interna pe cuvinte de 32 de biti, pe sisteme care reprezinata datele pe cuvinte de 36 biti, ar fi preferabil ( din motive de eficienta si utilitate ), ca informatia sa se pastreze sub forma de cuvinte de 32 biti aliniati la dreapta in cuvinte de 36 biti in sistemele care primesc datele. In orice caz, utilizatorul ar trebui sa aiba optiuni de specificare a formei de reprezentare a informatiei si functii de transformare a formatului acesteia. Trebuie notat ca protocolul FTP permite reprezentari limitate a informatiei. Transformarile dorite in afara celor specificate trebuie facute de utilizator sau de aplicatie direct.

Realizarea conexiunilor de date


Mecanica transferului de informatii consta in realizarea conexiunii de date la porturile corespunzatoare si alegerea parametrilor de transfer. Atat procesul DTP client cat si cel server au un port implicit. Portul procesului client este acelasi port cu cel al conexiunii de control. Portul implicit al procesului server este portul adiacent portului corespunzator conexiunii de control. Marimea unui octet de transfer este de 8 biti. Aceasta marime este valabila pentru transferul de informatii; nu are nici o legatura cu reprezentarea informatiilor in sistemul de fisiere al gazdei. Procesul de transfer pasiv (poate fi sau un proces DTP client sau un proces DTP server secundar) trebuie sa asculte portul de transfer pentru a putea transmite o comanda de cerere. Comanda FTP de cerere determina directia transferului de date. Procesul server, dupa ce primeste cererea de transfer, va initia conexiunea de date la portul respectiv. Odata conexiunea stabilita, transferul de informatii poate incepe intre procesele DTP, si interpretorul protocolului pe partea de server trimite o confirmare interpretorului pe partea de client. Implementarile FTP trebuie sa suporte folosirea porturilor implicite, si doar interpretorul protocolului pe partea de client poate sa solicite schimbarea portului intr-unul diferit de cel implicit. Este posibil procesul client sa specifice un port alternativ prin comanda PORT. Acelasi proces poate tipari un fisier la o imprimanta a unui TAC sau poate sa il primeasca de la un al treilea host. In cel de-al doilea caz, interpretorul protocolului pe partea de client realizeaza conexiunile de control cu amandoua interpretoarele de pe partea de sever. Un server primeste o comanda pentru a asculta portul pentru o viitoare conexiune. Interpretorul protocolului pe partea de client trimite unui interpretor de pe partea de sever comanda PORT pentru a indica portul de transfer. In final, celor doua procese server li se vor trimite comenzi corespunzatoare. Secventa exacta de comenzi si raspunsuri la comenzi trimise intre controllerul de pe partea de client si servere, este definit in sectiunea de Raspunsuri FTP.

In general procesul server este responsabil cu mentinerea conexiunii de date initierea ei si inchiderea ei. Exceptie la acest lucru este atunci cand procesul client DTP trimite informatia intr-un mod de transfer care necesita inchiderea conexiunii pentru a indica EOF. Serverul trebuie sa inchida conexiunea in urmatoarele conditii: 1. Procesul server a terminat de trimis informatiile intr-un mod de transfer care necesita o inchidere a conexiunii pentru a indica EOF. 2. Procesul server primeste o comanda ABORT de la procesul client. 3. Portul de transfer este schimbat cu o comanda de procesul client. 4. Conexiunea de control este inchisa in mod normanl sau altfel. 5. A aparut o eroare nerecuperabila. Altfel inchiderea este o optiune a serverului, prin care acesta trebuie sa indice acest lucru clientului cu un raspuns de tip 250 sau 226.

Managementul conexiunilor de date


Proturile implicite ale conexiunii de date: toate implementarile trebuie sa suporte folosirea porturilor implicite, si numai interpretorul protocolului pe partea de client poate sa ceara folosirea unor alte porturi decat cele implicite. Setarea altor porturi decat cele implicite: interpretorul protocolului pe partea de client poate specifica alt port cu ajutorul comenzii PORT. Acelasi interpretor poate cere procesului server sa identifice un alt port cu ajutorul comenzii PASV. O conexuine fiind definita de o pereche de adrese, una din aceste actiuni este de ajuns pentru a realiza o alta conexiune de date, desi este permis folosirea ambelor comenzi pentru folosirea unor noi porturi. Reutilizarea conexiunii de date: cand este folosit modul de transfer sub forma unui flux, sfarsitul de fisier trebuie indicat prin inchiderea conexiunii. Acest lucru produce o eroare daca sunt mai multe fisiere de transferat in acea sesiune, din cauza faptului ca protocolul TCP trebuie sa mentina conexiunea un anumit timp pentru comunicatii stabile. Astfel conexiunea nu poate fi redeschisa. Exista doua solutii la aceasta problema. Prima este de a negocia un port ne-implicit. A doua este folosirea unui alt mod de transfer. Un mic comentariu la modurile de transfer: modul de transfer sub forma unui flux este in mod inerent instabila, din moment ce nu se poate stabili daca conexiunea s-a inchis prematur sau in mod normal. Celelalte tipuri de transfer( tip block, comprimat ) nu inchid conexiunea pentru a indica sfarsitul de fisier. Aceste tipuri au codare FTP destula folosita pentru a parcurgerea conexiunii de date si pentru determinarea sfarstiului de fisier. Astfel, folosind aceste moduri, se poate lasa conexiunea deschisa pentru transferul mai multor fisiere.

Tipuri de informaie
Reprezentarile informatiei sunt utilizate in protocolul FTP de catre utilizator prin specificarea tipului. Acest tip poate defini implicit ( cazul ASCII sau EBCDIC) sau explicit (

cazul octetului Local ) o marime de interpretare care este interpretata ca "marime logica". Trebuie observat ca aceasta nu are nimic in comun cu marimea octetului folosita pentru transmiterea informatiei prin conexiunea de date, matine numita "marime de transfer", si cele doua nu trebuie confundate. Marimea de transfer este intotdeauna 8 bits. Mai jos sunt prezentate tipurile de informaii: ASCII Acest tip este cel implicit si trebuie sa fie acceptat de toate implementarile protocolului. EBCDIC Acest tip de reprezentare a informatiei este util pentru un transfer eficient intre host-uri ce folosesc EBCDIC pentru reprezenatarea interna a datelor. Pentru transmiteren, informatia este reprezentata sub forma de caractere de 8 biti codate EBCDIC. IMAGE Informatia este trimisa ca o succesiune de biti care, pentru transfer, sunt grupati in pachete de cate 8 biti( octeti ). Host-ul care primeste informatia trebuie sa o stocheze la fel, ca o succesiune continua de biti. LOCAL Infomatia este transferata in octeti logici, a caror marime este specificata prinal doilea parametru. Valoarea marimii octetului trebuie sa fie un numar zecimal; nu exista o valoare implicita pentru marime. Marimea logica a octetului nu trebuie sa fie in mod necesar aceeasi cu cea a octetului de transfer. Daca cele doua marimi sunt diferite, atunci octetii logici trebuie sa fie grupati continuu, nelaundu-se in consideratie limitele octetilor si cu completarea necesara la sfarsit. CONTROLUL FORMATULUI - Tipurile ASCII si EBCDIC primesc de asemenea un al doilea parametru ( optional ); acesta indica ce fel de control vertical al formatului ( daca exista ) este asociat cu fisierul respectiv.

Tipuri de transfer
Urmatorul lucru care se discuta in continuare este alegerea tipului transferului. Exista trei tipuri: unul care formateaza informatia si permite proceduri de restart; unul care coprima de asemenea informatia pentru un transfer eficient; si unul care nu comprima deloc informatia sau o face prea putin. Ultimul tip interactioneaza cu atributul care defineste structura pentru a determina tipul procesarii. In modul comprimat, tipul reprezantarii determina tipul octetului de transfer. Toate modurile de transfer trebuie terminate cu o secventa EOF, lucru care poate fi specificat explicit sau implicit prin inchiderea conexiunii de date. Pentru fisiere cu o structura cu inregistrari, toate marcajele EOR (sfarsit de inregistrare) sunt explicite, inclusiv cel final. Pentru fisierele cu structura de tip pagina este folosit un tip care indica ultima pagina.

Functiile pentru transferul de fisiere


Canalul de comunicatie de la interpretorul de protocol al aplicatiei client catre interpretorul de protocol al aplicatiei server este stabilit ca o conexiune TCP de la aplicatia client catre portul standard al aplicatiei server. Interpretorul de protocol al aplicatiei client este responsabil pentru transmiterea comenzilor FTP si interpretarearaspunsurilor primite; interpretorul de protocol al aplicatiei server interpreteaza comenzii, trimite raspunsuri si

directioneaza DTP-urile sale pentru a realiza conexiunea si a transfera datele. Daca a doua parte a transferului de date (procesul de transfer pasiv) este procesul de transfer de date al aplicatiei client, atunci el este manipulat prin intermediul protocolului intern al gazedei procesului de transfer de date al aplicatiei client; daca este un proces secundar de transfer al datelor al aplicatiei server, atunci este manipulat prin intermediul interpretorului propriu de protocol la cererea interpretorului de protocol al aplicatiei client. Raspunsurile FTP sunt discutate in sectiunea urmatoare. In descrierea catorva comenzi din aceasta sectiune, este de ajutor sa fim expliciti cu privire la posibilitatile de raspuns.

Observaii
1. Dac un client nu dispune de un cont de utilizator pe un anumit server de fiiere, atunci se poate folosi FTP n varianta anonim (Anonymous FTP), cu numele de utilizator anonymous i parola guest. Asemenea protocoalelor de pot electronic (SMTP, POP), FTP este un protocol de tip 'pas-cu-pas' (lock step), ceea ce nseamn c dup fiecare comand lansat se ateapt un rspuns i abia dup primirea acestuia se transmite urmtoarea comand. FTP folosete Telnet pe conexiunea de control. Pe conexiunea de date se pot transfera fiiere ntre client i server, liste de directoare sau fiiere de pe server. Protocolul FTP prevede peste 30 de comenzi, mprite n trei categorii: de control a accesului; de negociere a parametrilor (opiunilor); de serviciu.

2.

3. 4.

Comenzile FTP de control a accesului sunt urmtoarele: USER - nume de utilizator (user nome) PASS - parol (password) ACCT - cont de utilizator (account) CWD - schimbarea directorului curent (change working directory) CDUP - trecere la directorul-printe (change to parent directory) SMNT - stabilirea structurii de fiiere (structure mount) REIN - reiniializeaz programul-client (reinitialise), pstrnd deschis conexiunea de control pentru ali clieni ABORT - abandonarea transferului de fiiere QUIT- nchiderea conexiunii. Comenzile de negociere a parametrilor stabilesc opiunile clientului. Protocolul FTP prevede patru categorii de opiuni negociabile ntre client i server: a. tipuri de fiiere: local - transfer ntre calculatoare care folosesc cuvinte cu numr diferit de bii(L); binar (imagine) - realizeaz transferul datelor din fiier ca flux de octei(I);

EBCDIC (Extended Binary Coded Decimal Interchange Code) (E); ASCII - tipul implicit pentru FTP, definit de Telnet pentru NVT (A). b. formate de fiiere: neprintabil (nonprint) - format implicit pentru FTP, care nu conine elemente de formatare vertical a textelor (N); TELNET - folosete informaia de control pentru formatare vertical; FORTRAN - prevzut cu caractere speciale de delimitare (CR - Carriage Return) n text (C). c. structuri de fiiere: structur tip "nregistrare" (R - Record) - sfritul nregistrrii i al fiierului este marcat cu o combinaie de dou caractere; structur tip "fiier" (F - File) - sfritul fiierului coincide cu nchiderea conexiunii TCP; structur tip "pagin" (P - Page). d. moduri de transmisie bloc-fiierele sunt transferate ca succesiuni de blocuri de date, cu antete proprii(B); comprimat - Fiierele sunt comprimate prin precodare RLL (Run-Length Limited) n vederea transferului (C); flux de octei (stream) - transferul fiierelor se face continuu, ca ir de octei (S). n general, FTP folosete fiiere de tip binar sau ASCII, formatul neprintabil, structura de tip "fiier" i modul de transmisie ca flux de octei. Urmtoarele comenzi de stabilire a opiunilor de transfer semnific: TYPE - tipul fiierului; STRU - structura de fiiere (structure); MODE- modul de transfer; PORT - portul de date al cientului; PASV - clientul deschide o conexiune pasiv pe portul specificat. Comenzi FTP de serviciu: RETR - preluare de fiier de pe alt calculator (retrieve); STOR - stocare de fiier pe alt calculator (store); STOU - stocare de fiier cu nume unic n director (store unique); APPE - adaug date la un fiier aflat pe alt calculator (append with create); ALLO - aloc spaiu de memorie pe discul altui calculator (allocate); REST - reia procesul de transfer de date dintr-un fiier fr a retransmite datele deja transferate (restart); ABOR -abandoneaz procesul de transfer al unui fiier (abort); DELE -terge un fiier de pe un alt calculator (delete); LIST -cere serverului lista fiierelor dintr-un director (list); MKD -creeaz un nou director pe alt calculator (make directory); RMD -terge un director de pe alt calculator (remove directory); SYST -permite determinarea tipului sistemului de operare folosit pe alt calculator (system); HELP -clientul cere serverului informaii ajuttoare referitoare la un argument (help); NOOP -testeaz conexiunea de control dintre client i server (no operation).

FTP folosete coduri de rspuns de trei cifre, asemenea SMTP, fiecare cifr avnd o anumit semnificaie. Prima cifr din codul de rspuns FTP semnific tipul rspunsului serverului: 1- preliminar pozitiv; 2- definitiv pozitiv; 3- intermediar pozitiv; 4- temporar negativ; 5- definitiv negativ. Cea de a doua cifr reprezint tipul textului care nsoete acel cod numeric de rspuns: 0- eroare de sintax; 1- informaie; 2- conexiuni; 3- autentificare; 4- nedefinit; 5- sistem de fiiere. A treia cifr din codul de rspuns FTP selecteaz textul descriptiv ataat acestuia, dintr-o list de texte posibile. Exemple de coduri de rspuns FTP: 125 -conexiune de date deschis; urmeaz transferul unui fiier 200 -mesaj OK 220 -serviciu pregtit pentru un nou client 230 -numele i parola utilizatorului au fost validate; continu 331 -nume de utilizator validat; introdu parola 426 -conexiune nchis; transfer abandonat 500 -eroare de sintax; comand necunoscut 502 -comand neimplementat 553 -aciune neexecutat; nume de fiier nepermis.

Concluzii
In concluzie , FTP se foloseste atunci cand : 1. se transfera ( upload ) pentru prima data fisierele unui sit la o gazda web 2. se inlocuieste un fisier sau o imagine 3. se incarca ( download ) fisiere de pe un alt computer 4. se permite accesul unei alte persoane pentru a incarca un fisier dintr-un anumit sit.

Bibliografie

http://www.filetransferplanet.com/ftp-guides-resources/ http://www.uic.edu/depts/accc/network/ftp/introftp.html http://en.kioskea.net/contents/272-ftp-protocol-file-transfer-protocol http://www.dynamicwebs.com.au/tutorials/ftp.htm