Sunteți pe pagina 1din 4

UNIT 1

Conectivitate -Schimbul de date dintre 2 sau mai multe PC-uri din diferite parti
ale lumii.
-> Bidirectional byte stream = principalul mod de comunicare intre programele PC-
urilor.
-HTTP- HyperText Transfer Protocol (http:// = comunica folosind http)
Clientul deschide o conexiune la un server si trimite comenzi acestuia. Comanda cea
mai comuna : GET (cere o anumita pagina)
CLientul trimite o cerere -> Serverul citeste cererea, o proceseaza si raspunde
clientului -> clientul citeste raspunsul afisat
-BitTorrent - Spre deosebire de web unde cererea este facuta catre un server,
folosind bittorrent clientii cer documente de la alti clienti. BitTorrent imparte
un document in mai multe parti. Dupa ce o parte a documentului este descarcata de
catre un client aceasta devine disponibila pentru a fi descarcata de catre alt
client.
-Skype - un schimb server - client precum http insa cu 2 clienti ce fac schimb de
date intre ei.
-> NAT (Network Address Translator) Ex: un router wireless este un NAT. Cu ajutorul
acestuia putem accesa Internetul. Din spatele unui NAT putem deschide cu usurinta
conexiuni pe internet insa nu se pot lega conexiuni in sens opus ( nod internet ->
user)
Relay - server folosit de Skype pentru cazurile in care ambii useri se afla in
spatele unui NAT. Ambii useri stabilisesc cate o conexiune catre server. Cand unul
dintre useri trimite date catre server, acesta trimite datele mai departe catre
celalalt user.
Modelul 4 Layer este alcatuit din : Link, Network, Transport si Application. Este
folosit pentru a pastra o ierarhie a operatiilor ce formeaza internatul in asa fel
incat aplicatiile sa poate reutiliza aceleasi date fara sa fie nevoie sa le creeze
de la 0.

Modelul 4 straturi al Internetului


1.Stratul Link
-Internetul este alcatuit din: end-hosturi , linkuri si routere.
-Datele sunt livrate prin linkuri
-Datele sunt trimise sub forma de pachete (contin datele ce le trimitem alaturi de
un header ce indica unde trebuiesc livrate pachetele si de unde sunt trimise
acestea)
-Stratul Link este folosit pentru a "conduce" datele. Ex: wifi, Ethernet
2.Stratul Network - cel mai important
-Livreaza pachetele de la un capat la celalalt prin intreg internetul.(Sursa ->
Destinatie)
-Pachetele sunt elemente importante si reprezinta numele pe care il punem unei
colectii de date plus un header cu informatii in legatura cu datele
-Pachetele sunt numite datagramuri
-Stratul Network preda datagramurile stratului Link care le trimite mai departe
stratului network dintr-un router.
-Routerul analizeaza adresele de destinatie si trimite datagramurile inapoi la
stratul link pentru a le conduce pana la destinatie.
Cand trimitem pachete folosim Internet Protocol (IP) - mentine reteaua inchegata
-IP-ul face tot posibilul ca pachetele sa fie livrate la destinatie dar acest lucru
nu este sigur
-Datagramurile pot fi pierdute, trimise fara ordine sau pot fi corupte
Pentru ca aplicatiile sa aiba garantia ca pachetele au fost trimise cu succes
folosim un alt protocol dupa IP: transportul
3.Stratul Transport
-Asigura ca datagramurile sunt trimise in ordine si sunt livrate corect
-TCP retrimite datagramurile esuate de cate ori este nevoie si se asigura ca
acestea ajung la destinatie
-In cazul in care acestea sunt trimise dezordonat (de obicei doua pachete urmeaza
cai diferite) TCP-ul le restabileste ordinea.
-UDP trimite un pachet de date catre stratul network pentru a fi trimis pana la
destinatie
-UDP nu trimite pachetele de mai multe ori si nu garanteaza succesul
4.Stratul Application
-Toate aplicatiile pot refolosi stratul de transport folosind API de la stratul
Application pana la serviciul TCP/UDP
-Schimb bi-directional de biti intre 2 puncte finale

Folosirea internetului presupune folosirea obligatorie a unui IP, insa putem opta
pentru multe straturi tip link precum Ethernet, DSL, 3G
In anii 80 a fost creat modelul 7 layers
Datagramurile Ip-ului sunt alcatuite din header si date
Stratul Network plaseaza segmente intr-un datagram al unui IP. Sarcina IP-ului este
sa conduca datagramul pana la celalalt capat,

Ip-ul este un serviciu bazat pe datagramuri


Primul strat catre care sunt trimise datagramurile este stratul link. Ip-ul trimite
datagramuri catre stratul link iar acesta introduce un link. ex : ethernet si este
trimis catre primul router
Caracteristici ip:
-Datagramurile sunt pachete cu rout individual prin internet cu ajutorul
informatiilor din header.
*Headerul - contine adresa ip a destinatiei, ip sursa (ip-ul de unde provine)
*ip-ul trimite datele pas cu pas pana la destinatie
-unreliable - ip-urile nu ofera siguranta trimiterii pachetelor: acestea pot fi
pierdute pe parcurs, trimise cu intarziere sau trimise in duplicat datorita unui
router.
-ip-urile pot pierde date pe drum daca acest lucru este necesar fara a mai incerca
sa le trimita (? - care sunt cazurile in care este nevoie de pierdere intentionata
a pachetelor?)
-ip-ul este un serviciu simplu lipsit de comunicare deoarece nu se asigura ca
pachetele au fost livrate. Acestea sunt trimise pe rand fara a exista o legatura
intre ele.

Serviciul ip construit pe baza unei idei simple deoarece:


-mentine internetul cat mai simplu
-principul end-to-end: pentru a plasa pe cat posibil inteligenta in cele doua
capete : sursa -> destinatie
-usurinta de a evolua si de a imbunatatii caracteristicile daca sunt implementate
in software-ul computerelor si nu in hardware-ul internetului.
-varietatea serviciilor ce sunt construite cu ajutorul acestuia
-functioneaza sub orice forma a stratului link : link-ul poate fi wireless sau prin
cablu
-ip-ul este creat pentru a interconecta retelele existente
Caracteristici ip:
-incearca evitarea intrarii in loop ( ip-ul trimite pachete pas cu pas prin
internet si este posibil ca un router din cale sa greseasca, pachetele sa
urmareasca aceeasi cale si sa intre in loop)
*in loc sa se incerce evitarea acestor situatii ceea ce ar necesita metode prea
complexe se foloseste un mecanism pentru a depista si sterge pachetele blocate in
loop (ip-ul adauga in headerul fiecarui datagram un camp ce numara hop-urile. Ex:
time to live[TTL field])
(?) - Cum putem traduce un "hop", ce este un hop ?
-fragmenteaza pachetele daca sunt prea mari. Ex: Ethernet conduce pachete de pana
la 1500 biti
-verifica continutul headerului pentru a reduce sansele de a livra pachetele unui
destinatar gresit.
Exista doua versiuni de ip folosite in zilele noastre:
*IPv4 - adrese 32 biti
*IPv6 - adrese 128 biti
-permite adaugarea a noi optiuni in header
Cele mai importante campuri din header-ul IP sunt: adresa de destinatie, adresa
sursa, id-ul de protocol( ne spune ce se afla in campul data)
Pe langa acestea, un header contine urmatoarele campuri: Versiune (ipv4/6),
Dimensiune pachete (pana la 64 kbiti incluzand headerul + date), TTL (daca ajunge
la valoarea 0 = loop => trimitere oprita), Packet id, Flags, Fragment offset (toate
3 ajuta routerele sa fragmenteze pachete),Type of Service (dezvaluie routerelor
importanta pachetelor respective), Header Length, checksum (raport final intregului
header ptr a nu fi corupt sau trimis gresit)

Viata unui pachet


Modelul de 4 straturi preia un flux de date din layer-ul application
Layer-ul transport sparte datele in segmente care sunt trimise catre o aplicatie ce
ruelaza pe un alt computer
Layer-ul network trimite pachetele de date catre computerul destinatie
Marea parte din trafic se face prin TCP (transport control protocol) printr-un
client si un server
"3-way handshake" este o metoda de comunicare intre server si client.
Primul pas al metodei: trimiterea de la client catre server a unui SYN
( synchronize message)
Al doilea pas al metodei: raspunsul serverului la mesajul clientului cu: syncronize
(mesaj ce va trece mesajul de la client in aknowledged) sau cu mesaj synchronize
and aknowledge (SYN-ACK)
Al treilea pas este raspunsul clientului prin aknowledge de la client la server
(ACK)
Schema succinta client->server: Synchronize->Synchronize and aknowledge->Aknowledge
Pentru a deschide un stream TCP catre alt program avem nevoie de 2 adrese:
-un IP: pe care sa il foloseasca stratul Network sa transmita pachetele catre
computer
-un port TCP: portul va spune software-ului computerului catre ce aplicatie vor fi
trimise pachetele (de obicei folosit TCP port 80)
Pentru ca nu exista un cablu ce conecteaza serverul la client se folosesc routere
intermediare (alte computere ce sunt conectate la randul lor la alte routere ale
altor computere)
Hop-urile reprezinta legaturi intre routere
O data ajunge la un router, pachetele decid linkul pe care pachetele il vor urma.
Forwarding table: este verificat de catre pachete cand acestea ajung pentru a vedea
ce cale se potriveste cel mai bine.

Daca atunci cand pachetele ajung la un router si nu este specificata ruta, acesta o
va alege pe cea default
Ruta default este folositoare in special in retelele tip edge (de margine)
Cu aplicatia wireshark putem vedea totalitatea schimburilor de pachete dintre user
si un server.
Traceroute ne arata hop-urile parcurse de catre pachete pana sa ajunga la
destinatie
Folosim "traceroute -w <site> pentru a vedea ruta parcursa de catre pachete

Packet switching
Pachetul: o unitate de date ce contine informatii necesare acestuia pentru a ajunge
la destinatie.
Packet switching: spargerea pachetelor in pachete mai mici ce vor fi capabile sa
care o anumita cantitate de date astfel incat acestea sa ajunga la destinatie
Caracteristici:
-Simplicitatea trimiterii pachetelor (poate lua decizii individuale, acesta
trimitandu-l doar mai departe)
-Eficienta in alocarea si impartirea linkurilor intre useri (daca un utilizator
citeste o pagina, un al doilea utilizator poate folosi link-ul pentru a downloada
la viteza maxima si viceversa)
O secventa de pachete o putem numi "flow" ( o colectie de datagramuri apartinand
aceluiasi traseu (de la emitator la receptor)
Schimbul de pachete permite flow-urilor sa foloseasca totalitatea capacitatii unui
link
Schimbul de pachete perminte flor-urilor sa imparca capacitatea totala a unui link.
Statistical Multiplexing: Fiecare user primeste o parte de date calculata statistic
in functie de cati useri o folosesc deja. Daca sunt 2 useri care citesc o pagina,
capacitatea link-ului va fi impartita la 2.
Switch-urile doar fac transferul pachetelor (forward) si nu tin cont de erori.
Switch-urile trimit mai departe pachetele in mod idepentend si nu au nevoie sa stie
despre flow-uri.
Schimbul de pachete este eficient deoarece permite impartirea capacitatii totale a
unui link

Cum definim termenul "layering" : organizarea unui sitem intr-un numar de


componente separate functionale (straturi)
Layer-urile sunt ierarhice si comunica secvential. Au o interfata ce comunica doar
cu layer-ul de deasupra si cel de dedesupt
Fiecare layer ofera servicii layer-ului de deasupra sa folosind servicii oferite de
cel de dedesupt
Layering-ul este proiectat in multe computere - cand creem programe cream cod sursa
folosind un limbaj lipsit de detalii ale sistemului de operare
Example of layeringL: Compilatorul executa sarcini precum analiza lexica.
preprocesarea declaratiilor. Acesta genereaza codul obiectului care este mai apoi
trimis linker-ului
Linker-ul uneste toate obiectele compilate ale fisierului si genereaza un
executabil ce va fi rulat de catre CPU
Compilatorul se axeaza pe analiza, lexic etc. Linker-ul se axeaza pe unirea
eficienta a obiectelor - nici unul nu trebuie sa aiba griji unul in legatura cu
celalalt
C++ permite includerea asamblurilor de coduri direct in Kernelul OS-ului. Facand
asta codul nu mai este depentent de link-uri
Motive pentru care folosim layering-ul:
-modularitate: imparte sistemul in multe mici mai usor de manageriat
-servicii bine definite: fiecare layer ofere servicii catre linkul de deasupra
-refolosire
-separarea ingrijorarilor