Explorați Cărți electronice
Categorii
Explorați Cărți audio
Categorii
Explorați Reviste
Categorii
Explorați Documente
Categorii
IPX/SPX, TCP/IP
1 Protocolul IPX
Netware IPX este un protocol bazat pe datagrame (fără conexiune). Termenul fără
conexiune înseamnă că atunci când o aplicaţie foloseşte IPX pentru a comunica cu alte aplicaţii din
cadrul reţelei, nu este stabilită nici o conexiune sau cale de date între cele două aplicaţii. Deci,
pachetele IPX sunt trimise către destinaţiile lor, dar nu se garantează şi nici nu se verifică faptul că
acestea ajung sau nu la destinaţie. Termenul datagramă (datagram) desemnează faptul că un pachet
este tratat ca o entitate individuală, care nu are nici o legătură sau relaţie secvenţială cu alte pachete.
IPX execută funcţii echivelente nivelului reţea din modelul OSI. Aceste funcţii includ
adresare, rutare şi transfer de pachete pentru schimburi de informaţie, funcţiile IPX fiind dedicate
transmisiei de pachete în cadrul reţelei.
Avantaje şi dezavantaje
Deoarece IPX execută doar sarcinile nivelului reţea din modelul OSI, oferă beneficiile
vitezei şi performanţei care rezultă din încărcarea mică pe care o produce. Totuşi, serviciile IPX
sunt insuficiente dacă sunt necesare garanţiile nivelului transport. IPX este deci folosit în cazul în
care este potrivit tipului particular de aplicaţie, alegând în funcţie de caz IPX sau SPX.
Principalele avantaje şi dezavantaje ale IPX sunt:
Un mesaj se poate trimite folosind IPX prin plasarea mesajului în porţiunea de date a unui
pachet IPX, la fel ca şi punerea unui mesaj într-un plic. Headerul pachetului IPX trebuie să conţină
reţeaua destinaţie, numerele de nod şi soclu (adică adresa la care trebuie trimis pachetul). IPX
trimite fiecare pachet individual prin diferite subreţele (posibil pe diferite rute pentru a profita de
traficul mai scăzut) până când pachetul atinge destinaţia. Deoarece fiecare pachet este o entitate
individuală, rutarea şi secvenţierea pachetelor poate să varieze.
Când pachetul ajunge, sursa nu primeşte nici o informaţie privind livrarea cu succes a
pachetului. Doar dacă destinaţia ia hotărârea să trimită un pachet către sursă, sursa poate fi sigură de
ajungerea pachetului la destinaţie. Oricum, IPX trimite cu succes aproximativ 95% din numărul
pachetelor.
1
1.1 Structura pachetului IPX
Pachetul IPX este identic din punct de vedere al structurii cu un pachet Xerox IDP. El are
două părţi: un header de 30 de octeţi şi o porţiune de date cu o lungime între 0 şi 546 octeţi.
Lungimea minimă a pachetului este 30 octeţi (doar headerul), iar lungimea sa maximă este 576
octeţi (30+546). Structura pachetului IPX este prezentată în tabelul 1.
Toate câmpurile sunt structurate high-low, adică cel mai semnificativ octet al câmpului este
primul.
Length (Lungime)
Acest câmp conţine lungimea întregului pachet (header+date). Valoarea lui minimă este 30,
iar cea maximă 576. IPX setează acest câmp.
2
• 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 să seteze tipul pachetului la 0 sau 4, iar utilizatorii SPX trebuie să-i
dea valoarea 5.
Xerox a asignat pentru Novell un set de socluri pentru folosirea de către NetWare:
• 451 - File Service Packet;
• 452 - Service Advertising Packet;
• 453 - Routing Informaton Packet;
• 455 - NetBIOS Packet;
• 456 - Diagnostic Packet.
2 Protocolul SPX
SPX este identic cu IPX cu excepţia faptului că oferă servicii suplimentare conferite de
faptul că se află la nivelul transport din modelul OSI, spre deosebire de IPX, aflat la nivelul reţea.
Aceste funcţii suplimentare fac din SPX un protocol orientat către conexiune. Aceasta înseamnă că
înainte ca un pachet SPX să fie trimis, se stabileşte o conexiune între sursă şi destinaţie. SPX
3
garantează livrarea datelor, secvenţierea pachetelor, detectarea şi corectarea erorilor şi suprimarea
pachetelor duplicate.
Avantaje şi dezavantaje
Un pachet SPX este identic ca structură cu un pachet IPX, cu excepţia faptului că are 12
octeţi suplimentari în header. Pachetul SPX constă din două părţi: un header de 42 de octeţi şi un
câmp de date care poate conţine între 0 si 534 octeţi. Lungimea minimă a pachetului este de 42
octeţi (doar headerul), iar cea maximă de 576 octeţi (42+534).
Câmpurile pachetului SPX care au aceeaşi denumire ca şi cele din cadrul pachetelor IPX au
şi aceeaşi semnificaţie ca şi acestea, cu specificarea că niciodată în cadrul unui pachet SPX nu se
permite o valoare 0FFFFFFFFFFFFh a adresei nodului destinaţie (nu sunt permise broadcast-uri),
iar SPX încarcă totdeauna valoarea 5 în câmpul Packet Type. În tabelul 2 este prezentată structura
pachetului SPX:
4
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]
Clienţii nu trebuie să folosească sau să modifice niciodată biţii nedefiniţi, de confirmare sau
sistem. Aceştia sunt rezervaţi pentru folosirea de către SPX.
5
soclu; demultiplexarea este necesară deoarece conexiunile active concurente de pe orice maşină pot
folosi acelaşi număr de soclu.
3 Protocoalele TCP/IP
Transmission Control Protocol (TCP) şi Internet Protocol (IP) se referă de fapt la un set de
protocoale şi servicii care împreună permit calculatoarelor legate în reţea să se interconecteze pentru
a realiza transferuri de fişiere, servicii de poştă electronică şi sesiuni de lucru interactiv la distanţă.
TCP este folosit pe scară largă în mediile academice şi inginereşti (şi, de exemplu, în cadrul
reţelei guvernamentale americane).
De asemenea, datorită marelui număr de programe apărute pe piaţă care folosesc TCP/IP,
acest set de protocoale a început să fie din ce în ce mai răspândit în mediul comercial, ca şi în cadrul
reţelelor locale de calculatoare.
6
Figura 1. O privire din punct de vedere logic asupra structurii Internet la nivelul IP
Arhitectura internet permite o ierarhie de reţele independente logic pe două nivele. Nivelul
cel mai de sus este conexiunea între reţele pereche. O reţea poate să conţină o colecţie de subreţele
pereche. Reţelele şi subreţelele pot să conţină hosturi ataşate direct, după cum se poate observa în
figura 1.
Singura diferenţă între reţele şi subreţele constă în modul în care sunt interpretate adresele
IP şi depinde de localizarea modulului IP specificat de adresă. În majoritatea cazurilor, subreţelele
pot fi numite pentru simplitate reţele. În general, termenul "subreţea" este folosit doar în cazul în
care este necesar să se facă distincţia între diferitele nivele ierarhice ale internet.
IP este limitat la funcţiile de bază necesare transmisiei unui bloc de date (datagram) prin
internet. Fiecare bloc de date este o entitate independentă, nefiind legată de alte "datagrame"
(traducerea, poate puţin forţată, a termenului "datagram" este preluată din cartea "Reţele de
calculatoare", cu semnificaţia "mesaj fără confirmare"). Nivelul IP al hostului asigură servicii
protocoalelor de la nivelul transport şi foloseşte serviciile nivelului legăturii de date pentru a
transmite datagramele hostului destinaţie. IP nu pretinde că ar oferi servicii sigure. Calculatoarele
gazdă (hosts) vor ignora datagramele atunci când nu au resurse suficiente pentru procesare şi nu vor
detecta datagramele pierdute sau ignorate de către nivelul legăturii de date.
IP izolează protocoalele de pe nivelele superioare de caracteristicile specifice reţelei.
Serviciile adiţionale furnizate de către IP includ diferite nivele de comportare a transmisiei,
implicând caracteristici ca: precedenţă, nivel de încredere, întârzieri. IP permite de asemenea
etichetarea datelor, necesară în medii sigure, pentru a asocia datelor informaţii de securitate.
Transmisia începe atunci când un protocol de pe nivelul superior transmite date către IP
pentru livrare. IP împachetează datele în format internet datagram şi le transmite protocolului de pe
nivelul legăturii de date pentru transmisie prin reţeaua locală. Dacă hostul destinaţie se află legat
direct în reţeaua locală, IP trimite pachetul direct acestui host. Dacă destinaţia se află într-o altă
reţea, IP trimite pachetul unui gateway IP local pentru transmisie. Acest gateway va trimite pachetul
prin următoarea reţea hostului destinaţie sau unui alt gateway. Astfel, datagrama se propagă prin
setul de reţele interconectate de la un modul IP la altul, până când aceasta ajunge la destinaţie.
7
Pachetele transmise de către hostul numărul 1 pot să circule pe una dintre cele două căi prezentate.
(figura 2)
8
3.1.1 Headerul IP
Version (Versiune)
Abreviere: VER
Lungimea câmpului: 4 biţi
Câmpul Version indică formatul headerului IP. Va fi prezentată în continuare versiunea 4,
ultima până la data apariţiei materialului bibliografic avut la dispoziţie (1988). Versiunile 1÷ 3 nu
mai erau deja folosite încă la acea dată.
Câmpul Version indică versiunea protocolului căreia îi aparţine pachetul. Includerea
versiunii protocolului în fiecare pachet face posibilă dezvoltarea de noi protocoale şi testarea
acestora fără a afecta buna funcţionare a reţelei.
Figura 3. Headerul IP
9
de serviciu pe care îl doreşte. Câmpul permite specificarea precedenţei pachetului, nivelul dorit de
încredere şi nivelul presupus de consumare a resurselor, după cum se va arăta mai jos.
Tipul de serviciu se foloseşte pentru a specifica reţelelor de tranzit ce serviciu se doreşte de
la acestea. Reţelele de tranzit decid dacă pot sau doresc să se achite de serviciile cerute.
Identification (Identificare)
Abreviere: ID
Lungimea câmpului: 16 biţi
Câmpul reprezintă o valoare de identificare folosită pentru a asocia fragmentele unui pachet.
ULP (Upper Layer Protocol) care transmite de obicei generează această valoare ca pe un parametru
al interfeţei. Altfel, IP generează acest câmp în aşa fel încât el să fie unic pentru fiecare ULP care
transmite.
Câmpul Identification indică numărul pachetului pentru a permite calculatorului gazdă
destinaţie să determine cărui pachet îi aparţine fragmentul care tocmai a sosit.
Flags (Indicatori)
Abreviere: -
Lungimea câmpului: 3 biţi
Acest câmp conţine indicatorii de control Don't Fragment (a nu se fragmenta, care inhibă
fragmentarea pachetului de către IP) şi More Fragments (care ajută la identificarea poziţiei unui
fragment în pachetul original).
Indicatorul Don't Fragment este destinat pentru folosirea cu calculatoare gazdă care nu sunt
capabile să reconstituie pachetul din fragmentele din care este format. De fapt, multe implementări
ale TCP/IP nu permit fragmentarea şi reconstituirea pachetelor.
10
Unitatea de timp utilizată pentru măsurarea timpului de viaţă al pachetului este secunda,
deci timpul maxim de viaţă al unui pachet este 255 secunde (4,25 minute).
Valoarea câmpului este scăzută cu cel puţin 1 de către fiecare router prin care trece pachetul.
Protocol (Protocol)
Abreviere: PROT
Lungimea câmpului: 16 biţi
Acest câmp arată care ULP (Upper Level Protocol) trebuie să recepţioneze porţiunea de date
a unui pachet. Numerele asignate ULP-urilor uzuale sunt disponibile de la DoD Executive Agent
for Protocols. Unele vor fi arătate mai jos, în tabelul 3.
Câmpul Protocol specifică protocolul particular de la nivelul 4 căruia îi aparţine pachetul (de
exemplu, TCP sau alt protocol echivalent).
11
Source Address (Adresa sursei)
Abreviere: SOURCE
Lungimea câmpului: 32 biţi
Acest câmp conţine adresa Internet a calculatorului gazdă care a generat pachetul.
Options (Opţiuni)
Abreviere: OPT
Lungimea câmpului: variabilă
Acest câmp a fost prevăzut pentru a permite unor versiuni ulterioare ale protocolului să
includă informaţii care nu sunt prezente în implementarea originală, să permită experimentatorilor s
încerce noi idei şi să evite alocarea permanentă a unor biţi în cadrul headerului pentru informaţii rar
folosite.
Lungimea acestui câmp depinde de numărul şi tipurile opţiunilor asociate cu pachetul.
Opţiunile definite oficial sunt:
12
Numele reţelei Maxim [biţi]
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
13
Figura 4. Fragmentarea unui pachet cu lungimea de 10 octeţi
în cazul unei reţele care acceptă doar pachete
cu lungimea de până la 8 octeţi.
14
3.1.3 Setarea parametrilor IP
IP poate să-şi adapteze serviciile pentru a permite existenţa unei diversităţi de ULP-uri. De
exemplu, un protocol de la nivelul transport care are cerinţe de lucru în timp real, cum ar fi NVP
(Network Voice Protocol) poate să folosească serviciul IP de transmisie de pachete într-un mod care
diferă de metodele utilizate de TCP, de exemplu.
Există metode specifice prin care ULP-urile pot să identifice serviciile care vor fi oferite de
către IP şi să adapteze aceste servicii într-o configuraţie particulară a reţelei.
De exemplu, dacă se doreşte ca un pachet (datagramă) să parcurgă o rută specifică în drumul
său către destinaţie, o astfel de rută (numită Source Route) poate fi specificată de către ULP. Fiecare
modul IP este capabil să trimită datagrama conform rutei specificate, eventual mărită de către
mecanismul standard de rutare, dacă este necesar.
Parametrii setabili ai IP se pot încadra în două categorii:
Acele ULP care ştiu că datagramele lor vor trece prin echipamente gateway care pot efectua
modificări asupra pachetelor care trec prin ele, pot să sugereze acestor echipamente gateway
tratamentul pe care acestea să-l aplice fiecăruia dintre pachetele trimise. Aceste sugestii se
realizează prin intermediul parametrului TOS (Type of Service) din cadrul headerului pachetului IP.
Semnificaţia acestui câmp poate fi:
Transmision mode - datagram versus stream (Modul de transmisie – datagramă sau şir de
datagrame) - Modul Datagram (implicit) indică faptul că ULP consideră această datagramă ca fiind
un eveniment sporadic, necorelat cu datagrame trecute sau viitoare. Modul Stream cere
echipamentului gateway să minimizeze întârzierile şi dispersia întârzierilor între transmisiile
pachetelor similare, prin rezervarea resurselor reţelei.
Resource Tradeoff – indică dacă este mai important să se onoreze cererea de "High
Precedence" sau cea de "High Reliability" în cazul în care echipamentul gateway nu poate să le
asigure pe ambele în acelaşi timp.
Noţiunea de Stream Mode versus Datagram Mode de obicei nu este folosită în cazul
reţelelor locale sau WAN terestre, dar se foloseşte în cazul reţelelor bazate pe rutarea prin satelit,
deoarece routerele aflate pe sateliţi în general pot să ceară alocarea unei benzi de transmisie în
avans. Dacă routerul constată că începe să recepţioneze pachete care au bitul Stream Mode setat, el
15
poate să anticipeze primirea mai multor pachete care fac parte din acelaşi şir şi deci va cere staţiilor
sale pereche alocarea într-un viitor apropiat a unei benzi de frecvenţă mai mari pentru a se asigura
că un pachet care va fi recepţionat nu va fi întârziat în momentul recepţiei pentru a se cere alocarea
unei benzi de frecvenţă în timp real (routerele aflate pe sateliţi nu pot să comunice între ele
instantaneu; pachetele care trec prin ele au cel puţin o întârziere de un sfert de secundă).
Headerul IP poate să fie expandat pentru a include unele câmpuri opţionale pentru a cere
servicii IP în nodurile sursă, destinaţie sau intermediare (de rutare). Câteva dintre opţiunile definite
sunt:
Security Labeling – Identifică nivelul de securitate (secret, strict secret etc.) al datagramei
pentru serverele care conţin informaţii secrete.
Source Routing – Selectează setul de module IP din echipamentele gateway prin care trebuie
să treacă pachetul, în acord cu specificaţia celui care trimite pachetul. Permite unui nod să selecteze
reţelele prin care urmează să tranziteze pachetul şi reţelele prin care nu trebuie să tranziteze
pachetul, astfel îmbunătăţind nivelul de securitate al unor anumite tipuri de tranzacţii. Source
Routing poate fi specificată ca fiind "slabă" (lăsându-se echipamentului gateway unele libertăţi) sau
"strictă".
Route Recording - Cere înregistrarea modulelor IP din cadrul echipamentelor gateway prin
care tranzitează pachetul, astfel încât hostul destinaţie poate să ştie toate locurile prin care a trecut
pachetul.
Stream Identification – Identifică şirul de pachete căruia îi aparţine pachetul; este folosit în
cadrul serviciilor de tip stream.
Unele erori detectate de către protocoalele de la nivelul legăturii de date sau raportate de
către protocoalele IP pereche trebuie indicate de către nivelul IP al unui host nivelelor superioare
interesate de aceste erori. Aceste indicaţii descriu câteva clase de erori, incluzând argumente
invalide, resurse insuficiente şi probleme de transmisie. Erorile care sunt raportate de IP nivelelor
superioare sunt în general determinate de fiecare implementare a IP.
Unul dintre scopurile IP este de a asigura servicii într-o mare varietate de medii (reţele şi
reţele globale). Mecanismul de adresare IP este astfel conceput încât să permită trei clase diferite de
configuraţii ale reţelelor. Cele trei clase de adrese IP, notate A, B, C, sunt prevăzute pentru reţele
care au:
• A - multe hosturi distribuite în reţele puţine;
• B - o distribuţie medie a hosturilor şi reţelelor;
• C - puţine hosturi în multe reţele.
16
Aceste situaţii sunt ilustrate în figura 5.
Doar 32 de biţi sunt alocaţi pentru a exprima o adresă IP completă, care constă atât din
adresa reţelei, cât şi din adresa hostului. O reţea globală care conţine doar câteva reţele va avea
nevoie doar de câţiva biţi pentru a identifica reţeaua. Prin convenţie, aceştia vor fi cei mai
semnificativi biţi dintre cei 32 biţi disponibili pentru adresare. Pe de altă parte, o retea globală cu
multe reţele va avea nevoie de mai mulţi biţi pentru a exprima toate adresele de reţele componente,
deci va ocupa mai mulţi biţi dintre cei 32 disponibili pentru a exprima adresa reţelei (aceşti biţi vor
fi tot cei mai seminficativi biţi ai adresei).
În cadrul unei reţele, hosturile pot fi organizate în comunităţi mai mici, numite subreţele.
Forma adreselor IP permite, pentru proiectarea subreţelelor, mascarea unor biţi pentru a putea fi
folosiţi pentru identificarea subreţelelor.
De exemplu, un campus poate avea o adresă clasă B, care cere 2 octeţi pentru porţiunea
alocată reţelei şi doi octeţi pentru porţiunea alocată hostului. În loc să existe 65.536 adrese de
hosturi, se poate alege soluţia divizării campusului în 254 subreţele (un octet), fiecare având câte
254 de hosturi (celălalt octet). Trebuie făcută observaţia că doar 254 de hosturi, respectiv reţele sunt
posibile, deoarece valorile 0 şi 255 sunt rezervate).
Adresele IP, măştile şi formatele pentru cele trei clasificări sunt ca în tabelul 5:
Clasa Cei 3 biţi mai Biţi pt. id. Biţi pt. id. Mască pt. id. reţea
semnif. reţea HOST (hex)
A 0XX 7 24 FF000000
B 10X 14 16 FFFF0000
C 110 21 8 FFFFFF00
După cum se poate observa din tabelul de mai sus, inspectând primii trei biţi ai unei adrese
de IP se poate şti dacă este o adresă de clasă A, B sau C. Dacă primul (cel mai semnificativ) bit este
17
0, atunci adresa este o adresă clasă A. Dacă primul bit este 1, trebuie inspectat al doilea bit. Dacă
primul bit este 0 şi al doilea bit este 0, atunci adresa este de clasă B. Dacă primii trei biţi sunt 110,
adresa este de clasă C. Dacă primii trei biţi sunt 111, atunci avem de a face cu o adresă clasă D, care
nu este folosită (este o combinaţie păstrată pentru dezvoltări ulterioare). Aceste combinaţii sunt
prezentate în tabelul 6:
O adresă IP este de obicei reprezentată ca patru câmpuri separate de câte un punct, fiecare
câmp reprezentând un octet (având deci valori cuprinse între 0 şi 255). Diferenţele în interpretările
acestor câmpuri depind de clasa căreia îi aparţine adresa respectivă. Se observă posibilitatea
identificării clasei unei aderse IP prin examinarea primului octet al adresei, ca în tabelul 7.
Valoare Clasă
0÷ 127 A
128÷ 191 B
192÷ 223 C
224÷ 255 D
De exemplu, 10.1.17.1 este o adresă de clasă A, 128.203.5.17 este o adresă de clasă B, iar
192.1.2.10 este o adresă de clasă C.
IP nu oferă doar servicii pentru ULP. În conformitate cu principiile ISO OSI, IP cere servicii
nivelelor inferioare, incluzând transferul transparent de date între calculatoare gazdă din cadrul
aceleiaşi subreţele şi raportarea de erori. Datagramele pot să nu fie recepţionate în ordinea în care au
fost transmise şi nici nu se garantează transmiterea lor fără erori. Nivelele inferioare nivelului IP
generează rapoarte privind erorile de la nivelul subreţea şi cele inferioare, după caz. Cerinţele de
mesaje de eroare specifice sunt dependente de subreţeaua în cauză. De exemplu, în cazul unei
subreţele de tip Ethernet, spre deosebire de WAN, în general nu se raportează erori, cu excepţia
cazului în care datagrama trebuie să fie abandonată din cauza apariţiei a 16 coliziuni consecutive.
Cât timp livrarea unei datagrame prin IP nu se pretinde că ar fi infailibilă, modul în care un modul
IP reacţionează la informaţiile de eroare provenite de la nivelele inferioare este în mare măsură
nespecificat.
18
3.1.9 Internetwork Control Message Protocol (ICMP)
Nivelele superioare pot să dorească transmitera de mesaje către modulele IP, prin care să
anunţe faptul că unele aspecte privind comportarea hostului care transmite pachete ar trebui
modificate. Pentru aceasta se foloseşte ICMP. În general, mesaje ICMP sunt generate de către staţii
care percep o eroare sau o problemă în cadrul unui pachet pe care un alt host l-a transmis. Eroarea
poate fi detectată ori de hostul destinaţie, ori de un echipament gateway intermediar. Dacă reţeaua,
maşina sau portul destinaţie nu pot fi atinse, un gateway poate folosi ICMP pentru a avertiza hostul
sursă asupra acestui fapt. ICMP poate de asemenea avertiza hostul sursă asupra rutelor preferate sau
asupra congestiei reţelei.
ICMP este în mod oficial considerat ca făcând parte din IP. Totuşi, datagramele ICMP sunt
trimise folosind IP. Deci, ICMP este o parte funcţională a nivelului trei, dar este codificat ca şi când
ar face parte din nivelul patru.
Toate staţiile şi echipamentele gateway sunt codificate folosind o adresă IP , care este
limitată la 32 biţi. Transmiterea de pachete printr-o reţea Ethernet, de exemplu, cere adrese
destinaţie de 48 biţi pentru a identifica nodul destinaţie. De aceea, se pot inventa, de exemplu, cei 16
biţi adiţionali. Dar, nici aceasta nu este o soluţie, deoarece adresele Ethernet sunt arbitrare şi în
general sunt setate de către producătorii cartelelor de cuplare la reţea (ba mai mult, primii 3 octeţi ai
adresei unei cartele Ethernet în general identifică producătorul cartelei). Deci, nu vor exista în
general staţii care să aibă adrese legate în vreun fel. De aceea, un alt set de servicii trebuie asigurat
în cadrul nivelului reţea, pentru a asigura transformarea unei adrese IP de 32 biţi într-o adresă
Ethernet de 48 biţi. Astfel a apărut ARP.
Atunci când un proces de la nivelul reţea doreşte să transmită un pachet care are adresa
Internet specificată, dar a cărui adresă Ethernet nu este cunoscută, acel proces de la nivelul reţea
trebuie să transmită o cerere ARP broadcast pentru a afla adresa Ethernet a destinaţiei. Un nod
urmează să răspundă cererii de adresă Ethernet conţinută în pachetul ARP, de obicei chiar nodul
destinatie. Când este recepţionat răspunsul, de obicei cei 48 biţi sunt reţinuţi într-un cache, astfel
încât atunci când va fi făcută o cerere de transmitere a unui pachet către o destinaţie, corespondentul
Ethernet al adresei IP destinaţie este căutat în cache, iar dacă este găsit, pachetul este transmis direct
şi se poate evita o tranzacţie ARP. Altfel, se generează un nou pachet ARP pentru a se afla adresa
Ethernet corespunzătoare destinaţiei.
Deci, un host rezolvă adresa destinaţie în următorul mod: Caută în cache adresa Ethernet
corespunzătoare. Dacă nu o găseşte, apelează la ARP pentru a transmite o cerere de adresă Ethernet
în reţea. Ca o alternativă, se poate folosi un fişier de configuraţie aflat la nivelul hostului sursă.
Deci, există trei surse tipice din care se poate afla echivalentul Ethernet al unei adrese IP:
19
Unele routere IP răspund la cereri ARP în numele unui host îndepărtat. Hostul sursă este
astfel "păcălit", deoarece va crede că îi răspunde hostul destinaţie. Această tehnică se numeşte
Proxy ARP. Folosirea ei nu este în general recomandată, dar este necesară atunci când IP-ul unui
host nu este suficient de sofisticat pentru a determina faptul că pachetul trebuie trimis unui router
pentru a putea ajunge la destinaţie.
Să presupunem că singurul lucru pe care o staţie îl ştie la iniţializare este propria sa adresă
Ethernet, de obicei prin citirea informaţiei de configuraţie proprii. Deci, respectiva staţie nu îşi
cunoaşte propria adresă IP. De aceea, este necesar să încerce să afle această adresă la iniţializare.
Pentru servirea acestui scop s-a implementat protocolul RARP, care permite unei staţii să trimită un
pachet broadcast prin care să ceară informaţii de tipul "Cine sunt eu?", adică "Ce adresă IP am eu?".
De obicei, un host (tipic, un server RARP) trebuie să fie pregătit să execute inversul unui ARP,
adică să trimită înapoi adresa IP corespunzătoare adresei Ethernet primită. Acest protocol (RARP)
este folosit doar la iniţializare. RARP nu mai este apoi rulat până la o nouă iniţializare a sistemului.
O valoare 8035h a câmpului Type din cadrul headerului Ethernet identifică un pachet RARP.
Trebuie notat că trebuie să existe un server RARP pe fiecare segment Ethernet, deoarece se folosesc
pachete de tip broadcast, care nu sunt transferate mai departe de către routerele IP.
Formatul pachetelor în reţelele IEEE 802 diferă de formatul folosit în reţelele Ethernet. În
particular, standardul IEEE 802.3 nu prevede un câmp Type, ca reţelele Ethernet. Câmpul
corespunzător este folosit pentru a specifica lungimea pachetului. Câmpuri adiţionale specifică
informaţii despre Link Service Access Point (LSAP) şi Subnetwork Access Point (SNAP), aşa cum
sunt ele definite în standardul IEEE 802.2 Aceste protocoale nu sunt încă oficial adoptate pentru
folosirea de către IP, dar par să câştige din ce în ce mai mult teren.
DATA
SSAP
Control
Protocol ID
Type
DATA
20
SNAP va asigura o metodă standardizată de încapsulare a datagramelor IP în cele trei tipuri
de reţele prevăzute în standardul IEEE 802. De asemenea, va asigura un standard pentru
implementarea unor protocoale legate de IP, cum ar fi ARP. Încapsularea despre care s-a vorbit
arată ca în figura 6.
Pentru a indica prezenţa unui header SNAP, câmpurile DSAP şi SSAP trebuie să aibă ambele
valoarea 0AAh. Trebuie asignat un identificator de protocol SNAP (poate să aibă şi valoarea zero)
pentru a indica faptul că urmează un pachet Ethernet încapsulat. Câmpul Ethernet Type va indica
dacă acest pachet este în format IP sau nu.
Nivelul transport este al patrulea nivel din cadrul modelului referinţă OSI , după cum se
arată şi în figura 7.
Nivelul transport este destinat să asigure unei maşini servicii de conexiune şi tranzacţie.
Nivelele inferioare ale modelului se ocupă de transmisia şi rutarea pachetelor între diferite maşini.
Nivelul transport are menirea de a oferi servicii de transmisie eficiente şi sigure între diferite
procese şi nu între maşini.
Toate cele patru nivele conlucrează pentru a oferi un serviciu de transport complet, înlesnind
o comunicaţie robustă şi transparentă pe baza cărora se pot construi apoi protocoale la nivelele
superioare.
Scopul acestui nivel este de a oferi o cale de comunicaţie între diferite procese care să
simuleze o legătură punct-la-punct, procesele nefiind interesate de modul cum se face de fapt
comunicaţia.
Un protocol de la nivelul transport execută această sarcină prin împărţirea datelor în pachete
şi transmisia (eventual retransmisia) lor pentru a permite livrarea datelor în ordine, fără duplicate
sau omisiuni.
TCP/IP asigură două protocoale principale la nivelul patru: TCP (Transmission Control
Protocol) şi UDP (User Datagram Protocol), cum se arată în figura 8.
21
Figura 8. TCP şi UDP în cadrul nivelului transport
TCP a fost proiectat să opereze în diferite reţele şi să ofere conexiuni virtuale între procese,
prin transmisii sigure şi în ordine ale datelor utilizatorilor.
TCP reprezintă baza unui mecanism de comunicaţie interprocese aşezat peste câteva nivele
care oferă servicii nedemne de încredere, nivele în care pot să apară pierderi, duplicări, întârzieri,
erori sau dezordonări ale pachetelor. Este un protocol complex, care trebuie să se ocupe, de
exemplu, de detecţia pachetelor pierdute, retransmisia automată şi probleme "patologice", cum ar fi
apariţia unor pachete duplicat întârziate.
Potenţialul de a asigura robusteţe în faţa unui mediu de transmisie nesigur, fac din TCP un
protocol foarte dorit de o multitudine de aplicaţii care fac apel la intercomunicaţie.
TCP poate lucra şi în medii constituite din reţele interconectate. A fost special proiectat să
lucreze deasupra protocolului IP, aflat la nivelul trei din modelul ISO OSI (nivelul reţea), ca în
figura 9:
22
3.3.1 Caracteristici generale ale TCP
TCP are sarcina de a asigura servicii de comunicaţie sigure între procese pereche aflate în
cadrul unor calculatoare gazdă distincte legate în aceeaşi reţea sau în cadrul unui set de reţele
interconectate. Oferă transferuri de date orientate pe conexiune la nivelul transport – aceleaşi
servicii de bază ca şi Sequenced Packet Protocol (SPP) realizat în cadrul XNS.
TCP acceptă o gamă largă de ULP care au nevoie să trimită date perechilor lor aflate pe alte
calculatoare gazdă. TCP nu încearcă să impună vreo structură a datelor trimise de către un protocol
de la nivel superior.
TCP tratează datele primite ca pe un şir continuu, lăsând structurarea mesajelor pe seama
ULP, spre deosebire de SPP, care ajută propriii clienţi la demarcarea mesajelor. TCP încearcă,
totuşi, să segmenteze datele în unităţi distincte astfel încât ele să poată fi transmise şi recepţionate ca
pachete individuale. Fiecare astfel de unitate este numită segment.
Deoarece TCP a fost proiectat să fie independent de caracteristici particulare ale reţelelor în
cadrul cărora operează, este dată o definiţie generală a noţiunii de pachet (sau segment) care permite
existenţa unor pachete cu o lungime de până la 65KB. TCP pereche pot să-şi transmită pachete care
au o lungime până la lungimea maximă definită în standard (65KB). În realitate, dacă se în cearcă
schimbul unor pachete de o asemenea lungime, nivelele IP vor fi nevoite să împartă aceste pachete
în multe pachete de nivel mai coborât, pentru ca acestea să corespundă lungimii maxime a
pachetelor în cadrul reţelei din care hostul face parte. De obicei, diversele implementări ale TCP
lucrează cu pachete care au lungimi adecvate reţelei la care sunt ataşate.
TCP asignează câte un număr de ordine fiecărui octet al şirului infinit de date al clientului
său. Atunci când schimbă segmente cu perechea sa, TCP etichetează segmentul cu numărul de
ordine al primului octet al segmentului şi cu numărul de octeţi conţinuţi în pachet. Aceasta permite
TCP să reasambleze fluxul de date atunci când îl livrează nivelelor superioare.
Dacă este nevoit să retransmită o serie de segmente, TCP poate să reîmpacheteze datele,
combinând două segmente mai mici într-un segment mai mare, de exemplu. Acest mecanism,
motivat de dorinţa de a spori eficienţa transmisiei în cadrul unor reţele larg distribuite, unde se pune
problema minimizării raportului între numărul de biţi ai headerului şi numărul de biţi de date, face
ca TCP să fie mai complex decât alte protocoale de transport.
Transmisia unui pachet folosind TCP poate să decurgă după cum urmează (figura 10):
(1) ULP sursă trimit un flux de date către TCP pentru transmisie;
(2) TCP împarte fluxul de date în segmente, eventual înzestrate cu informaţii privind
retransmisiile, ordonarea, codificarea nivelelor de precedenţă şi de securitate, controlul fluxului de
date şi contolul erorilor. Apoi, segmentul este trimis către IP.
(5) TCP destinaţie îşi execută propriile servicii (inverse celor de la pasul 2), restaurând
datele fragmentate pentru a reconstitui fluxul original de date transmis şi livrează aceste date către
ULP destinaţie.
23
Figura 10. Procesul de transmisie
24
3.3.2 Formatul headerului TCP
Headerul TCP este relativ mare, structura sa fiind prezentată în figura 11.
25
Gamă: 0÷ 232-1
Această valoare reprezintă poziţia în cadrul secvenţei de octeţi a primului octet al unui
segment. Totuşi, dacă este prezent un SYN, atunci valoarea acestui câmp reprezintă prima poziţie în
cadrul secvenţei (Initial Sequence Number - ISN) pentru acea conexiune; primul octet de date este
numerotat ISN+1.
Câmpurile Sequence Number şi Acknowledgement au ambele lungimea de 32 biţi,
permiţând astfel specificarea unui spaţiu de secvenţiere foarte mare. (La o rată de transfer al datelor
de 1000 octeţi pe secundă, ar fi necesare aproximativ 50 de zile pentru a fi necesară reluarea
numerotării cu numărul în cadrul secvenţei zero. Dată fiind durata maximă de viaţă a unui pachet -
255 secunde - nu este posibil ca un pachet vechi să aibă acelaşi număr de secvenţă ca şi unul nou şi
să pară că ar fi un pachet duplicat sau să fie recepţionat în locul unui pachet care nu a fost livrat din
cauza unor erori).
Reserved (Rezervat)
Lungimea câmpului: 6 biţi
Acest câmp este rezervat pentru extensii ulterioare. Trebuie să aibă toţi biţii zero.
- URG - Urgent Pointer. URG=1 indică faptul că este folosit câmpul Urgent Pointer pentru
a localiza date urgente, prin intermediul unui offset exprimat în octeţi faţă de numărul de secvenţă
curent. Acest pointer poate fi necesar în cazul apariţiei unei întreruperi. Dacă indicatorul URG nu
este setat, atunci câmpul Urgent Pointer trebuie ignorat.
- SYN - Este folosit pentru a stabili o conexiune. SYN=1 semnifică cererea de stabilire a
unei conexiuni.
- ACK – Indică faptul că are semnificaţie câmpul Acknowlwdgement.
- RST - Poate reseta o conexiune în cazul apariţiei unor pachete întârziate cu bitul SYN
setat, în cazul căderii calculatorului gazdă sau în alte cazuri. RST=1 înseamnă că trebuie resetată
conexiunea.
- PSH - PSH=1 transmite TCP-ului receptor să transmită imediat datele din cadrul
segmentului către ULP receptor. Acest bit poate fi folosit pentru a indica faptul că nu vor apărea
date de la ULP sursă imediat.
26
- FIN - Este folosit pentru a termina o conexiune. FIN=1 înseamnă că sursa nu va mai
transmite date către ULP receptor.
Window (Fereastră)
Abreviere: WNDW
Lungimea câmpului: 16 biţi
Unitate: octeţi
Gamă: 0÷ 216-1
Această valoare reprezintă numărul octeţilor de date, începând cu cel indicat în cadrul
câmpului Acknowledgement, pe care hostul sursă este dispus sâ îi accepte.
Window este parametrul care permite controlul fluxului în cadrul TCP.
Window este un câmp relativ lung deoarece numără octeţii care vor putea fi recepţionaţi
după octetul confirmat, în loc să numere pachetele care ar putea fi trimise (cum se face în cazul
SPP-XNS).
Options (Opţiuni)
Abreviere: OPT
Lungimea câmpului: variabilă
Dacă este prezent, acest câmp ocupă spaţiu la sfârşitul headerului TCP. Toate opţiunile sunt
incluse în Checksum. Orice opţiune ocupă un număr întreg de octeţi.
Options este rezervat pentru diferite lucruri. Singura opţiune oficială interesantă definită
până în prezent comunică lungimea maximă a unui segment şi este trimisă în timpul stabilirii
conexiunii.
Principala funcţiune a TCP este să ofere conexiuni de date (canale de comunicaţie) între
perechi de ULP-uri. Gestionarea conexiunilor poate fi împărţită în trei faze: stabilirea conexiunii,
menţinerea conexiunii şi terminarea conexiunii.
Conexiunile sunt dotate cu câteva proprietăţi care se aplică pe toată perioada existenţei
conexiunii, incluzând nivelele de precedenţă şi de securitate. Aceste proprietăţi sunt specificate de
către ULP la deschiderea conexiunii. TCP oferă mijloacele necesare pentru ca ULP să poată intra în
conexiune cu alte ULP în mod unic adresate printr-un nume de soclu (socket). Un socket este de
27
fapt concatenarea unei adrese de IP (care se găseşte în headerul IP) cu numărul de port al aplicaţiei
(din headerul TCP). O conexiune este definită ca o cobinaţie a numerelor de socket ale celor doi
participanţi la conexiune.
TCP stabileşte în mod activ o conexiune pentru un ULP dacă:
- nu există deja o conexiune între cele două socluri;
- există suficiente resurse interne TCP disponibile;
- celălalt ULP (pereche) a executat simultan o deschidere activă de conexiune potrivită sau a
executat anterior o deschidere de conexiune globală, nespecificată (deschidere pasivă). O deschidere
activă se mai numeşte uneori chemare, iar o deschidere pasivă se mai numeşte ascultare.
TCP oferă mijloace pentru ULP să asculte pasiv şi să răspundă la chemări din partea unor
ULP corespunzătoare. Un ULP poate fi interesat de chemări din partea unui anumit corespondent
sau din partea oricărui corespondent îndepărtat. Deci, un ULP are două posibilităţi de a executa o
deschidere pasivă de conexiune:
- în totalitate specificată - un ULP care execută o chemare este în mod unic determinat de
către un soclu. O conexiune va fi acceptată doar dacă se constată apariţia unei chemări din partea
unui soclu îndepărtat specific;
- nespecificată - nu este specificat nici un soclu din partea căruia să fie acceptată o cerere de
deschidere activă a unei conexiuni. Se va stabili o conexiune cu orice ULP îndepărtat care execută o
operaţie de deschidere activă potrivită care identifică acest ULP.
Odată ce s-a stabilit o conexiune, TCP o va menţine cât timp ambele părţi rămân interesate
să o menţină activă. Conexiunile care sunt stabilite dar nu generează în mod activ date care să fie
schimbate între cele două ULP, nu generează nici un pachet. Aceasta nu este o problemă, dar este
interesant faptul că TCP nu oferă un mecanism care să detecteze pierderea unui partener de
conexiune atunci când nu se schimbă date între parteneri. Dar, deoarece pentru unele aplicaţii o
asemenea informaţie este de folos, unele implementări TCP folosesc un truc pentru a realiza această
detecţie: se trimit datagrame care nu conţin date şi cu număr de secvenţă incorect. TCP specifică
faptul că recipientul trebuie să răspundă cu o datagramă conţinând numărul de secvenţă corect.
Dacă nu se recepţionează nici un răspuns, TCP care verifică existanţa conexiunii poate să decidă că
perechea sa a dispărut.
Conexiunile stabilite pot fi terminate în unul dintre următoarele moduri:
1° Graceful Close (închidere cu succes) - Ambele ULP închid partea conexiunii duplex,
simultan sau secvenţial, atunci când transferul de date s-a terminat cu succes. TCP coordonează
terminarea conexiunii şi evită pierderea datelor în tranzit.
2° Abort - Atunci când un ULP forţează unilateral închiderea conexiunii, TCP nu
coordonează această terminare. Datele în tranzit pot să se piardă.
TCP îşi construieşte serviciile pe serviciile potenţial nesigure ale nivelului reţea, cu
mecanisme ca: detecţie de erori, confirmări, numere de secvenţă şi controlul fluxului de date.
Aceste mecanisme cer ca informaţiile de adresare şi de control să fie iniţializate şi menţinute pe
toată durata transferului, aşa cum se va arăta în continuare.
3.3.4 Confirmarea
28
interne în cadrul modulelor TCP pereche. O sumă de control simplă detectează segmentele
deteriorate în tranzit şi ele sunt aruncate fără confirmare. Deci, PAR tratează segmentele cu erori ca
pe nişte segmente pierdute şi compensează pierderea lor.
Marea varietate de reţele suportate de TCP (Ethernet, reţele prin satelit, reţele întinse
terestre) diferă în mare măsură din punct de vedere al ratei de transfer al datelor, întârzieri etc. TCP
specifică tehnici adaptive pentru tratarea întârzierilor astfel încât să nu se retransmită un pachet prea
des sau prea rar. TCP specifică un algoritm de generare exponenţială a întârzierilor, similar celui din
cazul Ethernet.
Numerele de secvenţă folosite de TCP extind mecanismul PAR prin faptul că se permite ca
o singură confirmare să acopere toate datele recepţionate anterior. Astfel, un TCP sursă poate să
transmită date noi în intervalul de timp în care aşteaptă confirmarea primirii datelor vechi.
Confirmarea se referă la toate datele anterioare, nu numai la un segment de date recent. Astfel,
receptoarele pot să ia decizia de a nu trimite confirmări în cazul primirii fiecărui pachet, ci doar din
când în când (pentru mai multe pachete odată).
Mecanismul de control al fluxului de date implementat de TCP permite unui TCP destinaţie
să controleze datele expediate de un TCP sursă. Mecanismul este bazat pe implementarea unei
ferestre care defineşte o gamă continuă de numere de secvenţă acceptabile. Pe măsură ce noi date
sunt acceptate, TCP mută fereastra în sus în spaţiul numerelor de secvenţă. Fereastra este specificată
în cadrul fiecărui segment şi permite TCP să menţină informaţii actuale.
Există un mecanism recomandat pentru a nu permite apariţia "sindromului de ferestre
prostuţe" (Silly Window Syndrome), sindrom care ar putea să ducă la supraîncărcarea modululelor
TCP şi chiar la epuizarea resurselor lor. Acest sindrom este rezultatul trimiterii cu o rată prea mare a
unor informaţii privind modificările ferestrelor, fapt care poate duce la transmiterea de către TCP
sursă de multe datagrame de dimensiuni mici în locul câtorva mai mari.
3.3.6 Multiplexarea
3.3.7 Sincronizarea
Două ULP care doresc să comunice, dau instrucţiuni TCP-urilor respective să iniţieze şi să
sincronizeze informaţiile cerute pentru stabilirea unui circuit virtual. Deoarece nivelele inferioare,
nedemne de încredere, pot să livreze date provenind din conexiuni mai vechi, stabilirea conexiunii
se realizează pe baza unui mecanism handshaking bazat pe numere de secvenţă care au la bază
timpul curent. Acest mecanism reduce posibilitatea ca primirea de pachete întârziate să pară pachete
valide în cadrul conexiunii curente. Folosind un mecanism handshaking foarte simplu, cele două
TCP se sincronizează în trei paşi (figura 12).
29
Figura 12. Handshaking în trei paşi
3.3.8 Rendezvous
Un ULP are două posibilităţi pentru a deschide o conexiune în două moduri: activ sau pasiv.
O conexiune se deschide activ atunci când un ULP dă instrucţiuni TCP să iniţieze un protocol
handshaking pentru a se conecta la un alt ULP.
Pentru a se realiza o conexiune pasivă, se indică TCP să aştepte o tentativă de deschidere a
unei conexiuni din partea unui alt TCP. Această facilitate este utilă pentru aplicaţiile orientate pe
servere. Un program de gestiune de la distanţă a unei baze de date, de exemplu, poate să aştepte
pasiv deschiderea unei conexiuni de către utilizatori aflaţi la staţii în reţea. Mecanismul handhske în
trei paşi de asemenea coordonează activităţile necesare în cazul apariţiei unor tentative de
deschidere activă a unei conexiuni între două TCP pereche.
Folosirea indicatorului PUSH este o altă parte a funcţiei de segmentare. TCP grupează în
mod normal datele pentru transmisie într-o manieră transparentă, după bunul său plac. Totuşi,
folosind un push, un ULP poate să indice TCP să trimită datele primite fără a aştepta să mai
primească şi alte date pentru transmisie. De exemplu, un ULP care deserveşte terminale la distanţă,
poate să dorească să trimită datele către terminale câte o linie odată.
În acest scop, sunt necesare două mecanisme. Întâi, ULP sursă trebuie să aibă implementat
un mecanism specific implementării pentru a indica TCP-ului local să transmită datele, iar apoi TCP
sursă trebuie să fie capabil să indice TCP receptor să livreze datele. Indicatorul PUSH este folosit
pentru acest al doilea scop.
UDP oferă servicii de transport de încărcare redusă pentru a permite ULP să transfere
datagrame între ele. Ca şi TCP, UDP foloseşte câmpuri port pentru a specifica procesul sursă şi
destinaţie al fiecărei tranzacţii. Se poate folosi, opţional, şi o sumă de control.
30
3.4.1 Numerele porturilor
TCP şi UDP folosesc ambele numere de porturi, pentru a distinge participanţii la diferite
schimburi de date. Deoarece identificatorul de protocol (câmpul de 16 biţi PROT din cadrul
headerului IP) este evaluat înaintea valorii numărului de port, TCP şi UDP folosesc valori
independente de câte 16 biţi pentru a identifica porturile. Deci, acelaşi număr de port poate
identifica două porturi diferite: unul pentru TCP şi altul pentru UDP.
Mai mult, selecţia numerelor de porturi este restricţionată. Valorile între 0 şi 255 sunt
rezervate pentru asignare de către DoD; aceste 256 porturi sunt cunoscute sub numele de Well-
Known Ports (porturi bine-cunoscute). Un subset al acestor porturi este prezentat în tabelul 8.
Orice program care foloseşte un Well-Known Port trebuie să se conformeze protocolului
specificat de la nivelele superioare. Trebuie notat că se încearcă să se coordoneze asignarea acestor
porturi bine cunoscute între TCP şi UDP.
31
109 POP-2 Post Office Protocol, Version 2
113 AUTH Authentication Server
115 SFTP Simple File Transfer Protocol
119 NNTGP Network News Trans. Protocol
123 NTP Network Time Protocol
129 PWDGEN Password Generator Protocol
Multe sisteme de operare includ aceste numere de porturi într-un set de porturi protejate. Ele
pot să fie accesate doar de procese care au privilegii speciale, la nivel de sistem de operare.
Numerele de porturi rămase, numite numere de porturi efemere (Ephemeral Port Numbers), pot să
fie folosite de orice proces.
32