Documente Academic
Documente Profesional
Documente Cultură
Retele PDF
Retele PDF
175
Multe aplicaţii care utilizează servicii pe reţea asteaptă ca data să fie transmisă si primită
corect dea lungul conexiunilor reţea. Corect, în acest context înseamnă că articolele de dată ar
trebui remise fără erori si în secvenţă aplicaţiei receptoare.
Asa cum am văzut în secţiunea anterioară, remiterea corectă nu este asigurată de către
UDP si articolele de dată pot să sosească la aplicaţia destinaţie într-o ordine diferită decât cea în
care au fost trimise. TCP este un nivel de protocol alternativ constând în vârful nivelului Ip care
oferă remiterea corectă a articolelor de dată. Pentru a asigura remiterea corectă, TCP utilizează o
schemă cu confirmări a pachetelor TCP corect primite si retransmisia altora care nu au ajuns
Pentru a furniza o remitere secvenţială a pachetelor (articolelor de dată), nivelul TCP are de
asemenea o capacitate de stocare.
Pe lângă asigurarea unei remiteri corecte, nivelul TCP conţine mecanisme pentru evitarea
congestionării reţelei si a utilizării optime a capacităţii de reţea disponibilă.
Conexiuni TCP
Nivelul TCP este o alternativă la nivelul UDP, utilizând conceptul de conexiune pentru a
lega transmiţători si receptori ai serviciilor TCP. Când creăm o conexiune între doi utilizatori,
nivelul TCP asigură un port TCP ambelor capete, fiecare identificate printr-un număr de port.
Combinaţia de adrese IP si de porturi TCP identifică din nou conexiunea TCP în mod unic.
Utilizatorii de servicii la ambele capete de conexiuni primesc si trimit articole de dată prin
porturile TCP. Nivelul TCP nu structurează articolele de dată trimise de către utilizatorii de
servicii. Un utilizator de servicii trimite articole de dată de-a lungul conexiunii care sunt văzute
de către nivelul TCP ca un sir de octeţi.
Prin stocare si fragmentare, nivelul TCP formatează articolele de dată în pachete TCP si le remit
nivelului TCP receptor. Acolo, data este receptată ca un sir de octeţi. Conexiunea TCP lucrează
ca o conexiune full-duplex astfel încât ambele capete ale conexiunii TCP pot trimite si primi date
în mod concurent.
Este de responsabilitatea utilizatorilor serviciilor TCP să recunoască formatul articolelor
de dată trimise de-a lungul unei conexiuni TCP.
Este un protocol fiabil de comunicare între procese aflate între calculatoare interconectate,
folosind comutarea de pachete. Este orientat pe conexiuni si se situează la nivelul transport din
ierarhia OSI.
TCP presupune că la nivelul imediat inferior (reţea) există o modalitate, chiar neglijabilă,
de transmitere a pachetelor în reţea. El a fost gândit ca având la nivelul reţea un modul Internet
(IP) dar poate funcţiona si cu alte protocoale. Interfaţa dintre modulul TCP si modulele de nivel
superior se face prin apeluri similare celor pe care un sistem de operare le oferă pentru
manipularea fisierelor.
Funcţiile protocolului TCP
Protocolul TCP trebuie să asigure următoarele:
a)transfer de date;
în mod continuu, în ambele direcţii, între două procese.
b)fiabilitate;
Modulul TCP trebuie să refacă datele din pachetele eronate, să ţină cont de pachetele pierdute, de
cele duplicate sau transmise în altă ordine de sistemul de comunicaţii de la nivelul reţea. Pentru
aceasta fiecare pachet primeste un număr de secvenţă si necesită confirmare de primire. Dacă nu
e primită confirmarea într-un interval maxim de timp, datele neconfirmate sunt retransmise.
Numerele de secvenţă servesc atât la refacerea fluxului de date cât si la eliminarea pachetelor
duplicate. Deci atât timp cît modulele TCP funcţionează corect si sistemul de reţele nu devine
complet partiţionat, erorile mediului fizic de propagare a datelor nu vor influenţa corectitudinea
fluxului de date.
c)controlul fluxului de date;
Modulul TCP asigură o modalitate prin care receptorul poate controla cantitatea de date furnizată
de transmiţător. Acest lucru se realizează însoţind fiecare confirmare de o fereastră de
permisiune care indică domeniul de numere de secvenţe în care transmiţătorul poate furniza date
fără a primi o nouă confirmare.
d)servicii orientate pe conexiune;
Serviciile de fiabilitate si control al fluxului de date impun unui modul TCP să menţină pentru
fiecare flux de date anumite structuri de control (soclu, numere de secvenţă, dimensiunea
ferestrei de comunicaţie).
O conexiune este definită de structurile de control din cele două procese ce comunică prin fluxuri
de date. Deci pentru a stabili o conexiune între două procese ce doresc să comunice, modulele
TCP proprii trebuie mai întâi să stabilească o conexiune (canal de comunicaţie), ceea ce
înseamnă iniţializarea celor două structuri de control cu valori corelate. In acest scop are loc un
dialog prealabil între cele două module TCP, pentru iniţializarea structurilor de control.
Un modul TCP pune la dispoziţie două funcţii de deschidere de conexiuni, una activă, de iniţiere
a conexiunii, alta pasivă, de răspuns la orice cerere de stabilire de conexiune.
e)prioritate si securitate.
Utilizatorii modulelor TCP pot indica nivelele de prioritate si de securitate pentru transferul de
date. Pentru transmiterea datelor modulele TCP folosesc pachete IP.
Fiecare pachet va conţine după antetul IP, un antet TCP cu informaţii specifice acestui protocol.
Modelul client-server
Majoritatea programatorilor de reţea folosesc modelul client-server pentru a crea programe
pentru nivelul aplicaţie în reţea. Comunicaţiile în reţea necesită o conexiune între două
calculatoare sau programe care 'discută' unul cu celălalt. O conexiune în reţea constă în
stabilirea unei legături între ambele terminale
Modelul de programare client/server împarte o aplicaţie de reţea în două părţi:partea de client si
partea de server. Prin definiţie, partea de client a unei conexiuni în reţea necesită informaţii sau
servicii de la partea de server a conexiunii. Partea de server a unei conexiuni în reţea răspunde
cererilor clientului.
Cu alte cuvinte, în modelul de programare client/server, o aplicaţie de reţea realizează două
funcţii separate si bine definite:cererea de informaţii si răspunsul la cererile de informaţii.
Programul care cere informaţii funcţionează ca program client, iar programul care răspunde la
astfel de cereri funcţionează ca program server.
In majoritatea cazurilor, o aplicaţie de reţea constă din două programe separate:un program
client si un program server, iar uneori se poate crea un program care să realizeze ambele funcţii.
3. Desenati si descrieti protocolul 802.1x,EAP) pag.269
Serverul de autentificare 802.1x este relative simplu si initial nu a fost destinat
comunicatiilor fara fir. Are rol de a implementa controlul accesului si pentru aceasta imparte
reteaua in 3 entitati: clientul sau solicitantul-care vrea sa se conecteze la retea; autentificatorul
-care controleaza accesul; si serverul de autentificare-care ia deciziile de autentificare.
802.1x a fost propus si apoi imbunatatit de catre comitetul IEEE WLAN ca o modalitate
de intarire a autentificarii utilizatorilor intr-un mediu fara fir.
Clientul Autentificatorul
EAPOL
802.3 sau altele
Interfata Portul de
hostului acces la retea
Mesaje EAP
incapsulate, tipic
RADIUS
Server AAA
(Orice server
EAP)
Serverul de autentificare
4. Protocolul ip
A fost gandit de la bun inceput pentru a fi utilizat in sisteme interconectate de retele de
calculatoare care folosesc comutarea de pachete.
-asigura transmiterea de pachete de la sursa la destinatie, sursa si destinatia fiind calculatoare
gazda indentificate prin adrese de lungime fixa.
-asigura fragmentarea pachetelor mai lungi decat dimensiunea maxima a unui cadru ce poate fi
transmis intrun anumit tip de retea.
-nu garanteaza ajungerea la destinatie a pachetelor si nu asigura secventierea blocurilor de date.
-specificarea protocolului IP inseamna definirea interfetei cu nivelul imediat superior nivelului
transport si cu cel aflat sub el.
Adresarea IP
Fiecărui nod de reţea, într-o reţea IP, i se asignează o adresă IP unică. Când un nod IP este
conectat la mai mult de o reţea fizică, nodul are o adresă IP, pentru fiecare conexiune la o altă
reţea fizică. O adresă IP constă dintr-un număr pe 32 de biţi. Acest număr este divizat logic în
trei câmpuri:
class_id
net_id
host_id
Biţii din primul câmp indică dacă adresa face parte din clasele (fig.5.2.) A, B, C sau dacă este o
adresă multicast. O clasă A de reţele poate conţine până la 224 gazde, o clasă de reţele B pînă
la 216 gazde si o clasă de reţele C pînă la 28 gazde. Sunt posibile 228 adrese multicast.
Valori posibile :
Reţea de clasă A biţii 16-31 :host_id
bit 0 :0b(binar) Reţea de clasă C
biţii 1-7 :net_id biţii 0-2 :110b
biţii 8-31 :host_id biţii 3-23 :net_id
Reţea de clasă B biţii 24-31 :host_id
biţii 0-1 :10b Adresă de clasă D
biţii 2-15 :net_id biţii 0-3 :1110b
47 biţii 4-31 :adresă multicast
versiunea 4 IPv4
Versiunea curentă este 4(IPv4). S-a propus pentru Internet un protocol îmbunătăţit căruia i s-a
dat numele de IPv6(IP versiunea 5 era deja utilizat pentru un protocol pentru fluxuri în timp
real). Adresele sursă si destinaţie la acest nou protocol au lungimi de 16 octeţi, deci un spaţiu de
adrese practic nelimitat. Pentru scrierea adreselor pe 16 octeţi se folosesc grupuri de câte patru
cifre hexazecimale cu semnul : între grupuri.
IHL: câmp de 4 biţi care dă lungimea antetului din cuvintele de 32 de biţi. Acest câmp este cerut
din cauza lungimii variabile a câmpului opţiune. Dacă nu este prezent nici un câmp opţiune,
valoarea minimă a câmpului va fi 5.
TOS: Tipul serviciului, câmp de 1 octet, specificând tipul de serviciu cerut de acest cadru. Biţii
0-2 specifică precedenţa cadrului care e de la 0 (normal) - 7 (control reţea).
Bit 3 - indică cerere pentru întârziere mică (D-delay)
Bit 4 - indică cerere pentru debit mare (T-traffic)
Bit 5 - indică cerere pentru siguranţă mare (R-reliability)
Biţii D, T, R pot fi utilizaţi de către o poartă IP pentru a selecta o cale spre nodul destinaţie care
satisface serviciul cerut. Trebuie notat că în implementările curente câmpul T, S, O este ignorat
de către porţile IP si nodurile reţele.
Lenght: conţine lungimea totală a cadrului Ethernet, incluzând haderul si data.
Ident: câmpul ident împreună cu câmpurile adresa sursă si destinaţie, identifică în mod unic
datagrama în timpul existenţei pachetului IP.
Flags: câmpul flags conţine câmpurile More si Fragment. Acesti biţi indică dacă un mesaj este
transmis într-un singur pachet IP sau este fragmentat în mai multe pachete.
Foff: câmpul fragment offset poziţionează octeţii din cadrul IP în articolul de date original.
TTL: timpul de trăit dă timpul maxim de existenţă al cadrului IP. Acest câmp este utilizat
pentru evitarea buclelor infinite pentru pachetele IP. Fiecare ruter IP care gestionează un cadru
descreste adresarea cu 1 si trimite cadrul când valoarea este 0.
Prot: câmpul protocol identifică protocolul datei conţinute în cadrul IP. Normal, acesta va fi
TCP sau UDP.
Chek: suma de control a antetului IP (excluzând câmpul de date).
Source: adresa IP a nodului de reţea IP transmiţător.
Destination: adresa IP a nodului de reţea IP destinaţie.
Options: câmpul acesta de lungime variabilă poate conţine opţiuni IP.
Data: câmpul data nu este o parte din antetul IP si conţine articole de date de transmis. Datorită
limitei impare a câmpului Lenght, întregul cadru IP are o lungime maximă de 216. Aceasta
limitează de asemenea si lungimea câmpului de date.
ip versiunea 6 cu desen
Odata cu cresterea numarului de utilizatori, precum si cu aparitia noilor aplicatii multimedia
forma curenta a protocolului IPv4 nu mai poate satisface noile cerinte. De asemenea odata cu
cresterea numarului de echipamente portabile, e necesar sa poata comunica fara restrictii,
indifferent de aplicatii.
#include<netdb.h>
Struct hostnet *gethostbyname(const char *name);
-va returna un pointer la o structura hostent:
Struct hostent{
Char *h_name;
Char **h_aliases;
Int h_addrtype;
Int h_lenght;
Char **h_addr_list;
};
#define h_addr h_addr_list[0];
Gethostbyname() returneaza un pointer la o structura hostent completata sau NULL la eroare.
WIKI:
Un sistem de nume de domeniu (abreviat DNS, în engleză Domain Name System) este un sistem
distribuit de păstrare și interogare a unor date arbitrare într-o structură ierarhică. Cea mai cunoscută
aplicație a DNS este gestionarea domeniilor în Internet.
Caracteristicile sistemului de nume (DNS) sunt:
7. RPC
9. Algoritmul RSA
Face parte din categoria PKC-criptare cu cheie publica si este numit dupa cei trei matematicieni
de la MIT care au dezvoltat-o.
-folosit in sute de produse software si poate fi folosit pentru schimbul de chei, semnaturi digitale
sau criptarea unor blocuri mici de date
-siguranta foarte ridicata datorita faptului ca cheia publica contine numarul n si un derivate al
unuia dintre factorii folositi pt determinarea lui n
-utilizatorii pot creste marimea cheii
-CEA MAI SIGURA METODA DE CIFRARE SI AUTENTIFICARE DISPONIBILA
COMERCIAL.
Sistemul RSA este de tip exponenţial. În criptosistemul RSA cu cheie publica, un participant
creează cheia sa publica si secreta prin următoarea procedură:
1. Se selectează aleator două numere prime mari, p si q. Acestea ar putea avea, de exemplu 100
cifre zecimale.
2. Se calculează n prin relaţia n=pq.
3. Se alege un număr d relativ prim cu Φ(n) (unde Φ(n) este indicatorul lui Euler, iar în cazul de
faţă va fi egal cu Φ(n)=(p-1)*(q-1) si d în intervalul [max(p,q)+1, n-1].
4. Se calculează e ca fiind inversul lui d modulo Φ(n) ( pentru calculul lui e se poate utiliza o
versiune extinsă a algoritmului lui Euclid).
5. Se declară perechea P=(e,n) drept cheie RSA publică.
6. Se menţine secretă perechea S=(d,n), care este cheie RSA secretă.
Schema poate fi folosită cu succes într-un criptosistem cu chei publice astfel: se vor face
publice e si n, iar d va fi ţinut secret. În consecinţă, cheia publică este formată din perechea
(e,n) iar cheia privată din perechea (d,n).
10. Semnatura digitala
O semnătură digitală este un cod special, necesar pentru păstrarea integrităţii mesajului, codul
putând fi generat de către un participant unic. Algoritmul cel mai usor de înţeles este cel ce
creează o semnătură RSA, care funcţionează în mod evident- deoarece participantul este unica
persoană care îsi cunoaste cheia privată, el/ea foloseste acea cheie pentru a produce acea
semnătură. Oricare alt participant poate verifica acea semnătură folosind cheia publică
corespunzătoare. Cu alte cuvinte, pentru a semna un mesaj el se criptează folosind cheia privată,
iar pentru a verifica semnătura se decriptează, folosind cheia publică a presupusului expeditor.
In mod evident aceasta înseamnă că producerea unei semnături RSA este la fel de înceată ca si
RSA care este, după cum am văzut mai înainte, de două până la trei ordine de mărime mai
încet decât DES. Observăm că folosirea cheilor este exact inversă relativ la folosirea lor pentru
asigurarea secretului; expeditorul criptează cu cheia sa privată în locul cheii publice a
destinatarului, iar destinatarul decriptează folosind cheia publică a expeditorului în locul cheii
sale private.
Să notăm că s-a mai propus o semnătură digitală cunoscută ca DSS care este similară
abordării descrise, exceptând faptul că foloseste un algoritm alternativ, numit ElGamal, în loc
de RSA.
Principalul serviciu oferit de către nivelul IP este serviciul de transport al unui articol de dată de
la un nod IP sursă la unul destinaţie. Pentru aceasta, articolul de dată este încapsulat într-un
pachet IP. Un astfel de pachet poate fi definit ca o secvenţă de octeţi divizată în câmpuri. Unul
dintre câmpuri conţine octeţii care formează articolul de date. Celelalte câmpuri sunt folosite de
către nivelele IP uzitate pentru a transmite cadrul la destinaţia IP corectă si pentru reconstruirea
articolului de date. De asemenea, uneori e necesară fragmentarea unui pachet când acesta
provine dintr-o reţea cu o dimensiune mare a cadrului de date. Un pachet poate fi marcat " a nu
se fragmenta" si el va fi îndrumat pe o cale ce evită fragmentarea, iar dacă nu se poate, va fi
ignorat.
Fragmentarea trebuie să poată fi făcută într-un număr arbitrar de pachete si trebuie prevăzută
posibilitatea de reasamblare corectă,în secvenţă, la destinaţie. Acest lucru se obţine prin
interpretarea câmpurilor de flag-uri si offset din cadrul antetelor Internet ale fragmentelor.
Un pachet IP are structura indicata:
Câmpurile din cadrul IP au următoarea semnificaţie:
Ver: Versiunea, identificator de 4 biţi, conţinând versiunea protocolului IP al acestui cadru.
IHL: câmp de 4 biţi care dă lungimea antetului din cuvintele de 32 de biţi.
TOS: Tipul serviciului, câmp de 1 octet, specificând tipul de serviciu cerut de acest cadru.
Lenght: conţine lungimea totală a cadrului Ethernet, incluzând haderul si data.
Ident: câmpul ident împreună cu câmpurile adresa sursă si destinaţie, identifică în mod unic
datagrama în timpul existenţei pachetului IP.
Flags: indică dacă un mesaj este transmis într-un singur pachet IP sau este fragmentat în mai
multe pachete.
Foff: câmpul fragment offset poziţionează octeţii din cadrul IP în articolul de date original.
TTL: timpul de trăit dă timpul maxim de existenţă al cadrului IP. Acest câmp este utilizat
pentru evitarea buclelor infinite pentru pachetele IP.
Prot: câmpul protocol identifică protocolul datei conţinute în cadrul IP( TCP sau UDP)
Chek: suma de control a antetului IP (excluzând câmpul de date).
Source: adresa IP a nodului de reţea IP transmiţător.
Destination: adresa IP a nodului de reţea IP destinaţie.
Options: câmpul acesta de lungime variabilă poate conţine opţiuni IP.
Data: câmpul data nu este o parte din antetul IP si conţine articole de date de transmis. Datorită
limitei impare a câmpului Lenght, întregul cadru IP are o lungime maximă de 216. Aceasta
limitează de asemenea si lungimea câmpului de date.
13. .Desenati si descrieti modul de lucru client server cand se folosesc socluri fara
conexiune /datagrame
De ce nu sunt sigure? Dacă trimitem o datagramă, s-ar putea să ajungă. dezordonat. Dacă
ajunge, datele din pachet vor fi fără erori.
Soclurile de datagrame folosesc de asemenea IP-ul pentru rutare, dar nu folosesc TCP-ul; ele
folosesc protocolul UDP. De ce sunt fără conexiune? Deoarece nu trebuie să menţii o
conexiune deschisă ca si în cazul soclurilor de flux. Se realizează un pachet, căruia i se
atasează un antet IP cu informaţii despre destinaţie si apoi se trimite. Nu este nevoie de o
conexiune. In general sunt folosite pentru transfer de informaţii pachet cu pachet. Exemple de
aplicaţii: tftp, bootp, etc.
Cum funcţionează aceste programe dacă datagramele pot să se piardă? Fiecare are propriul
protocol deasupra UDP. De exemplu, protocolul tftp spune că pentru fiecare pachet care este
trimis, primitorul trebuie să trimită înapoi un pachet care să spună, "L-am primit!" (un pachet
"ACK"). Dacă cel ce a trimis pachetul original nu a primit nici un răspuns în, să zicem, cinci
secunde, va retransmite pachetul până va primi un pachet ACK. Această procedură de
recunostere este foarte importantă în implementarea aplicaţiilor SOCK_DGRAM.
14. Desenati si descrieti autentificarea de tip "increderea in a 3-a persoana"
Un scenariu mai plauzibil este că cei doi participanţi nu stiu nimic unul despre celălalt, dar
amândoi au încredere într-o terţă persoană. Această terţă persoană este câteodată numită
server de autentificare si foloseste un protocol pentru a ajuta cei doi participanţi să se autentifice
unul pe celălalt.
Sunt de altfel mai multe variaţiuni ale acestui protocol. Cel descris aici este numit Kerberos si
este un sistem bazat pe TCP/IP dezvoltat la MIT.
Fie A si B cei doi participanti si S serverul de autentificare. A si B partajeaza o cheie secreta cu S
iar cele doua kei sunt notate cu Ka, Kb, E(m,k) semnifică mesajul m criptat cu cheia k.
Participantul A trimite un mesaj serverului S care îl identifică pe el si pe B. Serverul generează
o cuantă de timp T, un timp de viaţă L si o nouă cheie de sesiune K. Cuanta de timp T va fi
folosită similar numărului aleator din metoda anterioară si este de asemenea folosită împreună
cu L pentru a limita timpul pentru care sesiunea K este validă.
Participanţii A si B vor trebui să se întoarcă la serverul S pentru a primi o nouă cheie de sesiune
când expiră acest timp. Ideea aici este de a limita vulnerabilitatea oricărei chei de sesiune.
Serverul S răspunde lui A cu un mesaj din două părţi.
Prima parte criptează cele trei valori T, L si K, împreună cu identificatorul pentru
participantul B, folosind cheia pe care serverul o partajează cu A.
Cea de-a doua parte criptează cele trei valori T, L si K împreună cu identificatorul
participantului A, dar de data aceasta folosind cheia pe care serverul o partajează cu B.
Atunci când A primeste mesajul va fi capabil să decripteze prima parte dar nu si pe a doua. A
trimite a doua parte lui B, împreună cu criptarea lui A si T folosind noua cheie de sesiune K( A a
fost capabil să refacă T si K decriptând prima parte a mesajului primit de la S). In final B
decriptează partea din mesajul primit de la A, criptat iniţial de către S si astfel recuperează T, K
si A. Se foloseste K pentru a decripta jumătate de mesaj criptat de către A si după ce se constată
că A si T se regăsesc( sunt consistente) în cele două jumătăţi ale mesajului, se replică cu un
mesaj care criptează T+1 folosind noua cheie de sesiune K. A si B pot acum comunica unul cu
celălalt folosind cheia secretă de sesiune K, pentru a asigura securitatea comunicării. Serverul se
mai numeste si KDC-Key Distribution Center-centru de distribuţie a cheilor care după cum s-a
văzut acţionează ca un intermediar între entităţi.