r8c16cj
Protocoalele IPX si SPX reprezinta doua tipuri de baza de protocoale de comunicatie
in retele: IPX nu se bazeaza pe conexiuni, pe cand SPX este orientat
catre conexiune. Vor fi aratate avantajele si dezavantajele fiecarui tip de
protocol si vor fi prezentate structurile pachetelor IPX si SPX.
1 Protocolul IPX
Netware IPX este un protocol bazat pe datagrame (fara conexiune). Termenul
fara conexiune inseamna ca atunci cand o aplicatie foloseste IPX
pentru a comunica cu alte aplicatii din cadrul retelei, nu este stabilita nici
o conexiune sau cale de date intre cele doua aplicatii. Deci, pachetele
IPX sunt trimise catre destinatiile lor, dar nu se garanteaza si nici nu se
verifica faptul ca acestea ajung sau nu la destinatie. Termenul datagrama (datagram)
desemneaza faptul ca un pachet este tratat ca o entitate individuala, care nu
are nici o legatura sau relatie secventiala cu alte pachete.
IPX executa functii echivelente nivelului retea din modelul OSI. Aceste functii
includ adresare, rutare si transfer de pachete pentru schimburi de informatie,
functiile IPX fiind dedicate transmisiei de pachete in cadrul retelei.
Avantaje si dezavantaje
Deoarece IPX executa doar sarcinile nivelului retea din modelul OSI, ofera
beneficiile vitezei si performantei care rezulta din incarcarea mica pe
care o produce. Totusi, serviciile IPX sunt insuficiente daca sunt necesare
garantiile nivelului transport. IPX este deci folosit in cazul in
care este potrivit tipului particular de aplicatie, alegand in functie
de caz IPX sau SPX.
Principalele avantaje si dezavantaje ale IPX sunt:
• Disponibilitatea simultana a sursei si destinatiei nu este necesara,
deoarece nu exista o conexiune predeterminata. Totusi, sursa nu primeste nici
o confirmare a faptului ca destinatia a primit datele;
• Flexibilitatea in rutarea pachetelor este mare, deoarece nu este
necesara o ruta predeterminata a pachetelor;
• Pachetele pot fi trimise catre destinatii multiple pur si simplu prin
duplicarea pachetului si schimbarea adresei destinatie.
Un mesaj se poate trimite folosind IPX prin plasarea mesajului in portiunea
de date a unui pachet IPX, la fel ca si punerea unui mesaj intr-un plic.
Headerul pachetului IPX trebuie sa contina reteaua destinatie, numerele de nod
si soclu (adica adresa la care trebuie trimis pachetul). IPX trimite fiecare
pachet individual prin diferite subretele (posibil pe diferite rute pentru a
profita de traficul mai scazut) pana cand pachetul atinge destinatia.
Deoarece fiecare pachet este o entitate individuala, rutarea si secventierea
pachetelor poate sa varieze.
Cand pachetul ajunge, sursa nu primeste nici o informatie privind livrarea
cu succes a pachetului. Doar daca destinatia ia hotararea sa trimita un
pachet catre sursa, sursa poate fi sigura de ajungerea pachetului la destinatie.
Oricum, IPX trimite cu succes aproximativ 95% din numarul pachetelor.
1.1 Structura pachetului IPX
Pachetul IPX este identic din punct de vedere al structurii cu un pachet Xerox
IDP. El are doua parti: un header de 30 de octeti si o portiune de date cu o
lungime intre 0 si 546 octeti. Lungimea minima a pachetului este 30 octeti
(doar headerul), iar lungimea sa maxima este 576 octeti (30+546). Structura
pachetului IPX este prezentata in tabelul 1.
Toate campurile sunt structurate high-low, adica cel mai semnificativ
octet al campului este primul.
Offset
Continut Tip
0 Checksum BYTEs2t
2 Length BYTEs2t
4 Transport Control BYTE
5 Packet Type BYTE
6 Destination Network BYTEs4t
10 Destination Node BYTEs6t
16 Destination Socket BYTEs2t
18 Source Network BYTEs4t
22 Source Node BYTEs6t
28 Source Socket BYTEs2t
30 Data Portion bytes0?546t
Tabelul 1. Structura pachetului IPX.
Semnificatia campurilor headerului este urmatoarea:
Checksum (Suma de control)
Acest camp a fost inclus pentru conformitate cu headerul original Xerox.
IPX il incarca totdeauna cu valoarea 0FFFFh. Cartelele de retea
aplica sume de control intregului pachet IPX, deci acest camp nu
este necesar.
Length (Lungime)
Acest camp contine lungimea intregului pachet (header+date). Valoarea
lui minima este 30, iar cea maxima 576. IPX seteaza acest camp.
Transport Control (Controlul transportului)
Acest camp este folosit de bridge-urile inter-retea NetWare. IPX il
incarca cu valoarea 0.
Packet Type (Tipul pachetului)
Acest camp indica tipul de serviciu oferit sau cerut de catre pachet.
Xerox a definit urmatoarele valori (totusi, utilizatorii IPX trebuie sa seteze
valoarea acestui camp la 0 sau 4):
• 0 - Pachet necunoscut;
• 1 - Pachet care contine informatii de rutare;
• 2 - Pachet in ecou;
• 3 - Pachet de eroare;
• 4 - Packet Exchange Packet (pachet IPX);
• 5 - Sequenced Packet Protocol Packet (pachet SPX);
• 16?31 - Protocoale experimentale;
• 17 - Protocol NetWare Core (Core = miez).
Utilizatorii IPX trebuie sa seteze tipul pachetului la 0 sau 4, iar utilizatorii
SPX trebuie sa-i dea valoarea 5.
Destination Network (Reteaua destinatie)
Acest camp contine numarul retelei careia ii apartine nodul destinatie.
in cazul NetWare, retelele din cadrul unei retele globale primesc de la
administratorul retelei globale un numar unic de 4 octeti. Cand acest
camp este 0, nodul destinatie este in aceeasi retea ca si nodul
sursa, pachetul nefiind procesat de un bridge inter-retea.
Destination Node (Nodul destinatie)
Acest camp contine adresa fizica a nodului destinatie. Lungimea acestui
camp este variabila in functie de topologia retelei. Un nod din
cadrul unei retele Ethernet va avea o adresa fizica de 6 octeti, pe cand
un nod din cadrul unei retele Omninet va avea o adresa de un octet. Daca o adresa
fizica are lungimea mai mica de 6 octeti, adresa trebuie sa ocupe cea mai putin
semnificativa pozitie in cadrul campului, prima parte a acestuia
trebuind completata cu zero. O adresa de nod egala cu 0FFFFFFFFFFFFh (6 octeti
formati numai din biti unu) identifica un pachet broadcast.
Destination Socket (Soclul destinatie)
Acest camp contine adresa soclului procesului destinatie a pachetului.
Soclurile ruteaza pachetele catre diferite destinatii in cadrul aceluiasi
nod. Xerox a rezervat urmatoarele numere de socluri:
• 1 - Routing Information Packet;
• 2 - Echo Protocol Packet;
• 3 - Error Handler Packet;
• 20h?03Fh - Experimental;
• 1?0BB8h - Registered with Xerox;
Xerox a asignat pentru Novell un set de socluri pentru folosirea de catre NetWare:
• 451 - File Service Packet;
• 452 - Service Advertising Packet;
• 453 - Routing Informaton Packet;
• 455 - NetBIOS Packet;
• 456 - Diagnostic Packet.
De exemplu, serverele NetWare accepta cereri adresate soclului 451.
Source Network (Reteaua sursa)
Source Node (Nodul sursa)
Source Socket (Soclul sursa)
Aceste trei campuri au semnificatii similare cu cele corespunzatoare destinatiei.
2 Protocolul SPX
SPX este identic cu IPX cu exceptia faptului ca ofera servicii suplimentare
conferite de faptul ca se afla la nivelul transport din modelul OSI, spre deosebire
de IPX, aflat la nivelul retea. Aceste functii suplimentare fac din SPX un protocol
orientat catre conexiune. Aceasta inseamna ca inainte ca un pachet
SPX sa fie trimis, se stabileste o conexiune intre sursa si destinatie.
SPX garanteaza livrarea datelor, secventierea pachetelor, detectarea si corectarea
erorilor si suprimarea pachetelor duplicate.
Avantaje si dezavantaje
In schimbul acestor garantii, SPX nu are viteza si performantele IPX.
Proiectantul de aplicatii trebuie sa determine ce este mai important pentru
aplicatiile sale: viteza sau siguranta livrarilor. Astfel, el va alege IPX sau
SPX. Iata in continuare cateva dintre avantajele si dezavantajele
folosirii SPX:
• Livrarea garantata a datelor; conexiunea este stabilita inainte
ca informatia sa fie trimisa si la sursa se intorc informatii privind
livrarea cu succes. Trimiterea de pachete broadcast este greoaie, deoarece trebuie
stabilita o conexiune cu fiecare potential receptor inainte. De asemenea,
unele aplicatii nu au nevoie de garantarea livrarii fiecarui pachet;
• Secventiere garantata a pachetelor; deci, oricate pachete ar cere
transmiterea unui flux de date, acestea vor ajunge in ordine;
• Suprimarea pachetelor duplicat; in timpul procesului de garantare
a livrarii (care include retransmiterea pachetelor considerate pierdute), este
posibila aparitia unor pachete duplicat care ajung ambele la nodul destinatie;
SPX elimina astfel de pachete, deci aplicatia primeste doar o copie a datelor
trimise de catre partenerul de comunicatie.
2.1 Structura pachetelor SPX
Un pachet SPX este identic ca structura cu un pachet IPX, cu exceptia faptului
ca are 12 octeti suplimentari in header. Pachetul SPX consta din doua
parti: un header de 42 de octeti si un camp de date care poate contine
intre 0 si 534 octeti. Lungimea minima a pachetului este de 42 octeti
(doar headerul), iar cea maxima de 576 octeti (42+534).
Campurile pachetului SPX care au aceeasi denumire ca si cele din cadrul
pachetelor IPX au si aceeasi semnificatie ca si acestea, cu specificarea ca
niciodata in cadrul unui pachet SPX nu se permite o valoare 0FFFFFFFFFFFFh
a adresei nodului destinatie (nu sunt permise broadcast-uri), iar SPX incarca
totdeauna valoarea 5 in campul Packet Type. In tabelul 2 este
prezentata structura pachetului SPX:
Offset
Continut Tip
0 Checksum BYTE?2?
2 Length BYTE?2?
4 Transport Control BYTE
5 Packet Type BYTE
6 Destination Network BYTE?4?
10 Destination Node BYTE?6?
16 Destination Socket BYTE?2?
18 Source Network BYTE?4?
22 Source Node BYTE?6?
28 Source Socket BYTE?2?
30 Connect. Control BYTE
31 Data Stream Type BYTE
32 Source Connect. ID BYTE?2?
34 Dest. Connect ID BYTE?2?
36 Sequence Number BYTE?2?
38 Acknowledge Number BYTE?2?
40 Allocation Number BYTE?2?
42 Data Portion BYTE?0?534?
Tabelul 2. Structura pachetului SPX.
Ordinea octetilor in cadrul campurilor este high-low, ca si in
cazul IPX. Semnificatiile campurilor suplimentare fata de cele din cadrul
headerului IPX sunt:
Connection Control (Controlul conexiunii)
Acest camp contine 4 indicatori de 1 bit folositi de SPX si clientii sai
pentru a controla fluxul bidirectional de date de-a lungul unei conexiuni:
• 1?8 - Valori nedefinite de catre Xerox Sequenced Packet Protocol. SPX
ii ignora;
• 10h - Sfarsitul unui mesaj; clientul seteaza acest bit pentru
a semnala sfarsitul mesajului partenerului sau; SPX ignora acest bit si
il livreaza neschimat partenerului;
• 20h - Atentie; clientul seteaza acest indicator daca pachetul este un
pachet de atentionare; aceasta facilitate nu a fost implementata; SPX ignora
acest bit si il livreaza neschimat partenerului;
• 40h - Se cere confirmare; SPX seteaza acest bit daca este necesar un
pachet de confirmare; deoarece SPX controleaza cererile si raspunsurile de confirmare,
clientul trebuie sa ignore acest indicator;
• 80h - Pachet sistem; SPX seteaza acest bit daca pachetul este un pachet
sistem; aceste pachete sunt folosite intern si nu sunt livrate clientilor.
Clientii nu trebuie sa foloseasca sau sa modifice niciodata bitii nedefiniti,
de confirmare sau sistem. Acestia sunt rezervati pentru folosirea de catre SPX.
Data Stream Type (Tipul fluxului de date)
Acest camp este un indicator de un octet care arata tipul datelor care
au fost gasite in cadrul pachetului. Valorile posibile sunt aratate in
continuare:
• 0?0FDh - Definit de client; SPX ignora aceste valori;
• 0FEh - Sfarsitul conexiunii; cand un client executa un apel
pentru a termina o conexiune activa, SPX va genera un pachet de terminare a
conexiunii. Acesta va fi ultimul pachet trimis partenerului in cadrul
conexiunii;
• 0FFh - Confirmarea sfarsitului conexiunii; SPX genereaza un pachet
de confirmare a sfarsitului conexiunii automat; acest pachet este marcat
sistem si nu este livrat clientilor.
Source Connection ID (Identificatorul sursei)
Acest camp contine un numar de identificare asignat de catre SPX sursei
pachetului.
Destination Connection ID (Identificatorul destinatiei)
Acest camp contine un numar de identificare asignat de catre SPX destinatiei
pachetului si folosit pentru demultiplexarea pachetelor sosite in cadrul
multiplelor conexiuni care ajung la acelasi soclu; demultiplexarea este necesara
deoarece conexiunile active concurente de pe orice masina pot folosi acelasi
numar de soclu.
Sequence Number (Numarul de secventa)
Acest camp retine numarul pachetelor schimbate intr-o directie a
conexiunii. Fiecare parte a conexiunii tine propriul contor. Numarul ia valoarea
zero dupa ce depaseste 0FFFFh. Deoarece SPX controleaza acest camp, clientii
nu sunt interesati de valoarea lui.
Acknowledge Number (Numar de confirmare)
Acest camp indica numarul de secventa al urmatorului pachet pe care SPX
se asteapta sa il receptioneze. Orice pachet cu un numar de secventa mai
mic decat valoarea acestui camp este in secventa corecta si
nu trebuie retransmis. Deoarece SPX controleaza acest camp, clientii nu
sunt interesati de valoarea lui.
Allocation Number (Numar de buffere alocate)
Acest camp indica numarul de buffere de ascultare disponibile intr-o
directie a conexiunii. SPX poate sa trimita pachete doar pana cand
numarul de secventa devine egal cu numarul de buffere alocate la celalalt capat
al conexiunii. Deoarece SPX controleaza acest camp, clientii nu sunt interesati
de valoarea lui.
3 Protocoalele TCP/IP
Transmission Control Protocol (TCP) si Internet Protocol (IP) se refera de
fapt la un set de protocoale si servicii care impreuna permit calculatoarelor
legate in retea sa se interconecteze pentru a realiza transferuri de fisiere,
servicii de posta electronica si sesiuni de lucru interactiv la distanta.
TCP este folosit pe scara larga in mediile academice si ingineresti (si,
de exemplu, in cadrul retelei guvernamentale americane).
De asemenea, datorita marelui numar de programe aparute pe piata care folosesc
TCP/IP, acest set de protocoale a inceput sa fie din ce in ce mai
raspandit in mediul comercial, ca si in cadrul retelelor locale
de calculatoare.
3.1 Protocolul Internet (Internet Protocol-IP)
Intre protocoalele de nivel 3 (nivelul REtEA) documentate de Departamentul
de Aparare al Statelor Unite (DoD - Department of Defense), Internet Protocol
este cel mai important. Principalul sau scop este de a interconecta mai multe
retele bazate pe schimbul de pachete intr-o supra-retea (internet - in
continuare vom intelege prin internet (scris cu litere mici) orice supraretea
(retea globala). Atunci cand este nevoie sa se specifice in mod
explicit ca este vorba despre reteaua Internet initiata de catre DoD, cuvantul
Internet se va scrie cu prima litera capitalizata). IP isi ofera serviciile
diferitelor protocoale de pe nivelele superioare (Upper Layer Protocols - ULP)
prin asistarea livrarii datelor ULP prin internet in cadrul unuia sau
mai multor blocuri de date (datagrams).
Figura 1. O privire din punct de vedere logic asupra structurii Internet la
nivelul IP
Arhitectura internet permite o ierarhie de retele independente logic pe doua
nivele. Nivelul cel mai de sus este conexiunea intre retele pereche. O
retea poate sa contina o colectie de subretele pereche. Retelele si subretelele
pot sa contina hosturi atasate direct, dupa cum se poate observa in figura
1.
Singura diferenta intre retele si subretele consta in modul in
care sunt interpretate adresele IP si depinde de localizarea modulului IP specificat
de adresa. In majoritatea cazurilor, subretelele pot fi numite pentru
simplitate retele. In general, termenul "subretea" este folosit
doar in cazul in care este necesar sa se faca distinctia intre
diferitele nivele ierarhice ale internet.
IP este limitat la functiile de baza necesare transmisiei unui bloc de date
(datagram) prin internet. Fiecare bloc de date este o entitate independenta,
nefiind legata de alte "datagrame" (traducerea, poate putin fortata,
a termenului "datagram" este preluata din cartea "Retele de calculatoare",
cu semnificatia "mesaj fara confirmare"). Nivelul IP al hostului asigura
servicii protocoalelor de la nivelul transport si foloseste serviciile nivelului
legaturii de date pentru a transmite datagramele hostului destinatie. IP nu
pretinde ca ar oferi servicii sigure. Calculatoarele gazda (hosts) vor ignora
datagramele atunci cand nu au resurse suficiente pentru procesare si nu
vor detecta datagramele pierdute sau ignorate de catre nivelul legaturii de
date.
IP izoleaza protocoalele de pe nivelele superioare de caracteristicile specifice
retelei. Serviciile aditionale furnizate de catre IP includ diferite nivele
de comportare a transmisiei, implicand caracteristici ca: precedenta,
nivel de incredere, intarzieri. IP permite de asemenea etichetarea
datelor, necesara in medii sigure, pentru a asocia datelor informatii
de securitate.
Transmisia incepe atunci cand un protocol de pe nivelul superior
transmite date catre IP pentru livrare. IP impacheteaza datele in
format internet datagram si le transmite protocolului de pe nivelul legaturii
de date pentru transmisie prin reteaua locala. Daca hostul destinatie se afla
legat direct in reteaua locala, IP trimite pachetul direct acestui host.
Daca destinatia se afla intr-o alta retea, IP trimite pachetul unui gateway
IP local pentru transmisie. Acest gateway va trimite pachetul prin urmatoarea
retea hostului destinatie sau unui alt gateway. Astfel, datagrama se propaga
prin setul de retele interconectate de la un modul IP la altul, pana cand
aceasta ajunge la destinatie. Pachetele transmise de catre hostul numarul 1
pot sa circule pe una dintre cele doua cai prezentate. (figura 2)
Figura 2. Transmisia datelor prin intermediul IP
Gateway-urile, uneori numite "Routere IP" (sau "Local Bridges"
ori "Remote Bridges") sunt de fapt un fel de "relee de pachete"
care interconecteaza doua sau mai multe retele sau subretele. Fiecare gateway
contine un modul IP aflat deasupra a doua sau mai multe procese bazate pe protocoale
aflate la nivelul legaturii de date.
Modulele IP folosesc reguli comune pentru interpretarea adreselor internet necesare
in procesul stabilirii traseului pe care pachetul trebuie sa-l urmeze
pentru a ajunge la destinatie. Rutarea executata de catre un gateway se bazeaza
pe campul network/subnetwork al adresei internet de destinatie.
Un gateway atasat mai multor retele trebuie sa decida care este reteaua urmatoare
prin care trebuie sa treaca pachetul pe care l-a primit pentru a ajunge la destinatie.
De asemenea, trebuie sa decida daca hostul destinatie se afla in cadrul
urmatoarei retele (caz in care pachetul poate fi trimis direct acestui
host) sau daca cel putin un alt gateway este necesar pentru a trimite pachetul
catre reteaua destinatie aflata la distanta.
Pentru a determina care este urmatorul gateway caruia trebuie sa-i fie transmis
pachetul, echipamentul gateway curent trebuie sa cunoasca optiunile pe care
le are la dispozitie si modul de alegere a urmatorului gateway dintre cele disponibile.
Echipamentul gateway curent trebuie sa fie capabil sa achizitioneze intr-un
fel oarecare informatii despre alte echipamente gateway si despre caile disponibile
pentru ca un pachet sa poata atinge reteaua destinatie. Cel mai bine ar fi ca
aceste informatii privind posibilitatea atingerii de catre un pachet a unei
retele indepartate sa poata fi achizitionata si mentinuta dinamic, in
acord cu conectivitatea instantanee asigurata de toate celelalte echipamente
gateway ale retelei globale (internet). Pentru a putea fi atins acest scop,
echipamentele gateway trebuie sa fie capabile sa schimbe intre ele informatii
asupra posibilitatii de a trimite un pachet catre diferite retele. De-a lungul
anilor, au fost dezvoltate mai multe protocoale gateway-gateway, protocoale
care cauta sa furnizeze acest schimb de informatii.
Echipamentele gateway care conecteaza un set de retele private din punct de
vedere al proprietatii si administrarii pot sa foloseasca orice protocol, fara
restrictii. De obicei, un asemenea protocol privat se numeste Interior Gateway
Protocol (IGP). In termeni IP, fiecare astfel de retea administrata independent
este numita sistem autonom (Autonomous System).
Pe de alta parte, toate echipamentele gateway care fac legatura intre
retele private si retele publice de date (DDN, Digital Data Networks) trebuie
sa foloseasca un protocol oficial simplu si bine definit numit Exterior Gateway
Protocol.
3.1.1 Headerul IP
Pachetele (datagramele) IP au un antet (header) bine definit, header definit
de standardele DoD (U.S.A. Department of Defense). Acest header are structura
prezentata in figura 3.
In continuare sunt prezentate campurile care compun acest header:
Version (Versiune)
Abreviere: VER
Lungimea campului: 4 biti
Campul Version indica formatul headerului IP. Va fi prezentata in
continuare versiunea 4, ultima pana la data aparitiei materialului bibliografic
avut la dispozitie (1988). Versiunile 1?3 nu mai erau deja folosite inca
la acea data.
Campul Version indica versiunea protocolului careia ii apartine
pachetul. Includerea versiunii protocolului in fiecare pachet face posibila
dezvoltarea de noi protocoale si testarea acestora fara a afecta buna functionare
a retelei.
Internet Header Length (Lungimea headerului Internet)
Abreviere: IHL
Lungimea campului: 4 biti
Unitate: Grupe de cate 4 octeti
Gama: 5?15 (implicit 5)
Campul Internet Header Length indica lungimea headerului IP exprimata
in multipli de unitati de 32 biti. Acest camp este necesar deoarece
headerul IP are o lungime variabila datorita faptului ca lungimea campului
Options nu este constanta.
Figura 3. Headerul IP
Type of Service (Tipul de serviciu)
Abreviere: TOS
Lungimea campului: 8 biti
Campul Type of Service contine parametrii IP care descriu calitatea serviciului
dorita pentru prezentul pachet transmis. Campul permite calculatorului
gazda sa specifice retelelor de tranzit tipul de serviciu pe care il doreste.
Campul permite specificarea precedentei pachetului, nivelul dorit de incredere
si nivelul presupus de consumare a resurselor, dupa cum se va arata mai jos.
Tipul de serviciu se foloseste pentru a specifica retelelor de tranzit ce serviciu
se doreste de la acestea. Retelele de tranzit decid daca pot sau doresc sa se
achite de serviciile cerute.
Total Length (Lungimea totala)
Abreviere: TL
Lungimea campului: 16 biti
Total Length este lungimea pachetului, masurata in octeti, incluzand
headerul IP si zonele de date ale pachetului.
Se observa ca lungimea campului Total Length permite o lungime totala
maxima a pachetului de 65.536 octeti.
Identification (Identificare)
Abreviere: ID
Lungimea campului: 16 biti
Campul reprezinta o valoare de identificare folosita pentru a asocia fragmentele
unui pachet. ULP (Upper Layer Protocol) care transmite de obicei genereaza aceasta
valoare ca pe un parametru al interfetei. Altfel, IP genereaza acest camp
in asa fel incat el sa fie unic pentru fiecare ULP care transmite.
Campul Identification indica numarul pachetului pentru a permite calculatorului
gazda destinatie sa determine carui pachet ii apartine fragmentul care
tocmai a sosit.
Flags (Indicatori)
Abreviere: Lungimea campului: 3 biti
Acest camp contine indicatorii de control Don't Fragment (a nu se fragmenta,
care inhiba fragmentarea pachetului de catre IP) si More Fragments (care ajuta
la identificarea pozitiei unui fragment in pachetul original).
Indicatorul Don't Fragment este destinat pentru folosirea cu calculatoare gazda
care nu sunt capabile sa reconstituie pachetul din fragmentele din care este
format. De fapt, multe implementari ale TCP/IP nu permit fragmentarea si reconstituirea
pachetelor.
Fragment Offset (Offsetul fragmentului)
Abreviere: FO
Lungimea campului: 13 biti
Unitate: Grupe de cate 8 octeti
Gama: 0?8191 (implicit 0)
Campul indica pozitia fragmentului relativ la inceputul datelor
in pachetul original. Atat un pachet complet, cat si primul
fragment al unui pachet au acest camp resetat.
Fragment Offset localizeaza pozitia fragmentului curent intr-un pachet
ca multiplu de 8 biti. Pentru aceasta, lungimea campului este de 13 biti,
deci sunt permise maximum 8.192 fragmente pentru fiecare pachet, in acest
caz extrem, primele 8.191 fragmente vor avea lungimea de un octet.
Time-to-Live (Timp de viata)
Abreviere: TTL
Lungimea campului: 8 biti
Unitate: secunde
Gama: 0?255 (255=4,25 minute)
Acest camp indica timpul maxim cat poate sa ramana pachetul
in internet. Cand valoarea acestui camp, dupa decrementare,
ia valoarea zero, pachetul ar trebui distrus.
Unitatea de timp utilizata pentru masurarea timpului de viata al pachetului
este secunda, deci timpul maxim de viata al unui pachet este 255 secunde (4,25
minute).
Valoarea campului este scazuta cu cel putin 1 de catre fiecare router
prin care trece pachetul.
Protocol (Protocol)
Abreviere: PROT
Lungimea campului: 16 biti
Acest camp arata care ULP (Upper Level Protocol) trebuie sa receptioneze
portiunea de date a unui pachet. Numerele asignate ULP-urilor uzuale sunt disponibile
de la DoD Executive Agent for Protocols. Unele vor fi aratate mai jos, in
tabelul 3.
Campul Protocol specifica protocolul particular de la nivelul 4 caruia
ii apartine pachetul (de exemplu, TCP sau alt protocol echivalent).
Numar (zecimal) Prescurtare Descriere
0 Reserved
1 ICMP Internet Control Message
5 ST Stream
6 TCP Transmission Control Protocol
8 EGP Exterior Gateway Protocol
9 IGP Any private interior gateway protocol
11 NVP Network Voice Protocol
17 UDP User Datagram Protocol
20 HMP Host Monitoring Protocol
22 XNS-IDP Xerox Network Systems Internet Datagram Protocol
27 RDP Reliable Data Protocol
28 IRTP Internet Reliable Transaction Protocol
29 ISO-TP4 ISO Transport Protocol Class 4
30 NETBLT Bulk Data Transfer Protocol
61 Any host internal protocol
Tabelul 3. Numere de protocol asignate in cadrul headerului IP.
Header Checksum (Suma de control a headerului)
Lungimea campului: 16 biti
Acest camp contine o suma de control aplicata doar headerului IP. Suma
de control ajuta la detectarea unor eventuale erori aparute in timpul
transmisiei. Algoritmul dupa care se genereaza aceasta suma de control este:
se aduna complementele fata de 1 ale tuturor entitatilor headerului (grupate
pe cate 16 biti) si apoi se complementeaza suma fata de 1.
Suma de control a headerului se foloseste doar pentru a verifica validitatea
datelor din cadrul headerului. Ori de cate ori pachetul trece printr-un
gateway, aceasta suma de control este recalculata (deoarece de fiecare data
este modificat campul TTL).
Source Address (Adresa sursei)
Abreviere: SOURCE
Lungimea campului: 32 biti
Acest camp contine adresa Internet a calculatorului gazda care a generat
pachetul.
Destinaton Adress (Adresa de destinatie)
Abreviere: DEST
Lungimea campului: 32 biti
Campul contine adresa Internet a hostului destinatie.
Adresele sursa si destinatie indica numarul retelei folosind 8?24 biti. Bitii
nefolositi pentru identificarea retelei sunt folositi pentru a referi numarul
hostului si, optional, numarul subretelei.
Options (Optiuni)
Abreviere: OPT
Lungimea campului: variabila
Acest camp a fost prevazut pentru a permite unor versiuni ulterioare ale
protocolului sa includa informatii care nu sunt prezente in implementarea
originala, sa permita experimentatorilor s incerce noi idei si sa evite
alocarea permanenta a unor biti in cadrul headerului pentru informatii
rar folosite.
Lungimea acestui camp depinde de numarul si tipurile optiunilor asociate
cu pachetul.
Optiunile definite oficial sunt:
- Security -; eticheteaza nivelul, compartimentul, grupul de utilizatori
si restrictiile de manipulare, asa cum sunt ele cerute de DoD;
- Loose Source Routing - permite celui care trimite pachetul sa ceara ca pachetul
sa urmeze o cale oarecare (generala) prin retea;
- Strict Source Routing - cere ca pachetul sa urmeze o cale specificata;
- Record Route - inregistreaza calea urmata de pachet;
- Stream ID - permite unui gateway sa manipuleze o colectie de pachete in
acelasi fel;
- Timestamp - permite o inregistrare a caii pe care o urmeaza un pachet
prin retea cu inregistrarea de asemenea a momentelor in care pachetul
a ajuns in diferite locuri.
3.1.2 Fragmentarea si reasamblarea pachetelor
Retelele intotdeauna impun o lungime maxima a pachetelor, din cauza:
- limitarilor hardware (latimea unui slot de transmisie);
- limitarilor software ale unui sistem de operare particular (de exemplu, un
sistem de operare ar putea cere ca lungimea pachetelor pe care le manipuleaaI
sa nu depaseasca 512 octeti);
- protocoalele folosite (restrictii privind numarul de biti in campul
de lungime a pachetelor);
- restrictii impuse de standard;
- masuri luate pentru reducerea numarului de erori;
- limitari privind durata cat un pachet poate ocupa un canal.
In continuare, in tabelul 4, se prezinta un tabel care demonstreaza
diversitatea lungimii maxime a pachetelor impusa de diferite retele.
Numele retelei
Maxim ?biti?
Bell Labs' Spider 256
ALOHANET (University of Hawaii) 640
X.25 (implicit) 1.024
ARPA Packet Radio Network 2.024
ARPANET 8.192
X.25 (maxim) 8.192
Ethernet 12.144
Tabelul 4. Lungimea maxima a pachetului in functie de retea.
Pachetele IP de nivel 3 in tranzit pot sa traverseze subretele a caror
lungime maxima a pachetelor este mai mica decat lungimea pachetului. Pentru
a se rezolva aceasta problema, IP prevede mecanismele de fragmentare si reconstituire
a pachetelor.
Atunci cand un gateway ar trebui sa trimita un pachet intr-o retea
care nu poate primi pachetul din cauza lungimii sale, echipamentul gateway trebuie
sa fragmenteze pachetul original in mai multe subpachete, numite fragmente
de pachet (datagram fragments), care sunt suficient de mici pentru a putea fi
transmise.
Datagramele IP sunt transmise independent, deci datagramele fragmentate pot
sa nu se "intalneasca" pana cand ajung la
calculatorul gazda destinatie si pot chiar sa ajunga in alta ordine decat
cea originala. Deci, toate host-urile care pot sa receptioneze pachete trebuie
sa fie capabile sa le si reasambleze.
Modulul IP din host-ul destinatie va reasambla datagramele fragmentate intr-o
singura datagrama pentru livrare catre clientul sau de pe nivelul transport
(4).
Figura 4 ilustreaza procesul fragmentarii pachetelor. Pentru claritate, figura
este simplificata, neincluzand headere etc.
Trebuie remarcat ca nu toate protocoalele efectueaza fragmentarea si reasamblarea
in acelasi fel. XNS (Xerox Network Standard) cere ca reasamblarea sa fie
facuta de catre reteaua care a fragmentat datagrama, ceea ce simplifica implementarea
pentru host-urile receptoare. XNS impune o restrictie importanta rutarii inter-retea
si caracteristicilor retelei finale (receptoare) si anume ca cele doua retele
sa admita pachete de aceeasi lungime maxima.
Figura 4. Fragmentarea unui pachet cu lungimea de 10 octeti
in cazul unei retele care accepta doar pachete cu lungimea de pana la 8 octeti.
3.1.3 Setarea parametrilor IP
IP poate sa-si adapteze serviciile pentru a permite existenta unei diversitati
de ULP-uri. De exemplu, un protocol de la nivelul transport care are cerinte
de lucru in timp real, cum ar fi NVP (Network Voice Protocol) poate sa
foloseasca serviciul IP de transmisie de pachete intr-un mod care difera
de metodele utilizate de TCP, de exemplu.
Exista metode specifice prin care ULP-urile pot sa identifice serviciile care
vor fi oferite de catre IP si sa adapteze aceste servicii intr-o configuratie
particulara a retelei.
De exemplu, daca se doreste ca un pachet (datagrama) sa parcurga o ruta specifica
in drumul sau catre destinatie, o astfel de ruta (numita Source Route)
poate fi specificata de catre ULP. Fiecare modul IP este capabil sa trimita
datagrama conform rutei specificate, eventual marita de catre mecanismul standard
de rutare, daca este necesar.
Parametrii setabili ai IP se pot incadra in doua categorii:
- parametri privind calitatea serviciilor (Service Quality Parameters);
- optiuni privind serviciile (Service Options).
Parametrii privind calitatea serviciilor influenteaza serviciul de transmisie
asigurat de catre echipamentele gateway care intervin in procesul de transmisie,
iar optiunile privind serviciile sunt folosite pentru a specifica cererea de
servicii speciale care trebuie asigurate in cadrul modulelor IP.
3.1.4 Parametrii de calitate a serviciilor
Acele ULP care stiu ca datagramele lor vor trece prin echipamente gateway
care pot efectua modificari asupra pachetelor care trec prin ele, pot sa sugereze
acestor echipamente gateway tratamentul pe care acestea sa-l aplice fiecaruia
dintre pachetele trimise. Aceste sugestii se realizeaza prin intermediul parametrului
TOS (Type of Service) din cadrul headerului pachetului IP. Semnificatia acestui
camp poate fi:
Precedence (Precedenta) -; indica echipamentului gateway sa incerce
sa aplice un tratament preferential pentru datagrame care au o inalta
importanta. Tratamentul preferential poate sa previna astfel de datagrame sa
fie intarziate in cadru unei cozi in interiorul echipamentului
gateway, de exemplu.
Transmision mode - datagram versus stream (Modul de transmisie -; datagrama
sau sir de datagrame) - Modul Datagram (implicit) indica faptul ca ULP considera
aceasta datagrama ca fiind un eveniment sporadic, necorelat cu datagrame trecute
sau viitoare. Modul Stream cere echipamentului gateway sa minimizeze intarzierile
si dispersia intarzierilor intre transmisiile pachetelor similare,
prin rezervarea resurselor retelei.
Reliability (incredere) - destinat minimizarii pierderii datelor si
ratei erorilor. Acest parametru asigura faptul ca resursele cozilor sunt alocate
in primul rand pachetelor care cer un inalt nivel de siguranta
si faptul ca pachetele care nu cer in mod explicit acest lucru pot sa
fie "aruncate" in cazul in care nu mai este loc in
coada si apare un pachet care cere un inalt nivel de incredere.
Resource Tradeoff -; indica daca este mai important sa se onoreze cererea
de "High Precedence" sau cea de "High Reliability" in
cazul in care echipamentul gateway nu poate sa le asigure pe ambele in
acelasi timp.
Notiunea de Stream Mode versus Datagram Mode de obicei nu este folosita in
cazul retelelor locale sau WAN terestre, dar se foloseste in cazul retelelor
bazate pe rutarea prin satelit, deoarece routerele aflate pe sateliti in
general pot sa ceara alocarea unei benzi de transmisie in avans. Daca
routerul constata ca incepe sa receptioneze pachete care au bitul Stream
Mode setat, el poate sa anticipeze primirea mai multor pachete care fac parte
din acelasi sir si deci va cere statiilor sale pereche alocarea intr-un
viitor apropiat a unei benzi de frecventa mai mari pentru a se asigura ca un
pachet care va fi receptionat nu va fi intarziat in momentul
receptiei pentru a se cere alocarea unei benzi de frecventa in timp real
(routerele aflate pe sateliti nu pot sa comunice intre ele instantaneu;
pachetele care trec prin ele au cel putin o intarziere de un sfert
de secunda).
3.1.5 Optiuni privind serviciile
Headerul IP poate sa fie expandat pentru a include unele campuri optionale
pentru a cere servicii IP in nodurile sursa, destinatie sau intermediare
(de rutare). Cateva dintre optiunile definite sunt:
Security Labeling -; Identifica nivelul de securitate (secret, strict
secret etc.) al datagramei pentru serverele care contin informatii secrete.
Source Routing -; Selecteaza setul de module IP din echipamentele gateway
prin care trebuie sa treaca pachetul, in acord cu specificatia celui care
trimite pachetul. Permite unui nod sa selecteze retelele prin care urmeaza sa
tranziteze pachetul si retelele prin care nu trebuie sa tranziteze pachetul,
astfel imbunatatind nivelul de securitate al unor anumite tipuri de tranzactii.
Source Routing poate fi specificata ca fiind "slaba" (lasandu-se
echipamentului gateway unele libertati) sau "stricta".
Route Recording - Cere inregistrarea modulelor IP din cadrul echipamentelor
gateway prin care tranziteaza pachetul, astfel incat hostul destinatie
poate sa stie toate locurile prin care a trecut pachetul.
Stream Identification -; Identifica sirul de pachete caruia ii
apartine pachetul; este folosit in cadrul serviciilor de tip stream.
Timestamping - Permite echipamentului gateway sa marcheze momentul in
care a procesat o datagrama.
Don't Fragment -; Marcheaza o datagrama ca fiind o unitate indivizibila,
care nu trebuie sa fie fragmentata de catre echipamentul gateway.
3.1.6 Serviciul de raportare a erorilor
Unele erori detectate de catre protocoalele de la nivelul legaturii de date
sau raportate de catre protocoalele IP pereche trebuie indicate de catre nivelul
IP al unui host nivelelor superioare interesate de aceste erori. Aceste indicatii
descriu cateva clase de erori, incluzand argumente invalide, resurse
insuficiente si probleme de transmisie. Erorile care sunt raportate de IP nivelelor
superioare sunt in general determinate de fiecare implementare a IP.
3.1.7 Asignarea adreselor IP in functie de configuratia retelei
Unul dintre scopurile IP este de a asigura servicii intr-o mare varietate
de medii (retele si retele globale). Mecanismul de adresare IP este astfel conceput
incat sa permita trei clase diferite de configuratii ale retelelor.
Cele trei clase de adrese IP, notate A, B, C, sunt prevazute pentru retele care
au:
• A - multe hosturi distribuite in retele putine;
• B - o distributie medie a hosturilor si retelelor;
• C - putine hosturi in multe retele.
Aceste situatii sunt ilustrate in figura 5.
Figura 5. Tipuri de retele
Doar 32 de biti sunt alocati pentru a exprima o adresa IP completa, care consta
atat din adresa retelei, cat si din adresa hostului. O retea globala
care contine doar cateva retele va avea nevoie doar de cativa biti
pentru a identifica reteaua. Prin conventie, acestia vor fi cei mai semnificativi
biti dintre cei 32 biti disponibili pentru adresare. Pe de alta parte, o retea
globala cu multe retele va avea nevoie de mai multi biti pentru a exprima toate
adresele de retele componente, deci va ocupa mai multi biti dintre cei 32 disponibili
pentru a exprima adresa retelei (acesti biti vor fi tot cei mai seminficativi
biti ai adresei).
In cadrul unei retele, hosturile pot fi organizate in comunitati
mai mici, numite subretele. Forma adreselor IP permite, pentru proiectarea subretelelor,
mascarea unor biti pentru a putea fi folositi pentru identificarea subretelelor.
De exemplu, un campus poate avea o adresa clasa B, care cere 2 octeti pentru
portiunea alocata retelei si doi octeti pentru portiunea alocata hostului. In
loc sa existe 65.536 adrese de hosturi, se poate alege solutia divizarii campusului
in 254 subretele (un octet), fiecare avand cate 254 de hosturi
(celalalt octet). Trebuie facuta observatia ca doar 254 de hosturi, respectiv
retele sunt posibile, deoarece valorile 0 si 255 sunt rezervate).
Adresele IP, mastile si formatele pentru cele trei clasificari sunt ca in
tabelul 5:
Clasa
Cei 3 biti mai semnif. Biti pt. id. retea Biti pt. id. HOST Masca pt. id. retea
(hex)
A 0XX 7 24 FF000000
B 10X 14 16 FFFF0000
C 110 21 8 FFFFFF00
Tabelul 5. Clasificarea tipurilor de retele.
Dupa cum se poate observa din tabelul de mai sus, inspectand primii
trei biti ai unei adrese de IP se poate sti daca este o adresa de clasa A, B
sau C. Daca primul (cel mai semnificativ) bit este 0, atunci adresa este o adresa
clasa A. Daca primul bit este 1, trebuie inspectat al doilea bit. Daca primul
bit este 0 si al doilea bit este 0, atunci adresa este de clasa B. Daca primii
trei biti sunt 110, adresa este de clasa C. Daca primii trei biti sunt 111,
atunci avem de a face cu o adresa clasa D, care nu este folosita (este o combinatie
pastrata pentru dezvoltari ulterioare). Aceste combinatii sunt prezentate in
tabelul 6:
Clasa A primul bit 0
Clasa B primul bit 1 al doilea bit 0
Clasa C primul bit 1 al dilea bit 1 al treilea bit 0
Clasa D primul bit 1 al doilea bit 1 al treilea bit 1
Tabelul 6. Tipuri posibile de retele.
O adresa IP este de obicei reprezentata ca patru campuri separate de
cate un punct, fiecare camp reprezentand un octet (avand
deci valori cuprinse intre 0 si 255). Diferentele in interpretarile
acestor campuri depind de clasa careia ii apartine adresa respectiva.
Se observa posibilitatea identificarii clasei unei aderse IP prin examinarea
primului octet al adresei, ca in tabelul 7.
Valoare
Clasa
0?127 A
128?191 B
192?223 C
224?255 D
Tabelul 7. Identificarea clasei unei retele in functie de primul octet al adresei IP
De exemplu, 10.1.17.1 este o adresa de clasa A, 128.203.5.17 este o adresa
de clasa B, iar 192.1.2.10 este o adresa de clasa C.
3.1.8 Servicii pe care IP le cere nivelelor inferioare
IP nu ofera doar servicii pentru ULP. In conformitate cu principiile
ISO OSI, IP cere servicii nivelelor inferioare, incluzand transferul transparent
de date intre calculatoare gazda din cadrul aceleiasi subretele si raportarea
de erori. Datagramele pot sa nu fie receptionate in ordinea in care
au fost transmise si nici nu se garanteaza transmiterea lor fara erori. Nivelele
inferioare nivelului IP genereaza rapoarte privind erorile de la nivelul subretea
si cele inferioare, dupa caz. Cerintele de mesaje de eroare specifice sunt dependente
de subreteaua in cauza. De exemplu, in cazul unei subretele de tip
Ethernet, spre deosebire de WAN, in general nu se raporteaza erori, cu
exceptia cazului in care datagrama trebuie sa fie abandonata din cauza
aparitiei a 16 coliziuni consecutive. Cat timp livrarea unei datagrame
prin IP nu se pretinde ca ar fi infailibila, modul in care un modul IP
reactioneaza la informatiile de eroare provenite de la nivelele inferioare este
in mare masura nespecificat.
3.1.9 Internetwork Control Message Protocol (ICMP)
Nivelele superioare pot sa doreasca transmitera de mesaje catre modulele IP,
prin care sa anunte faptul ca unele aspecte privind comportarea hostului care
transmite pachete ar trebui modificate. Pentru aceasta se foloseste ICMP. In
general, mesaje ICMP sunt generate de catre statii care percep o eroare sau
o problema in cadrul unui pachet pe care un alt host l-a transmis. Eroarea
poate fi detectata ori de hostul destinatie, ori de un echipament gateway intermediar.
Daca reteaua, masina sau portul destinatie nu pot fi atinse, un gateway poate
folosi ICMP pentru a avertiza hostul sursa asupra acestui fapt. ICMP poate de
asemenea avertiza hostul sursa asupra rutelor preferate sau asupra congestiei
retelei.
ICMP este in mod oficial considerat ca facand parte din IP. Totusi,
datagramele ICMP sunt trimise folosind IP. Deci, ICMP este o parte functionala
a nivelului trei, dar este codificat ca si cand ar face parte din nivelul
patru.
3.1.10 Adress Resolution Protocol (ARP)
Toate statiile si echipamentele gateway sunt codificate folosind o adresa
IP , care este limitata la 32 biti. Transmiterea de pachete printr-o retea Ethernet,
de exemplu, cere adrese destinatie de 48 biti pentru a identifica nodul destinatie.
De aceea, se pot inventa, de exemplu, cei 16 biti aditionali. Dar, nici aceasta
nu este o solutie, deoarece adresele Ethernet sunt arbitrare si in general
sunt setate de catre producatorii cartelelor de cuplare la retea (ba mai mult,
primii 3 octeti ai adresei unei cartele Ethernet in general identifica
producatorul cartelei). Deci, nu vor exista in general statii care sa
aiba adrese legate in vreun fel. De aceea, un alt set de servicii trebuie
asigurat in cadrul nivelului retea, pentru a asigura transformarea unei
adrese IP de 32 biti intr-o adresa Ethernet de 48 biti. Astfel a aparut
ARP.
Atunci cand un proces de la nivelul retea doreste sa transmita un pachet
care are adresa Internet specificata, dar a carui adresa Ethernet nu este cunoscuta,
acel proces de la nivelul retea trebuie sa transmita o cerere ARP broadcast
pentru a afla adresa Ethernet a destinatiei. Un nod urmeaza sa raspunda cererii
de adresa Ethernet continuta in pachetul ARP, de obicei chiar nodul destinatie.
Cand este receptionat raspunsul, de obicei cei 48 biti sunt retinuti intr-un
cache, astfel incat atunci cand va fi facuta o cerere de transmitere
a unui pachet catre o destinatie, corespondentul Ethernet al adresei IP destinatie
este cautat in cache, iar daca este gasit, pachetul este transmis direct
si se poate evita o tranzactie ARP. Altfel, se genereaza un nou pachet ARP pentru
a se afla adresa Ethernet corespunzatoare destinatiei.
Deci, un host rezolva adresa destinatie in urmatorul mod: Cauta in
cache adresa Ethernet corespunzatoare. Daca nu o gaseste, apeleaza la ARP pentru
a transmite o cerere de adresa Ethernet in retea. Ca o alternativa, se
poate folosi un fisier de configuratie aflat la nivelul hostului sursa. Deci,
exista trei surse tipice din care se poate afla echivalentul Ethernet al unei
adrese IP:
- raspunsul la cereri ARP;
- memoria cache de adrese provenite de la raspunsuri ARP anteroiare;
- informatia continuta in fisierele de configuratie.
Specificarea protocolului ARP permite acestui protocol sa converteasca o datagrama
IP intr-o cerere ARP. Astfel, datagrama va fi 'consumata". De aceea,
ULP trebuie sa fie gata sa asigure din nou datagrama nivelului trei. Deoarece
functiile IP sunt considerate ca nedemne de incredere, pachetul transformat
in cerere ARP este vazut de nivelul transport (nivelul patru) ca un pachet
pierdut.
Trebuie remarcat ca ARP localizeaza hosturi aflate in aceeasi retea sau
subretea ca si hostul sursa. Utilitatea sa este limitata deci la un broadcast
Ethernet. Pentru a trimite pachete unui host dintr-o alta retea, datagrama trebuie
intai trimisa unui router atasat retelei sursa. in acest caz,
hostul sursa trebuie sa identifice adresa routerului, care apoi va trimite datagrama
catre reteaua destinatie.
Unele routere IP raspund la cereri ARP in numele unui host indepartat.
Hostul sursa este astfel "pacalit", deoarece va crede ca ii
raspunde hostul destinatie. Aceasta tehnica se numeste Proxy ARP. Folosirea
ei nu este in general recomandata, dar este necesara atunci cand
IP-ul unui host nu este suficient de sofisticat pentru a determina faptul ca
pachetul trebuie trimis unui router pentru a putea ajunge la destinatie.
3.1.11 Reverse Address Resolution Protocol (RARP)
Sa presupunem ca singurul lucru pe care o statie il stie la initializare
este propria sa adresa Ethernet, de obicei prin citirea informatiei de configuratie
proprii. Deci, respectiva statie nu isi cunoaste propria adresa IP. De
aceea, este necesar sa incerce sa afle aceasta adresa la initializare.
Pentru servirea acestui scop s-a implementat protocolul RARP, care permite unei
statii sa trimita un pachet broadcast prin care sa ceara informatii de tipul
"Cine sunt eu?", adica "Ce adresa IP am eu?". De obicei,
un host (tipic, un server RARP) trebuie sa fie pregatit sa execute inversul
unui ARP, adica sa trimita inapoi adresa IP corespunzatoare adresei Ethernet
primita. Acest protocol (RARP) este folosit doar la initializare. RARP nu mai
este apoi rulat pana la o noua initializare a sistemului. O valoare 8035h
a campului Type din cadrul headerului Ethernet identifica un pachet RARP.
Trebuie notat ca trebuie sa existe un server RARP pe fiecare segment Ethernet,
deoarece se folosesc pachete de tip broadcast, care nu sunt transferate mai
departe de catre routerele IP.
3.1.12 IP in cadrul retelelor IEEE 802
Formatul pachetelor in retelele IEEE 802 difera de formatul folosit
in retelele Ethernet. In particular, standardul IEEE 802.3 nu prevede
un camp Type, ca retelele Ethernet. Campul corespunzator este folosit
pentru a specifica lungimea pachetului. Campuri aditionale specifica informatii
despre Link Service Access Point (LSAP) si Subnetwork Access Point (SNAP), asa
cum sunt ele definite in standardul IEEE 802.2 Aceste protocoale nu sunt
inca oficial adoptate pentru folosirea de catre IP, dar par sa castige
din ce in ce mai mult teren.
Ethernet
IEEE 802.3
DA DA
SA SA
TYPE Length
DATA DSAP
SSAP
Control
Protocol ID
Type
DATA
Figura 6. Pozitia headerului SNAP.
SNAP va asigura o metoda standardizata de incapsulare a datagramelor IP
in cele trei tipuri de retele prevazute in standardul IEEE 802.
De asemenea, va asigura un standard pentru implementarea unor protocoale legate
de IP, cum ar fi ARP. Incapsularea despre care s-a vorbit arata ca in
figura 6.
Pentru a indica prezenta unui header SNAP, campurile DSAP si SSAP trebuie
sa aiba ambele valoarea 0AAh. Trebuie asignat un identificator de protocol SNAP
(poate sa aiba si valoarea zero) pentru a indica faptul ca urmeaza un pachet
Ethernet incapsulat. Campul Ethernet Type va indica daca acest pachet
este in format IP sau nu.
3.2 Nivelul patru - nivelul transport
Nivelul transport este al patrulea nivel din cadrul modelului referinta OSI
, dupa cum se arata si in figura 7.
Figura 7. Nivelul transport
3.2.1 Servicii specifice pentru nivelul transport
Nivelul transport este destinat sa asigure unei masini servicii de conexiune
si tranzactie. Nivelele inferioare ale modelului se ocupa de transmisia si rutarea
pachetelor intre diferite masini. Nivelul transport are menirea de a oferi
servicii de transmisie eficiente si sigure intre diferite procese si nu
intre masini.
Toate cele patru nivele conlucreaza pentru a oferi un serviciu de transport
complet, inlesnind o comunicatie robusta si transparenta pe baza carora
se pot construi apoi protocoale la nivelele superioare.
Scopul acestui nivel este de a oferi o cale de comunicatie intre diferite
procese care sa simuleze o legatura punct-la-punct, procesele nefiind interesate
de modul cum se face de fapt comunicatia.
Un protocol de la nivelul transport executa aceasta sarcina prin impartirea
datelor in pachete si transmisia (eventual retransmisia) lor pentru a
permite livrarea datelor in ordine, fara duplicate sau omisiuni.
TCP/IP asigura doua protocoale principale la nivelul patru: TCP (Transmission
Control Protocol) si UDP (User Datagram Protocol), cum se arata in figura
8.
Figura 8. TCP si UDP in cadrul nivelului transport
Au fost specificate si alte protocoale de transport, cum ar fi cele pentru
transportul semnalelor audio digitizate, dar acestea nu fac obiectul prezentului
proiect.
3.3 Protocolul de control al transmisiei (TCP)
TCP a fost proiectat sa opereze in diferite retele si sa ofere conexiuni
virtuale intre procese, prin transmisii sigure si in ordine ale
datelor utilizatorilor.
TCP reprezinta baza unui mecanism de comunicatie interprocese asezat peste cateva
nivele care ofera servicii nedemne de incredere, nivele in care
pot sa apara pierderi, duplicari, intarzieri, erori sau dezordonari
ale pachetelor. Este un protocol complex, care trebuie sa se ocupe, de exemplu,
de detectia pachetelor pierdute, retransmisia automata si probleme "patologice",
cum ar fi aparitia unor pachete duplicat intarziate.
Potentialul de a asigura robustete in fata unui mediu de transmisie nesigur,
fac din TCP un protocol foarte dorit de o multitudine de aplicatii care fac
apel la intercomunicatie.
TCP poate lucra si in medii constituite din retele interconectate. A fost
special proiectat sa lucreze deasupra protocolului IP, aflat la nivelul trei
din modelul ISO OSI (nivelul retea), ca in figura 9:
Figura 9. Relatia intre TCP si IP.
3.3.1 Caracteristici generale ale TCP
TCP are sarcina de a asigura servicii de comunicatie sigure intre procese
pereche aflate in cadrul unor calculatoare gazda distincte legate in
aceeasi retea sau in cadrul unui set de retele interconectate. Ofera transferuri
de date orientate pe conexiune la nivelul transport -; aceleasi servicii
de baza ca si Sequenced Packet Protocol (SPP) realizat in cadrul XNS.
TCP accepta o gama larga de ULP care au nevoie sa trimita date perechilor lor
aflate pe alte calculatoare gazda. TCP nu incearca sa impuna vreo structura
a datelor trimise de catre un protocol de la nivel superior.
TCP trateaza datele primite ca pe un sir continuu, lasand structurarea
mesajelor pe seama ULP, spre deosebire de SPP, care ajuta propriii clienti la
demarcarea mesajelor. TCP incearca, totusi, sa segmenteze datele in
unitati distincte astfel incat ele sa poata fi transmise si receptionate
ca pachete individuale. Fiecare astfel de unitate este numita segment.
Deoarece TCP a fost proiectat sa fie independent de caracteristici particulare
ale retelelor in cadrul carora opereaza, este data o definitie generala
a notiunii de pachet (sau segment) care permite existenta unor pachete cu o
lungime de pana la 65KB. TCP pereche pot sa-si transmita pachete care
au o lungime pana la lungimea maxima definita in standard (65KB).
In realitate, daca se in cearca schimbul unor pachete de o asemenea
lungime, nivelele IP vor fi nevoite sa imparta aceste pachete in
multe pachete de nivel mai coborat, pentru ca acestea sa corespunda lungimii
maxime a pachetelor in cadrul retelei din care hostul face parte. De obicei,
diversele implementari ale TCP lucreaza cu pachete care au lungimi adecvate
retelei la care sunt atasate.
TCP asigneaza cate un numar de ordine fiecarui octet al sirului infinit
de date al clientului sau. Atunci cand schimba segmente cu perechea sa,
TCP eticheteaza segmentul cu numarul de ordine al primului octet al segmentului
si cu numarul de octeti continuti in pachet. Aceasta permite TCP sa reasambleze
fluxul de date atunci cand il livreaza nivelelor superioare.
Daca este nevoit sa retransmita o serie de segmente, TCP poate sa reimpacheteze
datele, combinand doua segmente mai mici intr-un segment mai mare,
de exemplu. Acest mecanism, motivat de dorinta de a spori eficienta transmisiei
in cadrul unor retele larg distribuite, unde se pune problema minimizarii
raportului intre numarul de biti ai headerului si numarul de biti de date,
face ca TCP sa fie mai complex decat alte protocoale de transport.
Transmisia unui pachet folosind TCP poate sa decurga dupa cum urmeaza (figura
10):
(1) ULP sursa trimit un flux de date catre TCP pentru transmisie;
(2) TCP imparte fluxul de date in segmente, eventual inzestrate
cu informatii privind retransmisiile, ordonarea, codificarea nivelelor de precedenta
si de securitate, controlul fluxului de date si contolul erorilor. Apoi, segmentul
este trimis catre IP.
(3) IP executa propriile atributiuni (creand datagramele, executand
eventualele fragmentari etc.) si transmite datagramele prin nivelul legaturii
de date si nivelul fizic de-a lungul retelei pana la IP destinatie;
(4) IP destinatie executa procesele de control sau reasamblare necesare si livreaza
datagramele ca segmente catre TCP destinatie;
(5) TCP destinatie isi executa propriile servicii (inverse celor de la
pasul 2), restaurand datele fragmentate pentru a reconstitui fluxul original
de date transmis si livreaza aceste date catre ULP destinatie.
Figura 10. Procesul de transmisie
O descriere completa a serviciilor mentionate la pasul doi de mai sus este:
- Full-duplex - o conexiune TCP permite transmisia simultana in ambele
directii a datelor intre ULP corespunzatoare;
- Timely - atunci cand conditiile din cadrul sistemului nu permit trimiterea
la timp a datelor, asa cum a fost specificat de un parametru de time-out al
ULP, TCP anunta ULP asupra esecului si ULP poate atunci termina conexiunea sau
sa ia o alta decizie adecvata;
- Ordered - TCP livreaza datele catre ULP destinatie in ordinea in
care le-a primit de la ULP sursa;
- Labeled - TCP asociaza fiecarei conexiuni nivelele de precedenta si securitate
care i-au fost indicate de catre ULP in timpul stabilirii conexiunii.
Atunci cand informatiile nu sunt indicate de catre ULP-urile pereche,
TCP va folosi niste valori implicite. TCP stabileste o conexiune intre
o pereche de ULP doar daca informatiile de securitate indicate de cele doua
ULP care formeaza perechea sunt identice. Fiecare segment TCP este etichetat
cu valoarea negociata a indicatorului de securitate. Daca apare o neconcordanta
a nivelului de securitate in timpul unei conexiuni fata de nivelul negociat
la inceput, TCP va termina conexiunea;
- Flow controlled - TCP regularizeaza fluxul de date prin conexiune pentru a
preveni, printre altele, congestia interna a TCP, care ar duce la degradarea
sau esecul serviciilor oferite;
- Error checked - TCP livreaza datele lipsite de erori, garantand ca datele
sunt lipsite de erori in masura in care se poate garanta acest lucru
bazandu-se pe o suma de control.
3.3.2 Formatul headerului TCP
Headerul TCP este relativ mare, structura sa fiind prezentata in figura
11.
Figura 11. Headerul TCP.
In continuare este prezentata semnificatia fiecarui camp al headerului
TCP:
Source Port (Portul sursa)
Abreviere: SRC PORT
Lungimea campului: 16 biti
In principiu, acest camp contine o adresa care identifica un proces
sau un serviciu in cadrul host-ului sursa. Portul sursa nu face parte
din adresa IP; totusi, combinatia dintre adresa IP si numarul portului identifica
in mod unic ceea ce se cheama un soclu (socket) sau punct de acces intr-un
proces dat.
Destination Port (Portul destinatie)
Abreviere: DEST PORT
Lungimea campului: 16 biti
Acesta este un camp care identifica procesul sau serviciul in cardul
calculatorului gazda receptor.
Campurile Source Port si Destination Port sunt sub controlul calculatoarelor
gazda. Fiecare host poate sa decida pentru sine cum sa aloce porturile.
Sequence Number (Numar in cadrul secventei)
Abreviere: SEQ
Lungimea campului: 32 biti
Unitate: octeti
Gama: 0?232-1
Aceasta valoare reprezinta pozitia in cadrul secventei de octeti a primului
octet al unui segment. Totusi, daca este prezent un SYN, atunci valoarea acestui
camp reprezinta prima pozitie in cadrul secventei (Initial Sequence
Number - ISN) pentru acea conexiune; primul octet de date este numerotat ISN+1.
Campurile Sequence Number si Acknowledgement au ambele lungimea de 32
biti, permitand astfel specificarea unui spatiu de secventiere foarte
mare. (La o rata de transfer al datelor de 1000 octeti pe secunda, ar fi necesare
aproximativ 50 de zile pentru a fi necesara reluarea numerotarii cu numarul
in cadrul secventei zero. Data fiind durata maxima de viata a unui pachet
- 255 secunde - nu este posibil ca un pachet vechi sa aiba acelasi numar de
secventa ca si unul nou si sa para ca ar fi un pachet duplicat sau sa fie receptionat
in locul unui pachet care nu a fost livrat din cauza unor erori).
Acknowledgement Number (Numar de confirmare)
Abreviere: ACK
Lungimea campului: 32 biti
Unitate: octeti
Gama: 0?232-1
Daca este setat bitul de control ACK, acest camp contine valoarea numarului
de secventa al urmatorului octet pe care receptorul se asteapta sa-l primeasca.
Data Offset (Deplasamentul datelor)
Lungimea campului: 4 biti
Unitate: 32 biti
Gama: 5?15, implicit 5
Acest camp indica numarul de cuvinte de 32 de biti continute in
cadrul headerului TCP. Folosind aceasta valoare, poate fi calculat deplasamentul
datelor in cadrul pachetului. Aceasta informatie este necesara datorita
lungimii variabile a campului Options. Headerul TCP, chiar daca include
un camp Options, are o lungime care este un multiplu de 32 biti.
Reserved (Rezervat)
Lungimea campului: 6 biti
Acest camp este rezervat pentru extensii ulterioare. Trebuie sa aiba toti
bitii zero.
Control Flags (Indicatori de control)
Lungimea campului: 6 biti
Acest camp contine un numar de indicatori de cate un bit fiecare,
folositi pentru stabilirea, terminarea si mentinerea unei conexiuni:
- URG - Urgent Pointer. URG=1 indica faptul ca este folosit campul Urgent
Pointer pentru a localiza date urgente, prin intermediul unui offset exprimat
in octeti fata de numarul de secventa curent. Acest pointer poate fi necesar
in cazul apa