Reţele de calculatoare

Română
Calculatoare: 
Tags: 

Retele, protocoale si servicii asigurate prin retelele de calculatoare

Ing. Nicolae Sfetcu

IPA pentru SOCKET - grafic

Introducere în reţelele de calculatoare

Română
Referinţe: 

Intro reţelele de calculatoare

Ce este o reţea de calculatoare?

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:

Ce<br />
este o reţea

Î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

Comutarea în pachete

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.

Comutare în pachete

Nevoia de resurse poate depăşi posibiltăţile (de ex., pachetele A şi B sosesc la R1, cu destinaţia C).

Reţele cu circuite comutate

Acestea folosesc exclusiv toate resursele (de ex., liniile de comunicaţii) solicitate de apel pe toată durata acestuia (de ex., reţeaua telefonică).

Reţea cu circuite comutate

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)

De ce resurse partajate statistic?

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)

Elementele unei reţele

  • linii de comunicaţii:

    • punct-la-punct (point-to-point), de ex., A-către-B)

    • cu difuzare (de ex.,: LAN Ethernet)

Elementele reţele
  • 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

Protocoale de reţea

Română
Referinţe: 

Network Communication Protocols Map

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.

Reguli de comunicare

Arhitectura pe nivele

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.

Arhitectura sistemelor complexe

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.

Arhitectura reţelei pe nivele

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:

Arhitectura reţelei pe nivele

Stratificare şi protocoale

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.

Stratificare şi protocoale

Internetul şi modelele de referinţă ISO/OSI

Internetul şi modelele de referinţă ISO/OSI

Nivelele unei arhitecturi de protocoale

Română
Nivelul Aplicaţie

Nivelul Aplicaţie
 
  • comunicare de la proces la proces

  • exemple: WWW, email, teleconferinţa, documentarea

Nivelul internet (socket - numai pentru Internet)
  • rol de bufer şi de livrare a datelor la sistemele terminale

Nivelul prezentare (numai pentru OSI)
  • conversia datelor într-un format comun

  • stiva Internet: conversia datelor la nivel de utilizator.

Nivelul sesiune (numai pentru OSI)
  • reface sesiunea (de ex., autentificarea), prin recuperare dintr-o sesiune eşuată (întreruptă)

  • este un nivel "subţire".

Nivelul transport
  • 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

Nivelul transport
Nivelul reţea
  • 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

Nivelul reţea
Nivelul legăturii de date
  • 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

Nivelul legăturii de date
Nivelul fizic:
  • transmite biţii elementari (0/1) prin linia de comunicaţii

Adresarea socketului

Română
Tags: 

Desemnarea de socket unei adrese de reţea: bind()

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ă.

Numere port
Comentariu
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

Adresarea socketului: structuri de adrese predefinite

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 */
}; 

Apelarea sistemului: bind()

  • 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 */ }

Exemplu: server fără conexiune

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 }
 

Exemplu: client fără conexiune

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 }

Exemplu: executarea comenzii trace

> 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 

Nivelul Aplicaţie

Română

Smart switch 6000

Aplicaţii de reţea

A BitTorrent clientProtocolul 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.

O lista parţială de aplicaţii:

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

Cerinţele Aplicaţiei

  • 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
email 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

Structura Aplicaţiei

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.

Structura Aplicaţiei
Modelul client/server:

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

Modelul "peer/peer"

Este simetric: fiecare proces are un egal.

Exemplu: teleconferinţa.

Amîndouă modele necesită transportul solicitărilor / răspunsurilor, şi partajarea datelor.

Exemplu de aplicaţie: email

Română
Calculatoare: 
Internet: 
EmailProbleme 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.

Poşta Internet: SMTP

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.

Serviciul de transport TCP

Comenzile SMTP ale expeditorului - destinatarului

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"

Comenzi selectate ale expeditorului
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
Răspunsuri selectate ale destinatarului
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ă

Exemplu de schimb de SMTP

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

<--------------------------------------------------------------------------

SMTP: Comentarii finale

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

Hypertext Transfer Protocol: http

Română

WWWWWW 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

HTTP Mesajul de solicitare

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  

Exemplu Mesaj solicitare http

Să presupunem ca dvs. accesaţi http://www.teleactivities.net/ebusiness/guides/webdesign/design.htm:  

Mostră de comandă GET command plus header:

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 */

http Mesaj de răspuns

Transmis de la server către client

Formatul general:

  • linie de stare (cod de stare, fraza textului)
  • header (informaţii suplimentare)
  • corp
Coduri html de răspuns selectate
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ă

Exemplu Mesaj de răspuns http

O mostră de răspuns http al serverului:

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>

Aplicaţii de Teleconferinţă: cerinţe

Scop: comunicare interactivă (în timp real) cu componente media multiple (audio, video, text).

Media continuu, precum audio, video

  • recepţionarea fără discontinuităţi şi netedă a transmisiei
    • Internetul nu oferă comunicaţii lipsite de fluctuaţii
      • fluctuaţia: modificare a întârzierilor din reţea
    • destinatarul buferează pachetele pe care le rulează periodic
    • rularea întârziată a primului pachet permite buferului de la destinatar să "absoarbă" fluctuaţiile reţelei
    • pachetele întârziate se pierd
  • se poate tolera "unele" pachete pierdute

Interfaţa de Programare a Aplicaţiei (IPA)

Română

IPA (Application Programming Interface, API) pentru SOCKET

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

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.

Sockeţi: aspectul conceptual

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.

Sockeţi - aspectul conceptual

Servicii fără conexiune

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.

Servicii fără conexiune

Crearea unui socket

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:

Familia de protocoale
Nume simbolic
TCP/IP Internet AF_INET
Xerox NS AF_NS
intra-host UNIX AF_UNIX
DEC DNA AF_DECNET

Tipul serviciului
Nume simbolic
Comentariu
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

Socket int (familia int, serviciul int, protocol int)

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.

Exemplu:
#include <sys/types.h>
#include<sys/ socket.h> 

 int sockfd; 

 if ( (sockfd = socket(AF_INET, SOCK_DGRAM, 0)) < 0)
    { /* handle error */ }

 

Adresarea Internetului

Română
AtaşamentMărime
03-04.gif3.3 KB
Internet: 
Calculatoare: 

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.

Structura sistemului de domenii pe Internet

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

DNS (Domain Name System): sistemul de nume de domenii pe Internet

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.

Servere de nume

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.

Adresarea Internetului

DNS: nume ne-locale

Găsirea numelor ne-locale

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.

Servicii de prezentare

Română

Motivaţia

Esenţa problemei:
  • 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

a
00000001
00000011
 

masina X

test.code
 

test.x

a
 
00000011
00000001

masina Y

 

Rezolvarea problemei de reprezentare

Română

Problema de reprezentare

  • expeditorul codează în formatul destinatarului
  • destinatarul decodează din formatul expeditorului
  • metodă independentă pentru maşină + SO + limbaj, de descriere a structurii de date
    • gazda traduce în/din limbajul de descriere universal din/în formatul propriu

Problema de reprezentare

Nivelul Transport

Română

Subretea

  • introducere
  • probleme fundamentale în reţele
  • comunicarea sigură prin un canal nesigur
  • controlul congestiei si al traficului
  • instalarea/dezinstalarea unei conexiuni
  • multiplexarea şi adresarea
  • fragmentarea şi reasamblarea
  • calitatea serviciului
  • probleme de implementare
  • studii de cazuri: TCP, UDP, ATM, XTP

Aspecte interesante

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.

Oferta de servicii

Livrarea datelor între două gazde-terminal

Aspecte ale serviciului de transport:
  • 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")

Modele comune pentru serviciul de transport:
  • 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.

Modele de servicii Internet, OSI, ATM

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:

  • ATM:
  • OSI:

Comunicaţii sigure printr-un canal nesigur

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"

Canal comunicatii

Interacţia cu nivelele superior şi inferior

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.

Transfer sigur de date: aspecte de mediu

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);

}

Cum se specifică un protocol?

Cum se descrie/specifică un protocol?
  • în engleză
  • limbaj de programare sau pseudocod
  • metode grafice: modelele Petri net şi maşini cu stare finită.
Maşina cu stare finită (finite state machine (FSM)) constă din:
  • 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

FSM pentru rdt1.0

FSM

Un al doilea set de presupuneri despre mediu

Română

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)

Protocolul rdt2.0

Protocolul rdt2.0
 

Întrucât rdt2.0 nu merge întotdeauna cu presupunerile considerate, a aparut un nou protocol.

Protocolul rdt2.1

Corectează unele probleme ale protocolului rdt2.0.

Protocolul rdt2.1: expeditor

Protocolul rdt2.1: expeditor

Protocolul rdt2.1: destinatar

Protocolul rdt2.1: destinatar

Nivelul reţea

Română

Nivel reţea: aspecte generale:

  • nivel transport: între două gazde
  • nivel legătură date: între două gazde conectate fizic, rutere
  • nivel reţea: implică fiecare ruter în part, gazdă, poartă din reţea

Nivel reţea

Serviciu nivel reţea: circuit virtual

Română

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ă.

Serviciu nivel reţea

La timpul de stabilire a conexiunii:

  • pachetul de setare a conexiunii trece de la expeditor la destinatar
  • tabelele de rutare sunt actualizate în nodurile intermediare pentru a reflecta noile VC
  • esenţial: starea la ruter per conexiune
  • se potrivesc bine cu garanţiile SC: rezervă resurse şi/sau acceptă/refuză apeluri bazate pe resurse la acest ruter

Analogie: reţeaua telefonică.

Nivelul Legătură Date

Română

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

Tipuri de legături

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!

Adresele nivelului legătură date 

Nivelul Fizic

Română

Mediu: Cablu torsadat bifilar

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)

Mediu: Cablu pentru banda de bază

Transmisie digitală bidirecţionaţă pe cablu coaxial (de ex., Ethernet)

  • digital: nu este nevoie de niciun modem

Un singur canal.

Viteza datelor de până la 1-2 Gbps la peste 1 km.

Mediu: Cablu de bandă largă

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).

Mediu: Fibre optice

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)

Mediu: Fără fir

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.

Arhitecturi de reţea pentru a ajunge la utilizatorul final

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

Securitatea reţelei

Română

Retea comunicatii

Intrusul poate

  • să tragă cu urechea
  • să înlăture, modifice şi/sau introducă mesaje
  • să citească mesaje.

Aspecte importante:

  • criptografia: asigură secretul informaţiilor care trebuiesc transmise
  • autentificare: dovedeşti cine eşti şi verifică identitatea interlocutorului.

Securitatea în reţelele de calculatoare

Resurse utilizator:

  • parola de intrare adesea transmisă necriptată în pachetele TCP între aplicaţii (de ex., telnet, ftp)

  • parolele oferă protecţie redusă

Protectie parola

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

Managementul reţelelor

Română

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:

  • identificarea şi corectarea problemeleor de disfuncţie la nivel hardware/software
  • monitorizarea şi optimizarea performanţelor

Managementul reţelei

Garanţii în Sistemul Calităţii

Română


Laboratorul de calculatoare

Motivaţie

Anumite aplicaţii necesită un nivel minim al performanţei reţelei:

  • telefonia Internet, teleconferinţa, întârzieri > 500ms în cazul interacţiei cu imperfecţiunile umane
  • sesiunea este garantată SC sau este blocată (este negată admisia în reţea)

Nepotriviri fundamentale între SC şi comutarea de pachete:

  • comutarea pachetelor: resurse partajate statistic în speranţa că cererile de vârf a sesiunii nu coincid
    • este necesară o certitudine de 100% luând în calcul cazul cel mai rău posibil
  • admisia/negarea sesiunii în cazul cel mai rău este echivalent cu comutarea de circuite!

Perspective în reţelele de calculatoare

Română

Windows 7

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.