STAW 08/12: Programare Web. Suita de tehnologii HTML5
Computer Networks. Applications: file transfer & service overview
1. Retele de calculatoare
Retele de calculatoare
Nivelul aplicatie – II
Sabin-Corneliu Buraga
busaco@infoiasi.ro
http://www.infoiasi.ro/~busaco
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [1]
2. Retele de calculatoare
Cuprins
• Protocoale la nivelul aplicatie
–Transferul de fisiere
• TFTP (Trivial File Transfer Protocol)
• FTP (File Transfer Protocol)
–Startarea serviciilor Internet (inetd)
–Privire de ansamblu
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [2]
3. Retele de calculatoare
TFTP
• Asigura transferul de fisiere intre procese
• Efort minim (nu se ofera securitate)
• Usor de implementat, folosind UDP
• Utilizat deseori la initializarea statiilor de
lucru fara disc sau a altor dispozitive
(in conjunctie cu RARP)
• Vezi si RFC 783, 906, 1350
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [3]
4. Retele de calculatoare
TFTP
• Mesajele protocolului sint datagrame UDP,
codificate in network byte order
• Primii 2 octeti – codul operatiei (opcode)
• Tipuri de mesaje: cerere de citire,
cerere de scriere, date propriu-zise,
confirmare, eroare
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [4]
5. Retele de calculatoare
TFTP
• Fisierele pot fi transferate in doua moduri:
– netascii – pentru fisiere text
• Toate liniile se termina cu rn (CR LF)
• Ambele puncte terminale trebuie sa converteasca liniile
in/din formatul netascii (pentru Unix: n ⇔ rn)
– octet – pentru fisiere binare
• Nu se realizeaza nici o translatie a liniilor
• Problema: pierderea pachetelor de date
• Solutie: retransmiterea pachetelor
neconfirmate, cu controlul duplicarii
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [5]
6. Retele de calculatoare
TFTP
• Comportamentul concurent al serverului TFTP
– Din motive de limitare a resurselor,
nu se poate utiliza intotdeauna fork()
– Serverul va putea crea un port UDP nou, dialogul
cu clientul realizindu-se prin intermediul acestuia
• Transferul fisierelor
– Nu se transmite lungimea fisierului
– Fiecare pachet de date va avea maxim 512 octeti
– Ultimul mesaj de date va contine 0 bytes de date
– Se pot trimite maxim 65535 de pachete de date
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [6]
7. Retele de calculatoare
FTP
• Folosit atit interactiv, cit si de programe
• Asigura transferul sigur si eficient al datelor
• Utilizeaza doua conexiuni TCP:
– Conexiunea de control – pentru trimiterea comenzilor
si receptionarea codurilor de stare
– Conexiunea de date – pentru transferul efectiv
• Conexiunea de control trebuie sa fie operationala
in timpul transferului prin conexiunea de date
• Conexiunile de date se creeaza dinamic,
pentru fiecare client in parte
• Vezi si RFC 959, 1068
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [7]
8. Retele de calculatoare
FTP|model
• PI = Protocol Interpreter
• DTP = Data Transfer Protocol Interfata utiliz. Utilizator
Control
Server PI Utiliz. PI
Data
Sistem Sistem
Server DTP Utiliz.DTP
de fisiere de fisiere
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [8]
9. Retele de calculatoare
FTP|conexiuni
• Conexiunea de control utilizeaza portul 21
• Conexiunea de date foloseste portul 20
• Comenzile si raspunsurile sint linii de text
• Pentru interactivitate se foloseste protocolul TELNET
• Modelul standard al conexiunilor:
Control
A
A B
B
Date
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [9]
10. Retele de calculatoare
FTP|caracterizare
• Moduri de transfer
– Text (ASCII) – continutul este transferat
linie cu linie, modificindu-se sfirsitul de linie
in functie de calculatorul sursa si destinatie:
CR LF (Windows), LF (UNIX/Linux)
– Binar – continutul e transferat neschimbat
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [10]
11. Retele de calculatoare
FTP|caracterizare
• Tipuri de acces
– Anonim (FTP anonymous) – RFC 1635
• Autentificare cu numele anonymous si
drept parola o adresa de e-mail
• Acces public la o serie de resurse
(aplicatii, date, multimedia etc.)
– Autentificat
• Necesita un nume de utilizator existent,
insotit de o parola valida
• Pentru transferul de date in/din contul personal
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [11]
12. Retele de calculatoare
FTP|comenzi
• Comenzi de control al accesului
– USER, PASSword, ChangeWorkingDir, QUIT,…
• Comenzi de transfer a parametrilor
– PORT, PASiVe, TYPE, MODE, STRUcture,…
• Comenzi de realizare a serviciilor FTP
– RETRieve, STORe, APPEnd, ABORt,
PrintWorkingDir, LIST,…
• Raspunsul de stare
– Linie de text continind:
NNN un cod de stare (utilizat de software) si
un mesaj explicativ (destinat oamenilor)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [12]
13. Retele de calculatoare
FTP|codul de stare
• Prima cifra semnifica:
– 1 replica pozitiva preliminara
(“am indeplinit, dar asteapta”)
– 2 replica pozitiva finala
(“succes”)
– 3 replica pozitiva intermediara
(“am nevoie si de alte informatii”)
– 4 replica negativa tranzitorie
(“eroare, incerc iar”)
– 5 replica negativa finala
(“eroare fatala”)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [13]
14. Retele de calculatoare
FTP|codul de stare
• A doua cifra specifica grupuri de functii:
–0 privitor la sintaxa
–1 informare (ajutor, informatii de stare)
–2 referitor la conexiuni
–3 privitor autentificarea utilizatorului
–4 nespecificat
–5 referitor la sistemul de fisiere
• Exemplu: 226 Transfer complete
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [14]
15. Retele de calculatoare
FTP|transfer
• Structuri folosite
– Fisier (file)
• Fisierul transferat e un flux (stream) de octeti
– Inregistrare (record)
• Fisierul transmis reprezinta o serie de inregistrari
– Pagina (page)
• Fisierul transferat e o serie de blocuri de date;
folosit pentru acces direct – fisierul este compus
din date si din “gauri” intre date
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [15]
16. Retele de calculatoare
FTP|transfer
• Moduri de transfer
– STREAM
• fisier transmis ca flux de date
– BLOCK
• fisier transmis ca serie de blocuri precedate
de antete continind contoare si descriptori de
bloc (EOF, EOR, restart marker)
– COMPRESSED
• se transmit blocuri compresate, conform
unui algoritm simplu de compresie (e.g., gzip)
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [16]
17. Retele de calculatoare
FTP|exemplu
1. Clientul se conecteaza la serverul FTP
aflat la adresa 193.231.30.225
2. Utilizatorul este autentificat
3. Clientul (la adresa 193.231.30.197) asteapta
comanda utilizatorului
4. Utilizatorul introduce “dir”
5. Clientul se conecteaza la portul de date FTP (20),
folosind un socket atasat local la 2397
6. Clientul trimite serverului (via portul 21) comanda
PORT 197.231.30.197.9.93 (9*256+93=2397)
7. Clientul asteapta codul de raspuns standard 200
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [17]
18. Retele de calculatoare
FTP|exemplu
8. Daca nu este OK, se afiseaza eroarea
9. Clientul trimite serverului
(via portul de control 21) comanda LIST
10. Clientul asteapta codul de raspuns 150
11. Daca nu e OK, se afiseaza eroarea
12. Clientul citeste de la portul de date (20)
informatiile trimise de server
13. Clientul asteapta codul de raspuns 226
14. Daca nu este OK, se afiseaza eroarea
15. Daca este OK,
se afiseaza continutul directorului de pe server
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [18]
19. Retele de calculatoare
Startarea aplicatiilor Internet
• Fiecare serviciu (telnet, FTP etc.)
are asociat un proces (daemon)
care se poate initializa la momentul
boot-arii (vezi /etc/rc la UNIX/Linux)
• Startarea se poate simplifica
prin intermediul super-serverului inetd
(configurat prin /etc/inetd.conf)
• Ca alternativa, se poate folosi xinetd
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [19]
20. Retele de calculatoare
Startarea aplicatiilor Internet
1. Pentru fiecare server gasit in fisierul de configuratie:
socket(), bind(), listen()
2. select()
3. accept() – pentru serviciile TCP
4. fork()
• Parintele inchide socket-ul conectat
− inapoi la pasul 2
• Copilul inchide toti descriptorii de socket diferiti de
socket-ul conectat
− se duplica socket-ul la descriptorii 0, 1, 2 – dup()
− se inchide socket-ul
− daca utilizatorul nu e root, se executa setuid() si setgid()
− se lanseaza serverul via exec()
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [20]
21. Retele de calculatoare
Aplicatie
Serviciile
IP ICMP UDP TCP
(protocol)
Ping
Internet
Traceroute
OSPF
(privire de
RIP
ansamblu)
BGP
BOOTP
TFTP
SNMP
SMTP
Telnet
FTP
HTTP
NNTP
DNS
NFS
RPC
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [21]
22. Retele de calculatoare
Rezumat
• Protocoale la nivelul aplicatie
–Transferul de fisiere
• TFTP (Trivial File Transfer Protocol)
• FTP (File Transfer Protocol)
–Startarea serviciilor Internet (inetd)
–Privire de ansamblu
Sabin-Corneliu Buraga 2006/2007 – www.infoiasi.ro/~busaco/ [22]