Sunteți pe pagina 1din 12

CURS 11

Protocoale referitoare la fişiere


Suita de protocoale TCP/IP oferă un număr de protocoale pentru manipularea fişierelor. În
general sunt două mecanisme diferite pentru accesarea la distanţp a fişierelor. Cel mai simplu
mecanism este transferarea unui fişier pe o maşină locală. În acest caz vor exista mai multe
copii ale aceluiaşi fişier. Pentru distribuirea fişierelor se vor folosi mecanismele File Transfer
Protocol (FTP), Trivial File Transfer Protocol (TFTP), Secure Copy Protocol (SCP).

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).

11.1 File Transfer Protocol (FTP)


Transferarea datelor de la un host la altul este una dintre cele mai frecvente operaţii. Atât
necesitatea de a actualiza datele (transmiterea datelor de la un client la un server), cât şi de a
descărca date (recepţionarea datelor de la un server către un client) sunt realizate cu ajutprul
FTP. Suplimentar, FTP poate oferi măsuri de securitate şi autentificare pentru a preveni
accesul neautorizat la date.

11.1.1. Privire de ansamblu asupra FTP

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).

Figura 11.1: Modelul FTP

Interfaţa utilizator a clientului comunică cu interpretorul de protocol, care administrează


conexiunea de control. Interpretorul de protocol translatează orice comandă specifică
aplicaţiei la o comandă FTP şi apoi comunică comenzile de control serverului FTP.

Interpretorul de protocol al serverului FTP recepţionează aceste comenzi şi iniţiază procesul


de servire a cererilor clientului. Dacă cererile implică un transfer de date, administrarea
datelor se va realiza de către DTP-urile aplicaţiile client şi server. După terminarea
transferului de date, conexiunea de date este închisă şi controlul este preluat de către PI-urile
client şi server.

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.

11.1.2 Operaţiile FTP

Când foloseşte FTP, utilizatorul realizează unele sau toate dintre următoarele operaţii:

- conectare la un host distant,


- navigare şi manipulare printr-o structură de directoare,
- listează fişierele disponibile pentru transfer,
- defineşte modul de transfer, tipul transferului şi structura de date,
- transferă date la şi de la un host distant,
- deconectare de la hostul distant.

Conectarea la un host distant

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.

Se pot utiliza patru comenzi:

open Selectează hostul distant şi iniţiază sesiunea de conectare (login sesion).

User Identifică utilizatorul distant.

Pass Autentifică utilizatorul.

Site Transmite informaţii către hostul extern, necesare pentru a furniza serviciile
specifice hostului respectiv.

Navigarea prin structura de directoare

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:

cd Schimbă directorul pe hostul distant. Poate fi specificată o cale care trebuie


însă să fie conformă cu structura de directoare a hostului distant. În cele mai multe
implementări cd.. va accesa un director aflat pe nivelul superior în structura de directoare.

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.

Ls Listează conţinutul directorului distant. Lista generată de această comandă este


tratată ca “date”, de aceea această comandă cere utilizarea unei conexiuni de date. Această
comandă are intenţia de a crea un rezultat “citibil” de operatorul uman.

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.

Controlul transferului de date

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:

- Calea prin care vor fi mutaţi biţii dintr-un loc în altul.


- Reprezentări diferite ale datelor în arhitectura sistemului.
- Structura fişierului în care vor fi memorate datele.

Fiecare dintre aceste aspecte este controlat de o subcomandă:

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).

Type Specifică seturile de caractere utilizate în translatarea şi reprezentarea datelor:

A Indică faptul că ambele hosturi se bazează pe reprezentare ASCII, sau dacă


unul se bazează pe codul ASCII şi altul pe codul EBCDIC, se va realiza
translaţia ASCII-EBCDIC. În multe implementări comanda poate fi
invocată folosind comanda ASCII, care va fi transformată de către PI în
comanda type A.

E Indică faptul că ambele hosturi utilizează codul EBCDIC de reprezentare a


datelor. În multe implementări comanda poate fi invocată folosind comanda
EBCDIC, care va fi transformată de către PI în comanda type E.

I Indică faptul că nu se va face nici o translaţie asupra datelor. În multe


implementări modul poate fi invocat cu ajutorul comenzii BINARY care va
fi tradusă de către PI în comanda type I.

Structure Specifică structura fişierului care va fi transferat:

file Indică faptul că fişierul nu are o structură internă şi este considerat ca fiind o
secvenţă continuă de octeţi.

Record Indică faptul că fişierul este realizat dintr-o succesiune de înregistrări.

Page Indică faprul că fiţierul conţine pagini independente indexate.

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.

Încheierea unei sesiuni FTP

Pentru a încheia sesiunea FTP se utilizează comenzile:

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 exemplu de scenariu FTP

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.

Figura 11.2: Exemplu de transfer FTP.

11.1.3 Transferul activ de date

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.

Figura 11.3 Conexiune de date activă

11.1.4 Transferul pasiv de date

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

11.1.5 Utilizarea transferului proxy

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:

1. Clientul FTP deschide o conexiune şi se leagă la serverul FTP A.


2. Clientul FTP lansează comanda proxy open şi se va stabili o conexiune nouă către
serverul FTP B.
3. Clientul FTP lansează comanda proxy get sau proxy put.
4. Este stabilită conexiunea de date între serverul A şi serverul B. Urmând conexiunea, se
va face transferul de date între servere.

11.1.6. Coduri de răspuns

În scopul de administra aceste operaţii, clientul şi serverul realizează un dialog utilizând


convenţii Telnet. Clientul lansează comenzi, iar serverul răspunde cu coduri răspuns.
Răspunsul conţine şi comentarii care sunt în folosul utilizatorului, dar aplicaţia client
utilizează numai codurile. Codurile răspuns dunt valori de trei cifre, cu primele două având
semnificaţii precise. Tabelele 11.1 şi 11.2 descriu aceste coduri.

Tabelul 11.1 Prima cifră a codului şi semnificaţia ei


Prima cifră Descriere
1yz Răspuns pozitiv preliminar. Aceste mesaje sunt în mod normal
informaţionale şi tipic sunt nurmate de un alt mesaj cu un cod răspuns
diferit
2yz Răspuns pozitiv de completare. Indică faptul că ultima comandă a
clientului a fost încheiată cu succes.
3yz Răspuns pozitiv intermediar. Indică faptul că a fost acceptată ultima

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.

Tabelul 11.2 A doua cifră a codului şi semnificaţia ei


A doua cifră Descriere
x0z Eroare de sintaxă în comanda clientului.
x1z Cerere de informaţii. Mesajul conţine informaţii cerute de la client.
x2z Informaţii privind conexiunea. Răspunsul conţine informaţii privind
conexiunile de control şi date.
x3z Autentificare. Răspunsul este parte a unui mesaj de conectare sau a unei
secvenţe de autentificare.
x4z Nu este în uz.
x5z Informaţii privind sistemul de fişiere. Răspunsul conţine informaţii privind
sistemul de fişiere, relevante pentru ultima comandă recepţionată de la
client.

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ă:

220 service ready


USERNAME cms01
331 user name okay
PASSWORD xyxyx
230 user logged in
TYPE Image
200 command okay

11.1.7. Anonymous FTP

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.

11.1.8. Utilizarea FTP cu Ipv6

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:

PORT h1, h2, h3, h4, p1, p2

Î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:

227 Entering Passive Mode. (h1,h2,h3,h4,p1,p2)

î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.

port Este portul pe 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:

IPv4: EPRT |1|10.1.200.201|2312|


IPv6: EPRT |2|::0A01:C8C9|2312|

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:

229 Entering Passive Mode (|||2312|)

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.

11.1.9. Securizarea sesiunilor FTP

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.

Configurarea şi implementarea TLS variază funcţie de platforma pe care se găseşte.


Următoarele comenzi sunt independente de platformă:

AUTH Specifică metoda de autentificare care va fi utilizată pentru conectarea FTP.

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:

C Clear: nu se utilizează nici o autentificare şi nici o criptare

Page 11 of 12
S Safe: se realizează autentificarea, dar nu este implementată criptarea.

E Confidential: se realizează criptarea, dar nu şi autentificarea.

P Private: sunt realizate atât autentificarea cât şi criptarea.

MIC Furnizează mesaje codate Base64 utilizate pentru a asigura integritatea


comenzilor transmise pe conexiunea de control.

CONF Furnizează mesaje codate Base64 utilizate pentru a asigura confidenţialitatea


comenzilor transmise pe conexiunea de control.

ENC Furnizează mesaje codate Base64 utilizate pentru a asigura intimitetea


comenzilor transmise pe conexiunea de control.

CCC Anunţă serverul FTP că nu mai sunt cerute comenzi protejate pentru sesiunea
FTP.

Figura 11.6: Exemplu de procesare FTP TLS.

Un exemplu de negociere a securităţii este prezentat în Figura 11.6.

Page 12 of 12

S-ar putea să vă placă și