Documente Academic
Documente Profesional
Documente Cultură
Pu Vlad Retele
Pu Vlad Retele
C U Z A” - I A S I
INTRODUCERE IN
R E T E L E D E C A L C U L A T OA R E
SABIN CORNELIU BURAGA
busaco@infoiasi.ro
http://www.infoiasi.ro/~busaco
NOTA AUTORULUI
PREAMBUL
RETEA = un sistem de calculatoare, terminale si baze de date conectate prin linii de comunicatii.
Ele permit utilizatorilor diferitelor tipuri de calculatoare sa schimbe date si
sa foloseasca programe speciale sau supercomputere (mainframe).
Dimensiunile ei fizice merg de la o retea locala la una internationala.
Retele care permit ca toate acestea sa fie facute asa de usor sant de fapt entitati sofisticate
si complexe. Calculatoarele se sprijina pe efectivitatea lor asupra multor componente ce lucreaza
intre ele. Design-ul si asamblarea retelelor mondiale de computere pot fi privite ca una din cele
mai importante minuni tehnologice ale ultimei decade.
M O D E M - U R I S I C A L C U L AT OA R E D E B I RO U
In anii ’70 calculatoarele existente erau foarte scumpe, erau masini fragile care trebuiau
supravegheate de specialisti si pastrate intr-un mediu controlat, special. Ele puteau fi folosite fie la
conectarea directa cu un terminal sau utilizand o linie de telefon si un modem pentru a avea acces
la distanta. Datorita pretului lor ridicat tindeau de-a fi considerate resurse centralizate asupra
carora utilizatorul trebuia sa aranjeze propriul lor acces. In tot acest timp companiile ce ofereau
timp de acces la un computer mainframe s-au dezvoltat. Retelele de calculatoare din aceasta
perioada nu erau disponibile pe piata. Chiar si asa una din cele mai mari dezvoltari menite sa
modifice lumea moderna a tehnologiiilor a fost initiata la acea vreme. Aceasta realizare este
cunoscuta astazi sub numele de Internet.
RETELE LOCALE
Unul din cele mai dramatice evenimente in retelele de calculatoare a fost introducerea si
dezvoltarea rapida a retelelor locale, ca un mod de standardizare a sistemelor de conectare a
computerului folsite in firma. Acest lucru insemna conectarea impreuna a unui numar de
elemente computationale. La cel mai simplu nivel o retea locala furniza nu mai mult decat un
mediu de conectare (cum ar fi un cablu coaxial la care toate calculatoarele si imprimantele sant
conectate) impreuna cu un set de reguli ce guverneaza accesul catre acel mediu. Cea mai folosita
retea locala, Ethernet, utilizeaza un mecanism numit CALL SENSE MULTIPLE ACCESS –
COLISION DETECT/CSMA - CD (Accces multiplu a sensului de apel – detectie de coliziuni).
Aceasta inseamna ca fiecare componenta conectata poate folosi legatura cand s-a stabilit ca nu
exista un alt dispozitiv care-l foloseste. Daca coliziunea totusi se produce dispozitivul care sonda
conexiunea se retrage si incearca din nou mai tarziu. Ethernet transforma date la viteza de 10
MB/sec, ceea ce este suficient de rapid pentru a face ca distantele dintre dispozitive sa fie
nesemnificative. Ele apar ca si cum ar fi direct conectate cu destinatia lor. Ethernet-ul si CSMA-
CD sant exemple de retele locale. Exista multe componente diferite ce alcatuiesc acest sistem
(cum ar fi magistrala, inelul, conexiunea stea) si un numar diferit de protocoale de acces. In ciuda
acestei varietati toate retelele locale dau posibilitatea accesarii caracteristicilor in care ele sant
limitate in distanta (fizic, ele acopera o singura cladire) si sant suficient de rapide pentru a face
reteaua de conectare invizibila dispozitivelor care o folosesc. In plus, retelele locale moderne pot
oferi utilizatorilor o gama larga de facilitati sofisticate. Pachetele de software de management sant
disponibile pentru a controla modul in care dispozitivele sant configurate in reteaua locala, cum
sant administrate, utilizate si cum resursele de retea sant controlate. O larga structura adoptata a
retelei locale este de-a avea un numar de servicii ce sant valabile unui numar, de obicei, mult mai
mare de clienti. Vechile computere (acele puternice) furnizau servicii cum ar fi: controlul
imprimantei, a partajarii fisierelor si posta.
RO U T E R E S I P U N T I D E L E G A T U R A
Facilitatile multor retele locale sant foarte puternice. Multe companii nu doresc sa posede
insule, izolate de facilitatile de calcul. Ele, de obicei, doresc sa extinda facilitatile pe-o arie larga, in
asa fel incat acele grupuri sa poata lucra fara a fi nevoie sa fie localizate. Routerele si puntile de
legatura sant dispozitive specializate ce permit ca doua sau o singura retea locala sa fie conectate.
Puntea de legatura este, mai de graba, un dispozitiv de baza, el putand sa controleze doar retele
locale de acelasi tip. Routerul este o componenta mai inteligenta ce poate interconecta mai multe
tipuri diferite de retele de calculatoare. Multe companii mari au retele de date ce se regasesc intr-o
colectie de routere si retele locale.
Din punct de vedere al utilizatorului acest aranjament le pune la dispozitie o retea fizica
diversa ce seamana cu o resursa coerenta.
R E T E L E T E R I T O R I A L E ( W. A . N. )
De la un anumit punct devine nepractic extinderea unei retele locale pe mai departe.
Acest lucru il determina uneori limitarile fizice, dar mult mai des apar modalitati mai convenabile
si mai ieftine de-a extine o retea de calculatoare.
D I S T R I BU T E D C O M P U T I N G ( C A L C U L D I S T R I BU I T )
Ar fi mai usor sa ne inchipuim ca, calculatoarele vor fi capabile sa lucreze impreuna odata
ce ele dispun de conexiune intr-o banda larga. Intrebarea care se pune este : cum se poate reusi ca
calculatoarele construite de diversi producatori din diverse tari sa lucreze impreuna. Pana nu de
mult majoritatea calculatoarelor erau construite cu propria lor interfata si erau structurate intr-un
mod propriu, unic. Un computer putea conversa cu un altul de acelasi tip, insa avea dificultati in
comunicarea cu un altul strain. Totusi, existau cateva echipamente privilegiate ce aveau
posibilitatea sa extraga date dintr-o varietate de resurse.
La inceputul anilor ’90 diferentele dintre diferitele tipuri de calculatoare s-au redus pana
cand au atins stadiul in care puteau interactiona efectiv. Aceasta a permis, virtual, oricui sa
foloseasca prin control de la distanta, cu rezultate bune, o masina de calcul. Principalii
contribuitori la aceasta sant:
CLIENT/SERVER
In loc sa se construiasca sisteme de calculatoare tip bloc (monolitic) s-a ajuns la un punct
de vedere comun ce stipuleaza ca ele ar trebui construite de tipul sistemelor client/server. Clientul
(un utilizator PC) cere un serviciu (cum ar fi tiparirea la imprimanta) iar serverul (un procesor al
unui calculator conectat la o retea locala) il furnizeaza. Aceasta imagine de consens a structurii
sistemelor calculatoarelor demonstreaza ca exista o separatie a functiilor ce alta data erau
inghesuite impreuna. Detaliile implementarii ce decurg dintr-un singur concept au de strabatut un
drum lung pentru a face ca toate computerele sa fie tratate la fel.
SISTEME DESCHISE
S E C U R I TA T E S I M A NA G E M E N T
Posedand retele de calculatoare alcatuite din masini ce pot comunica intre ele nu este din
pe departe scopul final. Spectrul autostrazii informationale abia acum devine ceva de luat in
seama, cevea cu adevarat important.
Securitate
Odata cu cresterea volumului de informatii importante care sa fie lasate doar in seama
calculatorului, securitatea acestuia devine din ce in ce mai importanta. Intr-un astfel de sistem ar fi
mult prea usor ca o persoana cu inalta pregatire sa acceseze informatii confidentiale fara a fi
detectata. Standardul sistemelor de date pentru protectia informatiilor de pe computer introdus la
sfarsitul anilor ’70 i s-a atasat recent un sistem de chei publice ce permit utilizatorilor sa
fragmenteze si sa defragmenteze usor mesajele lor fara ca o terta persoana sa se interpuna.
Management
Reţeaua Internet a apărut la sfârşitul anilor '60 printr-un efort de conectare a reţelei
Departamentului Apărării Statelor Unite (cunoscută sub numele de ARPAnet - Advanced
Research Projects Agency) cu alte reţele conectate prin dispozitive radio şi satelit. ARPAnet a fost
o reţea experimentală proiectată să asigure suportul pentru cercetarea militară - în particular
cercetări privind construirea unor reţele care puteau rezista cu succes unor întreruperi parţiale.
Drumul dintre calculatorul sursă şi cel destinaţie nu trebuie să fie mereu acelaşi: dacă
intervine o modificare de structură în cadrul reţelei se vr identifica în mod dinamic noi "drumuri"
- numite rute - între calculatoare
Timpul a demonstrat că acest protocol (IP) este suficient de robust şi fiabil pentru a putea
modela tranzacţiile în cadrul acestei reţele
Până în jurul anului 1993 s-a maturizat suficient de mult si tehnologia reţelelor locale
(LAN - Local Area Network). Majoritatea staţiilor de lucru rulau Berkeley UNIX care includea
software dezvoltat pe baza protocolului IP. A apărut o nouă cerinţă: în locul conectării unei staţii
de lucru la serverul unic ce deservea reţeaua locală se punea acum problema conectării întregilor
reţele la ARPAnet. În acelaşi timp multe companii si organizaţii au început sa-şi construiască
reţele private folosind aceleaşi protocoale ca şi în cazul ARPAnet. Era clar că dacă aceste reţele ar
putea comunica între ele(de pe orice calculator al unei reţele de tip LAN se putea comunica cu
orice calculator dintr-o altă reţea) acest lucru ar însemna un mare avantaj. Una din cele mai
importante reţele noi astfel apărute a fost NSFNET, înfiinţată de NSF (National Science
Foundation), o agenţie guvernamentală americană. Spre sfârşitul anilor '80 această organizaţie a
creat cinci noduri de comunicare puternice în centrele universitare americane cele mai
importante. Problema care apărea acum era datorată costului ridicat al serviciului prin linii
telefonice închiriate pe distanţe foarte mari. Soluţia a constat în înfiinţarea unor centre regionale.
Astfel aproape fiecare campus universitar a fost conectat la centrul Internet cel mai apropiat.
Aceste lanţuri de centre au fost conectate la rândul lor la centrele mari deservite de
supercomputere capabile să facă faţă unui trafic extrem de mare. În scurt timp serverele centrale
au ajuns în stadiul să stocheze un volum uriaş de informaţie, dar lucrul cel mai important era
faptul că această informaţie putea fi accesată foarte uşor de pe orice calculator conectat la unul
din centrele regionale. Datorită creşterii traficului de la an la an ,s-a ajuns la o supraîncărcare a
acestei reţele, astfel încât în anul 1987 s-a impus o îmbunătăţire a liniilor telefonice ,precum şi a
performanţelor tehnice ale serverelor.
Pe măsură ce performanţele au crescut ,cererea de servicii Internet a devenit tot mai mare.
Cele mai multe dintre colegiile americane au fost conectate la Internet, impactul educaţional fiind
imens. Odată depăşit acest stadiu, atenţia s-a îndreptat spre şcolile elementare şi medii americane.
Impactul acestei măsuri pe scară largă s-a manifestat mai cu seamă în domeniul companiilor şi
firmelor comerciale. Foştii absolvenţi ai colegiilor americane au convins marile corporaţii din
toate domeniile de utilitatea conectării la Internet. Acest fapt a dus la o dezvoltare accelerată a
acestei reţele. În prezent majoritatea firmelor mici şi mijlocii folosesc serviciile Internet pentru
rezolvarea problemelor proprii legate de transferul de informaţie.
Deşi cerinţele de administrare ale unei astfel de reţele sunt uriaşe, nu există o autoritate
supremă care să o guverneze. Există în schimb un număr de organizaţii constituite pe bază de
voluntariat care au ca scop investigarea problemelor ce pot apare şi care propun măsuri de
îmbunătăţire. Internet Architecture Board (IAB) este o astfel de organizaţie. Membrii acesteia se
întâlnesc regulat pentru a se consulta în privinţa stabilirii standardelor, a alocării resurselor, pentru
a propune soluţii pe termen mediu şi lung. Odată un nou standard adoptat, este publicat pe
Internet, urmând ca pe baza acestuia să se construiască noi aplicaţii, scopul fiind acela al unei
compatibilităţi cât mai mari între arhitecturi, sisteme de operare etc. Deşi Internet este departe de
a fi la stadiul de anarhie, oricine este liber să-şi exprime sugestiile despre cum ar trebui organizat.
Astfel s-a format o noua organizaţie numită Internet Engineering Task Force (IETF). Membrii
acesteia se întâlnesc periodic pentru a discuta probleme de natură operaţională pe termen scurt.
Atunci când se prezintă o problemă se formează un grup de lucru care cercetează exclusiv acea
problemă şi caută soluţii cât mai performante. La sfârşitul unei astfel de cercetări se creează un
raport. Dacă soluţia propusă este valoroasă poate fi trimisă la IAB pentru a fi acceptată ca
standard
Contrar aşteptărilor, nimeni nu plăteşte pentru Internet în ansamblul său; nu există nici o
firmă care să colecteze plăţile de la toate reţelele Internet sau de la utilizatori. În schimb, toată
lumea plăteşte pentru partea sa de acces. NSF plăteşte pentru NSFNET, NASA plăteşte pentru
NASA Science Internet. Un colegiu sau o corporaţie plăteşte pentru conectarea sa la o reţea
regională, care la rândul ei plăteşte un furnizor naţional pentru accesul său la o reţea
internaţională.
PRELIMINARII
Internet
• reţea de reţele
• comunicarea :
!"între 2 reţele
Reţea – formată din conectarea fizică a două sau mai multe calculatoare.
Comunicarea
• transmisie de biţi
- full-duplex - pot exista fluxuri de biţi în acelaşi timp între cele două calculatoare
de circuite
de pachete
Comutarea de circuite – creează o cale unică neîntreruptibilă între două dispozitive care
comunică:
B imprimantă
A B
Trebuie ştiute adresa destinatarului şi a expeditorului.
Topologii (de reţea) – se referă la forma geometrică a reţelei, mai exact la forma
geometrică virtuală
♦ bus(magistrală)
♦ inel
♦ stea
♦ arbore
Dezavantaje:
♦ orice defecţiune fizică într-un loc oarecare al magistralei atrage după sine
întreruperea tuturor comunicaţiilor în reţea
♦ securitatea datelor este extrem de redusă (informaţia trece pe la fiecare calculator
al reţelei)
Inel (ring) :
♦ securitatea scăzută
Stea :
Avantaje:
SCOPUL REŢELELOR
- Toleranta la defecte
♦ Economia de bani
Ideea e de a mări puterea de calcul fără a renunţa la calculatoarele vechi: mainframe (Felix C256,
Felix 512, Felix1024) sau minicalculatoare (Independent I-100, I-102, I-108, Coral, PDP 11)
- comunicaţiile interpersonale,
- divertismentul interactiv.
PARTEA 3
MODELE DE COMUNICARE
TEHNOLOGII DE TRANSMISIE
• Reţele “point-to-point”
• au un singur canal de transmisie care este partajat la toate nivelurile din reţea;
• se emite pe canal pentru toate maşinile; toate maşinile “aud” dar numai cele
implicate răspund;
• modul sincron
A B
• modul asincron
!"biţii din fiecare caracter transmis sunt precedaţi şi urmaţi de către un bit
special de start şi stop
La comunicarea în mod sincron, după ce are loc o negociere care stabileşte canalul de
comunicare, comunicarea este extrem de fluidă;
La comunicarea în mod asincron transmiţi când vrei, dar preţul plătit este că nu am o
fluiditate a comunicării şi mereu trebuie să scriem adresa iar pachetele nu vor veni în ordinea în
care au fost trimise.
C O N E C TA R E A C A L C U L A TOA R E L O R Î N R E Ţ E A
Probleme:
Apare atenuarea semnalului emis, şi pentru a putea face semnalul transmisibil, trebuie să
introducem un Repetor.
Repetorul
Bridge (punte)
- împart reţeaua în două grupuri şi pun un alt calculator(1) care realizează puntea
între ele; calculatorul (1) identifică un pachet din reţeaua “a” şi transmite la reţeaua B (micşorează
pachetele ce se plimbă între cele două reţele)
- calculatorul (1) examinează pachetele din fiecare reţea şi le transferă doar atunci
când este cazul
Router
Gateway(poartă)
• se referă în fapt la anumite aplicaţii care sunt de-a lungul reţelei (poartă de
aplicaţii);
PARADIGMELE COMUNICĂRII ÎN REŢEA
• modelul client-server
- serverul – stă în aşteptare de a oferi nişte servicii şi aceste servicii le oferă doar printr-un
anumit port
PROTOCOALE ŞI INTERFEŢE
A B
i i
i-1 i-1
1 1
Exemplu practic – relatiile de afaceri intre doi directori de companie, din tari diferite:
A B
Director Director
Secretară Secretară
Traducător Traducător
• este un set de reguli care definesc convenţiile de comunicare conforme unui nivel
Interfaţă = acele servicii care permit comunicarea la acest nivel între două niveluri
consecutive;
Principiu:
o are 7 straturi;
• Modelul TCP/IP
o model cu 5 straturi;
o este de mai mare succes practic decât cel ideal propus de ISO
Interfaţa:
n+1
n-1
Serviciu:
Protocol şi Serviciu
Host A Host B
- model cu 7 niveluri;
- cererile – sunt nivelurile client (n+1) şi transmit cereri de servicii (ale nivelului n);
- serviciile confirmate (se utilizează toate cele 4 tipuri de primitive conform următoarei
scheme)
transfer indicaţie
răspuns
confirmare
o rezolvarea congestiilor
Într-o reţea cu comutare de pachete cum este Internetul, în fiecare pachet avem adresele
destinatar şi sursă.
Protocoalele nivelului 3 definesc responsabilităţile fiecărui element din reţea în ceea ce priveşte
rutarea datelor. Se garantează că hostul destinatar recepţionează pachetele în mod corect.
În modelul ISO/OSI nivelul reţea asigură secvenţialitatea pachetelor spre deosebire de TCP/IP
unde acest lucru îl realizează nivelul transport (nivelul 4). De asemeni, se face gestiunea traficului
în reţea, contorizarea traficului în reţea.
niv 4 niv 4
niv 3
Host A Host B
S T I VA D E P R O T O C OA L E T C P / I P
- IP – Internet Protocol
aplicaţie aplicaţie
F L U X U L D E DA T E
La nivelul fizic se folosesc cabluri coaxiale sau torsadat, iar la nivelul legătură de date se
utilizeaza Ethernet, Token Ring, fiecare placa de retea posedind o adresa de 6 octeti. Pentru a
realiza conversia dintre adresele placilor de retea si cele ale calculatoarelor din Internet se folosesc
protocoalele :
Nivelul IP (nivel internet) se ocupă de comunicarea la nivelul maşinilor. Rolul lui este de a
permite hosturilor să emită pachete în reţea şi face ca pachetele să circule independent de maşinile
intermediare.
- In cazul ISO/OSI – costul de a asigura o comunicare sigură este foarte mare, dar
la suita de protocoale TCP/IP (mult mai practică) e sigură la nivelul IP.
- TCP/IP introduce la nivelul transport (TCP) un control final al transmisiei numit
“end-to-end”.
A B
TCP TCP
IP IP IP IP IP
Leg
Nivelul transport
Nivelul aplicaţie
ASEMĂNĂRI:
DEOSEBIRI:
1. OSI distinge cele 3 concepte, iar TCP/IP nu le distinge. OSI este bun ca model,
TCP/IP este bun ca implementare
- Nivelul 3:
Face detectarea si corectarea erorilor la nivel de pachete
- Nivelul 4:
TCP/IP – cifre de control, algoritmi de retransmisie, proceduri de acoperire a erorilor, time-out,
timpul de viata a pachetelor
Fiabilitatea în OSI – foarte bună, eficienţa – foarte slabă
Fiabilitatea în TCP/IP – mai mică, eficienţa – mai bună
Concluzii:
Asadar, pentru programatori este important doar stratul n, fara a-i interesa ce se petrece la
straturile inferioare.
PARTEA 5
P R O T O C OA L E D E C O M U N I C A T I E
I N R E T E L E L E D E C A L C U L A T OA R E
(DETALII)
Cel mai adesea comunicaţiile interprocese de-a lungul unei reţele sunt realizate prin
intermediul familiei de protocoale TCP/IP. Dupa cum am vazut si mai sus, familia de protocoale
TCP/IP constă din următoarele protocoale:
- TCP
- UDP
- ICMP
Internet Control Message Protocol – folosit pentru tratarea erorilor şi controlul informaţiilor.
Foloseşte protocolul IP pentru realizarea schimbului de date. În mod normal procele utilizator nu
au nevoie să aceseze ICMP, deoarece mesajele acestuia sunt procesate de către software-ul
TCP/IP.
- IP
Internet Protocol – protocolul de bază pentru UDP, TCP şi ICMP. Procesele utilizator
folosesc doar TCP sau UDP, folosirea directă a IP-ului fiind rar întâlnită.
Diferitele piese ale Internetului sunt conectate de un set de calculatoare numite routere,
care conectează împreună reţelele. Aceste reţele sunt uneori Ethernet, uneori reţele de tip inel,
sau alteori reţele telefonice.
La nivelul protocolului IP, un router primeşte datele trimise de undeva şi decide unde
trebuie să le trimită mai departe folosind pentru aceasta cea mai bună cale de comunicare. Suita
de reguli prin care se realizează schimbul de date se numeşte protocol. Protocolul Internet (IP)
trimite mesajele sau verifică faptul că routerul ştie ce să facă cu datele când acestea îi sosesc
funcţionând ca un plic.
Adresele Internet constau din patru numere (octeti), fiecare mai mic decât 256. Atunci
când sunt scrise, numerele sunt separate prin puncte, astfel:
187.110.27.7
135.120.4.2
Adresa este în fapt formată din mai multe părţi. Deoarece Internet este o reţea de reţele,
începutul adresei spune routerului Internet reţeaua la care suntem conectaţi. Sfârşitul adresei ne
spune care calculator gazdă (host) va recepta pachetul. Fiecare calculator de pe Internet are o
adresă unică în acest fel. De exemplu, serverul studentilor Facultatii de Informatica are adresa IP
urmatoare : 193.231.30.197.
Pentru o serie de motive practice (dintre cele mai notabile putem număra limitările
echipamentelor), informaţia trimisă de-a lungul reţelelor IP este "spartă" în piese de dimensiuni
mai mici, numite pachete. Informaţia din interiorul pachetelor are o lungime de regulă între unul şi
aproximativ 1500 caractere. Asta pentru a preîntâmpina ca un utilizator să monopolizeze reţeaua,
permiţând tuturor să aibă acces la ea. Totodată dacă reţeaua este supraîncărcată, asta înseamnă că
ea se va comporta rău pentru toţi utilizatorii ei: ea nu se opreşte pentru unii, în timp ce alţi
utilizatori mai importanţi o monopolizează.
- ARP
Address Resolution Protocol mapează adresele Internet în adrese hardware. Numai anumite
reţele au nevoie de el.
- RARP
Ca în cazul oricărui protocol bazat pe mai multe nivele, fiecare nivel încapsulează datele
nivelului inferior.
Familia de protocoale TCP/IP a fost dezvoltată de către Defense Advanced Research Projects
Agency (DARPA) în anii 1970.
Obiectivul principal al DARPA a fost de “a dezvolta o tehnică efectivă pentru utilizare
multiplexată a reţelelor interconectate”. Acest obiectiv a fost atins şi astăzi mii de reţele
(conectate sau nu la faimosul Internet) folosesc familia de protocoale TCP/IP.
Fiecare host are asignată o adresă IP pe 32 de biţi. Această adresă identifică reţeaua la care
este ataşat acel host. Detalii despre adresa IP vom afla mai tirziu.
Numere de Port
Datagramele IP specifică doar host-ul destinaţie. Pentru a identifica aplicaţia căreia îi sunt
destinate aceste datagrame TCP şi UDP folosesc numere de port pe 16 biţi. Numerele de port sunt
mai flexibile decât id-urile de proces, un proces poate avea, în acelaşi timp, mai multe conexiuni
distincte cu alte procese utilizând mai multe porturi. De asemeni un port poate fi folosit pentru a
recepţiona mesaje de la mai multe surse.
Procesele client în mod normal nu trebuie să-şi facă griji în privinţa numărului pe care îl
vor folosi deoarece pot primi în mod automat un port unic la nivelul hostului pe care rulează.
Multiplexare/Demultiplexare
Internet Protocol (IP) este protocolul de bază pentru TCP şi UDP. Comunicaţiile IP sunt
nesigure, în mod neconectat, şi mesajele protocolului IP sunt datagrame.
Header-ul (antetul) unei datagrame IP, este prezentat în figura de mai jos:
- tipul serviciului – indică dacă această datagramă necesită sau nu o tratare specială.
- lungime totală – stabileşte lungimea datagramei, inclusiv a header-ul. Lungimea maximă
a unei datagrame IP este 65515 bytes. Dacă este necesar IP fragmentează în mod automat
mesajele ce trebuie transmise
- timpul de viaţă – limitează numărul de rutere prin care datagrama poate trece
- protocol – specifică tipul mesajului (e.g. UDP sau TCP), acest câmp este util în procesul
de demultiplexare a datagramelor IP
PROTOCOLUL U DP
User Datagram Protocol (UDP) – vezi si figura de mai jos – adaugă datagramelor IP
informaţii suplimentare astfel încât acestea să poată fi folosite de către procese; pentru
identificarea procesului destinaţie se folosesc numărele de port. Suma de control UDP se referă la
header-ul UDP, unele câmpuri ale header-ului IP, şi la date. Câmpul length se referă la numărul de
bytes al datagramei UDP inclusiv header-ul.
Datagramă UDP
UDP este doar o interfaţă care face datagramele IP folosibile de către procese diferite.
Deci UDP e la fel de nesigur ca şi IP, acest protocol negarantând că mesajele vor ajunge la
destinaţie. Mai multe despre specificaţiile UDP pot fi găsite în RFC 768.
PROTOCOLUL TCP
Transmission Control Protocol, sau TCP, oferă un flux de date sigur, orientat-
conexiune, şi full-duplex.. Foloseşte protocolul IP pentru transmiterea datelor.
TCP este protocolul, frecvent menţionat împreună cu IP, care este folosit pentru a
corecta problemele care pot apărea la transportul datelor. TCP preia informaţia pe care vrem să o
transmitem şi o sparge în bucăţi. El numerotează apoi fiecare piesă astfel încât cel care primeşte
datele să poată verifica şi să le pună înapoi în ordinea corectă. Pentru a transmite secvenţa de
numere prin reţea, el are un plic propriu cu informaţiile necesare. Acesta este, la rândul său, pus
în interiorul unui plic IP şi transmis reţelei. Odată pus într-un plic IP reţeaua poate să îl
transporte.
Înainte ca două aplicaţii să transfere date via TCP, între acestea trebuie stabilită o
conexiune. Deoarece mesajele de control TCP nu sunt vizibile aplicaţiilor, acestea folosesc
fluxurile de date TCP similar cu apelurile I/O din UNIX. Siguranţa fluxului de date TCP e
asigurată prin:
Header-ul TCP, prezentat în figura de mai sus, conţine cel puţin 20 de octeţi. Ca şi în
cazul datagramelor UDP, segmentele TCP conţin numerele de port ale proceselor sursă şi
destinaţie. Împreună cu adresele IP sursă şi destinaţie acestea identifică în mod unic fiecare
conexiune.
Mai multe informaţii despre specificaţiile TCP pot fi găsite în RFC 793.
IP UDP TCP
orientat-conexiune da nu da
numere de port nu da da
confirmări nu nu da
timeout şi retransmisii nu nu da
detecţia duplicatelor nu nu da
secvenţiere nu nu da
controlul fluxului nu nu da
M O D E L E D E C A L C U L D I S T R I BU I T
Modelul Client/Server
În cadrul modelului client/server două sau mai multe procese, eventual rulând pe maşini
diferite, cooperează în realizarea unui anumit task. Schema de comunicare este următoare: un
proces (numit client) trimite o cerere (cere un serviciu) către alte procese (numite servere). Serverele
vor transmite un anumit răspuns către client. Aceste interacţiuni sunt ilustrate în figura următoare.
Modelul Client/Server
Serverele concurente sunt folosite mai ales atunci când răspunsul nu poate fi transmis
înapoi imediat sau când trebuie realizate comunicaţii suplimentare cu clientul. De obicei serverele
concurente folosesc protocoale de comunicaţie orientate conexiune. Ele sunt implementate prin
intermediul proceselor (via apelul fork() in sistemele UNIX, in limbajul C standard) sau al firelor
de execuţie (thread-uri, in sisteme de operare sau limbaje care permit aceasta). Serverele iterative
sunt ideale în cazul în care cererile pot fi rezolvate rapid iar răspunsul este scurt. În mod normal
sunt construite cu ajutorul protocoalelor neorientate-conexiune.
Un scenariu de interacţiune Client/Server
Un client este o parte a aplicaţiei care este rulată de către utilizator. Serverele, în mod
normal, sunt demoni care sunt lansaţi în execuţie la boot-area sistemului, sau când soseşte o cerere
către acel serviciu. Odată lansaţi în execuţie demonii rămân în memorie până la reboot-area
sistemului. Cele mai multe servere petrec majoritatea timpului în aşteptarea cererilor pe care sunt
capabile să le rezolve. Este posibil ca procesele client şi server să ruleze pe acelaşi computer, dar
acest lucru nu este necesar dacă cele două procese folosesc facilităţile oferite de reţeaua de
comunicaţie.
PARTEA 8
A S P E C T E P R AC T I C E
L E G AT E D E I N T E R N E T
Destul de devreme, s-a realizat că adresele sunt bune pentru comunicarea dintre maşini,
dar şi că oamenii preferă nume. Este dificilă discuţia despre Internet folosind adrese numerice,
dar şi mai greu sunt de ţinut minte. De aceea calculatoarelor de pe Internet li s-au dat nume
pentru uşurinţa folosirii lor, de către utilizatorii umani.
La început, când Internetul era o organizaţie nu prea dezvoltată, utilizarea numelor era
uşoară. NIC-ul (Network Informaţion Center) ţinea un registru (un fisier denumit hosts) pe care îl
actualiza mereu. Se putea trimite un formular, electronic desigur, şi NIC îl adăuga la lista de nume
şi adrese pe care o întreţinea. Acest fişier numit fişierul de calculatoare gazdă, era distribuit regulat
către fiecare maşină gazdă de pe reţea. Numele erau cuvinte simple, fiecare alese pentru a fi unice.
Dacă cineva utiliza un nume, calculatorul îl căuta în fişier şi îl substituia cu adresa
corespunzătoare.
Din nefericire, când Internetul s-a răspândit şi a crescut, tot astfel s-a întâmplat şi cu acel
fişier. Exista o întârziere semnificativă în obţinerea unui nume deja înregistrat şi devenise dificil
de găsit nume care nu mai fuseseră încă folosite. De asemenea, se pierdea prea mult timp în reţea
pentru a distribui acest fişier mare către fiecare maşină care era cuprinsă în acesta. Era clar că era
nevoie de un sistem distribuit, conectat direct la un sistem central care să influenţeze în bine rata
de schimb a fişierelor. Acest sistem este numit Sistemul de Numire a Domeniilor sau DNS
(Domain Name System).
DNS este o metodă de administrare a numelor prin trecerea către grupuri diferite a
responsabilităţii pentru subseturile care formează acest nume. Fiecare nivel în acest sistem este
numit domeniu. Domeniile sunt separate prin puncte:
• ux.cso.uiuc.edu
• nic.ddn.mil
• yoyodyne.com
• fenrir.infoiasi.ro
Dacă citim un astfel de nume, fiecare domeniu pe care îl întâlnim este mai mare decât cel
precedent. Pentru primul nume (ux.cso.uiuc.edu), ux este numele calculatorului gazdă. Numele
pentru acel calculator este creat şi întreţinut de către grupul cso. Departamentul cso este o parte a
Universităţii Ilinois din Urbana Champaign (uiuc). Uiuc este o porţiune din grupul de instituţii de
educaţie (edu) – universitati, institute de cercetare. Deci domeniul edu conţine toate calculatoarele
din institutele educaţionale ale SUA, domeniul uiuc.edu conţine toate calculatoarele de la Univ.
Ilinois şi aşa mai departe.
Fiecare grup poate crea sau schimba tot ceea ce există în interiorul său. Dacă uiuc decide
să creeze un alt grup numit ncsa, el poate face asta fără să ceară permisiunea nimănui. Tot ce
trebuie să facă este să adauge noile nume în partea sa din baza de date mondială, iar mai devreme
sau mai târziu toţi cei care au nevoie să afle vor şti de noul nume (nsca.uiuc.edu). Similar, cso poate
cumpăra un nou calculator, să-i dea un nume şi să-l adauge în reţea fără să ceară permisiunea
nimănui. Dacă fiecare grup de la edu în jos va respecta regulile şi vor fi siguri că numele pe care le
dau sunt unice, atunci fiecare două sisteme de oriunde din Internet nu vor avea acelaşi nume.
Este uşor să ne dăm seama de unde vin numele şi domeniile dintr-o organizaţie ca
universitatea sau o companie. Domeniile de la cel mai înalt nivel (ca edu) au fost create atunci
când a fost inventat sistemul domeniilor. La început, cele mai înalte nivele au fost în număr de
şase:
Domeniul Utilizare
• Serverul local ştie adresa, pentru că adresa este în porţiunea din baza de date mondială a
acestui server
• Serverul local ştie adresa pentru că altcineva a întrebat recent de aceeaşi adresă
Software-ul serverului contactează un server rădăcină. Acesta este serverul care ştie
adresele serverelor pentru zona (ro) nivelului cel mai înalt (cel din dreapta). El cere serverului
rădăcină adresa calculatorului responsabil cu zona infoiasi.ro. Programul contactează apoi acel
calculator şi îi cere adresa serverului fenrir. În sfârşit, el contactează acea maşină şi primeşte adresa
lui fenrir, calculatorul gazdă care a fost scopul acestei aplicaţii.
În concluzie, avantajul real al DNS este că el împarte giganticul Internet într-un mănunchi
de piese mai uşor de stăpânit. Deşi sunt sute de mii de calculatoare ele au un nume; iar numele
sunt organizate într-o manieră convenabilă, făcând mai uşor pentru utilizator de ţinut minte cele
de care are nevoie.
S E RV I C I I D E BA Z Ă Î N I N T E R N E T
Conectarea la distanţă
Deşi există un număr mare de comenzi, având un număr şi mai mare de subcomenzi,
doar câteva sunt utilizate în general:
close
Termină o conexiune care exista deja sau a fost creată. Ea deconectează imediat
utilizatorul de la sistemul aflat la distanţă; pate ieşi şi din Telnet dacă am specificat numele
calculatorului direct în comanda telnet. Această comandă este folositoare dacă am intrat
intr-o legătură cu un alt calculator şi vrem să ieşim de acolo.
open nume
Încearcă sa creeze o conexiune cu maşina indicată. Este necesar numele sau adresa
maşinii. Majoritatea programelor Telnet vor cere explicit un nume de maşină dacă acesta
nu este specificat. Reţinem că trebuie să dăm comanda close pentru a închide o conexiune
existentă înainte de a deschide o alta nouă.
set echo
Activează sau dezactivează ecoul local. Ecoul este procesul prin care caracterele pe care
le-am tastat apar pe ecran. De obicei, calculatorul aflat la distanţă este responsabil cu
trimiterea caracterelor tastate înapoi către terminalul nostru după ce le-a recepţionat.
Acest lucru se numeşte ecou la distanţă şi este considerat mai sigur pentru că atunci poţi
şti dacă sistemul aflat la distanţă a recepţionat corect ceea ce am tastat. Ecoul local
înseamnă că afişarea, pe ecran, a ceea ce tastăm, este responsabilitatea calculatorului local.
Deoarece ecoul la distantă este mai sigur Telnet începe cu ecoul local dezactivat.
Comanda set echo funcţionează ca un întrerupător.
Cum ştim când trebuie activat sau dezactivat ecoul local? Dacă ecoul este dezactivat şi el
ar trebui să fie activ, caracterele tastate nu vor afişate; nu vom vedea comenzile pe care le
trimitem sistemului aflat la distanţă, dar vom vedea rezultatul acestor comenzi. Dacă
ecoul local este activ şi el ar trebui să fie dezactivat, vom vedea fiecare caracter pe care îl
tastăm de două ori. În ambele cazuri soluţia este aceiaşi: se intră în linia de comandă şi se
tastează set echo.
quit
termină programul Telnet
^z (CTRL+Z)
Suspendă temporar sesiunea Telnet pentru a permite altor comenzi să fie executate pe
sistemul local. Conexiunile şi alte opţiuni rămân neschimbate la revenirea în program.
Programul ftp se numeşte aşa după protocolul de aplicaţie pe care îl foloseşte: File
Transfer Protocol (FTP). Aşa cum spune şi numele, sarcina protocolului este să transfere fişiere
de la un calculator la altul. Nu contează unde sunt situate cele două calculatoare, cum sunt
conectate şi nici chiar dacă folosesc acelaşi sistem de operare.
binary
cd director_la_distanţă
close
Termină sesiunea ftp cu o anumită maşină şi se întoarce în modul comandă ftp. După
close, putem introduce open pentru a deschide o conexiune cu un nou sistem, sau quit
pentru a ieşi din ftp.
delete nume_fişier
dir fişier_destinaţie
Oferă un listing complet al directorului curent de pe maşina aflată la distanţă. Fişier şi
destinaţie sunt ambele opţionale. fişier poate fi numele unui singur fişier sau o construcţie
de metacaractere. Listingul oferă toate numele de fişiere care satisfac specificaţia. Dacă
fişier este omis, listingul dă toate fişierele din directorul curent de pe maşina aflată la
distanţă. Destinaţia specifică unde va fi pus rezultatul. Dacă destinaţie este omis, apare
listingul pe ecran.
hash
Spune ftp-ului să tipărească un caracter diez (#) de fiecare dată când este transferat un
bloc de date, semnalându-ne vizual dacă datele au fost transferate.
help comandă
lcd director
ls fişier_destinaţie
Oferă un listing scurt al directorului de pe maşina aflată la distanţă. Argumentele sunt la
fel ca la dir.
mget listă_fişiere
mput listă_fişiere
open nume_maşină
prompt
pwd
quit
user nume_utilizator
Trimite numele de utilizator către maşina aflată la distanţă pentru conectare. Este
folositoare dacă am introdus numele de utilizator sau parola incorect. Decât să închidem
conexiunea şi să deschidem alta nouă, putem încerca din nou introducând comanda user.
Sistemul de poştă electronică
Preliminarii
Este unul din cele mai larg răspândite servicii Internet. Pornind iniţial ca un serviciu
simplu capabil să mute mesaje text (şir de caractere) de pe un calculator pe altul şi să-l adauge la
un fişier numit căsuţa poştală, e-mail a cunoscut o dezvoltare concomitentă cu dezvoltarea
reţelelor de comunicaţie.
• Date - este data la care mesajul a fost transmis - este comletată automat de
programul client;
• Received - fiecare calculator care primeşte mesajul şi îl transmite mai departe adaugă
câte un astfel de câmp. În felul acesta se poate reconstitui drumul urmat de mesaj de la expeditor
la destinatar;
• Cc (carbon copy - copie la indigo) - utilizatorii ale căror adrese sunt trecute în
acest câmp vor primi câte o copie a mesajului;
• Bcc (blind carbon copy) - sunt copii trimise unei liste de cititori, la fel ca şi copiile
indigo obişnuite (Cc). Totuşi linia de antet care listează destinatarii este ştearsă automat din
mesajul trimis. De aceea , nici unul dintre destinatarii mesajului nu va şti cine a mai primit "copii
la indigo invizibile". Din moment ce nu există nici o înregistrare în mesajul recepţionat că aceste
copii au fost trimise, acţiunile ulterioare care folosesc date din antet, nu îi vor include şi pe aceşti
destinatari;
Singurul indiciu pe care îl are sistemul de e-mail pentru a livra un mesaj este adresa
destinatarului. Acesta este de forma nume_utiliator@domeniu. Numele utilizatorului este
numele contului pe care acel utilizator îl deţine sau, mai rar, poate fi un alias al utilizatorului,
definit pe maşina acestuia. Într-o reţea în care conturile utilizator sunt dispuse pe mai multe
maşini se pot specifica adrese de e-mail care să ascundă numele maşinii şi astfel din exterior să
apară adrese cu acelaşi domeniu pentru toţi utilizatorii.
• Forward - mesajul primit pate fi "trimis mai departe" unor alţi utilizatori (care nu
se aflau în lista destinatarilor mesajului original).
Mesajele sunt organizate în colecţii numite foldere. Mesajele noi apar colecţionate într-un
folder numit de cele mai multe ori inbox (căsuţă de intrare). Dacă sistemul local de e-mail
permite stocarea temporară a mesajelor care urmează să fie trimise, aceasta poartă numele de
outbox (căsuţă de ieşire). De asemenea, odată un mesaj compus şi trimis, o copie a acestuia
rămâne stocată într-un folder numit sent-mail.
Atunci când mesajul electronic nu poate fi distribuit, expeditorul primeşte o notificare în
acest sens, care explică şi cauzele insuccesului. Există trei motive obişnuite pentru care poşta
electronică eşuează:
• Programul poate găsi atât maşina cât şi destinatarul, dar nu poate transmite
mesajul. Iată câteva motive posibile:
• POP (Post Office Protocol) - este un protocol care lucrează pe principiul unei
căsuţe poştale: programul client se conectează din timp în timp la serverul POP. La o conexiune
sunt trimise mesajele din outbox-ul clientului şi sunt aduse mesaje noi de pe pop-server.
Autentificarea se realizează la nivel de utilizator, cu parolă. Numele POP-server-ului este de
asemenea furnizat de administratorul de sistem, la fel ca şi numele contului POP.
Stirile în reţea sunt echivalentul Internet al unui grp de discuţii. Acestea permit
utilizatorului să consulte articole publicate (posted) în Internet, fiind grupate după tematică. Ştirile
în reţea grupează discuţiile sub un set larg de titluri, numite grupuri de ştiri (newsgroups). Un
program de citire a news-urilr prezintă aceste discuţii într-o modalitate ordonată. În fiecare grup de
ştiri exista mai multe discuţii despre anumite subiecte, astfel că grupurile sunt organizate ierarhic,
având numele celui mai larg grup la început, urmat de un număr arbitrar de subgrupuri. Numele
fiecărui subgrup este separat de grupul părinte şi de subgrupurile sale printr-un punct ".".
7. misc - tot ce nu intră în categoriile de mai sus, sau intră în mai multe categorii.
Serverele pot avea şi grupuri de ştiri locale. Orice administrator poate crea oricâte grupuri
de ştiri doreşte, corespunzător intereselor utilizatorilor locali. Grupurile locale pot deveni cu
timpul grupuri globale cu acceptul larg al utilizatorilor. Astfel au apărut grupuri alternative (pe
lângă USENET). De exemplu:
• alt - grupuri care discută "moduri alternative de a vedea lucrurile". În unele din
aceste grupuri mesajele suferă de o incoerenţă evidentă;
• relcom - diferite grupuri originale din fosta URSS (unele pot necesita programe
speciale pentru a afişa alfabetul chirilic).
RESURSE BIBLIOGRAFICE
• Douglas E. Comer and David L. Stevens - Internetworking with TCP/IP Vol. III,
Client-Server Programming and Applications BSD Socket Version, Prentice Hall, 1996
name.sa_family = AF_UNIX;
strcpy(name.sa_data, "/tmp/sock");
Apelul I/O close() va închide descriptorul socketului s exact la fel cum închide
orice descriptor de fişier deschis.
Exemplu - sendto() şi recvfrom()
/* receiver */
#include <sys/types.h>
#include <sys/socket.h>
main()
{
int sock;
int fromlen, cnt;
myname.sa_family = AF_UNIX;
strcpy(myname.sa_data, "/tmp/tsck");
/* sender */
#include <sys/types.h>
#include <sys/socket.h>
char buf[80];
struct sockaddr to_name;
main()
{
int sock;
to_name.sa_family = AF_UNIX;
strcpy(to_name.sa_data, "/tmp/tsck");