Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


Modelul TCP/IP - PROTOCOLUL IP

retele calculatoare



+ Font mai mare | - Font mai mic



Modelul TCP/IP

PROTOCOLUL IP



Introducere

La nivelul retea, Internetul poate fi vazut ca o multitudine de subretele care sunt conectate impreuna. Nu exista o structura reala, dar exista cateva coloane vertebrale majore. Acestea sunt constituite din linii de inalta capacitate si rutere rapide. Atasate la coloana vertebrala sunt retele regionale, iar la aceste retele regionale sunt atasate LAN-urile din multe universitati, companii si furnizori de servicii Internet.

Liantul care tine Internetul la un loc este protocolul de nivel retea, numit IP (protocolul Internet). Spre deosebire de protocoalele mai vechi de nivel retea, acesta a fost proiectat de la inceput avand in vedere interconectarea retelelor. O metoda buna de a gandi nivelul retea este acesta. Sarcina lui este de a oferi cu eforturi maxime o cale pentru a transporta datagrame de la sursa la destinatie, fara a tine seama daca aceste masini sunt sau nu in aceeasi retea, sau daca sunt sau nu alte retele intre ele.

Un utilizator vede Internetul ca o singura retea virtuala ce interconecteaza toate gazdele si prin care comunicatia este posibila, arhitectura sa fundamentala fiind ascunsa si irelevanta.

In acest sens, Internetul este o abstractizare a retelelor fizice deoarece, la nivel scazut el furnizeaza cateva functionalitati: acceptarea de pachete si distributia lor. Software-ul de Internet de nivel ridicat adauga majoritatea functionalitatilor observate de utilizatori.

Filosofia si arhitectura Internetului

Conceptual, modelul TCP/IP furnizeaza trei seturi de servicii dupa cum sunt prezentate in figura 1, modul lor de aranjare sugerand si dependenta dintre ele. Pe nivelul cel mai coborat, un serviciu de distributie neorienetat pe conexiune furnizeaza baza. Pe nivelul urmator, un serviciu de transport sigur furnizeaza o platforma de nivel ridicat de care depind toate aplicatiile.

Software-ul Internet este proiectat in jurul celor trei servicii conceptuale de networking asezate intr-o ierarhie; marele sau succes a fost posibil, deoarece aceasta structura este surprinzator de robusta si adaptabila.


APPLICATION SERVICES

RELIABLE TRANSPORT SERVICES

CONNECTIONLESS PACKET DELIVERY SERVICES

Figura 1. Cele trei planuri conceptuale ale serviciilor internet

Una dintre cele mai semnificative avantaje a acestei separari conceptuale este ca face posibila inlocuirea unui serviciu fara a le afecta pe celelalte. Astfel cercetarea si dezvoltarea pot inainta concurent in toate cele trei servicii.

Sistemul de distribuitie neorientat pe conexiune

Serviul Internet fundamental este cel de transport al pachetelor. Din punct de vedere tehnic, acesta este definit ca fiind un sistem de transmisie nesigur, cu efort maxim, si cu distributie de pachete neorientata pe conexiune.

Serviciul este numit nesigur deoarece transportul nu este garantat. Pachetul poate fi pierdut, duplicat, intarziat, sau transportat intr-o alta ordine, serviul putand sa nu detecteze aceste conditiii, nici sa informeze emitatorul sau receptorul. Serviciul este numit neorientat conexiune deoarece fiecare pachet este tratat independent unul fata de altul. O secventa de pachete trimisa de la un calculator la altul poate merge pe cai diferite, unele pot fi pierdute in timp ce altele pot ajunge la destinatie. In final despre serviciu se spune ca face efort maxim de transport deoarece software-ul de internet face un efort maxim pentru a transmite pachetele. Acesta nu face eliminarea pachetelor capricioase; nesiguranta apare doar cand resursele sunt exhaustive sau retele fundamentale cad.

Scopul protocolului IP

Protocolul acela definind nesiguranta, mecanismul de transmisie cu pierdere de conexiune este numit Internet Protocol fiind uzual referit prin initialele sale (IP).

IP-ul furnizeaza trei importante definitii:

Protocolul IP defineste unitatea de baza de transfer a datelor folosite peste tot in TCP/IP. Astfel, el specifica formatul exact al tuturor datelor transferate prin TCP/IP.

Software-ul IP furnizeaza functia routing, alegand o cale pe care datele sa fie trimise.

Precizeaza in completare specificatiile formale ale formatelor de date si rutare, IP-ul incluzand un set de reguli ce precizeaza modul in care gazdele si routerele trebuie sa proceseze pachetele, cum si cand mesajele de eroare trebuie sa fie generate si conditiile in care pachetele pot fi eliminate.

Datagrama Internet

Analogia intre o retea fizica si un TCP/IP este foarte mare. Intr-o retea fizica, unitatea de transfer este cadrul (frame), acela continand un antet (header) si date, in care antetul contine informatii cum ar fi de pilda adresa sursei si destinatiei. Internetul denumeste unitatea sa de baza pentru transfer ca datagrama Internet, uneori referita ca datagrama IP sau pur si simplu datagrama. Similar cu un cadru dintr-o retea fizica, antetul datagramei contine adresa sursei si destinatiei si o serie de alte campuri care identifica continutul datagramei. Diferenta dintre ele consta in faptul ca antetul datagramei contine adrese IP in timp ce antetul cadrului contine adrese fizice.

Forma generala a unei datagrame este:


Antet Zona de date

Figura 2 Forma generala a unei datagrame IP

Nota: IP-ul nu face specificarea formatului zonei de date, el putand fi folosit la transportul oricaror tipuri de date.

Formatul datagramei

Antetul datagramei IP este transmis in ordinea bigendian (cel mai putin semnificativ primul): de la stanga la dreapta, cu bitul cel mai semnificativ al campului VERS (versiune) trimis primul. Pe masinile de tip little endian (Pentium), este necesara o conversie prin program atat la transmisie cat si la receptie

Campul VERS (versiune) contine versiunea protocolului IP care a fost folosit pentru crearea datagramei. El este folosit pentru a verifica daca emitatorul, receptorul si orice router dintre ele accepta formatul datagramei. Toate software-urile IP verifica acest camp inaintea procesarii datagramei pentru a se asigura ca el coincide cu formatul software corect. In cazul modificarii standardului, masinilor vor rejecta datagramele o versiune de protocol diferita de a lor, prevenind astfel interpretarea eronata a continutului datagramei in conjunctie cu un format dat.

Campul HLEN (lungime antet) da lungimea antetului datagramei in cuvinte de 32 de biti. Dupa cum se observa toate campurile au lungime fixa cu exceptia celui de optiuni si a campului corespunzator padding. Astfel, cel mai banal antet, care nu contine campurile de optiune si padding are 20 de octeti, avand valoarea acestui camp egala cu 5 (minima). Valoarea maxima fiind de 15 limiteaza antetul la 60 de octeti si astfel campul de optiuni la 40 de octeti. Pentru unele optiuni cum ar fi cea care inregistreaza calea pe care a mers un pachet, acesti 40 de octeti sunt mult prea putini, facand aceasta optiune nefolositoare.

Campul TOTAL LENGTH (lungime totala) da lungimea datagramei IP (antet si date) masurata in octeti Dimensiunea zonei de date poate fi obtinuta scazand din lungimea totala lungimea antetului. Deoarece acest camp este de 16 biti, dimensiunea maxima va fi de 65535 octeti. In majoritatea cazurilor aceasta dimensiune nu constituie o limitare severa, dar poate deveni mai importantain viitor daca retele de mare viteza vor transporta pachete mai mari de 65535 octeti.

0 8 16 24 31


VERS HLEN (SERVICE TYPE) TOTAL LENGHT

Prece-

dence D T R

IDENTIFICATION D M FRAGMENT

F F OFFSET

TIME TO LIVE PROTOCOL HEADER CHECKSUM

SOURCE IP ADDRESS

DESTINATION IP ADDRESS

IP OPTIONS PADDING

DATA

Figura 3 Formatul unei datagrame

Tipul serviciului si precedenta datagramei

Campul de 8 biti SERVICE TYPE (tipul serviciului), permite gazdei sa comunice subretei ce tip de serviciu doreste, fiind impartit in cinci subcampuri dupa cum urmeaza (figura 4):

primii 3 biti (subcampul PRECEDENCE) specifica precedenta datagramei, luand valori in gama 0 (precedenta normala) - 7 (control retea), permitand emitatorilor sa indice importanta fiecarei datagrame. Desi majoritatea gazdelor si ruterelor ignora acest tip de serviciu, este un concept important deoarece furnizeaza un mecanism care recunoaste informatia de control, avand astfel o precednta asupra datelor.

bitii D (Delay), T (Throughput), R (Reliability) specifica tipul tipul de trasport dorit. Setarea bitului D cere intarziere mica, a bitului T o capacitate de trasport mare, iar bitul R cere o siguranta maxima. Desigur, nu este posibil ca printr-o retea de tip internet un astfel de bit sa garanteze tipul de transport cerut, putand sa nu existe o cale catre destinatie avand proprietatile cerute. Astfel, gandim cererea de trasport ca si o sugestie catre algotimii de rutare si nu ca o simpla cerere. Daca un ruter cunoaste mai mult de un ssingur drum catre o destinatie solicitata, el poate folosi campul ce specifica tipul de trasport pentru a selecta unul cu caracteristicile apropiate de cele dorite. De exemplu, presupunem ca un ruter poate alege intre o linie inchiriata de capacitate scazuta si o conexiune la satelit cu latime mare de banda (dar cu intarziere mare). Datagramele transportand cheia de acces la un utilizator indepartat poate avea bitul D setat cerand ca el sa fie trasportat cu viteza maxima in timp ce datamgramele transportand cea mai mare parte a fisierelor pot avea setat bitul T cerand sa mearga pe calea cu capacitate de transfer ridicata.


PRECEDENCE D T R UNUSED

Fig 4 Campul SERVICE TYPE

Nota: In practica, majoritatea ruterelor ignora total campul SERVICE TIPE.

Este important de asemenea, sa realizezi acei algoritmi de rutare adecvati tipurilor de retele fizice existente, fiecare avand propriile caracteristici de intarziere, capacitate si siguranta.

De cele mai multe ori o tehnologie data implementeaza o singura caracteristica dintre toate (de exemplu capacitate de transport mare dar cu intarzieri mari). In acest caz este important sa dai algoritmului de rutare o sugestie cu privire la caracteristica mai importanta; el rareori isi poate da seama care ar putea fi daca le setam pe toate.

In concluzie: Consideram specificarea tipului de transport ca si o sugestie pentru algoritmul de rutare, el ajutand alegerea intre toate caile posibile catre o destinatie, bazandu-se pe cunoasterea tehnologiilor hardware disponibile pe toate caile. O retea de tip Internet nu poate garanta tipul de transport cerut.

Incapsularea datagramei

Spre deosebire de cadrele unei retele fizice ce sunt manipulate hardware, datagramele sunt manipulate software. Ele pot avea orice lungime, protocolul proiectand alegerea. Dar nu pot avea o lungime mai mare de 65535 octeti. Oricum aceasta limita va fi modificata in versiunile ulterioare.

Se stie ca datagramele pentru a se deplasa de la o masima la alta, trebuie sa fie intotdeauna transportate prin reteaua fizica de baza. Pentru ca transportul pe Internet sa fie eficient trebuie ca fiecare datagrama sa poata trece intr-un cadru fizic distinct.

DATAGRAM DATAGRAM DATA AREA

HEADER

FRAME FRAME DATA AREA

HEADER

Fig 5 Incapsularea unei datagrame IP intr-un cadru

Ideea trecerii unei datagrame intr-un cadru de retea este numita incapsulare. Pentru o retea de baza, o datagrama este ca si orice alt mesaj trimis de la o masina la alta. Hardware-ul nu face recunoasterea datagramei si nici nu intelege adresa IP de destinatie. Astfel, dupa cum prezinta figura 5, cand o masina trimite o datagarama IP catre alta intreaga datagrama trece in zona de date a cadrului de retea.

Dimensiunea datagramei, MTU si fragmentarea

Dimensiunea datagramei, MTU si fragmentarea

In cazul ideal, intrega datagrama trece intr-un cadru fixic facand astfel transmisia prin reteaua fizica eficienta. Pentru a indeplini acest deziderat, proiectantii de IP ar fi trebuit sa selecteze o dimensiune maxima pentru datagrama care sa se potriveasca intr-un frame. Dar o datagrama poate trece prin cateva tipuri de retele fizice de baza cand calatoreste pe Internet catre destinatia finala.

Nota: Fiecare tehnologie cu comutare de pachete fixeaza o limita superioara pentru cantitatea de date ce poate fi transferata intr-un cadru fizic. De exemplu Ethernetul limiteaza transferul la 1500 octeti de date (cand il folosim cu un header SNAP standardul IEEE 802.3 limiteaza datele la 1492), in timp ce FDDI permite aproximativ 4470 octeti de date/cadru.

Aceste limite constituie unitatea maxima de transfer a retelei (MTU). Dimensiunile MTU pot fi foarte mici; cateva tehnologii hardware limiteaza transferul la 128 octeti sau chiar mai putin. Limitand datagramei la cea mai mica dimensiune MTU posibil existenta pe retea, transferul devine ineficient cand toate datagramele trec printr-o retea ce poate transporta cadre cu dimensiuni mari. oricum, permitand datagramei IP sa fie mai mare decat minimul MTU al retei fizice dintr-un Internet, inseamna ca exista posibilitatea ca o datagrama sa nu se potriveasca intr-un singur cadru de retea.

Alegerea ar trebui sa fie evidenta: scopul proiectarii Internetului este sa mascheze tehnologia retelei fundamentale si sa faca comunicatia convenabila pentru utilizator. Astfel, software-ul TCP/IP va alege o dimensiune convenabila pentru datagrama initiala si cauta o cale pentru a diviza datagramele mari in mici piese, atunci cand aceasta traverseaza o retea cu un MTU mai mic. Micile piese in care este divizata o datagrama se numesc fragmente iar procesul este cunoscut sub numele de fragmentare.

Figura 6 ilustreaza fragmentarea uzuala aparuta la un ruter, undeva de-a lungul drumului, intre sursa datagramei si destinatie ei finala. Ruterul receptioneaza o datagrama dintr-o retea cu un MTU mai mare si trebuie sa o trimita printr-o retea al carei MTU este mai mic decat dimensiunea datagramei.

HOST  HOST

A B

Net 1 Net 3

MTU=1500 Net 2 MTU=1500

R1 MTU=620 R2

Fig 6 Cazul in care apare o fragmentare


In figura, ambele gazde acceseaza direct retele Ethernet avand un MTU de 1500 octeti. Astfel, ambele gazde pot genera si trimite datagrame de maxim 1500 octeti lungime. Calea dintre ele, trece printr-o retea cu un MTU de 620. Daca gazda A trimite trimite gazdei B o datagrama mai mare de 620 octeti, ruterul R1 fragmenteaza datagrama. Similar, daca B trimite o datagrama mare la A ruterul R2 o va fragmenta.

Dimensiunea fragmentului este aleasa astfel incat fiecare fragment sa poata fi expediat prin reteaua fundamentala intr-un singur cadru. In plus, deoarece IP-ul contine offsetul datelor in multipli de 8 octeti, dimensiunea fragmentului va trebui aleasa astfel incat sa fie multiplu de 8. Desigur alegerea multiplului de 8 octeti cel mai apropiat de MTU al retelei nu va imparti datagrama in fragmente de dimensiune egala, ultimul fiind adesea mai mai mic decat celelalte. Fragmentele vor trebui reasamblate pentru a produce o copie completa a datagramei originale inainte ca ea sa fie procesata la destinatie.

Protocolul IP nu face limitarea datagramei la o dimensiune mica si nici nu garanteaza ca datagramele mari vor fi transportate fara fragmentare. Sursa poate alege orice dimensiune pentru datagrama considerata a fi potrivita; fragmentarea si reasamblarea survine automat fara ca sursa sa faca actiuni speciale. Una din specificatiile protocolului IP stabileste ca ruterele trebuie sa accepte datagrame cu dimensiunea egala cu MTU-ul retelei pe care le ataca. In plus, un ruter trebuie sa manevreze intotdeauna datagrame de cel mult 576 octeti (gazdele trebuind sa accepte si reasambleze daca este necesar datagrame de cel putin 576 octeti).

Piesele obtinute in urma fragmentarii au acelasi format ca si datagrama originala (fig 7)

Fiecare fragment contine un header al datagramei care copie aproape in totalitate pe cel datagramei originale (apar setari suplimentare, cum at fi de pilda cea din campul FLAGS care indica ca el este un fragment).

Reasamblarea fragmentelor

O datagrama trebuie reasamblata dupa trecerea printr-o retea sau fragmentele trebuie transportate la gazda finala inaintea reasamblarii? Intr-o retea de tip Internet TCP/IP, o data ce o datagrama a fost fragmentata, fragmentele calatoresc in datagrame distincte (si posibil pe cai diferite) spre destinatia finala unde sunt reasamblate. Pastrarea fragmentelor pe tot drumul catre destinatia finala are doua dezavantaje:

Intrucat datagramele nu sunt reasamblate imediat dupa transferul printr-o retea cu un MTU mic, fragmentele astfel obtinute vor trebui transportate de la punctul de fragmentare la destinatia finala. Reasamblarea la destinatie poate fi ineficienta deoarece exista posibilitatea ca fragmentele sa fi traversat retele avand un MTU mai mare decat dimensiunea lor.

Daca un singur fragement este pierdut datagrama nu va putea fi reasamblata. Masina receptoare porneste un timer de reasamblare cand primeste fragmentul initial. Daca timerul expira inainte ca toate fragmentele sa soseasca, masina receptoare elimina piesele venite, neputand sa proceseze datagrama. Astfel, creste probabilitatea pierderii unei datagrame daca intervine fragmentarea, pentru ca pierderea unui fragment implica pierderea intregii datagrame.

In ciuda acestor dezavantaje, reasamblarea la destinatia finala lucreaza bine. Ea permite ca fiecare fragment sa fie rutat independent si nici nu cere ruterelor sa memoreze sau sa reasambleze fragmente.


DATAGRAM data1 data2 data3

HEADER 600 octeti 600 octeti 200 octeti

(a)

FRAGMENT 1 data 1 Fragment 1 (offset 0)

HEADER

FRAGMENT 2 data 2 Fragment 2 (offset 600)

HEADER

FRAGMENT 3 data 3 Fragment 3 (offset 1200)

HEADER

(b)

Fig 7 (a) O datagrama originala transportand 1400 octeti de date;

(b) 3 fragmente pentru o retea cu un MTU de 620. Headerele fragmentelor 1 si 2 au setat bitul ce indica ca mai exista fragmente. Offseturile prezentate sunt octeti zecimali; pentru a obtine valoarea stocata inheaderul fragmentului ea trebuie impartita prin 8.

Controlul fragmentarii

Trei campuri din headerul datagramei controleaza fragmentarea si reasamblarea datagramelor:

Campul IDENTIFICATION (identificare) contine un singur intreg care identifica datagrama. Scopul lui este de a informa destinatia caror datagrame apartin fragmentele sosite. La sosirea unui fragment, destinatia utilizeaza acest camp in conjunctura cu adresa IP a sursei datagramei pentru a identifica datagrama careia ii apartine. Calculatoarele ce trimit datagrame IP trebuie sa genereze o valoare unica campului IDENTIFICATION pentru fiecare datagrama. O tehnica folosita de software-ul IP pastreaza un numarator global in memorie, incrementand-ul la fiecare moment de timp in care o noua datagrama este creata si asignand valoarea rezultata campului IDENTIFICATION al datagramei.

Campul FRAGMENT OFFSET (deplasamentul fragmentului) indica unde este locul fragmentului curent in cadrul datagramei. Toate fragmentele dintr-o datagrama, cu exceptia ultimului, trebuie sa fie un multiplu de 8 octeti - unitatea de fragmentare elementara. Din moment ce sunt prevazuti 13 biti, exista un maxim de 8192 fragmente pe datagrama, obtinandu-se o lungime maxima a datagramei de 65536 octeti, cu unul mai mult decat cea data prin campul TOTAL LENGTH.

Pentru reasamblarea datagramei, destinatia trebuie sa obtina toate fragmentele incepand cu fragmentul avand offsetul 0 si terminand cu fragmentul avand offsetul cel mai mare. Nu este necesar ca fragmentele sa vina in ordine, deoarece nu exista o comunicare intre ruterul care face fragmentarea si destinatie.

In ordine inversa doi din cei trei biti FLAGS controleaza fragmentarea. Uzual, aplicatia software TCP/IP nu se ingrijeste de fragmentare deoarece atat acest proces cat si cel complementar lui, reasamblarea, sunt proceduri automate ce apar la un nivel coborat in sistemul de operare, fiind invizibile utilizatorilor.

bitul DF (DON'T FRAGMENT) indica ruterelor sa nu fragmenteze datagrama deoarece destinatia nu este capabila sa reasambleze piesele la loc. De exemplu, cand un calculator porneste, memoria sa ROM poate cere sa i se transmita o imagine de memorie ca o singura datagrama. Prin setarea bitului DF al datagramei, emitatorul stie ca aceasta va ajunge intr-o singura bucata, chiar daca asta inseamna sa evite o retea cu pachete mai mici aflata pe calea cea buna, ceea ce inseamna alegerea unei rute suboptimale. Este necesar ca toate masinile sa accepte fragmente de 576 octeti sau mai mici.

bitul MF (MORE FRAGMENTS) specifica daca fragmentul contine date de la interiorul datagramei sau de la sfarsitul ei. Toate fragmentele cu exceptia ultimului au acest bit setat. El este util pentru a sti cand au ajuns toate fragmentele unei datagrame.

Nota: Cand un fragment soseste, campul TOTAL LENGTH din header se refera la dimensiunea fragmentului si nu la aceea a datagramei originale.

Din campurile FRAGMENT OFFSET si TOTAL LENGHT se poate calcula lungimea datagramei originale. Examinand campurile FRAGMENT OFFSET si TOTAL LENGHT ale tuturor fragementelor sosite, un receptor poate spune daca fragementele disponibile contin toate datele necesare reasamblarii datagramei originale.

Timpul de viata

Campul TIME TO LIVE (timpul de viata) specifica cat de multe secunde (maxim de 255 de secunde), ii este permis datagramei sa ramana in internet. Ideea este deopotriva simpla si importanta: ori de cate ori o masina injecteaza o datagrama in internet, ea seteaza un timp maxim in care datagrama poate sa supravietuiasca. Ruterele si gazdele care proceseaza datagramele trebuie sa decrementeze valoarea acestui camp si sa o elimine daca timpul a expirat.

Estimarea exacta a timpilor este dificila deoarece ruterele nu cunosc timpul de tranzitare a unei retele fizice. Cateva reguli simplifica procesarea si usureaza manipularea datagramelor fara a folosi un ceas de sincronizare:

fiecare ruter de-a lungul drumului de la sursa la destinatie trebuie sa decrementeze valoarea acestui camp cu 1 cand proceseaza headerul datagramei;

in cazul ruterelor supraincarcate, care introduc intarzieri mari, fiecare ruter inregistreaza timpul local cand datagrama a sosit si decrementeaza valoarea campului cu numarul de secunde in care datagrama ramane in interiorul ruterului asteptand servirea.

Oricand un camp de acest tip devine 0, ruterul va elimina datagrama si va trimite un mesaj de eroare inapoi la sursa. Ideea pastrarii unui timer este interesanta deoarece el garanteaza ca o datagrama nu poate calatori la nesfarsit in internet, in cazul in care tabele de rutare se altereaza si ruterele ruteaza datagramele in cerc.

Celelalte campuri ale headerului datagramei

Campul PROTOCOL (protocolul) este analog cu campul ce indica tipul unui cadru de retea fizica. Valoarea din acest camp de tip numeric indica carui proces de transport trebuie sa-l predea. TCP este o posibilitate, dar tot asa sunt si UDP si alte cateva. Numerotarea protocoalelor este globala la nivelul intregului Internet si este definita in RFC 1700.In esenta, valoare acestui camp specifica formatul zonei DATA.

Campul HEADER CKECHSUM (suma de control a antetului) asigura integritatea valorilor din header. Suma de control IP este formata prin tratarea headerului ca si o secventa de intregi pe 16 biti.

Este important de observat ca suma de control se aplica headerului IP si nu la date. Separarea sumei de control pentru header si pentru date are avantaje si deavantaje. Deoarece headerul ocupa uzual mai putini octeti decat datele, o suma de control separata va reduce timpul de procesare la rutere, care trebuie sa calculeze doar suma de control a headerului. O astfel de separare permite protocoalelor de nivel mai inalt sa aleaga propria lor schema de suma de control pentru date. Marele dezavantaj este ca protocoalele de nivel mai inalt sunt fortate sa adauge propria suma de control sau risca sa aiba date incorecte nedectate.

Algoritmul folosit este de a aduna toate jumatatile de cuvinte, de 16 biti, atunci cand acestea sosesc, folosind o aritmetica in complement fata de unu si pastrarea complementului fata de unu al rezultatului. Pentru scopul acestui algoritm, suma de control a antetului este presupusa a fi zero dupa sosire. Acest algoritm este mai robust decat folosirea unei adunari normale. Se poate observa ca suma de control a antetului trebuie recalculata la fiecare salt, pentru ca cel putin un camp se schimba intotdeauna (campul TIME TO LIVE), dar se pot folosi trucuri pentru a accelera calculul.

Campurile SOURCE IP ADDRESS (adresa IP a sursei) si DESTINATION IP ADDRESS (adresa IP a destinatiei) contin adresele pe 32 de biti ale sursei si destinatiei indicand numarul de retea si numarul de gazda.

Formatele pentru adresele IP sunt ilustrate in figura 8. Acele masini care sunt conectate la mai multe retele au adrese diferite in fiecare retea.

Formatele de clasa A,B,C si D permit pana la 126 retele cu 16 milioane de gazde fiecare, 16382 retele cu pana la 64K gazde, 2 milioane de retele (de exemplu LAN-uri) cu pana la 256 gazde fiecare si multicast (trimitere multipla), in care fiecare datagrama este directionata mai multor gazde. Adresele care incep cu 11110 sunt rezervate pentru o folosire ulterioara. Zeci de mii de retele sunt conectate acum la Internet si numarul lor se dubleaza in fiecare an. Numerele de retea sunt atribuite de NIC (Network Information Center - Centrul de Informatii de Retea) pentru a evita conflictele.

0 8 16 24 31

Clasa Intervalul adreselor de gazda

De la 1.0.0.0.0 pana la

A 0 Retea Gazda 127.255.255.255

De la 128.0.0.0 pana la

B 10 Retea Gazda 191.255.255.255

De la 192.0.0.0 pana la

C 110 Retea Gazda 223.255.255.255

De la 224.0.0.0 pana la

D 1110 Adresa de trimitere multipla 239.255.255.255

De la 240.0.0.0 pana la

E 11110 Rezervat pentru folosire viitoare 247.255.255.255

Fig. 8 Formatul adreselor IP

Adresele de retea, care sunt numere pe 32 de biti, sunt scrise uzual in notatia zecimala cu punct. In acest format, fiecare dintre cei 4 octeti este scris in zecimal, de la 0 la 255. De exemplu, adresa hexazecimala C0290614 este scrisa ca 192.41.6.20. Cea mai mica adresa IP este 0.0.0.0 iar cea mai mare este 255.255.255.255.

Valorile 0 si -1 au semnificatii speciale, asa cum se arata in figura 9. Valoarea 0 inseamna reteaua curenta sau gazda curenta. Valoarea -1 este folosita ca o adresa de broadcast (difuzare) pentru a desemna toate gazdele din reteaua indicata.

0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Statie gazda

0 0 0 0 0 0 Gazda O gazda din reteaua

locala

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 Difuzare in reteaua

locala

Retea 1 1 1 1 1 1 1 Difuzare intr-o retea

la distanta

127 (Orice) Bucla locala

Fig 9 Adrese IP speciale

Adresa IP 0.0.0.0 este folosita de gazde atunci cand sunt pornite, dar nu mai este folosita ulterior. Adresele IP cu 0 ca numar de retea se refera la reteaua curenta. Aceste adrese permit masinilor sa refere propria retea fara a cunoaste numarul de retea (dar ele trebuie sa cunoasca clasa adresei pentru a sti cate zerouri sa includa). Adresele care constau numai din 1-uri permit difuzarea in reteaua curenta, in mod uzual un LAN. Adresele cu numar exact de retea si numai 1-uri in campul gazda permit masinilor sa trimita pachete de difuzare in LAN-uri la distanta, oriunde in Internet. In final, toate adresele de forma 127.xx.yy.zz sunt rezervate pentru testari in bucla locala (loopback). Pachetele trimise catre aceasta adresa sunt trimise prin cablu; ele sunt prelucrate local si tratate ca pachete sosite. Aceasta permite pachetelor sa fie trimise in reteaua locala fara ca emitatorul sa cunoasca numarul sau. Aceasta facilitate este folosita de asemenea pentru depanarea programelor de retea.

Campul etichetat DATA contine datele; dimensiunea lui depinde de ceea ce este trimis prin datagrama.

Optiunile datagramei IP

Campul OPTIONS IP (optiuni IP) nu este necesar in toate datagramele. El a fost proiectat pentru a oferi un subrefugiu care sa permita versiunilor viitoare ale protocolului sa includa informatii si pentru a evita alocarea unor biti din header pentru informatii folosite rar.

Lungimea campul OPTIONS IP variaza in functie de care optiuni sunt selectate. Unele optiuni au o lungime de un singur octet ce apatine codului optiuni (option code) dupa cum este ilustrat in figura 10. Celelate au lungime variabila. Acest camp este completat intotdeauna pana la un multiplu de 4 octeti.

0 1 2 3 4 5 6 7

COPY OPTION CLASS OPTION NUMBER

Fig 10 Impartirea zonei atasate codului optiunii (OPTION CODE)

Fiecare optiune incepe cu un cod de un octet ce identifica optiunea. Unele optiuni sunt urmate de un camp de un octet reprezentand lungimea optiunii, urmat de unul sau mai multi octeti de date.

Zona rezevata codului optiunii (CODE) este impartita in trei subcampuri:

1 bit este atasat flagului COPY. Acesta controleaza modul in care ruterele trateaza optiunile in timpul fragmentarii. Cand acest bit este 1, inseamna ca optiunile trebuie copiate in toate fragmentele. Cand este 0, optiunea trebuie copiata doar in primul fragment.

2 biti campului OPTION CLASS (clasa optiunii). Aceasta specifica clasa generala a optiunii astfel:

Option Class Descriere

0 Datagrama sau control de retea

1 Rezevat pentru utilizari viitoare

2 Depanare si masuratori

3 Rezevat pentru utilizari viitoare

Figura 11 Clasele optiunilor IP

5 biti campului OPTION NUMBER (numarul optiunii); continutul acestui camp este interpretat in conjunctie cu cel al campului OPTION CLASS; majoritatea optiunilor sunt folosite pentru controlul general.

Lista optiunilor posibile care pot insoti o datagrama IP sunt (in ordinea utilitatii lor):

Clasa Numarul Lungime Descriere

optiunii optiunii

0 0 - Sfarsitul listei de optiuni. Este folosita daca optiunile nu se termina la sfarsitul headerul

0 1 - Neutilizat (este folosit la aliniere datelor

intr-o lista de optiuni)

0 2 11 Securitate si manipularea restrictiilor (pentru aplicatii militare)

0 3 var Rutare aproximativa pe baza sursei. Este folosit pentru rutarea unei datagrame de-a

lungul unei cai specificate

0 7 var Inregistrarea rutei. este folosit pentru a obtine ruta unei datagrame

0 8 4 Identificator de stream. Este folosit pentru a transporta un identificator de stream (este iesit din uz)

0 9 var Rutare stricta pe baza sursei. Este folosit

pentru a ruta o datagrama pe o cale

specificata

2 4 var Amprenta de timp. Este folosita la

inregistrarea amprentei de timp de-a lungul unei rute.

Figura 12 Optiunile IP posibile

Optiunea de inregistrare a rutei

Optiunea RECORD ROUTE (inregistrarea rutei) permite sursei sa creeze o lista vida de adrese IP, indicand ruterelor de pe cale, ce manipuleaza acea datagrama, sa adauge propria adresa IP in lista.

Campul CODE contine clasa optiunii si numarul optiunii (0 si 7 pentru inregistrarea rutei). Campul LENGHT specifica lungimea totala a optiunii asa cum apare ea in datagrama IP, inclusiv primii trei octeti. Campul POINTER da offsetul in interiorul optiunii, indicand urmatoarea zona disponibila pentru inscrierea adresei IP.

0 8 16 24 31


CODE LENGHT POINTER

FIRST ADDRESS IP

SECOND ADDRESS IP

Figura 13 Formatul optiunii de inregistrare a rutei

Oricand o masina distribuie o datagrama care are optiunea de inregistrare a rutei setata, isi va adauga propria adresa in lista de inregistrare a rutei (un spatiu suficient trebuie alocat in optiune de catre sursa, pentru a se putea pastra toate intrarile). Pentru a adauga propria adresa IP in lista, o masina compara la inceput pointerul cu lungimea listei. Daca pointerul este mai mic decat lungimea listei, masina va insera adresa sa IP (de 4 octeti) in pozitia indicata de pointer si va incrementa pointerul cu 4; in caz contrar lista este plina si masina nu-si va inscrie propria adresa in lista.

Aceasta optiunea permite administratorilor de sistem sa localizeze pene in algoritmii de rutare, prin procesarea listei de adrese IP. Apare o problema si anume faptul ca uzual un ruter ignora aceasta optiune. Trebuie deci, ca pe langa ruterul sursa care activeaza aceasta optiune si ruterul destinatie care proceseaza lista ca si ruterele intermediare sa coopereze.

Optiunile de rutare de catre sursa

Permite sursei sa seteze optiunile referitoare la traseul pe care o datagrama il va urma pana la destinatie, eliminand prin aceasta alegerea drumului de catre ruter. Este foarte utila in faza de testare a retelei (cum ar fi de pilda realizarea unor masuratori de timp) sau pentru a trimite pachete de urgenta atunci cand tabele de rutare sunt distruse.

Exista doua variante ale rutarii de catre sursa:

rutare stricta de catre sursa, obtinuta prin specificarea unei cai de rutare sub forma unei secvente de adrese IP (figura 14). Aceasta optiune trebuie sa indice calea completa de la sursa la destinatie, datagrama find obligata sa o urmeze.

Nota: O eroare poate apare atunci cand un ruter nu poate folosi aceasta optiune.

rutarea aproximativa de catre sursa care cere ca pachetul sa traverseze o lista specificata de rutere si in ordinea precizata, fiind permisa trecerea si prin alte rutere intermediare celor din lista. In mod normal aceasta optiune trebuie sa indice doar cateva rutere, pentru a forta ca un pachet sa mearge pe o anumita cale.

0 8 16 24 31


CODE LENGHT POINTER

IP ADDRESS OF FIRST HOP

IP ADDRESS OF SECOND HOP

Figura 14 Formatul optiunii de rutare stricta pe baza sursei

Ambele optiuni cer ruterelor aflate de-a lungul caii sa suprainscrie propriile adrese in lista de adrese IP a optiunii. Astfel cand datagrama ajunge la destinatia sa, ea va contine o lista cu adresele tuturor ruterelor vizitate, exact ca si cand lista ar fi fost obtinuta prin utilizarea optiuniii de inregistrare a rutei.

Formatul acestor doua optiuni este asemanator cu cel al optiunii anterioare. Fiecare ruter examineaza campurile POINTER si LENGTH pentru a vedea daca lista a fost epuizata. Daca lista nu a fost epuizata (pointer < lungimea), ruterul urmareste pointerul , noteaza adresa IP indicata de acesta inlocuind-o cu adresa sa si ruteaza datagrama utilizand adresa extrasa din lista; in caz contrar, ruterul considera ca el este ultimul si o trimite la destinatia ei.

Optiunea de amprenta de timp (timestamp)

Aceasta optiune lucreaza ca si optiunea de inregistrare a rutei, fiecare ruter inregistrand pe langa adresa sa IP de 32 biti si o amprenta de timp de 32 de biti (figura 15)

0 8 16 24 31

CODE LENGHT POINTER FLOW FLAGS

FIRST ADDRESS IP

FIRST TIMESTAMP

Figura 15 Formatul optiunii de amprenta de timp

Campurile LENGHT si POINTER sunt folosite ca si in cazurile anterioare. Campul de 4 biti OFLOW contine un intreg ce indica numarul ruterelor ce nu au putut furniza o amprenta de timp intrucat optiunea a avut o lungime prea mica.

Valorile campului de 4 biti FLAGS controleaza forma exacta a optiunii si indica ruterelor cum trebuie sa furnizeze amprenta de timp. Aceste valori sunt:

Valoare flaguri Descriere


0 Inregistreaza doar amprenta de timp si omite adresa IP

1 Fiecare amprenta de timp este precedata de adresa IP

2 Adresele IP sunt specificate de emitator; un ruter

inregistreaza doar amprenta de timp in cazul in care urmatoarea adresa din lista coincide cu adresa ruterului urmator

Figura 16 Interpretarea valorilor campului FLAGS

O amprenta de timp da timpul si data la care un ruter a manipulat datagrama, exprimata in milisecunde in timp universal (adica ora si data fata de meridianul 0). Daca standardul de reprezentare pentru timp nu este disponibil, ruterul poate folosi orice reprezentare a timpului local pe care o va trece in campul corespunzator.

Desigur, amprenta de timp rezultata de la un calculatoare independente nu vor fi utile daca nu folosesc reprezentarea in timp universal, fiecare masina indicand timpul in concordanta cu un ceas local iar acestea difera in functie de fusul orar. Din acest motiv amprentele de timp trebuie tratate ca estimari, independent de reprezentare.

De obicei, optiunea este utilizata in conjunctie cu cea de inregistrare a rutei generand un mecamism util de depanare a algoritmilor de rutare

Optiunea de securitate

Aceast tip de optiune este folosit pentru a mentiona de secreta este informatia. In teorie, un ruter militar poate folosi acest camp pentru a specifica ca nu se doreste o dirijare prin anumite tari ce sunt considerate a fi periculoase. In practica,toate ruterele o ignora, deci singura sa functie practica este sa ajute "baietii rai" sa gaseasca mai usor lucrurile de calitate.

Procesarea in timpul fragmentarii

Functia bitului COPY din campul CODE ar trebui acum clarificata. Cand fragmenteaza o datagrama, un ruter reproduce unele optiuni IP in toate fragmentele in timp ce altele sunt plasate doar intr-un singur fragment.

De exemplu, consideram optiunea folosita pentru inregistrarea rutei. In cazul fragmentarii unei datagrame, fragmentele obtinute sunt manipulate ca orice datagrama propriu-zisa, fiecare putand merge pe o ruta diferita. In acest caz devine imposibila reconstituirea la destinatie a rutei parcurse de datagrama. De aceea standardul IP specifica ca optiunea de inregistrare a rutei trebuie copiata doar intr-unul din fragmente.

Nu toate optiunile IP pot fi restrictionate la un singur fragment. Astfel, daca dorim sa specificam cum o datagrama trebuie sa calatoreasca prin Internet, informatiile de rutare pe baza sursei vor fi copiate in headerul tuturor fragmentelor pentru ca ele sa poata urmari ruta specificata; totodata campul CODE care indica optiunea selectata va trebui sa apara in toate fragmentele.

Rutarea datagramelor IP

Rutarea intr-un Internet

Intr-un sistem cu comutare de pachte, rutarea se refera la procesul de alegere a unei cai prin care se vor trimite pachetele, iar ruterul este un calculator ce ia o asemenea decizie. Rutarea apare la mai multe niveluri. De exemplu, intr-o retea intinsa pe o suprafata mare si avand multiple conexiuni fizice intre care se schimba pachete, reteaua insasi este responsabila de rutarea pachetelor din momentul in care acestea intra si pana cand o parasesc. O asemenea rutare interna este complet inclusa intr-o retea extinsa. Masinile aflate in exterior nu pot participa la luarea deciziilor; ele vad reteaua ca o entitate ce manipuleaza pachete.

Reamintim ca scopul protocolului este sa furnizeze o retea virtuala ce include numeroase retele fizice si ofera un serviciu neorientat pe conexiune de transport de datagrame. Similar cu rutarea intr-o retea fizica, rutarea IP alege o cala prin care o datagrama va fi transmisa. Algoritmului de rutare IP ii revine sarcina sa aleaga modul in care va trimite o datagrama prin numeroase retele fizice.

Rutarea intr-o retea de tip Internet poate fi dificila in special intre calculatoare care au multiple conexiuni cu retele fizice. La modul ideal software-ul de rutare va examina probleme cum ar fi de pilda incarcarea retei, lungimea datagramei sau tipul serviciului specificat in headerul datagramei cand va selecta drumul optim. Oricum, majoritatea softaware-ului de rutare sunt mult mai putin sofisticate, si selecteaza rutele pe baza drumului minim.

Spre deosebire de un ruter care se conecteaza direct la doua sau mai multe retele, un calculator gazda se conecteaza in mod uzual direct la o retea fizica. Exceptie fac gazdele de tip multi-homed ce sunt conectate direct la mai multe retele. Atat gazdele cat si ruterele participa la ruterea unei datagrame catre destinatia sa. Cand o aplicatie de pe o gazda incearca sa comunice, protocolul TCP/IP in final genereaza una sau mai multe datagrame IP. Gazda trebuie sa ia o decizie de rutare cand alege unde sa trimita datagramele. Dupa cum se prezinta in figura 17, gazdele trebuie sa ia decizii de rutare chiar daca au o singura conexiune de retea.

Cai posibile catre destinatii

R1 R2

Gazda

Figura 17 Exemplu de gazda singly- homed care trebuie sa ruteze

datagrame

Desigur, ruterele fac si decizii de rutare IP, aceasta fiind principala lor functie si motivul pentru care se numesc rutere. Orice gazda cu conexiuni multiple (multi-homed) poate lucra ca si un ruter. Mai mult, site-urile care nu-si pot permite rutere separate uneori folsesc masini de uz general (cu multiplexare de timp) deopotriva ca gazda si ruter. In orice caz, standardul TCP/IP face o distictie serioasa intre functiile de ruter si cele de gazda. Pentru moment vom deosebi gazdele de rutere si vom presupune ca acestea nu pot indeplini functiile ruterelor de transferare a pachetelor de la o retea la alta.

Distributia directa si indirecta

In general vorbind, putem imparti rutarea in doua forme:

distributie directa;

distributie indirecta.

Distributia directa face transmisia unei datagrame de la o masina printr-o retea fizica direct la alta; este baza pe care se sprijina intrega comunicatie pe Internet. Doua masini pot face o distributie directa doar daca ambele ataca acelasi sistem de transmisie de baza (de exemplu un singur Ethernet). Distributia indirecta apare cand destinatia nu este intr-o retea atacata direct, obligand emitatorul sa paseze datagrama unui ruter pentru a o distribui.

Distributia datagramelor printr-o singura retea

Este cunoscut faptul ca o masina conectata la o retea fizica poate trimite un cadru fizic la o alta masina din aceeasi retea. Pentru a transfera o datagrama IP, emitatorul incapsuleaza datagrama intr-un cadru fizic, mapeaza adresa IP a destinatiei intr-o adresa fizica si foloseste reteaua pentru a-l distribui.

Nota: Transmisia unei datagrame IP intre doua masini aflate in aceeasi retea fizica nu are nevoie de rutere. Emitatorul incapsuleaza datagrama intr-un cadru fizic, mapeaza adresa IP a destinatiei intr-o adresa fizica si trimite cadrul rezultat directa la destinatie? Apare o problema: cum face emitatorul sa cunoasca daca destinatia se afla intr-o retea conectat direct?

Adresa IP este impartita intr-un prefix specific de retea si un sufix specific de gazda. Pentru a vedea daca o destinatie se afla intr-o retea conectata direct, emitatorul extrage din adresa de IP a destinatiei prefixul de retea si il compara cu cel al propriei adrese. Daca acestea se potrivesc atunci datagrama poate fi transmisa direct.

Nota: Intrucat adresele de Internet ale tututor masinilor aflate in aceeasi retea au un prefix de retea comun si extragerea acelui prefix poate fi facuta in cateva instructiuni masina, testarea faptului ca o masina poate fi atinsa direct este foarte eficienta.

Din perspectiva Internetului este simplu sa gandim distributia directa ca fiind pasul final al oricarei transmisii de datagrame, chiar daca aceasta a traversat cateva retele si rutere intermediare. Astfel, ruterul final face distributia datagramei folosind distributia directa.

Distributia indirecta

Distributia indirecta este mult mai dificila deoarece emitatorul trebuie sa identifice ruterul spre care trebuie trimisa datagrama. Ruterul trebuie apoi sa expedieze datagrama catre reteaua de destinatie. Pentru a intelege cum lucreaza rutarea indirecta consideram o retea intinsa de tip Internet formata din cateva retele interconectate prin rutere dar cu doar doua gazde aflate in punctele extreme. Cand o gazda doreste sa trimita o datagrama la alta, ea incapsuleaza datagrama si o trimite ruterului cel mai apropiat (aflat in aceeasi retea fizica cu el). Odata ce cadrul ajunge la ruter, software-ul extrage datagrama ce a fost incapsulat si software-ul IP alege urmatorul ruter aflat pe calea spre destinatie. Datagrama este in nou trecuta intr-un cadru fizic si trimisa prin urmatoare retea fizica la ruterul urmator si asa mai departe pana cand ea poate fi distribuita direct. Aceasta idee poate fi rezumata astfel:

Ruterele dintr-o retea de tip Internet TCP/IP formeaza o structura cooperanta interconectata. Datagramele trec de la un ruter la altul pana cand aceastea ating unul care le poate distribui direct.

Rutarea IP pe baza de tabela de rutare

Algoritmii uzuali de rutare IP folosesc o tabela de rutare (IP) pentru fiecare masina care stocheaza informatii despre posibile destinatii si cum pot fi acestea atinse. Deoarece atat gazdele cat si ruterele distribuie datagrame, ambele au tabele de rutare. Oride cate ori un software de rutare IP de pe o gazda sau ruter trebuie ca transmita o datagrama, ele vor consulta tabela de rutare pentru a decide unde o vor trimite.

Ce informatii trebuie pastrate intr-o astfel de tabela? Daca fiecare tabela de rutare ar contine informatii despre fiecare adresa de destinatie posibila, ele ar fi imposibil de pastrat in tabele curenta datorita dimensiunilor foarte mari pe care le-ar avea.

Metoda utilizarii prefixelor comune de retea face ca testul de distributie directa sa devina foarte eficient, asa incat tabele de rutare vor contine doar prefixe de retea si nu intrega adresa IP

Pasul de rutare urmator (next-hop)

Folosirea prefixului de retea dintr-o adresa IP in locul unei adrese completa de gazda face rutarea eficienta si mentine dimensiuni relativ reduse pentru tabelele de rutare. Mai important, ea ajuta la ascuderea informatiilor, pastrand detaliile despre gazdele specifice in limita mediului local in care acele gazde opereaza. In mod obisnuit, o tabela de rutare contine perechea (N,R), unde N este adresa IP a retelei destinatie si R este adresa IP a urmatorului ruter aflat pe calea spre retaua N. Ruterul N este numit next-hop, iar ideea folosirii unei tabele de rutare pentru a stoca saltul urmator pentru fiecare destinatie este numita rutare next-hop. Astfel in tabela de rutare a ruterului R se va specifica doar un singur pas pe calea data de la R la reteaua de destinatie - ruterul necunoscand calea completa pana la destinatie.

Este importand sa intelegem ca fiecare intrare in tabela de rutare poate sa indice un ruter care poate fi atins printr-o singura retea. Deci toate ruterele continute in tabela de rutare a masinii M trebuie sa se afle in retele cu care masina M este conectata direct. Cand o datagrama este gata sa paraseasca M, software-ul IP gaseste adresa IP de destinatie si extrage prefixul de retea. Cand M foloseste prefixul de retea pentru a lua o decizie de rutare, selecteaza acel ruter care poate fi atins direct.

In practica, aplicam principiul asunderii informatiei spre gazde. Cu toate ca gazdele au tabele de rutare IP, ele trebuie sa tina informatii minimale in propriile tabele. Ideea este sa fortam gazdele sa se bazeze pe rutere pentru majoritatea rutarilor.

Figura 18 prezinta un exemplu concret care ajuta explicarea tabelelor de rutare. Exemplul consta din patru retele conectate prin trei rutere. In figura, tabela de rutare da rutele pe care ruterul R le utilizeaza.


Reteaua 30.0.0.7

40.0.0.0

S

40.0.0.7 Reteaua

20.0.0.6 30.0.0.0

20.0.0.5 R

Reteaua

Reteaua Q 20.0.0.0 30.0.0.6

10.0.0.0

10.0.0.5

Pentru a atinge gazdele in retea Rutare adresa

20.0.0.0 Distributie directa

30.0.0.0 Distributie directa

10.0.0.0 20.0.0.5

40.0.0.0 30.0.0.l

Figura 18 Tabela de rutare a ruterului R

Deoarece R conecteaza direct la retele 20.0.0.0 si 30.0.0.0, el poate folosi distributia directa pentru a trimite la o gazda apartinand oricarei retele din cele doua (poate folosi ARP-ul pentru gasirea adresei fizice). Data fiind o datagrama destinata unei gazde din reteau 40.0.0.0, R ruteaza catre adresa 30.0.0.7, care este adresa ruterului S acesta putand sa o distribuie direct. R poate atinge adresa 30.0.0.7 deoarece atat R cat si S ataca direct reteaua 30.0.0.0.

Dupa cum demostreaza figura 18, dimensiunea tabelei de rutare depinde de numarul retelelor din Internet; ea creste doar cand noi retele sunt adaugate. In orice caz, dimensiunea si continutul sunt independente de numarul de gazde individuale conectate in retele.

Principiul fundamental poate fi concluzionat astfel:

Pentru a ascunde informatiile, pastrand astfel tabele de rutare mici, sipentru a face deciziile de rutare eficiente, software-ul de rutare IP pastreaza doar informatia despre adresa retelei de destinatie fara a o pastra si pe cea referitoare la adresele gazdelor individuale.

Alegerea rutelor bazata exclusiv pe ID-ul retelei destinatie are mai multe consecinte:

In majoritatea implementarilor el pune ca tot traficul destinat pentru o retea data urmeaza aceeasi cale. Ca rezultat, chiar daca exista multiple cai, ele nu pot fi utilizate concurent. Astfel,toate tipurile de trafic vor urma aceeasi cale fara a tine cont deintarzieriel sau capacitatea retei fizice.

Intrucat ruterul final incearca sa comunice cu gazda de destinatie, doar el poate determina daca gazda exista sau este operationala. In consecinta noi suntem obligati saranjam o cale pentru ca ruterul sa trimita raportul problemelor de distributie inapoi la sursa originala.

Fiecare ruter rutand independent, datagramele ce vin de la o gazda A catre o gazda B pot urma o cale complet diferita fata de datagramele ce vin de la gazda B inapoi la gazda A. Noi trebuie sa ne asiguram ca ruterele coopereaza pentru a garanta ca doua cai de comunicatie sunt intotdeauna posibile.

Rutele implicite

O alta tehnica folosita pentru ascunderea informatiilor si pastrarea dimensiuniii reduse a tabelelor de rutare intareste multiplele intrari intr-un caz implicit. Ideea este sa avem un software IP de retea care sa cerceteze mai intai tabela de rutare pentru reteau destinatie. Daca nu apare nici o ruta spre destinatie, rutinele de rutare trimit datagrama la un ruter implicit.

Rutarea implicita este folosita in special cand un site are un set mic de adrese locale si doar o conexiune cu restul Internetului. De exemplu, rutarea implicita lucreaza bine la masinile gazda care ataca o singura retea fizica si care atinge doar un singur ruter principal care ii asigura comunicatia cu restul Internetului. Toata decizia de rutare este formata din doua teste: unul pentru reteaua locala si altul implicit care indica un singur posibil ruter. Chiar daca site-ul contine cateva retele locale, rutarea este formata din cateva teste pentru retele locale plus una implicita pentru toate celelalte destinatii.

Rutele specifice de gazda

Cu toate ca noi spunem ca intrega rutare este bazata pe rutere si nu pe gazde individuale, majoritatea software-ului IP de retea permite ca rutarea pe baza gazdei sa fie specificata ca un caz special. Rutarea prin gazda da administratorului retei locale mai mult control asupra utilizatorilor retelei, permite testarea ei si poate fi utilizata la controlul accesului (in scopuri de securitate). Cand se depaneaza conexiuni de retea sau tabele de rutare, posibilitatea de a specifica o ruta speciala catre o masina individuala poate fi foarte utila.

Algoritmul de rutare IP

Rutare_datagrama (Datagrama, Tabela_de_rutare)

Extrage adresa IP a destinatiei D din datagrama si calculeaza prefixul de retea N;

Daca N coincide cu adresa reteie conectate direct distribuie datagrama spre destinatia D prin acea retea (aceasta implica maparea adresei D intr-o adresa fizica, incapsularea datagramei si trimitarea cadrului)

Altfel daca tabela contine o ruta specificata de gazda pentru D, trimite datagrama la urmatorul pas specificat in tabela;

Altfel daca tabela contine o ruta pentru reteaua N trimite datagrama la urmatorul pas specificat in tabela;

Altfel daca tabela contine o ruta implicita trimite datagrama la ruterul implicit specificat in tabela;

Altfel declara eroare

Rutarea cu adrese IP

Este importanta de inteles ca in afara de decrementarea timpului de viata si recalcularea sumei de control, rutarea IP nu modifica datagramele originale. In particular, datagrama sursa si adresa destinatie raman nemodificate; ele intotdeauna specifica adresa IP a sursei originale si adresa IP a ultimei destinatii. Cand IP-ul executa algoritmul de rutare,el selecteaza o noua adresa IP a masinii urmatoare la care trebuie trimisa datagrama. Totusi daca datagrama poate fi distribuita direct, noua adresa este foarte probabil adresa destinatiei finale.

Spunem ca adresa IP selectata prin algoritmul IP de rutare este cunoscut ca adresa "urmatorului salt" deoarece ea indica unde trebuie trimisa datagrama (chiar daca ea nu este destinatia finala). IP-ul nu o face memorarea "adresei de salt" in cadrul datagramei deoarece nu exista nici un camp alocat pentru ea. Dupa executarea algoritmului de rutare, IP-ul paseaza datagrama si "adresa de salt" la software-ul interfetei de retea responsabila de reteau fizica prin care datagrama trebuie trimisa. Acest software va calcula adresa de retea corespunzatoare pe baza adresei de salt, formeaza un cadru folosind acea adresa fizica, plaseaza datagrama in zona de date a cadrului si trimite rezultatul. Dupa folosirea adresei de salt la gasirea adresei fizice, software-ul interfetei de retea o va elimina.

Este posibil sa para ca tabele de rutare memoreaza adresa IP de salt pentru fiecare retea destinatie urmand ca acele adrese sa fie translatate in adrese fizice corespunzatoare inainte ca datagrama sa fie trimisa. Daca ne imginam o gazda trimitand o secventa de datagrame la aceeasi adresa, folosirea adresei IP poate pare incredebil, ineficienta. IP-ul extrage adresa destinatie din fiecare datagrama si foloseste tabela de rutare pentru a detemina urmatoarea adresa de salt. Apoi, el paseaza datagrama si adresa de salt la interfata de retea care calculeaza legatura cu o adresa fizica. Daca tabela de rutare ar folosi adrese fizice legatura dintre urmatoarea adresa de salt si adresa fizica poate fi data imediat, fara un calcul prealabil.

De ce software-ul IP evita folosirea adreselor fizice cand calculeaza si stocheaza rute? Dupa cum indica si figura urmatoare sunt doua rationamente importante

EXAMINARE SI DATAGRAMA CE

REACTUALIZARE A RUTELOR VA FI RUTATA

TABELA DE ALGOTIMUL DE RUTARE

RUTARE DIN SOFTWARE-UL IP

Folosirea adreselor IP

Folosirea adreselor fizice

DATAGRAMA CE VA FI TRIMISA

PLUS ADRESA DE SALT

Figura 19

In primul rand tabela de rutare furnizeaza in special o interfata curata intre software-ul IP care ruteaza datagrama i software-ul de nivel inalt care manipuleaza datagramele. La depanarea problemelor de rutare, administratorii de retea doresc de multe ori sa examineze tabelele de rutare. Folosirea doar a adreselor IP in tabele face simpla intelegerea acestora de catre administratorii de retea si usoara la a vedea daca software-ul a facut modificarea corecta a rutelor. In al doilea rand scopul protocolului Internet este ca construiasca o abstractie care sa ascunda detaliile retei de baza.

Figura 19 prezinta diviziunea conceptuala dintre software-ul de nivel scazut care intelege adrese fizice si software-ul Internet care foloseste doar adresele de nivel ridicat. Deasupra granitei dintre cele doua, toate software-le pot fi scrise sa inteleaga adrese Internet; cunoasterea adreselor fizice este destinata catorva mici rutine, de nivel scazut.

Manipularea datagramelor sosite

Cand o datagrama IP soseste la o gazda, software-ul interfetei de retea le distribuie la software-ul IP de procesare. Daca adresa destinatie a datagramei coincide cu adresa IP a gazdei, software-ul IP de pe gazda accepta datagrama si o trimite protocolului software de nivel inalt corespunzator pentru urmatoarele procesari. Daca adresa IP destinatie nu coincide, o gazda este obligata sa elimine datagrama (de exemplu gazdele sunt oprite sa incerce sa expedieze datagramele care sunt rutate accidental spre o masina incorecta).

Spre deosebire de gazde, ruterele executa expedierea. Cand o datagrama soseste la ruter, ea este software-ului IP. Din nou apar doua cazuri: datagrama a atins destinatia sa finala, sau ea trebuie sa mearga mai departe. Ca si la gazdele, daca adresa IP destinatie coincide cu propria adresa IP a ruterului, Software-ul IP trimite datagrama protocolului de nivel mai inalt pentru procesare. Daca destinatia nu a atins destinatia sa finala, IP-ul ruteaza datagrama folosind algoritmul standard si informatia din tabela de rutare locala.

Determinarea faptului ca o datagrama a atins destinatia sa finala nu este atat de simpla pe cat s-ar crede. Reamintim ca chiar o gazda poate avea conexiuni fizice multiple, fiecare cu propria adresa IP. Cando datagrama soseste, masina trebuie sa compare adresa de destinatie cu adresa IP a fiecareia dintre conexiunile sale de retea. La aparitia oricarei coincidente, el pastreaza datagrama si o proceseaza. O masina trebuie sa accepte datagramele de broadcast (difuzare) in reteaua fizica daca adresa lor IP de destinatie este adresa IP de broadcast limita sau adresa IP de broadcast directa pentru acea retea. In orice caz, daca adresa nu coincide cu cea a oricarei masini locale, IP-ul decrementeaza valoarea campului TIME TO LIVE din headerul datagramei, elimina datagrama daca valoarea acestui camp adevenit zero sau calculeaza o noua suma de control si ruteaza datagrama daca valoarea campului TIME TO LIVE este mai mare ca zero.

Trebuie ca fiecare masina sa expedieze datagramele receptionate? In orice caz un ruter trebuie sa expedieze datagramele deoarece aceasta este functia sa de baza. Noi avem deasemenea acele cateva gazde de tip multi-homed functionand ca rutere chiar daca ele sunt masini de uz general. Folosirea unei gazde ca si un ruter este de obicei o idee buna, daca cumva cineva ales sa foloseasca acest aranjament, gazda trebuind configurat ca si un ruter. Dar ce fac toate celelate gazde ce nu sunt configurate ca si un ruter? Raspunsul este ca, acele gazde nefiind proiectate a fi rutere nu trebuie sa ruteze datagramele pe care le receptioneaza; ele trebuie sa le elimine pe acestea.

Exista patru motive pentru care o gazda care nu este proiectata sa functioneze ca un ruter trebuie sa se opreasca de la indeplinirea oricaror functiide rutare:

cand o asemenea gazda receptioneaza o datagrama pentru alte masini oarecare, ceva a fost gresit cu adresarea Internet, rutare sau distributie. Problema nu fi poate identificata daca gazda face actiuni de corectie prin rutarea datagramei.

rutarea poate determina un trafic suplimentar inutil si sa ia din timpul CPU destinat utilizatorilor normali ai gazdei

erori simple pot produce haos. Presupunem ca fiecare gazda ruteaza traficul si sa vedem ce se intampla daca o masina face accidental broadcast-ul unei datagrame care era destinata pentru o anumita gazda H. Deoarece a fost un broadcast, fiecare din retea receptioneaza o copie a datagramei. Fiecare gazda expediaza propriile copii catre H, care va fi bombardat cu o multime de copii.

pentru ca ruterele fac mai mult de cat o simpla rutare. Aceastea utilizeaza un protocol special de raportare a erorilor in timp ce altele nu o fac (inca o data pentru a evita ca raportarea multiplelor erori sa bombardeze o sursa). Rutere deasemenea transmit informatia de rutare pentru a se asigura ca tabele lor de rutare sunt corespunzatoare. Daca gazdele ruteaza datagrame fara a participa complet la toate functiile de rutare, pot apare anomalii neasteptate.

Stabilirea tabelelor de rutare

Am discutat cum rutarea datagramelor se bazeaza pe continutul tabelelor de rutare, fara a spune cum sistemul initializeaza aceste tabele si le actualizeaza la schimbarile retelei. Capitolele urmatoare vor trata aceasta intrebare si va discuta protocoalele ce permit ruterelor sa mentina tabele consistente. Pentru moment este important sa intelegem ca software-ul IP foloseste tabela de rutare ori de cate ori el stabileste cum sa expedieze o datagrama, modificarea tabelelor de rutare implicand modificarea cailor urmate de datagrame.

Mesajele de eroare si control ale protocolului Internet (ICMP)

Introducere

Am vazut mai inainte cum software-ul IP furnizeaza un serviciu nesigur cu o distributie a datagramelelor neorientata pe conexiune. O datagrama calatoreste de la un ruter la altul inainte ca ea sa poata atinga unul care sa o poata distribui direct. Daca un ruter nu poate ruta sau distribui o datagrama sau daca ruterul detecteaza o conditie neobisnuita care influenteaza posibilitatea sa de a o expedia (cum ar fi de pilda congestia retelei), ruterul trebuie sa informeze sursa originala sa faca actiuni pentru a evita sau corecta aceste probleme. Acest capitol prezinta un mecanism pe care ruterele si gazdele il folosesc pentru a comunica informatia de control sau eroare. Vom vedea ca ruterele folosesc acest mecanism la raportarea problemelor, iar gazdele il folosesc pentru a testa daca destinatiile pot fi atinse.

Protocolul mesajelor de control din Internet

In sistemul neorientat pe conexiune, fiecare ruter functioneaza independent, rutand sau transportand datagramele care sosesc fara a exista vreo coordonare cu emitatorul original. Sistemul lucreaza bine daca toate masinile lucreaza corect si accepta o ruta. Din nefericire, sistemul nu lucreaza corect tot timpul. Mai mult decat in cazul caderii liniilor de comunicatie si a procesarii, IP-ul esueaza in distributia datagramelor cand masina destinatie este temporar sau permanent deconectata din retea, cand timpul de viata expira sau cand ruterele intermediare devin atat de congestionate incat nu pot procesa traficul. Diferenta importanta intre o singura retea implementata cu un harware dedicat si un Internet implementat cun software este ca in primul caz, proiectantul poate adauga un harware specializat care sa informeze gazdele atacate cand apar probleme. Intr-o retea de tip Internet, in care nu exista un asemenea mecanism hardware, un emitator nu poate spune cand o distribuire a esuat ca urmare a unei disfunctionalitati locale sau a uneia mai indepartate. Depanarea devine in acest caz extrem de dificila. Protocolul IP insusi nu contine ceva care sa ajute emitatorul sa testeze conectivitatea sau sa afle despre astfel de esecuri.

Ca si tot restul traficului, mesajele ICMP calatoresc prin Internet in mapate in zona de date a datagramelor IP. Destinatia finala a unui mesaj ICMP nu este un program de aplicatie sau utilizator de pe masina destinatie ci software-ul IP de pe acea masina. Cand un mesaj ICMP soseste, modul software ICMP il manipuleaza. Desigur, daca ICMP-ul determina ca un protocol particular de nivel inalt sau programul de aplicatie a cauzat o problema, el face informarea modulului apropiat. Putem concluziona:

ICMP-ul permite ruterelor sa trimita mesaje de eroare sau controlul la celelalte rutere sau gazde; ICMP-ul furnizeaza comunicatia intre software-ul IP pe o masina si software-ul IP de pe alta.

Desi initial a fost proiectat pentru a permite ruterelor sa raporteze cauza erorilor de distributie la gazde, ICMP-ul nu este restrictionat numai pentru rutere. Cu toate ca este restrictionata folosirea catorva mesaje ICMP, o masina arbitrara poate trimite un mesaj ICMP la orice alta masina. Astfel, o gazda poate folosi ICMP-ul sa comunice cu un ruter sau o alta gazda. Marele avantaj de a permite gazdelor sa utilizeze ICMP-ul este ca el furnizeaza un singur mecanism folosit pentru toate mesajele de control si de informatie.

Raportarea erorilor versus corectia erorilor

Din punct de vedere tehnic, ICMP-ul este un mecanism de raportare a erorilor. El furnizeaza o cale ruterelor care gasesc o eroare sa o raporteze sursei originale. Desi schita specificatiilor protocolului intentiona folosirea ICMP-ului si sugera posibile actiuni ce pot fi facute ca raspuns la fiecare eroare, ICMP-ul nu face o specificare completa a actiunii ce va fi facuta pentru fiecare eroare posibila. Pe scurt:

Cand o datagrama determina o eroare. ICMP-ul poate doar sa raporteze eroarea inapoi la sursa originala; sursa trebuie sa prezinte eroarea la un program de aplicatie individual sau sa faca alte actiuni pentru a acorecta problema.

Majoritatea erorilor provin de la sursa originala, insa altele nu. Deoarece ICMP-ul raporteaza problemele la sursa originala, el nu poate fi folosit pentru informarea ruterelor intermediare cu problemele ce au aparut. De exemplu, presupunem ca o datagrama urmeaza un drum ce trece prin o serie de rutere R1, R2,, Rk. Daca Rk are informatii de rutare incorecte si ruteaza gresit datagrama catre rutereul Re, Re nu poate folosi ICMP-ul pentru a raporta eroarea inapoi la sursa originala. Din fericire, sursa originala nu este responsabila cu problemele sau controlul prin rutere necorespunzatoarea. De fapt sursa nu poate determina care ruter a determinat problema.

Ce restrictioneaza ICMP-ul la comunicatia cu sursa originala? Raspunsul este dat de rutarea si formatul datagramelor. O datagrama contine doar campuri ce specifica sursa originala si destinatia finala; ea nu contine o inregistrare completa a drumului prin Internet (exceptand cazul in care optiunea de specificare a rutei este folosita). Mai mult, deoarece ruterele pot stabili si schimba propria tabela de rutare, nu exista o cunoastere globala a rutelor. Astfel cand o datagrama atinge un ruter dat, el nu cunoaste calea pe care ea a sosit acolo. Daca ruterul detecteaza o problema el nu poate sti setul de masini intermediare care au procesat datagrama, asa ca el nu poate sa le informeze de aparitia problemelor. In loc sa elimine tacut datagrama, ruterul foloseste ICMP-ul pentru a informa sursa originala ca o problema a survenit.

Distributia mesajelor ICMP

Mesajele ICMP necesita doua nivele de incapsulare (figura 20). Fiecare mesaj ICMP traverseaza Internetul in zona de date a datagramei IP care la randul ei traverseaza reteau fizica in zona de date a unui cadru. Datagrama transportand mesajele ICMP sunt rutate exact la fel ca si datagramele transpotand informatii pentru utilizatori; nu este asigurata o siguranta sau prioritate suplimentara pentru acestea. Astfel, mesajele de eroare insusi pot fi pierdute sau eliminate. Mai mult intr-o retea congestionata mesajul de eroare poate determina o congestie suplimentara. O exceptie poate fi cauzata de procedurile de manipulare a erorilor ia cazul in care o datagrama transportand un mesaj ICMP produce o eroare. Exceptia stabileste pentru a evita problema aparitiei mesajelor de eroare despre mesajele de eroare, specificand ca mesajele ICMP nu sunt generate pentru erori ce rezulta de la datagrame transportand mesaje de eroare ICMP.

ICMP ICMP DATA

HEADER

DATAGRAM DATAGRAM DATA AREA

HEADER

FRAME FRAME DATA AREA

HEADER

Figura 20 Cele doua niveluri de incapsulare ale mesajelor ICMP

Nota: Pentru a identifica ICMP-ul, campul PROTOCOL al datagramei contine valoare 1

Trebuie retinut faptul ca desi unele mesaje ICMP sunt incapsulate si trimise folosind IP-ul, ICMP-ul nu este considerat un protocol de nivel inalt; el este o parte necesara a IP-ului. Rationamentul din care este utilizat IP-ul pentru distributia mesajelor ICMP, este ca ele pot necesita trecerea prin multiple retele fizice inainte de a atinge destinatia finala. Astfel, ele nu pot fi distribuite doar prin transport fizic.

Formatul mesajelor ICMP

Desi fiecare mesaj ICMP are propriul sau format, toate incep cu trei campuri avand aceeasi structura:

un camp TYPE (tip mesaj) de tip intreg avand o lungime de 8 bit; indentificatipul mesajului'

un camp CODE (cod) ce furnizeaza mai multe informatii despre tipul mesajului.

un camp CHECKSUM (suma de control) cu o lungime de 16 biti (ICMP-ul foloseste acelasi algoritm pentru suma de control ca si IP-ul, dar suma de control ICMP protejeaza mesajul ICMP).

Suplimentar, mesajul ICMP care raporteaza erorile include intotdeauna headerul si primii 64 biti de date ai datagramei care a provocat problema.

Ratiunea din care se returneaza nu numai headerul datagramei este de a se permite receptorului sa determine cat mai exact care protocol (sau protocoale) si care program de aplicatie este responsabil pentru datagrama. Dupa cum se va vedea mai tarziu, protocoalele de nivel inalt din suita TCP/IP sunt proiectate astfel incat informatiile importante sa fie codificate in primii 64 de biti.

Campul ICMP TYPE defineste functia mesajelor precum si formatul lor. Aceste tipuri sunt:

Valoarea campului TYPE Tipul de mesaj ICMP


0 Raspuns ecou

3 Destinatie inaccesibila

4 Sursa prea rapida

5 Redirectare (schimba o ruta)

8 Cerere ecou

11 Timp depasit pentru datagrama

12 Problema de parametru la o datagrama

13 Cerere de amprenta de timp

14 Raspuns cu amprenta de timp

15 Cerere de informatie

16 Raspuns cu informatii

17 Cerere de masca de adresa

18 Raspuns cu masca de adresa

Testarea atingerii destinatie si a starii (ping)

Protocolul TCP/IP asigura facilitati pentru a ajuta administratorii de retea sau utilizatorii sa identifica problemele retelei. Una dintre cele mai frecvente tehnici de depanare folosite apeleaza mesajele cerere ecou si raspuns ecou. O gazda sau un ruter poate trimite un mesaj ICMP de cerere de ecou la o destinatie specificata. Orice masina care receptioneaza o cerere de ecou formeaza un raspuns si il returneaza emitatorului original. Cererea contine o zona de date optionala, iar raspunsul contine o copie a datelor trimise in cerere. Cererea de ecou si raspunsul asocita pot fi folosite pentru a testa cand o destinatie poate fi atinsa si daca raspunde. Deoarece atat cereare cat si raspunsul calatoresc in datagarame IP, o receptie cu succes a raspunsului verifica piesele importante ale functionarii sistemului de transport. Pentru inceput, software-ul IP de pe calculatorul sursa trebuie sa ruteze datagrama. Apoi, rutele intermediare dintre sursa si destinatie trebuie sa fie operationale si sa ruteze corect datagrama si masina destinatie sa fie operatioanala (ICMP-ul si software-ul IP trebuie sa lucreze). In final, toate ruterele situate de-a lungul caii de intoarcere trebuie sa aiba rute corecte.

In majoritatea sistemelor, comanda utilizata care invoca trimiterea cererii de ecou se numeste ping. Versiuni mai sofisticate de ping trimit o serie de ceri de ecopu ICMP, captureaza raspunsul si furnizeaza statistici despre datagramele pierdute. Ele permit utilizatorului sa specifice lungimea datelor ce vor fi trimise si intervalul dintre cereri. Versiunile simple trimit o cerere de ecou ICMP ai asteapta un raspuns.

Formatul mesajelor de cerere si raspuns la ecou

Campul OPTIONAL DATA (date optionale) este un camp de lungime variabila ce contine date ce vor fi returnate emitatorului. Un raspuns la de ecou intoarce intotdeauna ecaxt acelasidatecare au fost recptionate in cerere. Campurile IDENTIFIER (identificator) si SEQUENCE NUMBER (numar de secventa) sunt folosite ca emitatorul sa asocieze raspunsul cu cererea. Valoarea campului TYPE (tip) specifica daca mesajul in cauza este o cerere (8) sau un raspuns (0).

Figura urmatoare prezinta formatul acestor doua mesaje:

0 8 16 24 31


TYPE (8 sau0) CODE CHECKSUM

IDENTIFIER SEQUENCE NUMBER

OPTIONAL DATA

Figura 21 Formatul mesajelor de cerere si raspuns la ecou

Raportarea destinatiilor neatinse

0 8 16 24 31

TYPE (3) CODE (0-12) CHECKSUM

UNUSED (TREBUIE SA FIE ZERO)

INTERNET HEADER+FIRST 64 BITS OF DATAGRAM

Figura 22 Formatul mesajului "destinatie neatinsa"

Cand un ruter nu poate expedia sau distribui o datagrama IP, el trimite un mesaj destinatie neatinsa inapoi la sursa originala, folosind un format prezentat in figura urmatoare:

Campul CODE (cod) dintr-un astfel de mesaj contine un intreg ce ajuta la descrierea problemei. Valorile posible sunt:

Valoarea campului CODE Descriere

0 Retea neatinsa

1 Gazda neatinsa

2 Protocol neatins

3 Port neatins

4 Fragmentarea este necesara dar DF este

setat

5 Ruta sursa eronata

6 Retea destinatie necunoscuta

7 Gazda destinatie necunoscuta

8 Gazda sursa eronata

9 Comunicatia cu reteau destinatie interzisa

admistrativ

10 Comunicatia cu reteau destinatie interzisa

admistrativ

11 Retea neatinsa pentru tipul de serviciu

12 Gazda neatinsa pentru tipul de serviciu

Cu toate ca IP-ul este un mecanism de distributie cu efort maxim, eliminarea datagramelor trebuie sa nu fie acceptata foarte usor. Ori de cate ori o eroare impiedica un ruter ruteze sau sa distribuie o datagrama, ruterul trimite un mesaj "destinatie neatinsa" inapoi la sursa si apoi elimina datagrama. Eroarea de tip retea neatinsa este de obicei legata da rutarea gresita, iar cea de tip gazda neatinsa de distributia gresita. Deoarece mesajul de eroare ICMP contine un mic prefix al datagramei ce a creat problema, sursa va sti exact ce adresa nu poate fi atinsa.

Destinatiile mai pot fi neatinsa deoarece: hardvare-ul a fost temporar oprit, deoarece emitatorul a specificat o adresa inexistenta sau ruterul nu are o ruta spre acea destinatie (in rare cazuri). Desi ruterele raporteza greselile intalnite, ele pot sa nu cunoasca toate distributiile esuate. De exemplu, daca masina destinatie conecteza la o retea Ethernet, hardware-ul nu va furniza confirmari. Pentru aceasta, un ruter poate continua sa trimita pachetela o destinatie dupa ce aceasta a fost oprita, fara ca acesta sa receptioneze orice indicatie ca pachetele nu sunt distribuite. In concluzie:

Cu toate ca un ruter trimite un mesaj destinatie neatinsa cand el intalneste o datagrama ce nu poate fi expediata sau distribuita, el nu poate detecta toate asemea erori.

Intentia mesajelor protocol neatins si port neatins va deveni clara cand vor fi clare cand vom studia cum protocoalele de nivel inalt folosesc puncte abstracte de destinatie numite porturi. Daca o datagrama contine in optiunea de rutare pe baza sursei o ruta incorecta, el poate trimite un mesaj de eroare ce indica ca ruta data este gresita. Daca un ruter trebuie sa faca fragmentarea unei datagrame dar aceasta are bitul DF setat, ruterul trimite un mesaj fragmentare necesara inapoi la sursa indicand acesteia ca este necesara fragmentare.

Controlul congestiei si fluxului de datagrame

Deoarece IP-ul este neorientat pe conexiune, un ruter nu poate rezerva memorie sau alte resurse inaintea receptiei daragramelor. Ca urmare, ruterele pot fi supraincarcate cu trafic, problema cunoscuta sub numele de congestie. Este import sa intelegem ca aceasta congestie poate apare din doua motive complet diferite. Primul, un calculator de mare viteza poate sa genereze un trafic rapid peo retea care poate sa-l sustina. De exempu, ne imaginam un supercalculator generand trafic in reteaua Internet. Datagramele pot eventual trebui sa treaca printr-o retea WAN de viteza scazuta chiar daca supercalculatorul ataca direct un LAN de mare viteza. Congestia poate apare la calculatorul care ataca reteau WAN dinspre LAN, deoarece datagramele sosesc mai rapid decat sunt trimise. A doua, daca cateva calculatoare simultan doresc sa trimita datagrame la un sungur ruter, acesta poate experimenta congestia chiar daca problema a fost creat nu de o singura sursa.

Cand o datagramele sosesc prea repede pentru a fi procesare de un ruter sau o gazad, el o pastreaza in memoria temporara. Daca datagramele sunt de dimensiune mica asemenea buffere pot rezolva problema. Daca traficul continua, gazda sau ruterul elibereaza memoria si elimina datagramele suplimentare care sosesc. In acest caz, o masina folosesc mesajul ICMP sursa prea rapida pentru a raporta congestia la sursa originala. Un asemenea tip de mesaj este o cerere catre sursa originala de a reduce rata de transmisie a datagramelor. De obicei ruterele congestionate trimit un mesaj de tip sursa prea rapida pentru fiecare datagrama pe care o elimina. Ruterele mai pot folosi o tehnica de control a congestiei mai sofisticata. Unele monitorizeaza traficul care soseste si sursele prea rapide care au o rata superioara de trasmisie a dtagramelor. Celelate incearca sa evite congestia prin trimiterea de mesaje surselor prea rapide si pregatesc cozile lor de asteptare inainte ca ele sa fie depasite de situatie

Nu exista un mesaj ICMP care sa anuleze efectul surselor prea rapide. In schimb o gazda care receptioneaza un mesaje de tip "sursa prea rapida" pentru o destinatie D, scade viteza cu care trimite datagrame la D, pana cand el numai receptioneaza mesaje sursa prea rapida; apoi creste gradat rata de transfer atata vreme cat nu se receptioneaza alte mesaje.

Formatul mesajului sursa prea rapida

Suplimentar fata de campurile uzuala TYPE, CODE, CHECKSUM si un camp neutilizat de 32 de biti mesajul "sursa prea rapida" contine un prefix de datagrama. Figura urmatoare prezinta formatul mesajului. Ca si in majoritatea mesajelor ICMP care raporteaza, campul suplimentar va contine prefixul datagramei care a generat problema.

0 8 16 24 31

TYPE (4) CODE (0) CHECKSUM

UNUSED (TREBUIE SA FIE ZERO)

INTERNET HEADER+FIRST 64 BITS OF DATAGRAM

Figura 23 Formatul mesajului "sursa prea rapida"


Cereri catre rutere de schimbare a rutei

Tabelele de rutare raman de obicei nemodificate o lunga perioada de timp. Gazdele le initiaza pe acestea dintr-un fisier de configurare la fiecare pornire a sistemului, iar administratorii de sistem rareori fac schimbari de rute in cazul incare sistemul functioneaza bine. Daca topologia retelei se schimba, tabelele de rutare dintr-un ruter sau o gazda pot deveni incorecte. O modificare poate fi temporara (cand un subansamblu hardware trebuie reparat) sau permanenta (cand o noua retea este adaugata in Internet). Dupa cum vom vedea in capitolele urmatoare, ruterele schimba informatie de rutare periodic pentru a se acomoda cu schimbarile retelei si pentru a pastra tabele de rutare coerente. Regula:

Se presupune ca ruterele cunosc rutele corecte; gazdele incep cu informatii de rutare minimale si invata de la rutere noile rute.

Pentru a ajuta indeplinirea acestei reguli si pentru e evita duplicarea informatiilor de rutare in fisierul de configurare al fiecarei gazde, configuratia initialade rutare a unei gazde specifica minimul de informatie de rutare posibila (de exemplu adresa unei singur ruter). In cazul special in care un ruter detecteaza o gazda folosind o rutane optimala, el trimite un mesal ICMP redirectare cerand ca gazda sa-si schimbe ruta; totusi el expediaza spre destinatie datagrama originala.

Avantajele schemei de redirectare ICMP sunt evidente: ea permite unei gazde la initializare (pornire) sa cunoasca adresa unui singur ruter din reteau locala. Ruterul initial intoarce un mesaj ICMP de redirectare ori de cate ori o gazda trimite o datagrama pentru care exista un drum mai bun. In acest mod tabelele de rutare raman mici dar contin totusi rutele optime pentru toate destinatiile folosite.

Mesajele de redirectare nu rezolva la modul general problema propagarii rutelor, deoarece ele sunt limitate la interactiunile dintre un ruter si o gazda intr-o retea conectata direct. Figura 24 ilustreaza aceasta limitare. In figura, presupunem ca sursa S trimite o datagrama catre destinatia D. Presupunem ca ruterul R1 ruteaza incorect datagrama prin ruterul R2 in loc de ruterul R4 (alegand o cale mai lunga). Cand ruterul R2 receptioneaza datagrama, el nu poate trimite un mesaj ICMP de redirectare catre R1 deoarece nu cunoaste adresa lui R1.


R2

R3

R1 R5

D

S

R4

Figura 24

Suplimentar fata de campurile necesare TYPE, CODE si CHECKSUM, fiecare mesaj de redirectare contine un camp de 32 de biti ROUTER INTERNET ADDRESS (adresa de Internet a ruterului) si un camp ce contine headerul si primii 64 de biti ai datagramei ce a generat mesajul.

0 8 16 24 31

TYPE (5) CODE (0-3) CHECKSUM

ROUTER INTERNET ADDRESS

INTERNET HEADER+FIRST 64 BITS OF DATAGRAM

Figura 25 Formatul mesajului de redirectare

Campul ROUTER INTERNET ADDRESS contine adresa unui ruter care este folosit de gazda pentru a atinge destinatia mentionata in headerul datagramei. Campul uramtor contine headerul si primii 64 de biti ai datagramei ce a generat mesajul. Astfel, o gazda receptionand mesajul ICMP de redirectare examineaza prefixul datagramei pentru a determina prefixul adresa ei de destinatie. Campul CODE specifica suplimentar cum trebuie interpretata adresa destinatie pe baza valorilor asignate acestuia:

Valoare camp CODE Descriere

0 Redirectare datagrama pentru retea

1 Redirectare datagrama pentru gazda

2 Redirectare datagrama pentru tipul de serviciu si retea

3 Redirectare datagrama pentru tipul de serviciu si gazda

Nota: Reamintim ca fiecare header IP specifica un tip de serviciu folosit pentru rutare.

Ca o regula generala, ruterele trimit cereri ICMP de redirectare doar catre gazde si nu catre celelate rutere. Ruterele folosesc alte protocoale pentru a schimba informatie de rutare.

Detectarea rutelor circulare sau excesiv de lungi

Deoarece la rutarea prin Internet se calculeaza adresa urmatoare de salt folosind tabele locale, erori in astfel de tabele pot duce la o rutare ciclica pentru aceeasi destinatie D. Un ciclu de rutare poate fi format din doua sau mai multe rutere. Daca o datagrama intra intr-un astfel de ciclu, ea va fi pasata de la un ruter la altul la nesfarsit. Dupa cum s-a mentionat anterior, pentru a combate astfel de probleme, headerul fiecarei datagrame IP contine numarator care limiteaza timpul ei de viata (uneori numit numarator de salturi). Un ruter decrementeaza acest numarator ori de cate ori manipuleaza o datagrama si o elimina in cazul in care el a devenit zero.

De fiecare data cand un ruter elimina o datagrama deoarece numaratorul de salturi a devenit zero sau a expirat in timp ce o datagrama astepta pentru fragmentare, el trimite un mesaj ICMP timp depasit inapoi la sursa datagramei folosind un format prezentat in figura 25.

0 8 16 24 31


TYPE (11) CODE(0/1) CHECKSUM

UNUSED (TREBUIE SA FIE ZERO)

INTERNET HEADER+FIRST 64 BITS OF DATAGRAM

Figura 25 Formatul mesajului timp depasit

Campul CODE indica cauza depasirii de timp:

Valoarea campului CODE Descriere

0 Timpul de viata a fost depasit

1 Reasamblarea fragmentului a dus la depasirea timpului

Nota: Reasamblarea fragmentelor se refera la functia de colectare a tuturor fragmentelor ce formeaza o datagrama.Cand primul fragment al unei datagrame soseste, gazda receptoare porneste un numarator si ea considera o eroare daca numaratorul expira inainte ca toate fragementele sa fi sosit. Valoarea1 a campului CODE este folosita pentru a raporta asemenea probleme la emitator; un mesaj este trimis pentru fiecare eroare.

Raportarea celorlate probleme

Cand un ruter sau o gazda detecteaza probleme cu datagrama ce nu sunt acoperite prin mesaje de eroare ICMP (de exemplu header incorect), el trimite un mesaj "problema de parametri" la sursa originala. O cauza posibila pentru asemenea probleme o constituie incorectitudinea parametrilor dintr-o optiune. Mesajul prezentat in figura 26 este trimis doar cand problemele sunt atat de multe ca datagrama trebuie eliminata.

0 8 16 24 31


TYPE (12) CODE(0sau1) CHECKSUM

POINTER UNUSED (TREBUIE SA FIE ZERO)

INTERNET HEADER+FIRST 64 BITS OF DATAGRAM

Figura 26 Formatul mesajului "problema de parametri"

Pentru a face mesajul cat mai clar, emitatorul foloseste campul POINTER din headerul mesajului pentru a identifica octetul din datagrama care a determinat problema. Valoare 1 pentru campul CODE este folosit pentru a raporta ca o optiune necesara lipseste (de exemplu, optiunea de securitate in comunicatii militare); pentru valoarea 1 campul POINTER nu este folosit.

Ceasul de sincronizare si estimarea timpului de tranzit

Cu toate ca masinile dintr-o retea Internet pot comunica, ele lucreaza de obicei independent, fiecare folosind valoarea locala a timpului curent. Ceasurile diferind in mare masura, pot crea confuzii utilizatorilor de sisteme softaware distribuite. Protocolul TCP/IP include mai multe mai multe metode ce pot fi utilizate la sincronizarea ceasurilor. O tehnica simpla foloseste un mesaj ICMP pentru aobtine timpul de la alta masina. O masina poate cere alteia sa-i trimita valoarea de timp curenta printr-un mesaj ICMP numit amprenta de timp. Masina ce receptioneaza un asemenea mesaj intoarcere masinii care a facut cererea un mesaj raspuns cu amprenta de timp. Fromatul celor doua mesaje este prezentat in figura urmatoare:

0 8 16 24 31


TYPE(13sau14) CODE (0) CHECKSUM

IDENTIFIER SEQUENCE NUMBER

ORIGINATE TIMESTAMP

RECEIVE TIMESTAMP

TRANSMIT TIMESTAMP

Figura 27 Formatul mesajelor de cerere si raspuns a amprentei de timp

Valoare campului TYPE indentificamesajul sa fiind o cerere (13) sau un raspuns (14); campurile IDENTIFIER si SEQUENCE NUMBER sunt folosite de catre sursa pentru a asocia o cerere cu un raspuns. Celelalte campuri specifica valori de timp datein milisecunde fata de miezul noptii in timp universal. Campul ORIGINATE TIMESTAMP este completat de emitatorul cererii exact inaite ca cererea sa fie transmisa, campul RECEIVE TIMESTAMP este completat imediat dupa primirea cererii. Iar campul TRANSMIT TIMESTAMP este completat ianite caraspunsul sa fie transmis.

O gazda foloseste aceste trei campuri pentru a calcula intarzierile de timp si la sincronizarea ceasului sau. Deoarece raspunsul contine si campul ORIGINATE TIMESTAMP, o gazda poate calcula timpul total necesar pentru ca o cerere sa calatoreasca pana la destinatie, sa fie transformat in raspuns si apoi sa fie retransmisa. Calculul timpului de tranzit poate fi folosit la estimarea diferentei dintre ceasurile locale.

In practica, precizia estimarii intarzierilor poate fi dificila si din aceasta cauza se pun restrictii la utilizarea mesajelor ICMP de amprenta de timp. Desigur, obtinerea de estimari precise ale intarzierilor dintre doua masini conectate intr-o retea intansa pot varia dramatic chiar si la intervale mici de timp. Mai mult, datagramele pot fi pierdute, intarziate sau livrate intr-o ordine oarecare. Astfe, facand doar cateva masuratori nu poti garanta consistenta rezultatului; sunt necesare analize statistice sofisticate pentru a obtine estimari precise.

Mesajele de cerere de informatii si raspuns

Mesajele ICMP de cerere de informatii si raspuns cu informatii (tipurile 15 si 16) sunt considerate invechite si nutrebuie folosite. Initial intentionau sa permira gazdelor sa descopere adresa lor de Internet la pornirea sistemului. Protocoalele folosite acum pentru determinarea adresei sunt RARP si BOOTP.

Obtinerea unei masti de subretea

Atunci cand o gazda foloseste adresarea de subretea, cativa biti din adresa de IP identifica reteaua fizica din care face parte. Pentru a participa la adresare subretea, o gazda trebuie sa stie care din cei 32 de biti ai adresei sale corespund retelei fizice si care identificatorului de gazda. Informatia necesara pentru a intelege o adresa este reprezentata pe 32 de bit sise numeste "masca de subretea".

Pentru a obtine masca de subretea folosita pentru o retea locala, o masina trebuia sa trimita un mesaj de cerere de masca de adresa la un ruter si sa receptioneze un mesaj raspuns cu adresa de subretea. Masina ce face cererea poate trimite fiecare mesaj direct daca cunoaste adresa ruterului sau sa dea un mesaj de broadcast in caz contrar. Figura 27 prezinta formatul acestor doua mesaje.

0 8 16 24 31


TYPE(17sau18) CODE (0) CHECKSUM

IDENTIFIER SEQUENCE NUMBER

ADDRESS MASK

Figura 27 Formatul mesajelor de cerere de informatii si raspuns

Campul TYPE specifica daca mesajul este o cerere (17) sau un raspuns (18). Un raspuns contine masca adresei de subretea a acelei retei in campul ADDRESS MASK, iar campurile IDENTIFIER si SEQUENCE NUMBER permit asocierea cererii cu raspunsul.

Extensia adreselor de subnet si supernet

Introducere

Acest capitol examineaza patru extensii ale schemei de adrese IP care permite unui site sa foloseasca o singura adresa IP de retea pentru mai multe retele. El descrie motivele pentru care sunt necesare aceste extensii si descrie mecanismul de baza pentru fiecare. In particular, el prezinta detaliile schemei de subretea care este acum inclusa in standardul TCP/IP.

Revederea unor fapte importante

Am vazut deja in capitolele anterioare ca adresele IP de 32 biti sunt cu grija distribuite pentru a furniza adrese IP tuturor gazdelor dintr-o retea fizica data impartind un prefx comun. In schema originala a adreselor IP, s-a proiectat ca prefixul comun sa defineasca partea de retea a unei adrese Internet iar ceea ce ramne partea de gazda. O consecinta importanta a celor spuse este:

In schema de adresare IP originala, fiecrae retea fizica are asignata ounica adresa de retea; fiecare gazda dintr-o retea are adresa de retea ca prefix al adresei sale individuale de gazda.

Principalul avantaj al divizarii unei adrese IP in doua parti se observa in tabelele de rutare ale ruterelor. In loc acestea sa pastreze o intrare per gazda de destinatie, ele doar pastreaza o intrare per retea si examineaza doar partea de retea cand iau o decizie de rutare.

Reamintim ca TCP/IP-ul impaca in mare masura o mare diversitate de retele de dimensiuni diferite prin utilizarea a trei clase fundamentale de adrese. Retelele avand asignata clasa A de adrese impart cei 32 biti in 8 biti pentru partea de retea si 24 pentru partea de gazda. Clasa B de adrese partitioneaza adresa IP 16 biti pentru partea de retea si 16 biti pentru partea de gazda, in timp ce clasa C partitioneaza adresa in 24 biti pentru partea de retea si 8 biti pentru partea de gazda.

Este importantant de stiut ca site-urile individuale, au libertatea sa modifice adresele si rutele atata timp cat modificarile raman invizibile celorlalte site-uri. Un site poate alege sa asigneze si sa foloseasca adrese IP in cazuri interne neobisnuite atata vreme cat:

toate gazdele si ruterele din acel site accepta schema de adresare a site-ului.

celelalte site-uri din Internet pot trata adresele respective asa cum au fost gandite ele in schema originala.

Minimizarea numarului de retea

Schema originala IP de adresare parea initial ca va acoperi toate posibilitatile, dar ea are totusi o mica slabiciune si anume epuizarea adreselor disponibile. Cresterea numarului de statii este foarte mare, practic dublandu-se la fiecare noua luni. Un numar mare de retele cu dimensiuni mici stresseaza proiectarea Internetului deoarece ea implica:

sarcini administrative foarte mari datorate numai gestiunii adreselor de retea.

ca tabelele de rutare sa devina din ce in ce mai mari.

extinderea spatiului de adrese.

A doua problema este importanta deoarece ea ne indica ca atunci cand ruterele trebuie sa schimbe informatie din tabelele lor de rutare incarcarea retelei va fi mare (pe masura efortului de calcul impus ruterelor participante). A treia problema este cruciala deoarece structura initiala de adrese nu s-a putut acomoda numarului curent de retele existente in reteaua Internet. Intrebarea care se naste este: Cum putem minimiza numarul asignat adreselor de retea, in special de clasa B fara a distruge schema originala de adrese?

Singura solutie este ca acelasi prefix de retea sa fie utilizat de mai multe retele fizice. Pentru a minimiza clasa B de adrese trebuie sa fie folosita in schimb clasa C de adrese. Asta implica modificarea procedurilor de rutare si toate masinile care conecteaza retelele in discutie trebuie sa inteleaga conventia folosita.

Ideea impartirii unei adrese de retea intre multiple retele fizice nu este noua si imbraca diverse forme. Noi vom examina trei dintre ele:

Utilizand rutere transparente;

Folosind proxy ARP;

Utilizand subretele IP standard.

Deasemenea vom lua in discutie subclasele de adresare, ideea asignarii multiple a adreselor de clasa C in locul celor de clasa B.

Rutere transparente

Schema ruterului transparent este bazata pe observatia ca o retea avand asignata o clasa A de adrese IP, poate fi extinsa printr-un artificiu simplu, prezentat in figura urmatoare:


H1

H2

WAN T

H3

H4

Figura 30 Un ruter transparent T ce extinde o retea WAN prin conectarea la un site a mai multor gazde


Artificiul consta in aranjarea pentru reteaua fizica (uzual o retea WAN) a multiplexarii mai multor conexiuni de gazda folosind un singur port de gazda. Dupa cum prezinta figura 30, un ruter de uz special T conecteaza un singur port de gazda dintr-o retea de tip WAN cu o retea de tip LAN. T este numit ruter transparent deoarece celelalte gazde si rutere din WAN stiu de existenta lui.

LAN-ul are propriul sa prefix IP; gazdele ce il ataca au asignate adrese ca si cand ar fi conectate direct la WAN. Ruterul trasparent demultiplexeaza datagramele care sosesc din WAN trimitandu-le gazdei corespunzatoare (prin utilizarea tabelei sale de rutare). Totodata acestea accepta datagrame de la gazdele din LAN si le ruteaza prin WAN-ul apropiat catre destinatia lor.

Pentru a face demultiplexarea eficienta, ruterele transparente divid adresa IP in mai multe parti si codifica informatia lor in partile neutilizate. De exemplu ARPANET-ul a asociat retelei adresa de clasa A 10.0.0.0. Fiecare nod de comutare de pachete (PSN) din ARPANET are o adresa unica de tip intreg. Intern, ARPANET-ul trateaza orice sir de 4 octeti ai unei adresei IP in forma 10.p.u.i ca si patru octeti separati care specifica o retea (10), un port specific de destinatie PSN (p) si o destinatie (i). Octetul u ramane neutilizat, deoarece adresele ARPANET 10.2.5.37 si 10.2.9.37 se refera amandoua la gazda 2 a PSN 37. Un ruter transparent conectat la PSN 37 pe portul 2 poate utiliza octetul u pentru a decide ce gazda reala trebuie sa recptioneze datagrama.

Ruterele trasparente avantaje si dezavantaje in comparatie cu ruterele conventionale. Marele avantaj este ca ele necesita cateva adrese de retea deoarece reteua locala (LAN-ul) nu cere un prefix IP separat. Altul este ca ele pot supotra o balansare a incarcarii. . Daca doua rutere transparente conecteaza acelasi LAN, traficul spre gazdele din acea retea poate fi impartit intre ele. In comparatie, ruterele conventionale pot mentioma doar o rita catre reteaua data.

Un dezavantaj al ruterelor trasparente este ca ele pot lucra doar cu retele care au un spectru mare de adrese din care sa aleaga adresele gazdei. Asitfel, ele lucreaza bine cu retele de clasa A si nu lucreaza bine cu retele de clasa C. Inca un dezavantaj este faptul ca ele fiind rutere neconventionale, nu pot furniza toate serviciile ruterelor conventionale. In particular, ruterele transparente nu pot sa participe in intregime la ICMP sau la protocoale de administrare a retelei precum SNMP. Mai mult chiar,ele nu returneaza ecou la cereri ICMP (un apel de tip ping nu poate determina daca un ruter tranparent este operationale sau nu).

Proxy ARP

Termenul de proxy ARP indica o a doua tehnica folosita pentru maparea unui singur prefix IP la doua adrese fizice. Tehnica, care se aplica doar la retelele ce folosesc ARP-ul pentru a lega adresele Internet la adresele fizice, este prezentat in figura ce urmeaza:

Main Network

H1 H2 H3 Ruter folosind proxy ARP

R

H4 H5

Hidden Network

Figura 31 Tehnica proxy ARP ce permite unei adrese de retea sa fie folosita de doua retele fizice


In figura, reteaua etichetata "Main network" este reteaua originala, iar cea etichetata "Hidden network" a fost adaugata mai tarziu. Ruterul ce conecteaza cele doua retele R, cunoaste ce gazde se afla in fiecare retea si foloseste ARP-ul pentru a mentine iluzia ca exista doar o retea. Pentrua face ca iluzia sa lucreze, R pastreaza asezarea gazdelor complet ascunsa, permitand tuturor masinilor suplimentare din retea sa comunice ca si cand ar fi conectate direct. In exemplul nostru, cand gazda H1 doreste sa comunice cu gazda H4, la inceput invoca ARP-ul pentru a mapa adresa IP a lui H4 intr-o adresa fizica. Indata ce adresa fizica este cunoscuta H1 poate trimite direct datagrama la acea adresa fizica

Deoarece R utilizeaza un software proxy ARP, el capteaza cerearea de broadcast ARP de la H1, decide daca masina invocata se afla in alta retea fizica si raspunde la cerere ARP prin trimiterea propriei adrese fizice. H1 receptioneaza raspunsul ARP, instaleaza maparea in tabela sa ARP si apoi o foloseste pentru a trimite datagrama lui H4 la R. Cand R receptioneaza o datagrama, el cauta tabela de rutare speciala pentru a determina cum sa ruteze datagrama. R trebuie sa trmita datagrama in reteaua ascunsa. Pentru a permite gazdelor din reteaua ascunsa sa atinga gazdele din reteaua de baza, R furnizeaza un serviciu de proxy ARP in acea retea.

Ruterele folosind tehnica proxy ARP au avantajul utilizarii unei importante facilitati a protocolului ARP, si anume, increderea. ARP-ul se bazeaza pe faptul ca toate masinile coopereaza si orice raspuns este legal. Majoritatea gazdelor instaleaza mapari obtinute prin ARP fara a verifica validitatea lor si fara a sustine consistenta lor. Astfel se poate intampla ca tabela ARP sa mapeze mai multe adrese IP la aceeasi adresa fizica, fara a face o violare a specificatiilor de protocol.

Cateva implementari ale ARP-ului nu sunt atat de neglijente ca celelalte. In particular, implementarea ARP proiecteaza avertizarea administratorilor de retea de eventualele incalcari de securitate, informandu-i pe acestia ori de cate ori doua adrese fizice distincte sunt mapatelaaceeasi adresa fizica. Rezultatul unei astfel de erori este ca o masina poate sustine a fi alta pentru a-i intercepta pachetele. Implementarile ARP pentru gazde ce avertizeaza administratorii de posibilele erori nu pot fi folosite in retelele care au rutere proxy ARP deoarece software-ul va genera frecvent mesaje

Principalul avantaj al proxy ARP este ca el poate fi adaugat la un ruter intr-o retea fara a deranja tabelele de rutare ale celorlate gazde sau rutere din acea retea. Astfel, proxy ARP ascunde complet detaliile legate de conexiunile fizice.

Marele dezavantaj al proxy ARP este ca el nu poate lucra pentru retele care nu folosesc ARP-ul pentru rezolutie de adrese. Mai mult, el nu poate fi generalizat pentru topologii de retele mai complexe (de exemplu multiple rutere interconectand doua retele fizice), nici nu suporta o forma de rutare rezonabila. De fapt majoritatea implementarilor de proxy ARP se bazeaza pe administratori pentru a intretine manual tabelele masinilor, ceea ce implica un consum suplimentar de timp si creste posibilitatea de aparitie a erorilor.

Adresarea subretelelor

A treia tehnica folosita pentru a permite unei singure adrese de retea sa fie folosita de multiple retele fizice este numita adresare de subretea, rutare subretea sau subnetting. Aceasta tehnica este cea mai larg raspandita dintre toate. De fapt aceasta adresa este o parte necesara a adresarii IP.

Pentru a intelege mai bine, presupunem ca exista un site avand asignata o singura adresa de retea de clasa B pentru doua sau mai multe adrese fizice. Doar ruterul local stie ca acolo sunt mai multe retele fizice si stie cum sa trateze traficul intre ele; ruterele din celelalte sisteme autonome ruteaza tot traficul ca si cum acolo s-ar afla o singura retea fizica. Figura urmatoare prezinta un astfel de exemplu.

Network 128.10.1.0


128.10.1.1 128.10.1.2

Restul H1 H2

Internetului T

Network 128.10.2.0

128.10.2.1 128.10.2.2

H3 H4

Figura 32 Un site cu doua retele fizice folosind adresarea de subretea

In exemplu, site-ul foloseste singura adresa de clasa B 128.10.0.0 pentru doua retele. Cu exceptia ruterului R toate ruterele din Internet ruteaza ca si cand acolo ar fi o singura retea fizica. Indata ce un pachet ajunge la R, el trebuie trimis prin reteaua corecta spre destinatia sa. Pentru a face eficienta alegerea rutei, site-ul local alege pentru utilizare al treilea octet din adresa IP spre a deosebi cele doua retele. Administratorii asociaza masinilor dintr-o retea fizica adresa de forma 128.10.1.X si masinilor din cealata retea fizica pe cea de forma 128.10.2.X, unde X reprezinta un intreg folosit pentru a identifica o anumita gazda. Pentru a alege reteaua fizica ruterul R examineaza cel de-al treilea octet al adresei de destinatie si ruteaza datagrama avand valoare 1 spre reteaua etichetata 128.10.1.0 si acelea cu valoare 2 spre cea etichetata 128.10.2.0.

Conceptual, adugarea de subretele doar schimba intr-o mica masura interpretarea adreselor IP. In loc de divizarea adresei Ip de 32 de biti intr-un prefix de retea si un sufix de gazda, adresarea de subretea imparte adresa intr-o parte de retea si o parte locala. Interpretarea partii de retea ramane aceeasi ca si pentru cele care nu folosesc adresarea de subretea. Ca si inainte, atingerea retelei fizice trebuie sa fie anuntata sistemelor autonome din afara; tot traficul destinat pentru retea poate urmari ruta anuntata. Interpretarea portiunii locale a unei adrese este lasata in grija site-ului (in limita constrangerilor standardului formal pentru adresarea de subretea). In concluzie:

Noi gandim adresa IP de 32 biti ca avand o parte de Internet si o parte locala; unde partea de Internet identifica un site, posibil cu multiple retele fizice si partea locala identifica o retea fizica si o gazda din acel site.

Exemplul din figura anterioara prezenta adresarea de subretea ca avnd doi octeti pentru partea de Internet si doi pentru partea locala. Pentru a face rutarea eficienta intre cele doua retele, administratorul de site din exemplul nostru a ales sa utilizeze un octet pentru identificarea retelei fizice si celalalt octet pentru a identifica gazda din acea retea, dupa cum prezinta si figura 33


Parte de Internet Parte locala (a)

Parte de Internet retea fizica gazda (b)

Figura 33 (a) Interpretarea adresei IP invarianta originala

(b) Interpretarea adresei IP folosind adresarea de subretea

Rezultatul este o forma de adresare ierarhica care conduce la o rutare ierarhica. Nivelul superior al rutarii ierarhice (un exemplu ilconstituie alte sisteme autonome din Internet) foloseste primii doi octeti cand ruteaza si urmatorul nivel (de exemplu site-urile locale) foloseste un octet suplimentar.In final, nivelul cel mai coborat (de exemplu distributia printr-o retea fizica) foloseste intreaga adresa.

Adresare ierarhica nu este noua; multe sisteme au folosit-o inainte. Cel mai bun exemplu il constituie sistemultelefonic al U.S., unde cei 10 digiti ai unui numar de telefon sunt impartiti in 3 digiti pentru codul zonei, 3 digiti pentru schimburi si 4 digiti pentru conexiune. Avantajele folosirii adresarii ierahice este ca ea se potriveste unor mari extinderi spunand unui ruter dat ca nu este necesar ca el sa cunoasca prea multe detalii despre destinatia indepartata precum si cele referitoare la destinatia locala. Undezavantaj este ca alegerea unei structuri ierarhice este dificila si adesea devine dificil sa schimbi o ierarhien odata ce ea a fost stabilita.

Flexibilitatea in asocierea adreselor de subretea

Standardul TCP/IP pentru adresarea subretelelor recunoaste ca nu toate site-urile pot sa aiba aceleasi necesitati pentru o ierarhie data; el permite site-urilor o flexibilitate in algerea modului de asignare. Pentru a intelege de ce o asemenea flexibilitate este necesara, ne imaginam un site cu cinci retele interconectate (figura 34). Presupunem ca site-ul are o singura adresa de clasa B pe care el doreste sa o foloseasca pentru toate adresele fizice. Cum trebuie divizata partea locala pentru a face rutarea eficienta?

Nota: O impartire simplista a adresei in parte de retea fizica si parte de gazda locala poate sa nu fie optimala in acest caz.

Catre restul Internetului

R1

Network 1

R2 R3

Network 2 Network 3

R4 R5

Network 4 Network 5

Figura 34 Un site cu cinci retele aranjate pe trei nivele

In exemplul nostru, site-ul poate alege o partitionare a partii locale a adresei IP bazata pe o estimare a modului in care tretele se vor extinde. Impartind cei 16 biti ai partii locale in biti pentru identificatorul de retea si 8 biti pentru identificatorul de gazda (caz prezenta in figura 33) obtinem pana la 256 de retele avand pana la 256 gazde pe retea. Folosind 3 biti pentru a identifica o retea fizica si 13 biti pentru a identifica o gazda obtinem 8 retele cu pana la 8192 gazde pentru fiecare retea.

Un singur mod de partitie a partii locale de adresa nu poate fi utila pentru toate sit-urile deoarece unele au multe retele cu un numar mic de gazde in timp ce alte pot avea doar cateva retele cu un numar mare de gazde. Mai poate apare cazul in care intr-un singur site, cateva retele sa aiba un numar mare de gazde in timp ce celelalte sa aiba doar cateva. Pentru a permite o autonomie maxima, standardul de retea TCP/IP permite ca partitia de subretea sa fie selectata infunctie de tipul retelei. Odata ce o partitie a fost selectata pentru o retea particulara, toate gazdele si ruterele care ataca acea retea trebuie sa o foloseasca. Daca ele nu o fac, datagramele pot fie pierdute sau nerutate. Putem conluziona:

Pentru a permite flexibilitate maxima in a alege cum sa partitionezi adresele de subretea, standardul de subretea TCP/IP permite ca interpretarea subretelei sa fie aleasa independent pentru fiecare retea fizica. Odata ce o partitie de subretea a fost aleasa, toate masinile din acea retea trebuie sa o foloseasca

Implementarea mastilor pentru subretele

Am vazut ca alegrea unei scheme de adresare este sinonima cu alegerea modului de partitionare a partii locale a unei adrese IP intr-o parte de retea si una de gazda. Intr-adevar majoritatea site-urilor care folosesc adrese de subretea o fac in acest mod, dar adresarea de subretea permite asignari mult mai complexe. Standardul specifica ca un site folosind adresarea de subretea trebuie sa aleaga o masca de subretea de 32 biti pentru fiecare retea. Bitii din masca de subretea sunt 1 daca masca trateaza bitii corespunzatori din adresa IP ca o parte a adresei de retea si 0 daca ea trateaza bitii ca o parte a identificatorului de gazda. De exemplu, masca de subretea de 32 biti:

111111111 1111111111 111111111 00000000

specifica ca primii trei octeti identifica reteaua si al patrulea octet o gazda pentru acea retea. O masca de subretea trebuie sa aiba 1-uri pentrutoti bitii corespunzatoriportiunii de retea (de exemplu masca de subretea pentru o retea de clasa B va avea 1-uri in primii doi octeti la care se vor adauga unul sau mai multi in ultimii doi octeti).

O probleme interesanta apare apare in adresarea de subretea deoarece standardul nu face o restrictie asupra modului de selectie a bitilor dintr-o adresa. De exemplu, o retea poate avea asignata masca:

111111111 11111111 00011000 01000000

care selecteaza primii doi octeti, doi biti din altreilea octet si un bit din al patrulea. Cu toate ca asemenea flexibilitate face posibila aranjarea de asocieri interesante a adreselor pentru masini, ea face complicata asignarea adreselor de gazda si intelegerea tabelelor de rutare. Astfel, este recomandat acel site folosind masti de subretea consecutive si acela care foloseste aceeasi masca de-a lungul unui intreg set de retele fizice care impart aceeasi adresa IP.

Reprezentarea mastilor de subretea

Specificarea mastilor de subretea in binar este deopotriva neplacuta si susceptibila la erori. Mai mult, majoritatea software-lor permit reprezentari alternative. Uneori, reprezentarile folosesc conventii locale folosite pentru reprezentarea cantitatilor binare (de exemplu, reprezentare hexazecimala).

De asemenea reprezentarea cu punct zecimal este foarte populare pentru mastile de subretea; ea lucreaza foarte bine cand site-urile aleg alinierea adresei fata de un octet. De exemplu multe site-uri aleg pentru subretea adresele de clasa B in care prin folosirea celui de-al treilea octet pot identifica reteaua fizica iar cu de-al patrulea sa identifice gazda. In asemenea cazuri, masca de subretea este reprezentata in format cu punct zecimal 255.255.255.0, facnd-o usoara de scris si de inteles.

In literatura de specialitate se mai poate intalni ca adresele de subretea si mastile sa fie reprezentate ca un triplet intre doua paranteze:

In aceasta forma de reprezentare, valoarea -1 indica toti bitii unui octet ca fiind 1. Astfel,masca de subretea pentru o retea de clasa B este 255.255.255.0 si poate fi scrisa .

Marele dezavantaj al reprezentarii ca triplet este ca nu specifica clar cat de mult biti sunt folositi pentru fiecare parte a adresei; avantajul este ca abstractizeaza in continuare detaliile campurilor de biti si subliniaza valorile celor 3 parti ale adresei. Pentru a vedea ca uneori valorile sunt mai importante decat campurile de biti consideram tripletul care indica o adresa cu numarul 128.10, numai 1-uri in campul de subretea si numai 0-uri in campul de gazda. Mai mult, reprezentarea in forma de rtiplet este independenta de clasa de adrese IP sau dimensiunea campului de subretea. Astfel, el poate fi folosit pentru reprezentarea seturilor de adrese sau a altor idei abstracte. De exemplu tripletul indica adrese cu un numar de retea valid, campul de subretea contine numai 1-uri si campul de gazda numai 1-uri.

Rutarea in prezenta subretelelor

Algoritmul standard IP de rutare trebuie sa fie modificat pentru lucrul cu subretele. Toate gazdele si ruterele atacand o retea care foloseste adresarea de subretea trebuie sa utilizeze un algoritm modificat numit algoritm de rutare subretea. Este clar ca in afara de cazul in care sunt adaugate restrictii la folosirea adresarii de subretea, celelate gazde s irutere din site pot folosi rutarea de subretea.

In exemplul din figura 35, retele fizice 2 si 3 au asignate adresele de subretea ale unei singure adrese de retea IP, N. Desi gazda H nu ataca direct o retea avand o adresa de sub retea, el trebuie sa foloseasca rutarea de subretea pentru a decide daca sa trimita datagrama destinata pentru reteaua N prin ruterul R1 sau ruterul R2. S-ar putea argumenta ca H poate trimite spre fiecare ruter si sa le intarzie rezolvarea problemei dar solutia nu intentioneaza ca tot traficul sa o urmeze calea cea mai scurta. In exemple mai mari, diferenta dintre o cale optimala si una neoptimala poate fi importanta.

Net1 (fara o adresa de subretea)


R1 H R2

Net2 Net3

Figura 35 Un exemplu de topologie (ilegala) cu 3 retele unde

Net2 si Net3 sunt subretele avand acelasi prefix de retea

Nota: Daca asemenea topologie este permisa, gazda H va trebui sa foloseasca ruterea de subretea chiar daca Net 1 nu are o adresa de subretea.

In terorie o regula simpla determina candmasinile trebuie sa foloseasca ruterea de subretea. Aceasta regula este:

Pentru a realiza o rutare optimala, o masina M trebuie sa foloseasca rutarea de subretea pentru o adresa de retea N, in afara de cazul in care acolo este o singura cale P astfel incat P este cea mai scurta cale intre M si fiecare retea fizica care este o subretea a lui H.

Din nefericire, intelegerea restrictiilor teoretice nu ajuta in asignarea reala a subretelelor.In primul rand, calea cea scurta poate fi schimbata daca hardaware-ul greseste sau daca algoritmii de rutare redirecteaza traficul pentru a evita o congestie. Asemenea schimbari dinamice face dificila utilizarea regulii de subretea exceptand cazurile banale. In al doilea rand regula de subretea greseste considerand limitarile site-urilor sau dificultatile implicate in propagarea mastilor de subretea. El este imposibil sa propage rutele de subretea dincolo de granita unei structuri date deoarece protocoalele discutate anterior n-au fost prevazute cu aceasta situatie. Realist, devine extrem de dificila propagarea informatiilor de subretea dincolo de o retea fizica data. Mai mult, proiectantii recomanda ca daca un site foloseste adresarea de subretea, acel site trebuie sa pastreze adresarea de subretea cat mai simpla cu putinta. In particular, administratorii de retea trebuie sa foloseasca urmatoarele reguli:

Toate subretele a unei adrese IP de retea specificata trebuie sa fie consecutive, masca de subretea trebuie sa uniforma pentru toate retele si toate masinile trebuie sa participe la ruterea de subretea.

Regulile creeaza dificultati pentru o mare companie care are multiple site-uri fiecare conectata la Internet dar neconectate intre ele. Astfel de corporatii nu pot folosi adresarea de subretea folosind o singura adresa pentru toate site-urile deoarece adresele fizice nu sunt consecutive.

Algoritmul de rutare in subretea

Ca si algoritmul IP standard, algoritmul de rutare pentru subretea isi sprijina deciziile sale pe o tabela de rutare. Reamintim ca in algoritmul standard, rutele prin gazde sirutele implicite sunt cazuri speciale care trebuie verificate explicit; continutul tabelei este folosit pentru toate celelalte. O tabela de rutare conventionala contine intrari de forma:

(adresa_retea, adresa_urmatoare_de_salt)

unde campul adresa_retea specifica adresa IP a retelei de destinatie N si campul adresa_urmatoare_de_salt specifica adresa ruterului spre care trebuie trimisa datagrama pentru a ajunge la N. Algoritmuul standard compara partea de retea a adresei de destinatie cu campul adresa_retea pana cand gaseste o coincidenta. Deoarece campul adresa_urmatoare_de_salt este obligata sa contina o masina care poate fi atinsa printr-o retea conectata direct, doar o singura cautare in tabela este intotdeauna dorita.

Algoritmul standard cunoaste cum o adresa este partitionata intr-o zona de retea si o zona locala deoarece primii trei biti codeaza tipul si formatul adresei (de exemplu daca este de clasa A,B,C sau D). In adresarea de subretea este imposibil sa decizi dintr-o singura adresa care biti corespund retelei si care sunt pentru gazda. In schimb, algoritmul modificat folosit in subretele pastreaza informatii suplimentare in tabela de rutare. Fiecare intrare in tabela de rutare contine un camp special care specifica masca de subretea folosita de retaua cu acea intrare:

(masca-subretea, adresa_retea, adresa_urmatoare_de_salt)

Cand alegi rutele, algoritmul modificat foloseste masca de subretea pentru a extrage bitii adreseide destinatie pentru o comparatie cu intrarile tabelei de rutare. El executa o functie de tip "and" la nivel de bit intre intreaga adresa IP de destinatie pe 32 biti si campul masca_subretea dintr-o intrare si apoi verifica pentru a vedea daca rezultatul este identic cu continutul campului adresa_retea. Daca coincide, el ruteaza datagrama la adresa specificata in campul adresa_urmatoare_de_salt.

Algoritmul unificat de rutare

Considerand ca orice tip de masca este permisa, algoritmul de rutare se subretea poate include toate cazurile speciale ale algoritmului standard. El poate folosi rute catre gazde individuale, o ruta implicita si rute spre retele conectate direct folosind aceeasi tehnica de mascare folosita pentru subretele. Suplimentar, mastile pot manipula rute spre retele conventionale (de exemplu retele care nu folosesc adresarea de subretea). Flexibilitatea provine din abilitatea de a combina valori arbitrare pe 32 de biti in campul masca_subretea si valori arbitrare pe 32 de biti in campul adresa_retea. De exemplu la instalarea unei rute pentru o singura gazda, se foloseste o masca formata numai din 1-uri si o adresa de retea egala cu adresa IP a gazdei. La instalarea unei rute implicite, se foloseste o masca de subretea formata numai din 0-uri si o adresa de retea formata numai din 0-uri (deoarece adresa de destinatie este oarecare si zero este egal cu zero). Deoarece contine mai multe informatii algoritmul de rutare de subretea contine cateva cazuri speciale:

Algoritm:

Ruta_datagrama_IP (datagrama, tabela_de-rutare)

Extrage adresa IP de destinatie (ID) din datagrama;

Calculeaza adresa IP a retelei de destinatie (IN);

Daca IN coincide cu o adresa de retea conectata direct, trimite datagrama spre destinatie prin acea retea (implica maparea ID intr-o adresa fizica, incapsularea datagramei si trimiterea cadrului)

Altfel

Pentru fiecare intrare in tabel executa:

Pune in N rezultaul unui "and" la nivel de bit intre IN si masca de subretea;

Daca N coincide cu continutul campului adresa-retea a acelei intrari, ruteaza datagrama pe baza continutului campului adresa_urmatoare_de_salt (terminare executie algoritm);

Altfel reia de la pasul 3.1;

Daca nu a fost gasita nici o coincidenta se declara eroare de rutare.

De fapt, implementarea iscusita poate elimina testul explicit pentru destinatiile existente in retele conectate direct prin adugarea de intrari in tabela avand valori corespunzatoare pentru masca si adresa de retea.

Intretinerea mastilor de subretea

Cum sunt asignate si propagate mastile de subretea? Capitolul anterior raspunde la partea a doua a intrebarii prezentand cum o gazda poate sa obtina o masca de subretea pentru o retea specificata prin trimiterea unui mesaj ICMP la un ruter din acea retea. Cererea poate fi de tip broadcast (difuzare) daca gazda nu cunoaste adresa ruterului. In orice caz, acesta nu este un protocol standard pentru propagarea informatiei de la un ruter la altul.

La prima parte a intrebarii este mult mai greu de raspuns. Fiecare site este liber sa aleaga masti de subretea pentru retelele sale. Cand face asignarile, administratorul incearca sa echilibreze dimensiunile retelelor, numarul de retele fizice, sa prevada eventualele extinderi si sa le face usor de intretinut. Dificultatea apare deoarece mastile neuniforme dau mai multa flexibilitate dar fac posibil ca asignarile acelea sa conduca la rute incerte. Desigur, ele permit asignari valide care pot devini invalide daca mai multe gazde au fost adaugate ulterior in retele. Pentru a simplifica procedurile majoritatea site-urilor fac alegeri conservatoare. De obicei un site selecteaza un set de biti consecutivi pentru a identifica reteaua si foloseste aceeasi partitie (de exemplu aceeasi masca) pentru toate retele fizice din site. De exemplu, majoritatea site-urilor simple folosesc un singur octet de subretea cand subadreseaza o adresa de clasa B.

Broadcast la subretele

Aceasta operatie este mult mai dificila intr-o arhitectura de tip subretea. Reamintim ca in schema originala, o adresa avnd partea de gazda formata numai din 1-uri indica un broadcast catre toate gazdele din reteaua specificata. Din punctul de vedere al unui observator extern al unui site de subretea, broadcast-ul la adresa de retea are in contionuare sens. O adresa de forma :

indica "distribuie o copie la toate masinile avand retea in adresa lor de retea, chiar daca ele se afla in retele fizice separate. Functional, broadcast-ul spre o asemenea adresa are sens doar daca ruterele care conecteaza subretele accepta sa propage datagramele in toate retele fizice. Desigur, trebuie evitate buclele de rutare. In particular, un ruter nu poate doar propaga un pachet de broadcast care soseste la o interfata spre catre interfetele ce impart un prefix de subretea. Pentru a preveni asemenea bucle, ruterele folosesc "reversul cai de expediere (reverse path forwarding)". Ruterul extrage sursa datagramei de broadcast si cauta sursa in tabela lui de rutare. Ruterul elimina apoi datagrama, in afara cazului in care ea a venit de la interfata folosita la rutarea spre sursa (de exemplu, sosit pe cea mai scurta cale)

Inauntrul unui set de retele subnetted, devine posibil broadcas-ult catre o subretea speficificata (de exemplu, in broadcast-ul la toate gazdele dintr-o retea fizica care avut asignata una din adresele de subretea). Standardul adresei de subretea foloseste un camp gazda numai cu 1-uri pentru indica un broadcast de subretea. O adresa pentru broadcast-ul in subretea arata astfel:

Consideram ca adresa de broadcast la subretea si broadcastingul pentru subretea clarifica recomandarea pentru folosirea unei masti de subretea corespunzatoare pentru toate retelele care impart aceeasi adresa IP de subretea. Atata timp cat campurile subretea si gazda sunt identice, adresele broadcast in subretele sunt clare. Asignari mult mai complexe de adrese de subretea pot sau nu pot permite broadcastingul catre subseturi selectate ale retelelor fizice care alcatuiesc o subretea.

Adresarea supernet

Adresarea supernet a fost inventata prin anul 1980 pentru a conserva spatiul de adrese IP. Prin 1993 a devenit vizibil ca adresarea de subretea nu poate impiedica o eventuala epuizare a spatiului de adrese de clasa B. Lucrul a inceput prin definirea unei versiuni complet noi de IP cu mult mai multe adrese. In orice caz, pentru a acoperi noile cereri pana cand noua versiune de IP a fost standardizata si adoptata, a fost necesara gasirea unei solutii temporare.

Numita supernetting sau adresare supernet, schema foloseste o abordare opusa adresarii de subretea. In loc de folosirea unei singure adrese IP pentru multiple retele fizice cu o structura data, supernetting-ul permite folosirea mai multor adrese IP de retea pentru o singura structura. Pentru a intelege de ce adresarea de supernet a fost acceptata trebuie sa cunoastem trei lucruri. Primul, IP-ul face o impartire inegala a numarului de adrese in fiecare clasa. A doua, din numerele de clasa C existente doar un mic procentaj a fost asignat. Al treilea, studiile prezentate indica ca la viteza cu care numerele de clasa B exitente sunt asignate, ele vor fi epuizate doar in cativa ani. Problema a devenir cunoscuta sub numele de "Depasirea spatiului de adresa (Running Out of ADdress Space)" sau ROADS.

Pentru a intelege cum lucreaza adresarea supernet, consideram o structura de dimeniune medie care vrea sa se conecteze la Internet. O asemenea structura ar prefera sa foloseasca o singura adresa de clasa B din doua motive:o clasa C de adrese nu poate cuprinde mai mult de 254 de gazde si o clasa B de adrese are suficienti biti pentru a face avantajoasa subadresarea. Pentru a conserva numerele de clasa B, schema de supernet asociaza unei structuri un bloc de adrese de clasa C in locul unei singure adrese de clasa B. Blocul trebuie sa fie suficient de mare pentru ca toate retele structurii sa se poate eventual conecta direct la Internet. De exemplu presupunem o structura cerand o adresa de clasa B, acea structura avand in vedere adresarea de subretea prin folosirea celui de-al treilea octet pe post de camp de subretea. In locul unui singur numar de clasa B, supernetting-ul asigneaza structurii un bloc de 256 de numere de clasa C, numere ce apoi au fost asignate retelelor fizice ce alcatuia structura.

Cu toate ca supernetting-ul este usor de inteles cand privim din punctul de vedere al unui singur site, idee intentioneaza sa fie utilizata intr-un context largit. Ei au avut in vedere un Internet ierarhic in care comercialul "Network Service Provider" furnizeaza conectivitate Internet. La conectarea unei structurii la Internet, o structura respectiva face un contract cu unul din furnizorii de servicii Internet.; servicuil furnizeaza detaliile asignarii adreselor IP la structura precum si instalarea conexiunii fizice. Proiectantii supernetting-ului au propus ca unui furnizor de serviciu Internet sa-i fie permisa obtinerea unei parti mari de spatiu de adrese (de exemplu un set de adrese care pot folosi majoritatea numerelor de clasa C). Distribuitorul de servicii Internet poate apoi aloca una sau mai multe adrese din setul respectiv la fiecare din solicitantii sai.

Efectele supernetting-ului in rutare

Prin alocarea mai multor adrese de clasa C in locul unei singure adrese de clasa B se conserva numerele de clasa B si se solutioneaza problema urgenta a depasirii spatiului de adresa. Apare o noua problema: informatia pe care ruterele o stocheaza si o schimba creste dramatic. In particular, in loc sa ai o singura intrare pentru o structura, o tabela de rutare contine mai multe intrari.

Tehnica cunoscuta sub numele "Classless Inter-Domain Routing (CIDR)" rezolva problema. Teoretic, CIDR-ul sintetizeaza un bloc de adrese consecutive de clasa C intr-o singura intrare reprezentata prin pereche:

(adresa retea, numar)

unde adresa retea este cea mai mica adresa de retea din bloc si numar sprecifica numarul totalde adrese din bloc. De exemplu, perechea:

(192.5.48.0,3)

poate fi folosita pentru a specifica 3 retele: 192.5.48.0, 192.5.49.0, 192.5.50.0.

In practica, CIDR-ul nu restrictioneaza numerele de retea doar la cele de clasa C si nici nu foloseste un numar intreg pentru a specifica o dimensiune de bloc. In schimb, CIDR cere fiecarui bloc de adrese sa se identifice prin doua valori (o adresa IP si o masca de biti pentru a identifica dimensiunea blocului). De exemplu, presupunem o structura avand asignata un bloc de 2048 de adrese consecutive incepand cu adresa 234. 170. 168.0. Tabelelul urmator prezinta domeniul de adrese in valori binare

Reprezentare cu punct zecimal Echivalentul binar

prima: 234.170.168.0 11101010 10101010 10101000 00000000

a doua: 234.170.175.255 11101010 10101010 10101111 11111111

Figura 36 Un bloc de 2048 de adrese consecutive

CIDR cere doua valori pentru a specifica domeniul de valori din figura 36: cea mai mica adresa si o masca pe 32 de biti. Masca lucreaza ca o masca standard de subretea prin evidentierea sfarsitului prefixului de retea. Pentru domeniul prezentat, masca CIDR are 21 de bit in 1:

11111111 11111111 11111000 00000000

Pentru a utiliza toate adresele de gazda posibile dintr-un domeniu specificat, ruterele dintr-un site folosind adresarea fara clase trebuie sa fie modificate. Cand cauta o ruta, software-ul de retea nu face o interpretare a clasei adresei de destinatie. In schimb fiecare intrare intr-o tabela de rutare contine o adresa si o masca si software-ul de rutare foloseste paradigma "longest-mach" pentru a selecta ruta. Astfel, un bloc de adrese specificat poate fi subdivizat si pot fi introduse rute separate pentru fiecare diviziune. Ca un rezultat, desi un grup de calculatoare dintr-o retea specificata vor avea asignate adrese intr-un domeniu fixat, domeniul nu trebuie sa corespunda pentru o valoare binara.

Adresarea supernet trateaza adresele IP ca intregi arbitrari si permite unui administrator de retea sa asigneze un bloc de adrese consecutive pentru un site specificat sau pentru o retea dintr-un site. Gazdele si ruterele care folosesc adresarea de supernet necesita un software de rutare neconventional care sa inteleaga domeniile de adrese.



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 1964
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved