
O reţea de calculatoare este un set de calculatoare şi-sau comutatoare conectate prin linii de comunicaţie. Acesta poate avea multe "topologii" posibile:

În funcţie de întindere, ele pot fi reţele locale (local area networks - LAN) sau reţele larg răspândite geografic (wide-area networks - WAN). Pot exista o mare diversitate de medii de transmitere a datelor: fibra optică, cablul coaxial, cablul torsadat, radio, prin satelit.
Reţeaua de calculatoare mai poate fi definită drept o infrastructură software/hardware:
justificarea originală: permite accesul partajat la resursele de calcul (de ex., calculatoare, fişiere, date)
este un mediu prin care comunica utilizatori dispersaţi geografic (de ex., email, teleconferinţe)
este un mediu prin care sunt implementate servicii-aplicaţii distribuite
Datele de intrare sunt divizate în fragmente denumite "pachete". Pachetele care traversează reţeaua pun în comun resursele reţelei (de ex., lărgimea de bandă a legăturii, buferele). In funcţie de cerinţe, se foloseşte şi partajarea statistică a resurselor.

Nevoia de resurse poate depăşi posibiltăţile (de ex., pachetele A şi B sosesc la R1, cu destinaţia C).
Acestea folosesc exclusiv toate resursele (de ex., liniile de comunicaţii) solicitate de apel pe toată durata acestuia (de ex., reţeaua telefonică).

Este posibil ca nevoia resurse să depăşească posibilităţile existente (A şi B vor să apeleze pe C). In acest caz, se ajunge la situaţia de blocare (semnal de ocupat)
Pentru că astfel se economiseasc bani! De exemplu: o legatură de 1 Mbit/sec; fiecare utilizator primeşte 100 Kbits/sec când transmite; fiecare utilizator poate transmite date numai în 10% din timpul total. În timp ce comutarea de circuite permite fiecarui apelant numai o capacitate de 100 Kbits/sec rezultând posibilitatea suportării a 10 apelanţi, pentru comutarea de pachete cu 35 posibile apeluri probabilitatea ca 10 sau mai mulţi apelanţi să fie activi simultan este < 0.0004! Rezultă că aceasta din urmă poate suporta mult mai mulţi apelanţi, cu o probabilitate mică de intrare în "conflict". Dacă însă utilizatorii obişnuiesc sa apeleze frecvent reţeaua, atunci este mai avantajoasă comutarea în pachete (Baran, 1965)
linii de comunicaţii:
punct-la-punct (point-to-point), de ex., A-către-B)
cu difuzare (de ex.,: LAN Ethernet)

gazda: calculator care rulează aplicaţii folosind reţeaua (de ex.: H1)
ruter: calculator (adesea cu programe la nivel de aplicaţii) care dirijează pachetele de la intrare către ieşire (de ex., C)
poartă: un ruter conectat direct la două sau mai multe reţele (de ex. A)
reţea: set de noduri (gazde/rutere/porţi) din cadrul unui unic domeniu administrativ
internet: colectie de reţele interconectate
Protocol: reguli prin care elemente de reţea active (aplicaţii, gazde, rutere) comunică între ele
Protocoalele definesc:
formatul/ordinea mesajelor schimbate
acţiunile întreprinse la recepţionarea mesajului.
Ele sunt asemănătoare regulilor prin care doi sau mai mulţi oameni comunică între ei.

Arhitectura sistemelor complexe se poate simplifica prin stratificarea acesteia. Nivelul N se bazează pe serviciile nivelului N-1 pentru a oferi un serviciu nivelului N+1.

Serviciul provenit de la un nivel inferior este independent de modul cum acest serviciu este implementat. Schimbările nivelului N nu afectează celelalte nivele.
Interfeţele definesc modul în care sunt solicitate serviciile.
Reţeaua constă din componente hardware/software cu o distribuţie spaţială. In figura de mai jos se prezintă o imagine a unei reţele cu distribuţie pe nivele:

Entităţile similare (de ex., procesele) din nivelul N îşi ofera servicii prin comunicare (trimiţând "pachete"), folosind serviciile de comunicare oferite de nivelul N-1.



comunicare de la proces la proces
exemple: WWW, email, teleconferinţa, documentarea
rol de bufer şi de livrare a datelor la sistemele terminale
conversia datelor într-un format comun
stiva Internet: conversia datelor la nivel de utilizator.
reface sesiunea (de ex., autentificarea), prin recuperare dintr-o sesiune eşuată (întreruptă)
este un nivel "subţire".
serviciul de transport: livrarea datelor de la un terminal la altul
poate multiplexa mai multe fluxuri provenind de la nivele superioare
egalează viteza între transmiţător şi receptor
pentru Internet: TCP şi UDP

la gazdele-terminale: iniţiază transmiterea pachetelor pe traseul acestora
la rutere: rutarea pachetelor de control
evită blocarea şi controlează eventualele congestii
pentru Internet: pachete IP, BGP, RIP

asigură o comunicare punct-la-punct fără erori în cazul unei singure legături
protocoale LAN de multiacces
egalează viteza între transmiţător şi receptor
Ethernet, HDLC, PPP

transmite biţii elementari (0/1) prin linia de comunicaţii
Fiecare socket trebuie să fie asociat cu un număr de port pe 16 bit pentru gazdă unică.
Trebuie să se asocieze socketul cu o adresă de reţea unică globală (adresă de gazdă şi port)
SO ştie că mesajele care vin adresate acestei adrese de gazdă şi port trebuiesc livrate (demultiplexate către) acest socket
o adresa de retur pentru toate mesajele care pleacă.
| 1 - 255 | rezervat pentru servicii standard |
| 21 | serviciu ftp |
| 23 | serviciu telnet |
| 25 | SMTP email |
| 80 | demon http |
| 1 - 1023 | accesibile numai utilizatorilor privilegiaţi |
| 1024 - 4999 | utilizabile de către sistem şi procesele utilizatorului |
| 5000 - | utilizabile numai de către procesele utilizatorului |
Specificarea adreselor socketului: anumite structuri de date predefinite pentru dvs.:
struct sockaddr_in { /* INET socket addr info */
short sin_family; /* set me to AF_INET */
u_short sin_port; /* 16 bit number, nbo */
struct in_addr sin_addr; /* 32 bit host address */
char sin_zero[8]; /* not used */
};
struct in_addr {
u_long s_addr; /* 32 bit host addr.,nbo */
}; int bind ( int sockfd, struct sockaddr *myaddr, int addresslen)
sockfd dacă variabila desemnată socket() răspunde cu o valoare
*myaddr: structura adresei sockaddr_in care păstrează informaţii despre adresa locală. Trebuie să ai alocat dreptul pentru a face apelul sockaddr.
addresslen este dimensiunea structurii de adresă.
retur eroare indică număr de port deja în uz, ieşirea din interval
#include <sys/types.h>
#include <sys/socket.h>
#include "inet.h"
int sockfd;
struct sockaddr_in myaddr;
if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{ /* handle error */ }
myaddr.sin_family = AF_INET;
myaddr.sin_port = htons(5100); /* > 5000 */
myaddr.sin_addr.s_addr = htonl(INADDR_ANY);
/* INADDR lets OS determine hostid */
if ( bind(sockfd, (struct sockaddr *)
&myaddr, sizeof(myaddr)) < 0)
{ /* handle error */ }
| 1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <sys/socket.h> 4 #include <netinet/in.h> 5 #include <arpa/inet.h> 6 #include <errno.h> 7 #define MY_PORT_ID 6090 /* a number > 5000 */ 8 9 main() 10 { 11 int sockid, nread, addrlen; 12 struct sockaddr_in my_addr, client_addr; 13 char msg[50]; 14 15 printf("Server: creating socket\n"); 16 if ( (sockid = socket (AF_INET, SOCK_DGRAM, 0)) < 0) 17 { printf("Server: socket error: %d\n",errno); exit(0); } 18 printf("Server: binding my local socket\n"); 19 bzero((char *) &my_addr, sizeof(my_addr)); 20 my_addr.sin_family = AF_INET; |
21 my_addr.sin_addr.s_addr = htons(INADDR_ANY); 22 my_addr.sin_port = htons(MY_PORT_ID); 23 if ( (bind(sockid, (struct sockaddr *) &my_addr, 24 sizeof(my_addr)) < 0) ) 25 { printf("Server: bind fail: %d\n",errno); exit(0); } 26 printf("Server: starting blocking message read\n"); 27 nread = recvfrom(sockid,msg,11,0, 28 (struct sockaddr *) &client_addr, &addrlen); 29 printf("Server: retrun code from read is %d\n",nread); 30 if (nread >0) printf("Server: message is: %.11s\n",msg); 31 close(sockid); 32 } |
| 1 #include <stdio.h> 2 #include <sys/types.h> 3 #include <sys/socket.h> 4 #include <netinet/in.h> 5 #include <arpa/inet.h> 6 #include <errno.h> 7 #define MY_PORT_ID 6089 8 #define SERVER_PORT_ID 6090 9 #define SERV_HOST_ADDR "128.119.40.186" 10 11 main() 12 { 13 int sockid, retcode; 14 struct sockaddr_in my_addr, server_addr; 15 char msg[12]; 16 17 printf("Client: creating socket\n"); 18 if ( (sockid = socket(AF_INET, SOCK_DGRAM, 0)) < 0) 19 { printf("Client: socket failed: %d\n",errno); exit(0);} 20 21 printf("Client: binding my local socket\n"); 22 bzero((char *) &my_addr, sizeof(my_addr)); |
23 my_addr.sin_family = AF_INET; 24 my_addr.sin_addr.s_addr = htonl(INADDR_ANY); 25 my_addr.sin_port = htons(MY_PORT_ID); 26 if ( ( bind(sockid, (struct sockaddr *) &my_addr, 27 sizeof(my_addr)) < 0) ) 28 { printf("Client: bind fail: %d\n",errno); exit(0); } 29 30 printf("Client: creating addr structure for server\n"); 31 bzero((char *) &server_addr, sizeof(server_addr)); 32 server_addr.sin_family = AF_INET; 33 server_addr.sin_addr.s_addr = inet_addr(SERV_HOST_ADDR); 34 server_addr.sin_port = htons(SERVER_PORT_ID); 35 36 printf("Client: initializing message and sending\n"); 37 sprintf(msg, "Hello world"); 38 retcode = sendto(sockid,msg,12,0,(struct sockaddr *) &server_addr, 39 sizeof(server_addr)); 40 if (retcode <= -1) 41 {printf("client: sendto failed: %d\n",errno); exit(0);} 42 43 /* close socket */ 44 close(sockid); 45 } |
|
> cc udpserver.c; mv a.out udpserver > cc udpclient.c; mv a.out udpclient > udpserver & [1] 20837 > Server: creating socket Server: binding my local socket Server: starting blocking message read > udpclient Client: creating socket Client: binding my local socket Client: creating addr structure for server Client: initializing message and sending Server: return code from read is 11 Server: message is: Hello world [1] Done udpserver

Protocolul BitTorrent
Aplicaţiile pentru cerinţele serviciilor se plasează în infrastructura reţelei.
Aplicaţiile distribuite ale protocoalelor se folosesc pentru a implementa aplicaţia.
|
poşta electronică |
fax |
| grupuri de ştiri |
procesarea tranzacţiilor |
| transfer de fişiere |
banca/depozit electronic |
| acces la distanţă: telnet |
votul electronic |
| teleservicii: audio/video/text |
baze de date distribuite |
| teleconferinţa |
WWW |
| teleştiinţa |
biblioteci digitale |
| studiu la distanţă |
controlul traficului aerian |
| telelucru |
monitorizarea traficului |
| CSCW |
telemetrie |
| video la cerere |
retransmisie la distanţă |
| cumpărături de la domiciliu |
telemedicina |
| servicii de chat |
alte aplicaţii |
lărgimea de bandă: câţi biţi/sec sunt necesari? Traficul este uniform, sau neregulat?
procesarea protocolului: cîţi MIPS (milioane de instrucţiuni per secundă) sunt necesari pentru software necesar aplicaţiei şi protocoalele corespunzătoare?
timpul de menţinere: cât timp rulează aplicaţia?
siguranţa nivelului de date: este necesară livrarea în siguranţă (în ordine, fără pierderi)?
performanţa: sunt necesare constrângeri asupra întârzierilor maxime de la aplicaţie la aplicaţie, crearea de cozi pentru distribuţia întârzierilor?
calitatea serviciilor: sunt necesare garanţii privind calitatea serviciilor?
structura comunicaţiilor: 1-1, 1-supraunitar, supraunitar - supraunitar?
securitatea: sunt necesare autentificarea şi încriptarea?
| aplicaţia | lărgimea de bandă | siguranţa | calitatea serviciilor | menţinere | securitate |
| pachet audio | 10K - 1M | n | d/n | min/h | d/n |
| pachet video | 10K - 10M | n | d/n | min/h | d/n |
| video-la-cerere | 1M - 10M | n/d | d | min/h | n |
| 10K | d | n | min | d/n | |
| tranzacţii | 1K | d | d/n | sec | d/n |
| raze X | > 10M | d/n | d/n | min | d/n |
| fax | 10K | d | n | min | d/n |
Aplicaţii de reţea distribuite în natură. Set de procese la nivel aplicaţie Comunicaţii (de obicei) pe diferite gazde, care oferă / implementează serviciul.

Acest model este asimetric: serverul oferă servicii via o interfaţă bine definită, clientul primeşte serviciul. Problema clientului este localizarea / recepţia serviciului. Problema serverului este cum / dacă să ofere un anumit serviciu.
Exemplu: client (browser) WWW, server
Este simetric: fiecare proces are un egal.
Exemplu: teleconferinţa.
Amîndouă modele necesită transportul solicitărilor / răspunsurilor, şi partajarea datelor.
Probleme generice:adresarea: identităţile receptorului / transmiţătorului, informaţii despre formatul adresei
confidenţialitatea/securitatea
notificarea recepţiei, citirea, dispunerea
o diversitate de tipuri de media: text, audio, video, documente tipărite
Trebuie rezolvată problema standardelor email care nu sunt interoperaţionale: porţile de mail trebuie sa poată face conversii între diferite tipuri de formate.
SMTP este protocolul de transfer poştal simplu. RFC 821 şi 822 definesc activităţile de protocol şi structura mesajului pentru SMTP. RFC ("request for comments" - solicitare de comentarii) sunt proiecte, standarde şi documente informative pentru Internet.
Transmiterea mesajelor:
practic este vorba de un transfer de fişiere mediat de SMTP: entitatea protocol SMTP al expeditorului transmite către entitatea protocol SMTP al destinatarului.
expeditorul află adresa de gazdă a destinatarului
expeditorul contactează destinatarul la "portul" bine cunoscut cu numărul (25) pentru acea gazdă
se foloseşte serviciul de transport TCP.

Expeditorul şi destinatarul SMTP schimbă interacţiuni tipice peer-peer:
comenzi de control, răspunsuri, date
trei trepte de bază: "greeting", schimbul de date, "goodbye"
| comanda | argumentul | semnificaţia |
| HELO | domeniul expeditorului | "sunt com.pub.ro" |
| MAIL FROM: | userid | identifică expeditorul mesajului |
| RCPT TO: | userid | indentifică recipientul |
| DATA | urmează textul mesajului | |
| <crlf>.<crlf> | sfârşitul textului mesajului | |
| RESET | eşuarea protocolului, renunţarea | |
| VERIFY | userid | este valid userid - ul? |
| QUIT | semnarea de părăsire a transmisiunii a expeditorului |
| numărul răspunsului | semnificaţia |
| 500 | eorare de sintaxă, ultima comandă nerecunoscută |
| 220 | serviciu gata (gata pentru a primi mesaj) |
| 221 | OK. Închid şi eu conexiunea |
| 250 | OK. Comandă executată |
| 354 | începe sa îmi trimiţi textul mesajului |
| 552 | renunţ la mesaj, depăşeşte spaţiul alocat |
| 550 | acţiune neîndeplinită, căsuţa poştală indisponibilă |
| expeditor proces SMTP | destinatar proces SMTP |
|
220 |
|
|
<----------------------------------------------------------------------- |
|
| HELO com.pub.ro | |
|
<------------------------------------------------------------------------ |
|
|
250 |
|
| Mail From: sfetcu@com.pub.ro | |
|
--------------------------------------------------------------------------> |
|
|
250 |
|
|
<------------------------------------------------------------------------- |
|
| RCPT TO: office@remat.ro |
|
|
--------------------------------------------------------------------------> |
|
|
250 |
|
|
<------------------------------------------------------------------------ |
|
| RCPT TO: nic@remat.ro | |
|
--------------------------------------------------------------------------> |
|
|
550 no such user |
|
|
<------------------------------------------------------------------------ |
|
| DATA | |
|
--------------------------------------------------------------------------> |
|
|
354 start mail input |
|
|
<------------------------------------------------------------------------- |
|
| Marian Ionescu | |
|
--------------------------------------------------------------------------> |
|
| Thank you for your email | |
|
--------------------------------------------------------------------------> |
|
| bla bla bla | |
|
--------------------------------------------------------------------------> |
|
| <crlf>,<crlf> | |
|
-------------------------------------------------------------------------> |
|
|
250 |
|
|
<-------------------------------------------------------------------------- |
|
| quit | |
|
--------------------------------------------------------------------------> |
|
|
221 |
|
|
<-------------------------------------------------------------------------- |
|
Extensii ale SMTP:
MIME (multipurpose Internet mail extensions): componente multiple ale corpului mesajului, poşta multimedia, fonturi multiple şi seturi de catactere, RFC 1324
PEM (privacy-enhanced mail): RFC 1422-1424
Post Office Protocol (POP3)
SMTP presupune că există un server SMTP la destinatar
SMTP poate de asemenea să facă livrări la un Oficiu Poştal (server)
clientul poate prelua mesajul de la distanţă folosind Post Office Protocol (POP3) pentru a interacţiona cu serverul. Sunt trei faze în acest caz:
salutul
tranzacţiile (listare, preluarea mesajului)
închiderea transmisiei
WWW este implementat folosind paradigma client/server:
clientul (browserele) solicită şi afişează documentul html primit
serverele primesc cererea, răspunzând cu documentul html solicitat
Protocolul http defineşte formatul pachetelor schimbate între client şi server, acţiuni derulate cu confirmare
http este un protocol orientat pe tranzacţii:
clientul contactează serverul pe portul 80, folosind TCP
solicitare de la client către server
răspuns de la server către client
conexiunea TCP se închide
Solicitarea / răspunsul au headerele şi corpurile similare cu SMTP şi MIME
RFC 2068 defineşte http
Se transmite de la client către server.
Formatul general:
linia solicitării (metoda, identificator, versiune)
header (informaţii suplimentare)
corp
Solicitări http
| partea mesajului | numele câmpului | descriere |
| header | method | acţiunea care va fi derulată (GET, PUT, DELETE) |
| version | ce versiune http | |
| identifier | URL (adresa) obiectului | |
| header | From | adresa mea de email |
| Accept-Language | limba pe care o voi accepta | |
| If-Modified-Since | returnează documentul daca este mai nou | |
| Content-Type | tipul conţinutului | |
| …. | ||
| body | message body |
Să presupunem ca dvs. accesaţi http://www.teleactivities.net/ebusiness/guides/webdesign/design.htm:
GET /webdesign/design.htm HTTP/1.0
User-Agent: Mozilla/2.01 (X11; I; IRIX 5.2 IP7)
Accept: image/gif, image/x-bitmap, image/jpeg
/* a blank line */
Transmis de la server către client
Formatul general:
| cod | semnificaţie |
| 200 | OK |
| 400 | solicitare greşită |
| 402 | plata solicitată |
| 404 | nu a fost găsit |
| 503 | serviciu indisponibil |
| 505 | versiune HTTP nesuportată |
HTTP/1.0
200 Document follows
MIME-Version: 1.0
Server: Hzpermart
Date: Wednesday 10-Apr-01 03:59:47 GMT
Content-type: text/html
Content-length: 2168
Last-Modified: Friday 06-Oct-00 07:16:52 GMT
/* a blank line */
<html>
<head>
: /* HTML text of the Web page */
</html>
Scop: comunicare interactivă (în timp real) cu componente media multiple (audio, video, text).
Media continuu, precum audio, video
Introdusă in 1981, BSD 4.1 UNIX
O interfaţă locală, creată/aparţinand de aplicaţie, controlată de SO în care procesul aplicaţiei poate atât transmite cât şi recepţiona mesaje către/de la alt proces al aplicaţiei (la distanţă sau local)

Doi sockeţi pe gazde separate "conectaţi" prin rutine de management al lăcaşului pentru SO. Aplicaţia vede numai socketul local.
Sockeţii sunt creaţi explicit, utilizaţi şi puţi în funcţiune de către aplicaţii. Ei se bazează pe paradigma client/server. Există doua tipuri de servicii de transport via IPA pentru socket:
datagrame nesigure
sigure, orientate pe flux
Nivelele de prezentare şi sesiune lipsesc în reţelele UNIX.
Fiecare socket are bufere de transmisie şi recepţie separate, posibilitatea de identificare a portului, parametri (aplicaţie interogativă şi setabilă).
Operaţiile socketului implementat ca sistem apelează la SO. Limitele utilizator/kernel se încucişează pe sus.

Serviciu datagramă: protocoalele de transport de bază nu garantează livrarea.
Nu exista o identificare explicită a serverului sau clientului.
Dacă se iniţiază contactul cu cealaltă parte, trebuie cunoscute.
adresa IP
numărul portului sau procesul care aşteaptă să fie contactat
Dacă se aşteaptă contactul de la cealaltă parte, trebuie declarat:
numărul portului la care se aşteaptă de cealaltă parte.

Acelaşi terminal (socket) folosit pentru a transmite/recepţiona date.
Nu exista o asociere a priori a socketului cu reţeaua.
Trebuie să se specifice familia de protocoale de transport, şi serviciul specific la nivel de transport care se va folosi cu socketul:
| TCP/IP Internet | AF_INET |
| Xerox NS | AF_NS |
| intra-host UNIX | AF_UNIX |
| DEC DNA | AF_DECNET |
| datagrama | SOCK_DGRAM | protocol UDP in AF_INET |
| sigură, în ordine | SOCK_STREAM | protocol TCP in AF_INET |
| socket brut | SOCK_RAW | acces direct la nivelul reţea |
Familia este numele simbolic al familiei de protocoale.
Serviciul este numele simbolic al tipului de serviciu.
Protocolul permite o specificare mai bună a socketului brut. Pentru noi, acesta va fi 0.
Codul de răspuns de la socket() este este un descriptor de socket, folosit în toate apelurile de sistem legate de socket.
#include <sys/types.h>
#include<sys/ socket.h>
int sockfd;
if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
{ /* handle error */ }
| Ataşament | Mărime |
|---|---|
| 3.3 KB |
Fiecare gazdă Internet are una sau mai multe adrese IP pe 32 bit unite la nivel global.
Gazda poate avea două sau mai multe adrese:
adresa este asociată cu fiecare placă de interfaţă.
Notaţia decimală cu punct:
numere întregi de 4 cifre, fiecare definind un bit din adresa IP:
| Nume gazdă | com.pub.ro |
| adresa pe 32 bit | 10000000 01110111 00101000 10111010 |
| zecimal cu punct | 128.119.40.186 |
Procedura pentru bibliotecă inet_addr() converteşte şirul de adrese zecimale cu punct într-o adresă pe 32 bit
Procedura pentru bibliotecă gethostbyname() converteşte numele din format text în format zecimal cu punct.
Administrare ierarhică a numelor. De ex., com.pub.ro
Cel mai din stânga nume este de obicei un nume de gazdă (are o adresă IP).
Următorul nume este al organizaţiei care administrează această gazdă, uneori identificându-se şi cu administratorul tuturor subdomeniilor din stânga - com, tel, tcm (de ex., Universitatea Politehnica Bucureşti).
Cel mai din dreapta nume desemnează o organizaţie, structură, ţară, etc.
|
Domeniu |
Utilizare |
Exemplu |
| com | afaceri | teleactivities.com |
| edu | educaţional | cs.umass.edu |
| org | organizaţie non-profit | teleactivities.org |
| net | resurse în reţea | teleactivities.net |
| ro | România | com.pub.ro |
Reprezintă o bază de date distribuită folosită de către aplicaţii TCP/IP pentru a realiza mapări către/de la nume de gazde de la/către adrese IP.
Rutinele de bibliotecă la nivel de utilizator gethostbyname() şi gethostbyaddress() contactează serverul local de nume via port 53
Serverul de nume returnează adresa IP a numelui de gazdă solicitat.

Nici măcar un server de nume nu are informaţii complete
Dacă serverul de nume local nu poate afla adresa, contactează rădăcina serverului de nume:
exista 9 servere de nume de rădăcină în toată lumea
fiecare are adresele serverelor de nume pentru toate serverele de nivel doi (de ex., pub.ro, teleactivities.com)
serverele de rădăcină contactate returnează adresa serverul de nume care trebuie contactat
serverul de nume de nivel doi contactat poate, la rândul lui, să indice adresarea către un alt server de nume
Rezoluţia numelui este un proces iterativ prin care se urmăresc serverele de nume indicate.
Protocolul DNS specifică formatele de pachete care se schimbă cu serverele DNS.
avem de-a face cu semnificaţia informaţiei, nu cu reprezentarea
diferite calculatoare, SO, compilere au convenţii diferite pentru datele de reprezentare
arhitectura: numere mari la sfârşit, faţă de numere mici la sfârşit
format de punct flotant
dimensiunea tipului de date: 16, 32, 64 bit
dimensiuni şi layout diferite ale structurilor de date
| struct{ char code; int x; } test; test. x = 259; test.code = 'a'; |
test.code test.x |
masina X |
test.code test.x |
masina Y |



Multe probleme fundamentale importante de reţea apar aici:
cum să comunici în siguranţă printr-un canal nesigur
de ce/cum/când trebuie restrânsă o transmisie: controlul traficului şi al congestiei
care sunt regulile de comunicare (şi oprire) în cazul unor mesaje pierdute, întârziate sau reordonate
cum să lucrezi cu cantităţi mari de date: fragmentarea şi reasamblarea
cum să garantezi performanţa în cazul unor resurse partajate statistic.
Livrarea datelor între două gazde-terminal
detecţia erorii şi recuperarea: erori (date pierdute sau corupte) detectate la destinatar. Corectarea erorilor detectate
timing: timpul între date de la expeditor prezervat în cazul livrării la destinatar
fragmentarea: prezervarea limitelor unităţii de date (de ex., "mesajul")
fără conexiune: datagrame, fără garanţii, detecţia opţională a erorilor, nu sunt recuperate datele eronate, fără timing
orientate pe conexiune: recuperarea datelor eronate, fără timing
asemănător circuitelor: prezervarea timingului, nu sunt recuperate datele eronate, detecţia opţională a erorilor.
| arhitectura reţea | serviciu | protocoale |
| Internet | orientat pe conexiune | TCP |
| fără conexiune | UDP | |
| OSI | orientat pe conexiune | TP0, TP1, TP2, TP3, TP4 |
| fără conexiune | CLTP | |
| ATM | asemănător circuitelor | AAL1 |
| orientat pe conexiune | AAL3/4, AAL5, asigurat | |
| fără conexiune | AAL3/4, AAL4, neasigurat |
Nota: protocoale multiple pentru acelaşi serviciu:
Scop: proiectarea unui protocol al transferului de date astfel încât:
să existe livrări sigure de date între aplicaţiile/protocoalele nivelului superior
să se utilizeze un nivel de reţea care este "nesigur"

Nivelul superior al expeditorului: nivelul de transport invocat mai sus prin apelarea la rdt_send(data)
rdt: transfer sigur de date
data: de livrat la nivelul superior al destinatarului
Nivelul superior al destinatarului: nivelul de transport livrează date către nivelul superior prin apelarea deliver_data(data)
Nivelul inferior al expeditorului: apelarea la udt_send(packet) va trece pachetul în nivelul inferior
udt: transfer nesigur de date
Nivelul inferior al destinatarului: livrează pachetul către nivelul de transport prin apelarea la rdt_rcv(packet)
Note:
data este unitatea de date care traversează limitele
packet este unitatea de date care traversează limita inferioară
packet = data în cazul câtorva câmpuri suplimentare.
Presupuneri privind serviciul pentru nivelul reţea:
mediul de bază (reţea) care conectează expeditorul şi destinatarul poate avea multe legături, rutere, reţele!
Un prim set de presupuneri despre mediu:
nu există pierderi, coruperi, sau reordonări
O primă încercare pentru un protocol (rdt1.0)
rdt_send(data)
{
make_packet(packet,data);
udt_send(packet);
}
rdt_rcv(packet)
{
extract(packet,data);
deliver_data(data);
}
set de stări pentru fiecare entitate de protocol
fiecare entitate are propriul său set de stări
starea "înregistrează" întreaga istorie trecută relevantă a entităţii
răspunsul entităţii la fiecare "eveniment" din stare trebuie să fie unic definit
set de arce etichetate directate între stări
reprezintă schimbările în stări
etichetarea arcului:
evenimentul sau acţiunea care determină tranziţia
____________________________________
acţiunea luată la tranziţie

Pachetele trimise în reţea pot fi corupte dar nu pierdute
orice parte a pachetului poate fi coruptă
corrupt(P), notcorrupt(P) returnează T dacă pachetul este (nu este) corupt
În acest caz rdt1.0 nu mai este bun pentru noile presupuneri despre mediu, fiind necesar un nou mecanism de protocol (rdt2.0)
Întrucât rdt2.0 nu merge întotdeauna cu presupunerile considerate, a aparut un nou protocol.
Corectează unele probleme ale protocolului rdt2.0.


Nivel reţea: aspecte generale:

Virtual, pare un circuit, dar nu este.
În general asociat cu serviciu orientat pe conexiune.e
Toate pachetele din conexiune urmăresc aceeaşi rută.

La timpul de stabilire a conexiunii:
Analogie: reţeaua telefonică.
Servicii: livrare sigură a unui pachet de legătură date între două maşini conectate fizic
Două tipuri de legături: punct-la-punct, difuzare

Legături punct-la-punct: un expeditor, un destinatar
cadru: recunoaşterea biţilor pe fir ca pachete
comunicaţii sigure
Legături de difuzare: mai mulţi expeditori, mai mulţi destinatari potenţiali
încadrare
comunicaţii sigure
accesarea unui mediu partajat
adresare
Multe probleme de la nivele superioare apar şi aici.
comunicaţii sigure: ARQ, verificarea sumei, timere, numere secvenţiale
adresare
adresele nivelului legătură date sunt diferite de cele ale nivelului reţea!
Două fire de cupru izolate, răsucite elicoidal
Linie telefonică "standard"
cablu torsadat bifilar din categoria 3: poate transmite date la mai mulţi megabiţi/sec la o lungime de câţiva kilometri
cablu torsadat bifilar din categoria 5: Ethernet de mare viteză (100Mbit/sec) şi ATM (155Mbit/sec)
Transmisie digitală bidirecţionaţă pe cablu coaxial (de ex., Ethernet)
Un singur canal.
Viteza datelor de până la 1-2 Gbps la peste 1 km.
Foloseşte tehnologia TV standard pentru cablu
transmisie analogică
modemul este necesar pentru conversia digital -> transmisie analogică-> digital
în mod tradiţional: transfer unidirecţional (cablu TV), transfer bi-direcţional posibil
Multiple "canale" posibile pe acelaşi cablu fizic
fiecare canal foloseşte benzi de frecvenţe diferite: multiplexarea prin diviziune în frecvenţă
fiecare canal: mai mulţi megabiţi/sec
Repetoare la fiecare 5 km (din cupru).
Transmisie digitală folosind pulsuri de lumină.
Lărgimea de bandă: 100 Gbps pe distanţe scurte
Unidirecţional
Repetoare la fiecare 30 km.
Comunicare versus procesare
procesare: 1 instrucţiune/100 nsec în 1970 până la 1 instrucţiune/nsec în anii 1990 (două ordine de mărime)
comunicare linii de 56 Kbps în anii 1970, zeci de Gbps în anii 1990 (şase ordine de mărime)
Foloseşte spectrul electromagnetic pentru transmisie.
Capacităţile canalului depind puternic de frecvenţă şi de tehnologia transmisiei.
Caracteristicile legăturii:
mai zgomotoasă (mai multe erori de bit) decât fibra şi cablul
LAN-uri fără fir de 2-10Mbps folosind spectru împrăştiat, banda îngustă, infraroşu
transmisiua pe distanţe lungi:
128kbps în intervalul 50khz
2-3Mbps în intervalul 900Mhz.
Focalizarea noastră implicită: mediu corporativ/birouri
utilizatorul final pe LAN-uri
LAN-uri conectate în campus/companie
campus/companie conectate la ISP
Datele la utilizatorul rezidenţial
acces Internet multimedia
video la cerere
curs de reţele de calculatoare la cerere
Aveţi nevoie de un webmaster? Click AICI. Tel. 0745-526896

Intrusul poate
Aspecte importante:
Resurse utilizator:
parola de intrare adesea transmisă necriptată în pachetele TCP între aplicaţii (de ex., telnet, ftp)
parolele oferă protecţie redusă

Resurse reţea:
adesea este complet neprotejată de ascultarea, introducerea sau falsificarea mesajelor de către intruşi
spoofingul poştei electronice, actualizările ruterului, mesajele ICMP, mesajele de management al reţelei: modalităţi mai eficiente de protecţie.
Atenţionări:
intrusul care ataşează maşina sa (obţinând codul SO, privilegii de administrator) în reţea, poate să suprascrie multe măsuri de securitate oferite de sitem
utilizatorul trebuie să aibă un rol mult mai activ
Reţeaua constă din multe resurse heterogene, realizate de mai mulţi fabricanţi: rutere, punţi, gazde, servere terminale, modemuri, legături, interfeţe.
Scopul manegementului reţelei:

Anumite aplicaţii necesită un nivel minim al performanţei reţelei:
Nepotriviri fundamentale între SC şi comutarea de pachete:
Tendinţe generale:
ubiguitatea comunicaţiilor
aplicaţii disponibile pentru reţea (de ex., termostat IP)
probleme importante cu dimensiunea globală: sute de milioane de dispozitive conectate în reţea
mobilitatea este importantă: oamenii se mişcă şi au nevoie să comunice
multimedia este importantă: modalitate de comunicare a oamenilor
viteze ale legăturilor în creştere, dar lărgimea de bandă este limitată în viitorul apropiat
creşte numărul "utilizatotrilor"
necesităţi crescute ale lărgimii de bandă pentru aplicaţiile disponibile
securitatea, un aspect critic
necesitatea unei lărgimi mari de bandă pentru acasă (ADSL, modemuri cablu), o problemă majoră pentru viitor
jocuri, VR, educaţie, informare, distracţie
unirea reţelisticii cu telefonia
distracţie în reţea cu difuzie (TV) şi WWW
agenţi, alte tehnologii pentru afaceri necesitând mari cantităţi de date distribuite şi într-o continuă schimbare
Reţelistica va juca un rol central în toate sistemele viitoare de calcul.