Generalitaþi
Modelul standard pentru aplicaþii in reþea este client-server.
Serverul este un proces aºteptand sa fie conectat de un proces
client pentru a oferi diverse servicii (acces la resurse). Resursele pot fi
fiºiere, structuri de date, informaþii diverse sau resurse fizice
ca imprimante, fax-uri, scannere, etc. Serverii ºi clienþii sunt
procese care se pot executa oriunde in reþea. O secvenþa
tipica poate fi urmatoarea : g7z19zt
• se starteaza procesul fie la pornirea sistemului, fie dintr-un
fiºier script. Se face iniþializarea, dupa care serverul trece
in starea de asleep, aºteptand o cerere de serviciu de la un
client.
• se starteaza un proces client, cel mai adesea prin introducerea
unei comenzi interactive de catre un user. Iata cateva tipuri
de servicii pe care le poate asigura un server :
• aflarea zilei
• printarea unui fiºier
• scrierea/citirea unui fiºier de pe sistemul serverului
• logarea la sistem a unui user
• executarea unei comenzi pe sistemul serverului
• la terminarea serviciului de catre procesul server, acesta trece
din nou in starea asleep
Putem divide procesele server in :
• serveri iterativi, daca cererea facuta de client
poate fi rezolvata de server intr- un interval dat de timp (relativ
scurt). Cererea este rezolvata chiar de serverul insuºi. Un
exemplu tipic este aflarea zilei, orei.
• serveri concurenþi, daca cererea facuta de
client nu poate fi rezolvata de server intr-un timp dat (nu poate
ºti cat va dura). In acest caz, serverul invoca alt
proces pentru rezolvarea cererii, dupa care trece in asleep. Un
exemplu este o cerere de transfer de fiºier
Se observa ca un server petrece cel mai mult timp in starea
asleep, aºteptand cereri de la clienþi. Rolurile serverilor
ºi clienþilor este asimetric, cu toate ca pana
acum am considerat procesele ce comunicau, de pe nivelele sesiune sau transport
ca fiind simetrice. Serverul este startat primul, dupa care se deschide
un canal de comunicaþie pe sistemul pe care se afla ºi se
informeaza hostul local ca se pot primi cereri de la clienþi
la o adresa data. Serverul va aºtepta cererile la adresa
respectiva. Un server iterativ proceseaza cererea ºi trimite
raspunsul. Serverii iterativi sunt in mod normal folosiþi
daca cererea unui client poate fi rezolvata toata. Serverii
concurenþi vor lansa (fork+exec) un nou proces pentru rezolvarea cererii
clientului. Noul proces se va ocupa numai de cererea pentru un anumit client,
desfaºurata pe un canal ce va fi inchis la terminare.
Din cele prezentate, reiese ca un server va introduce intr-o coada
cererile de la clienþi, in timp ce el rezolva o parte din
ele. De asemenea, un proces server va fi activ atat timp cat funcþioneaza
calculatorul host.
Un client este un proces care doreºte utilizarea unei resurse, avand
ºi el o secvenþa de acþiuni de desfaºurat.
Astfel, el va deschide un canal de comunicaþie ºi se va conecta la
un anumit host, la o adresa data (a serverului). Apoi, va trimite
mesajul-cerere catre server ºi va aºtepta primirea raspunsului.
La terminarea acþiunii, clientul va inchide canalul de comunicaþie.
Deschiderea unui canal de comunicaþie de catre server este cotata
ca o acþiune pasiva, in timp ce un client deschide un canal
in mod activ.
Termenii de server ºi client pot fi ºi o maºina (staþiile
fara disc din reþea, clienþii, acceseaza serverul,
un file-server). Un computer la care este legata o imprimanta se considera
a fi un server de imprimanta. Uneori, serverii se mai numesc ºi
daemoni, adica serveri incarcaþi la startarea sistemului.
Daemonii sunt folosiþi pentru furnizarea de servicii sistem (timp, useri
la un moment dat).
IPX/SPX
IPX/SPX (Internet Packet Exchange/Sequenced Packet Exchange) sunt protocoalele
native ale lui Novell. Ele sunt adaptari ale arhitecturii XNS (Xerox
Network Systems), de la sfarºitul anilor 1970. IPX corespunde IDP
(Internetwork Datagram Protocol) iar SPX cu SPP (Sequenced Packet Protocol)
al lui Xerox. Fiecare protocol suporta transmisia prin pachete. IPX opereaza
la nivel reþea, asigurand o legatura fara
conexiune ( nesigura, deoarece transmisiile nu sunt cu raspuns),
fig1.
fig 1 - protocoale NetWare
SAP : Service Advertising Protocol
ODI : Open Data-Link Interface
NCP : Netware Core Protocol
RIP : Routing Information Protocol
IPX ofera capabilitaþi de adresare ºi rutare serverilor
NetWare ºi interfeþelor client. SPX opereaza la nivel transport
ºi asigura un serviciu de transfer pachete prin legaturi
orientate pe conexiune (sigura, deoarece primeºte raspuns
de transmisie ºi menþine integritatea pe toata perioada transferului).Se
gestioneaza fluxul de date ºi precedenþa pachetelor.
IPX/SPX nu sunt singurele protocoale suportate de sistemul de operare de reþea
NetWare, fig 2, dar ele sunt native pentru sistem. Unitatea de transmisie este
pachetul, ce conþine un header ºi un mesaj, fig 3. Headerul conþine
informaþiile necesare pentru a transfera pachetul de la sursa la
destinaþie. Mesajul este corpul util al pachetului. IPX defineºte
formatul de baza pentru header. SPX adauga informaþiile
necesare pentru menþinerea conexiunii. Adresa sursa ºi destinaþie
ocupa cel mai mult din headerul IPX. O adresa de reþea conþine
:
• 4 octeþi, adresa de reþea
• 6 octeþi, adresa numarului
• 2 octeþi, adresa socketului
fig 2 - diverse protocoale suportate de NetWare
fig 3 - formatul unui pachet IPX/SPX
Rutarea in reþea se bazeaza pe adresa de reþea pentru
transmiterea unui pachet cand adresa destinaþie este diferita
de a reþelei din care vine pachetul. In reþeaua destinaþie,
MAC-ul interfeþei recunoaºte adresa din pachet egala cu a
nodului. Din adresa de socket, IPX preda pachetul procesului respectiv,
deci este posibila existenþa mai multor procese. Marimea
maxima a unui pachet IPX este de 576 de octeþi. Headerul IPX este
de 30 octeþi iar a lui SPX este de 42 de octeþi. Headerul conþine
urmatoarele campuri :
• suma de control
• lungimea pachetului
• control transport
• tip pachet
• adresa destinaþie
• adresa sursa
Deoarece headerul SPX este de 42 octeþi, partea utila scade la
534 octeþi. Headerul SPX conþine campurile din IPX, dar in
plus mai are :
• control conexiune
• tip data stream
• ID conexiune sursa
• ID conexiune destinaþie
• numar secvenþa
• numar raspuns
• numar alocare
Campurile suplimentare asigura unui pachet SPX secvenþierea
ºi garantarea livrarii.
Legatura intre aplicaþie ºi IPX se face prin ECB-uri
(Event Control Block). Informaþiile din ECB sunt necesare IPX-ului pentru
a transmite/recepþiona un pachet conform cu cerinþele aplicaþiei.
Setarea campurilor din ECB este obstacolul major in programarea
cu IPX/SPX. ECB-urile pot fi pe baza de soclu sau nu. ECB-urile cu soclu
gestioneaza evenimente IPX/SPX, in timp ce ECB-urile fara
soclu planifica evenimente fara a referi transmisia pachetelor
IPX/SPX. Un ECB cu soclu include :
• adresa de legatura
• adresa ESR
• flag in-use
• cod de terminare
• numar socket
• spaþiu IPX
• spaþiu driver
• adresa imediata
• contor fragmene
• lista descriptorilor de fragment ECB
• date
ECB-urile fara soclu sunt luate in evidenþa
de AES (Asynchronous Event Scheduler) ºi de aceea nu necesita un
canal anume. Campurile din ECB-urile fara soclu sunt un
subset al celor din ECB cu soclu :
• adresa de legatura
• adresa ESR
• flag in-use
• spaþiu AES
Programarea cu IPX/SPX include iniþializarea, deschiderea/inchiderea
soclurilor, planificarea evenimentelor asincrone, servicii de eveniment ºi
gestiunea fragmentelor ECB.
IPX/SPX este nucleul de comunicaþie in mai multe produse livrate
de firma Novell. Protocolul suporta interacþiuni staþii/server,
fig 4.
fig 4 - arhitectura NetWare
NetWare Lite 1.x pentru DOS ºi Windows este un sistem de operare de reþea
peer-to-peer pentru 2-25 useri. Configuraþia medie este de 10 useri. Este
perfect compatibil cu Windows 3.x. Este proiectat pentru transferuri ºi
poate fi instalat in cateva minute. NetWare 2.2 este destinat bazelor
de date de marime medie sau grupurilor de lucru din compartimentele unei
companii. Poaqte funcþiona cu server dedicat sau nededicat. Ofera
performanþa, interoperabilitate ºi siguranþa.
NetWare 3.11 este destinat unor companii cu sute de useri pentru un singur server.
Suporta o varietate de staþii client ce executa DOS, Windows,
OS/2, Unix, MacIntosh. NetWrae 4.x este ultima generaþie de sisteme Novell.
S-au adaugat la 3.11 noi servicii de directoare, securitate sporita,
elemente mai complexe de management ºi opþiuni de WAN. Cu NetWare
4.x se poate integra un server intr-un mediu de comunicaþie. NetWare
3.x ºi 4.x sunt sisteme pe 32 biþi ce implementeaza mecanisme
de multithreading, un model de memorie flexibil, securitate centralizata
ºi controale de integritate. Aplicaþiile de pe server, numite NLM-uri
sunt linkeditate in NetWare. Se permite adaugarea de noi facilitaþi
de catre user.
NetBIOS
In 1984 IBM a introdus primul sau standard de reþea. Viteza
de lucru era de 2 Mbps (faþa de 10 Mbps la Ethernet) ºi se
chema IBM PC Network, in rest fiind similar cu Ethernet. NetBIOS, dezvoltat
prin preluare de la o firma, a devenit standadul IBM pentru reþea.
La fel cum BIOS-ul asigura interfaþa intre programe ºi
hardware-ul unui PC, NetBIOS asigura interfaþa intre programe
ºi reþea. NetBIOS a devenit un standard pentru LAN-uri de marime
mijlocie. Exista implementari ce folosesc de asemenea TCP sau
UDP ca suport de protocol de transport. Problema in acest caz este ca
numele din NetBIOS nu corespund la adresele din TCP/IP, ceea ce inseamna
un efort suplimentar in programare. Standardele RFC 1001 ºi 1002
descriu utilizarea NetBIOS cu TCP/IP (orice staþie adresabila TCP/IP
este adresabila ºi NetBIOS). De fapt, NetBIOS este o interfaþa
software ºi nu un protocol (totuºi ofera servicii similare
unui protocol).
NetBIOS ofera atat servicii fara conexiune (datagrame)
cat ºi orientate conexiune (circuite virtuale, emuland aspecte
din TCP/IP). Serviciile oferite sunt prezentate in fig 5.
fig 5 - NetBIOS
In unele medii exista o interfaþa deasupra lui NetBIOS
care se numeºte SMB (protocolul Server Message Block situat in nivelele
superioare OSI). Interfaþa SMB, dezvoltata de Microsoft serveºte
la partajarea fiºierelor.
Serviciul de sesiune NetBIOS asigura o legatura orientata
conexiune, o facilitate de transfer a mesajelor full duplex. Lungimea mesajelor
este variabila, dar nu poate depaºi 131000 bytes. Serviciul
de nume este folosit pentru a eticheta resursele sistem. De exemplu, in
mecanismul client-server, atat clientul cat ºi serverul vor
avea un nume. Numele au de la 1 la 16 caractere ºi sunt de doua
tipuri : unice, pentru toata reþeaua ºi nume de grupuri. Numele
de grupuri nu trebuie sa fie unice ºi toate procesele ce adopta
un nume de grup fac parte din acel grup. Exista patru comenzi in
cadrul serviciului de nume :
• ADD NAME - adauga un nume unic
• ADD GROUP NAME - adauga un nume de grup
• DELETE NAME - ºterge un nume
• FIND NAME - determina daca un n ume este inregistrat
NetBIOS suporta datagramele, la fel ca IP in reþele TCP/IP.
Ele au o lungime maxima de 512 bytes. Datagramele pot fi transmise intregii
reþele sau unui nume specific. Exista patru comenzi in serviciul
de datagrame :
• SEND DATAGRAM - trimite o datagrama unui nume
• SEND BROADCAST DATAGRAM - trimite o datagrama intregii
reþele
• RECEIVE DATAGRAM - recepþioneaza o datagrama de
la un nume
• RECEIVE BROADCAST DATAGRAM - orice nod o recepþioneaza
Serviciul de comenzi generale asigura diverse funcþii :
• RESET - reseteaza tabele ºi sesiuni NetBIOS
• CANCEL - anuleaza comenzi asincrone
• ADAPTER STATUS - preia starea interfeþei de reþea
• UNLINK - dezlegare de serverul de bootstrap
Dupa cum am menþionat, NetBIOS este o specificare ce descrie interfaþarea
la o reþea. Se descriu in amanunt cum trebuie setaþi
diverºi registri procesor pentru a efectua o funcþie de reþea.
Funcþia in sine este tratata de nivelul reþea, iar
la terminarea ei acelaºi nivel returneaza starea lui NetBIOS. NetBIOS
nu presupune existenþa unui anume nivel reþea, dar necesita
anumite servicii de la acesta. De exemplu, nivelul reþea trebuie sa
asigure legaturi atat orientate conexiune cat ºi fara.
Mai mult, sesiunile corespund cu streamurile TCP cu deosebirea ca indicatorii
de format sunt incluºi in timp ce streamurile TCP sunt neformatate.
Cu toate ca NetBIOS ºi TCP par a avea destule analogii, convenþia
de nume este diferita. Numele NetBIOS sunt formaþi din 16 octeþi
ºi apeleaza procese ºi nu computere. Semantica lor ingreuneaza
utilizarea intr-un mediu multireþea. TCP, pe de alta parte
este mult mai adaptabil acestor medii. Cea mai obiºnuita implementare
a lui NetBIOS este peste TCP/IP. Atunci, trebuie rezolvata diferenþa
intre numele NetBIOS ºi adrese TCP/IP. Standardele RFC 1001 ºi
1002 descriu tocmai implemetarea NetBIOS peste conexiuni TCP/IP.
Natura client-server este pusa in evidenþa de serviciul
sesiune, care cuprinde urmatoarele comenzi :
• CALL - open activ
• LISTEN - open pasiv
• SEND - transmite date
• SEND NO ACK - transmite date fara achitare
• RECEIVE - recepþioneaza date
• HANG UP - terminare sesiune
• SESSION STATUS - acces la stare sesiune
In NetBIOS, un proces trebuie sa fie client ºi altul server.
Serverul iniþiaza o comanda LISTEN, care va deschide serverul
in modul pasiv. Un client se va putea conecta la un server cu CALL, care
va trece serverul in modul activ. Atat LISTEN cat ºi
CAL intorc un numar de sesiune proceselor care le-au iniþiat.
Numarul va fi folosit apoi de SEND, RECEIVE ºi HANG UP pentru identificarea
sesiunii. Orice proces poate avea mai multe sesiuni active la un moment dat.
Dupa o comanda SEND, NetBIOS aºteapta o achitare (ACK)
de transmisie reuºita pentru a ceda controlul din nou programului.
Achitarea este trimisa de RECEIVE. Acþiunile descrise asigura
o legatura orientata conexiune, sigura, similara
ca in TCP. Comanda SEND NO ACK nu aºteapta o achitare, fiind
folosita in special in reþele Token-Ring, unde achitarea
mesajelor trimise face parte din nivelul date. NetBIOS ofera ºi
legaturi fara conexiune, cu posibilitatea de a pierde precedenþa,
fara control de flux ºi alte aspecte legate de servicii orientate
conexiune.
TCP/IP
Daca la OSI s-a dezvoltat mai intai modelul arhitectural
ºi apoi protocolul, datorita exploziei Internetului, in cazul
TCP/IP mai intai s-au creat protocoalele iar modelul arhitectural
s-a stabilizat ulterior. Internetul de azi consta din mii de reþele
locale, regionale sau pe arii mai extinse. In general TCP/IP se spune
ca este o stiva de protocoale, ai carei membri sunt :
• TCP (Transmission Control Protocol) este protocolul de baza la
nivelul transport ce asigura servicii orientate conexiune. El se foloseºte
de IP din nivelul reþea, fig 6
fig 6 - header TCP/IP
• IP (Internet Protocol) asigura serviciul de transmisie a pachetelor
pentru TCP, ICMP ºi UDP. Opereaza la nivel reþea din modelul
OSI
• ICMP (Internet Control Message Protocol) este folosit pentru erori ºi
controlul informaþiei generate de software-ul TCP/IP. Datele ICMP sunt
transmise in datagramele IP
• UDP (User Datagram Protocol) se executa la nivel transport. Spre
deosebire de TCP, este un protocol fara conexiune care nu presupune
achitarea transmisiei datagramei
• ARP (Address Resolution Protocol) mapeaza adresele de Internet
in adrese fizice, de exemplu in adrese de Ethernet. Opereaza
la nivel reþea
• RARP (Reverse ARP) este complementar lui ARP ºi mapeaza
adresele fizice, de exemplu cele de Ethernet, in adrese de Internet. De
asemenea se executa la nivel reþea
Mai exista ºi alþi membri ai stivei de protocoale TCP/IP,
mai puþin folosiþi, ca de exemplu GGP (Gateway-to-Gateway Protocol)
ºi VMTP (Versatile Message Transaction Protocol). Toate aceste protocoale
sunt definite in aºa numitele RFC (Request for Comments), de domeniul
public. La nivelul aplicaþie sunt cateva servicii care sunt uzuale
instalarii TCP/IP, cu toate ca nu fac parte din acesta : FTP (File
Transfer Protocol), TELNET ºi SMTP (Simple Mail Transfer Protocol). FTP
este folosit la transferul fiºierelor de la un sistem la altul, atat
binare cat ºi ASCII. Exista varianta mai simpla TFTP.
TELNET este o facilitate de remote login prin care userul se poate conecta la
un sistem, presupunand indeplinite anumite condiþii de acces.
SMTP suporta transfer de E-mail intre doua sisteme. Gestiunea
locala a poºtei este o sarcina a fiecarui sistem,
SMTP rezolvand doar transferul intre sisteme.
Procesele user transmit ºi recepþioneaza date prin protocoalele
TCP ºi UDP din nivelul transport, fig 7
fig 7 - mediu TCP/IP
TCP asigura o legatura orientata pe conexiune,
sigura prin faptul ca necesita achitare la transmisii de
mesaje. Pe de alta parte, UDP, tot la nivelul transport, asigura
o legatura fara conexiune ºi anume serviciu
datagrama. Transmisia nu mai este sigura deoarece nu se cere achitare.
TCP/IP poate opera in diverse configuraþii de LAN-uri Ethernet.
Aplicaþiile pot folosi atat servicii TCP cat ºi UDP sau
ambele simultan. Din cauza utilizarii multiple, aplicaþiile trebuie
sa poata fi identificate precis. Acest lucru se rezolva
prin porturi de 16 biþi din TCP sau UDP pentru fiecare proces user. Un
camp de 8 biþi din headerul IP-ului determina daca
datele sunt destinate TCP-ului sau UDP-ului. Tot un camp de 16 biþi
din headerul Ethernet identifica tipul de frame, adica daca
datele sunt destinate unui alt modul IP sau altui protocol ce poate fi operaþional
in reþea. Diverse protocoale pot fi servisate concurent cu TCP/IP
prin utilizarea campurilor de control amintite.
In contextul aplicaþiilor client-server, prin TCP/IP un user se
poate ataºa la un sistem Unix pentru workstation, server, mainframe, etc.
Serviciile disponibile includ TELNET, FTP, poºta electronica,
NFS (Network File System, aducerea unui fiºier remote in domeniul
local al unui sistem fara a fi transferat fizic, spre deosebire
de FTP). SMTP permite transmisia/recepþia de mesage pentru Internet ºi
sisteme Unix, fara traversare de gateway-uri. Cele mai multe din
aplicaþiile bazate pe TCP/IP Unix sunt construite cu socluri Unix. Varianta
de socluri oferita de Microsoft, Sun Microsystems este bazata
pe Windows sockets, care acopera cam 70% din piaþa aplicaþiilor
client-server pentru PC-uri.
Singurele probleme ce pot apare in LAN-uri Ethernet relativ la protocoalele
TCP/IP sunt legate de introducerea tehnologiilor de mare viteza : ATM
(Asynchronous Transfer Mode), FDDI (Fiber Distributed Data Interface) ºi
SMDS (Switched Multi-megabit Data Service). O soluþie de marire
a vitezei trecerii mesajelor prin aceste protocoale este implementarea lor in
cipuri de siliciu, faþa de execuþia lor in memorie.
Totuºi schimbarea permanenta a specificaþiilor TCP ºi
cipurile CPU de viteza din ce in ce mai mare, nu au dus la extinderea
acestei soluþii.