Sunteți pe pagina 1din 17

Protocolul FTP 2010

Proiect Retele

- Protocolul FTP –

Cuprins
Introducere..................................................................................................................................................2
Scurt istoric FTP...........................................................................................................................................2
Descriere protocolului FTP..........................................................................................................................4
Ce inseamna FTP?....................................................................................................................................4
Conexiunea de date.................................................................................................................................7
Interactiune server-server.......................................................................................................................7
Securitate................................................................................................................................................8
Analiza traficului FTP pe un fisier de captura...............................................................................................9
Scenariul aplicatiei...................................................................................................................................9
Diagrame de trafic FTP..........................................................................................................................14
Concluzii....................................................................................................................................................16
Bibliografie................................................................................................................................................17

1
Protocolul FTP 2010

Introducere

Protocoale uzuale definite la nivel de aplicatie sunt:


terminale virtuale: Telnet
transfer de fişiere: FTP (File Transfer Protocol)
poşta electronică
SMTP, Simple Mail Transfer Protocol
POP, Post Office Protocol
Aplicaţii web  (prezentare, baze de date etc.) cu HTTP (Hyper Text Transfer Protocol)
Administrare şi monitorizare: SNMP (Simple Network Management Protocol)

Scurt istoric FTP

Protocolul FTP a avut o evolutie lunga de-a lungul anilor. Sectiunea Appendix III este o
compilatie cronologica a diferitelor documente RFC legate de FTP de-a lungul timpului .
Acestea includ si primul mecanism de transfer fisiere din 1971 dezvoltat pentru
implementarea pe masinile de la M.I.T. (RFC 114), plus comentarii si discutii referitoare la
RFC 141.

RFC 172 furnizeaza un protocol orientat pe nivelul userului pentru transferul fisierelor
intre doua calculatoare ( inclusiv terminale IMPS ). O revizuire a acestui document este
RFC 265, iar in RFC 281 au fost propuse alte modificari . In ianuarie 1982 in RFC 294
a fost propusa folosirea conventiei "Set Data Type".

RFC 354 a inclocuit RFC 264 si 265. Protocolul FTP a fost redefinit ca un protocol pentru
transferul fisierelor intre calculatoare diferite din ARPANET, avand ca principala functie
transferarea eficienta si stabila a fiserelor intre calculatoare si care sa permita folosirea
usoara a metodelor de stocare la distanta.
RFC 385 a commentat erorile, a intarit unele idei si adaugiri la protocol, in timp ce

2
Protocolul FTP 2010
RFC 414 a adus un raport provind functionarea protocolului pe servere si pe calculatoare
personale. RFC 430, publicat in 1973 ( printre alte documente RFC ) a prezentat alte
sugestii. In cele din urma un document oficial a fost publicat sub numele de RFC 454.

Incepand cu iulie 1973 au fost facute schimbari considerabile de la ultimele versiuni


ale protocolului, dar structura generala a ramas neschimbata. RFC 542 a fost publicat ca
noua specificatie "oficiala" pentru a reflecta aceste schimbari. Exista si alte documente
bazate pe specificatiile vechi care nu au fost reinnoite.

In 1974 RFC 607 si 614 au adus modificari si sugestii noi. RFC 624 a facut acelasi
lucru si el. In 1975, a fost publiat RFC 686, care a fost intitulat "Leaving Well Enough Alone",
a discutat diferentele intre toate versiunile anterioare ale specificatiei. RFC 691 a prezentat
o revizuire minora a RFC 686 cu privire la tiparirea fisierelor.

Motivata de tranzitia de la NCP la TCP ca protocol de baza , FTP a renascut ca pasarea


pheonix din toate eforturile din RFC 765 pentru folosirea protocolului TCP .
Protocolul FTP a avut o evolutie lunga de-a lungul anilor. Sectiunea Appendix III este o
compilatie cronologica a diferitelor documente RFC legate de FTP de-a lungul timpului .
Acestea includ si primul mecanism de transfer fisiere din 1971 dezvoltat pentru
implementarea pe masinile de la M.I.T. (RFC 114), plus comentarii si discutii referitoare la
RFC 141.

RFC 172 furnizeaza un protocol orientat pe nivelul userului pentru transferul fisierelor
intre doua calculatoare ( inclusiv terminale IMPS ). O revizuire a acestui document este
RFC 265, iar in RFC 281 au fost propuse alte modificari . In ianuarie 1982 in RFC 294
a fost propusa folosirea conventiei "Set Data Type".

RFC 354 a inclocuit RFC 264 si 265. Protocolul FTP a fost redefinit ca un protocol pentru
transferul fisierelor intre calculatoare diferite din ARPANET, avand ca principala functie
transferarea eficienta si stabila a fiserelor intre calculatoare si care sa permita folosirea
usoara a metodelor de stocare la distanta.
RFC 385 a commentat erorile, a intarit unele idei si adaugiri la protocol, in timp ce
RFC 414 a adus un raport provind functionarea protocolului pe servere si pe calculatoare
personale. RFC 430, publicat in 1973 ( printre alte documente RFC ) a prezentat alte
sugestii. In cele din urma un document oficial a fost publicat sub numele de RFC 454.

Incepand cu iulie 1973 au fost facute schimbari considerabile de la ultimele versiuni


ale protocolului, dar structura generala a ramas neschimbata. RFC 542 a fost publicat ca
noua specificatie "oficiala" pentru a reflecta aceste schimbari. Exista si alte documente
bazate pe specificatiile vechi care nu au fost reinnoite.

In 1974 RFC 607 si 614 au adus modificari si sugestii noi. RFC 624 a facut acelasi lucru si el.
In 1975, a fost publiat RFC 686, care a fost intitulat "Leaving Well Enough Alone", a discutat

3
Protocolul FTP 2010
diferentele intre toate versiunile anterioare ale specificatiei. RFC 691 a prezentat o revizuire
minora a RFC 686 cu privire la tiparirea fisierelor.

Motivata de tranzitia de la NCP la TCP ca protocol de baza , FTP a renascut ca pasarea


pheonix din toate eforturile din RFC 765 pentru folosirea protocolului TCP .

Descriere protocolului FTP

Ce inseamna FTP?

FTP este un protocol standard pentru transfer de fisiere (RFC959). Precede TCP/IP, dar a
fost adaptat ulterior la TCP/IP. Este un protocol general, cu urmatoarele caracterisitci:
– Independent de SO si de hardware
– Transfera fisiere oarecare
– Gestioneaza drepturile asupra fisierelor si restrictiile de acces
Poate rula fie interactiv fie automat.
Protocolul permite actiuni de:
– Listarea continutului unui director
– Modificarea directorului curent
– Aducerea unui fisier
– Trimiterea unui fisier

FTP vine de la File Transfer Protocol, protocol pentru transferul de fisiere si este parte a
protocoalelor TCP/IP. Este setul de reguli care permite transfer al fisierelor de la un calculator la
altul. FTP este o unealta puternica care permite ca un fisier sa fie transferat de pe calculatorul A
pe calculatorul B FTP lucreaza pe principiul client/server. Un program client permite
utilizatorului sa interactioneze cu un server in scopul accesarii de informatii si servicii de pe
server.
Fisierele care pot fi transferate sunt stocate pe computere speciale numite servere de FTP.
Pentru a accesa aceste fisiere se utilizeaza un client de FTP. Acesta este o interfata care permite
utilizatorului sa localizeze fisierele si sa le transfere pe propriul computer.

4
Protocolul FTP 2010

Fig.1 Conexiune de tip FTP

Asadar, intr-o comunicatie de tip TCP sunt implicate 2 masini:

- un client machine care deseori se numeste local host


- un server machine care deseori se numeste remote host

Clientul este cel care initiaza tot timpul transferul. In timpul unei sesiuni de tip FTP, este
foarte important sa se tina cont de cine este clientul si cine este serverul, pentru ca astfel se
poate determina daca folosesti o comanda get sau o comanda put pentru a muta fisiere.
Comanda get este intotdeauna folosita pentru a copia fisiere de la server catre client, iar
comanda put este folosita pentru a copia fisiere de la client la server.

Ca exemplu, consideram cazul unui calculator – client FTP care se conecteaza la un server
FTP- sistemul ux1.cso.uiuc.edu.

5
Protocolul FTP 2010

Fig.2 Schimbul de fisiere dintre client si server

- dupa cateva negocieri cu ux1 , clientul FTP si serverul FTP ux1 comunica unul cu celalalt
si se incearca a se pune si a se lua fisiere. De cand computerul a initiat conexiunea FTP ,
el devine client , iar ux1 devine server. In acest caz, „a pune” inseamna upload-are de
fisiere de la computer catre ux1, iar „a lua” inseamna download-are de fisiere de la ux1
la computer.

Model FTP
6
Protocolul FTP 2010
Conexiunea de date

Serverul la distanta accepta stabilirea unei conexiuni de control de la client, dupa care se
stabileste conexiunea de date. Se pot folosi doua metode:
Activa – serverul se conecteaza la client
- clientul specifica o adresa si un port;
- serverul initiaza conexiunea (ex. port 1931, adresa 192.168.1.2)
Client: PORT 192,168,1,2,7,139
Server: 200 PORT command successful.
Pasiva – clientul initiaza conexiunea
- clientul cere serverului sa asculte la o adresa si un port (care nu este portul sau
standard);
- serverul comunica adresa si portul (ex. port 4023, adresa 172.16.62.36);
Client: PASV
Server: Entering Passive Mode (172,16,62,36,133,111 )

Interactiune server-server

Un User PI poate stabili conexiuni de control pentru a face transferul de date intre alte
doua servere, nici unul local.

Mecanismul se numeste transfer "third party" sau transfer "proxy". Utilizatorul din C
poate initia o conexiune de control primara cu serverul A si o conexiune de control secundara
cu serverul B.

7
Protocolul FTP 2010
Apoi, utilizatorul din C stabileste o conexiune de date intre A si B, prin care se transfera
datele direct intre cele doua servere. Controlul se face prin intermediul lui C care joaca rolul de
intermediar.
Cand trebuie transferate date intre A si B, User PI din C seteaza conexiunile de control si
apoi transmite lui A o comanda de conectare pasiva PASV prin care-i spune sa asculte la portul
sau de date (nu sa initieze o conexiune). Cand User PI primeste o confirmare la PASV (care
specifica identitatea lui A si portul la care asculta), User PI din C transmite catre B portul lui A
intr-o comanda PORT si primeste de la B un raspuns. User PI din C transmite comenzile de
transfer de date catre A si B. B initiaza conexiunea si transferul incepe.

User-PI – Server A User-PI - Server B


------------------ ------------------
C->A : Connect C->B : Connect
C->A : PASV
A->C : 227 Entering Passive Mode A1,A2,A3,A4,a1,a2
C->B : PORT A1,A2,A3,A4,a1,a2
B->C : 200 Okay
C->A : STOR file C->B : RETR file
B->A : Connect to HOST-A, PORT-a

Securitate

FTP transmite user name si password in clar. Exista insa variante care ofera servicii de
securitate pentru parola utilizatorului (uneori si numele) sau pentru date.
FTP over SSH
– Transmite password criptat
SFTP - SSH File Transfer Protocol
– Securitate pentru date
– Presupune ca serverul a autentificat utilizatorul
bbFTP
– Securizeaza user name si password
– Utilizat ne-interactiv (shell script)
– Permite stream-uri paralele de date
– Compresie on-the-fly
– Bun pentru volume mari (> 2GB)

8
Protocolul FTP 2010

Analiza traficului FTP pe un fisier de captura

Pentru a intelege mai bine functionarea protocolului FTP si a altor protocoale, pe larg,
am folosit fisierul de captura download-at de pe siteul www.wireshark.org , ramura
Sample Captures, si anume FTPv6-1.cap.

Scenariul aplicatiei

Din fisier reiese ca se stabilesc conexiuni de tip HTTP, FTP, DNS, TCP, ICMP, Gnutell,
UDP intre client 81.131.67.131 si server 210.146.64.4. Clientul incearca initial sa
download-eze fisiere de pe site-ul Microsoft in scopul update-ului sistemului de operare
Microsoft Windows XP dupa cum se observa in linia nr. 10:

Fig.3 Linia nr. 10 care indica cererea HTTP de download

Trebuie avut in vedere faptul ca traficul FTP poate avea urmatoarele caracteristici:

 FTP utilizeaza TCP


 FTP utilizeaza portul 21 pentru comenzi FTP
 FTP utilizeaza un numar de porturi dinamice/temporare pentru transferul de
date
 FTP poate utiliza nume de utilizator si parole necriptate

Din filtrarea in camp dupa FTP in Wireshark avem 12 pachete de acest tip:

9
Protocolul FTP 2010

Fig.4 Filtrare dupa FTP

Dupa cum am specificat mai devreme, o comunicatie de tip FTP este insotita si de un
schimb TCP. Se observa in liniile 199, 200, 201 si 202 cele 4 „handshake-uri” intre FTP si
TCP. In linia 202 am evidentiat portul pe care se face transferul: 21. Acesta este portul de
comanda. Cand se realizeaza un schimb de date, acest lucru se realizeaza pe un alt port;
majoritatea oamenilor interpreteaza ca este acest port, 21, dar, de fapt, se face pe porturi
dinamice.

Fig. 5 Handshake intre FTP si TCP

10
Protocolul FTP 2010
Continutul primului pachet FTP :

- in partea de jos se indica ca un „banner” daca comunicatia a fost indeplinita cu succes


sau nu
- in acest caz este un raspuns nesolicitat
- avem serverul cu „banner”-ul 220, cod care indica faptul ca serviciul este pregatit
pentru un nou utilizator: „Service ready for new user”

Fig. 6 Continutul primului pachet FTP

Pachetul cu nr. 228 initiaza o comanda FTP, realizandu-se o comunicare normala cu


serverul. Putem observa pachetele de biti care ne spun de unde incepe comanda si unde se
termina.

11
Protocolul FTP 2010

Fig.6 Pachete de biti de comanda

- Se initiaza o cerere de log-are a unui USER: „anonymous” cu o PAROLA: „IEuser@” pe


serverul 6bone.informatik.uni-leipzig.de

- Log-area se efectueaza cu succes pe server

- Mai tarziu, se initiaza o cerere de catre utilizator:

Fig.7 Userul introduce o cerere

In pachetele FTP din fisierul nostru de captura se utilizeaza comenzi specifice FTP:

-opts -> selecteaza optiuni pentru un anumit scop

12
Protocolul FTP 2010
-syst-> returneaza un cuvant care identifica sistemul, cuvantul „TYPE” si tipul default de transfer
; de exemplu: UNIX L8

-type-> sintaxa: TYPE type-character[second- type-character] ; selecteaza tipul de fisier care


urmeaza a fi transferat; „type-character” = L-> Local format

-site-> executa o comanda specifica unui site

In cazul de fata, userul incearca sa selecteze o optiune „utf8” care este necunoscuta
sistemului/ serverului. Userul introduce un request de a i se spune tipul sistemului de operare
instalat pe server cu comanda „syst”, iar raspunsul este dat de catre server: UNIX Type L8
Version: NetBSD-ftpd 20041119.

Prin comanda „site” , se indica faptul ca userul apeleaza o comanda de pe server si anume
help, la care serverul ii raspunde prompt.

Fig.8 Actiunile efectuate de user

Pentru a vedea handshake-urile efectiv realizate intre FTP si TCP introducem in campul
Filter : tcp.port==21:

13
Protocolul FTP 2010

Fig.9 Handshake-uri TCP-FTP

Diagrame de trafic FTP

Am realizat o diagrama a traficului de pachete FTP completand in campul Filter „ftp” din
care reiese ca traficul de FTP dureaza aproximativ 25 secunde, incepand sa varieze foarte
mult, la momentul 12 secunde cand traficul FTP este cel mai ridicat

14
Protocolul FTP 2010

Fig.10 Diagrama traficului de pachete FTP

Putem, de asemenea, vizualiza intr-un graf toate cererile si raspunsul la fiecare din acestea
care se efectueaza la fiecare pachet de date FTP:

15
Protocolul FTP 2010

Fig. 11 Flow Graph dupa filtrarea dupa FTP

Concluzii
Aplicatia Wireshark se dovedeste a fi foarte eficienta atunci cand dorim sa descoperim
motivul intreruperii unei comunicatii de Internet intre un client si server, analizand
operatiile efectuate de catre client si, respectiv, reactia server-ului. Luand in considerare
protocolul FTP, avem posibilitatea de a evalua schimbul de date care se realizeaza
( upload, download, inregistrarea unui user pe un site etc).

16
Protocolul FTP 2010

Bibliografie
1. http://opcenter.cites.uiuc.edu/nas/nash/apps/ftp.html - Introduction to FTP
2. http://www.ietf.org/rfc//rfc0959
3. Wireshark University Courses
4. http://en.wikipedia.org/wiki/File_Transfer_Protocol

17