|
Se spune ca un sistem de comunicatii ofera servicii de comunicatii universale daca el permite oricarui calculator sa comunice cu oricare alt calculator. Pentru a face un sistem de comunicatii universal, el are nevoie de o metoda acceptata global pentru identificarea fiecarui calculator atasat lui.
Adesea, identificatorii de calculatoare sunt clasificati in nume [name], adrese [address] si trasee [route]. S-a propus ca un nume sa identifice ce este obiectul, o adresa identifica unde se afla obiectul, iar un traseu indica cum se poate ajunge la el. Desi aceste "definitii" sunt intuitive, ele pot fi inselatoare. Numele, adresele si traseele se refera in fond, la reprezentari de niveluri succesive mai joase ale identificatorilor de calculatoare. In general, lumea prefera nume pronuntabile pentru identificarea masinilor, in timp ce programele lucreaza mai eficient cu reprezentari compacte ale identificatorilor - pe care la privim ca pe niste adrese. Pentru internet s-a decis standardizarea unor adrese compacte, binare, care fac calculele - precum selectarea unui traseu - mai eficiente. In cele ce urmeaza vom discuta doar adresele binare, lasand pentru mai incolo problemele legate de punerea in corespondenta a adreselor binare cu numele pronuntabile si de modul de utilizare a adreselor pentru stabilirea traseelor (rutare).
Vom considera internet ca o retea mare, aidoma oricarei retele fizice. Diferenta consta, evident, in faptul ca internet este o structura virtuala, conceputa de proiectantii ei si implementata in intregime prin software. Prin urmare, proiectantii sunt liberi sa aleaga formatele si dimensiunile pachetului, adresele, modalitatile de livrare, etc.; nimic nu este dictat de hardware. Pentru adrese, proiectantii TCP/IP au ales o schema analoga adresarii din retelele fizice, in care fiecarui calculator din internet i se atribuie o adresa formata dintr-un numar intreg pe 32 de biti, numita adresa sa de internet sau adresa IP a lui. O rezolvare inteligenta a adresarii in internet consta in alegerea cu grija a acestor numere intregi astfel incat sa faca rutarea eficienta. Mai exact, o adresa IP codifica identificatorul retelei la care este atasat calculatorul, precum si identificatorul unui unic calculator din acea retea.
Se vor prezenta mai departe detalii ale adresarii IP, care vor clarifica aceste idei abstracte. Deocamdata, vom face o prezentare simplificata a acesteia. In cel mai simplu caz, fiecarui calculator atasat unei internet i se atribuie un identificator universal pe 32 de biti drept adresa sa de internet. Bitii unei adrese IP pentru toate calculatoarele dintr-o anumita retea au un prefix comun
Conceptual, fiecare adresa este constituita dintr-o pereche (netid, hostid) unde netid identifica o retea iar hostid identifica un calculator din acea retea.In practica, orice adresa IP trebuie sa aiba una din primele trei forme indicate in fig. de mai jos (cea de a patra forma, rezervata pentru multitransmisie, va fi descrisa mai incolo):
0
1
2
3
4
8
16
24
31
Clasa A
0
netid
hostid
Clasa B
1
0
netid
hostid
Clasa C
1
1
0
netid
hostid
Clasa D
1
1
1
0
adresa de multitransmisie
Clasa E
1
1
1
1
0
rezervata pentru utilizare viitoare
Dandu-se o adresa IP, clasa sa poat fi determinata din cei mai semnificativi trei biti (doi biti sunt
suficienti pentru a face distinctia intre
primele trei clase). Adresele de clasa A, care se utilizeaza pentru
cele cateva retele foarte mari, care au peste 216
(= 65 536) calculatoare, rezerva 7 biti
pentru netid si 24 biti
pentru hostid. Adresele de clasa B, care se utilizeaza pentru retele de marime intermediara, ce au intre 28 (= 256) si 216
calculatoare, aloca 14 biti pentru netid si 16 biti pentru hostid. In fine, adresele de clasa C, pentru retelele cu mai putin de 28
calculatoare, aloca 21 biti
pentru netid si
doar 8 biti pentru hostid. Reamintim ca adresele IP au
fost definite de o asemenea maniera incat este
posibila extragerea rapida a portiunilor netid sau hostid.
Se spune, de o maniera simplista, ca o adresa de internet identifica un calculator. Dar aceasta nu este strict corect. Pentru a lamuri acest fapt, sa consideram un ruter atasat la doua retele fizice. Se constata imediat ca nu putem atribui o unica adresa IP acestui ruter daca adresa codifica un identificator de retea, precum si un identificator de calculator. Cand un calculator conventional are doua sau mai multe conexiuni fizice, el este numit calculator (gazda) cu mai multe apartenente [multi-homed host]. Calculatoarele si ruterele cu mai multe apartenente necesita multiple adrese IP. Fiecare adresa corespunde uneia din conexiunile masinii cu o retea. Asadar, un ruter conectat la n retele va avea n adrese IP distincte, cate una pentru fiecare retea.
Am mentionat anterior principalul avantaj al codificarii informatiilor despre retele sub forma de adrese de internet: ea face posibila o rutare eficienta
Un alt avantaj este acela ca adresele de internet pot indica atat retele cat si calculatoare. Prin conventie, o adresa IP a carei portiune hostid are toti bitii egali cu 0 se refera la o retea, nu la un anumit calculator.
Un alt avantaj semnificativ al metodei de adresare in internet este acela ca include o adresa de difuzare [broadcast address] ce se refera la toate calculatoarele din retea. Conform standardului, orice hostid format numai din biti 1 este rezervat doar pentru difuzare . La multe retele (precum Ethernet), difuzarea poate fi tot atat de eficace ca si transmisia normala catre un singur destinatar; la alte retele, difuzarea este efectuata printr-un program de pe retea, dar se face cu intarzieri mult mai mari decat pentru transmisia catre un unic destinatar; iar unele retele nu permit deloc difuzarea. Asadar, adresele IP pot fi utilizate pentru a indica o difuzare; astfel de adrese se pun in corespondenta cu difuzarea prin hardware (daca ea exista in retea).
Din punct de vedere tehnic, adresa de difuzare descrisa mai sus se numeste adresa de difuzare directa [directed broadcast address] intrucat ea contine atat un identificator (ID) valid de retea, cat si un hostid de difuzare. O adrsa de difuzare directa poate fi interpretata, fara ambiguitate, in oricare punct al internet intrucat ea identifica in mod unic reteaua "tinta" (destinatie), in plus fata de indicatia de difuzare pe acea retea. Adresele de difuzare directa ofera un mecanism puternic (desi intrucatva periculos) ce permite unui sistem aflat la distanta sa trimita un singur pachet care sa fie difuzat pe o retea precizata
Din punctul de vedere al adresarii, principalul dezavantaj al difuzarii directe este faptul ca ea necesita cunoasterea adresei retelei. O alta forma de adresa de difuzare, numita adresa de difuzare limitata [limited broadcast address] sau adresa de difuzare in retea locala [local network broadcast address], ofera o adresa de difuzare pentru reteaua locala, independent de adresa IP atribuita. Adresa de difuzare locala consta din 32 biti de valoare 1 (drept care se mai numeste si adresa de difuzare cu "toti 1" ["all 1's" broadcast address]). Un calculator poate utiliza adresa de difuzare limitata ca parte a procedurii de pornire inainte de a afla adresa sa IP sau adresa IP pentru reteaua locala; dar, dupa ce afla adresa corecta IP a retelei locale, el va trebui sa foloseasca adresarea directa.
Ca o regula generala, protocoalele TCP/IP restrictioneaza difuzarea la cea mai mica posibila multime de masini
Am constatat ca un camp continand numai valori 1 poate fi interpretat ca inseamna "toate", ca, de pilda, in "toate calculatoarele" dintr-o retea. In general, programele internet interpreteaza campurile constand numai din valori 0 drept "acest/aceasta . Astfel, o adresa IP cu hostid = 0 se refera la "acest" calculator, iar o adresa de internet cu netid = 0 se refera la "aceasta" retea. Fireste, are sens sa utilizam o astfel de adresa doar intr-un context unde ea poate fi interpretata fara ambiguitate. De exemplu, daca o masina primeste un pachet in care portiunea netid a adresei destinatiei este 0 si portiunea hostid a adresei destinatiei corespunde adresei sale, receptorul va interpreta campul netid ca insemnand "aceasta" retea, adica reteaua prin care soseste pachetul.
Utilizarea unei valori netid = 0este importanta in special in acele cazuri cand un calculator vrea sa comunice prin intermediul unei retele dar inca nu cunoaste adresa IP a retelei. Calculatorul va utiliza temporar netid = 0, iar celelalte calculatoare din retea vor interpreta adresa ca insemnand "aceasta" retea. In majoritatea cazurilor, raspunsurile vor avea complet specificata adresa retelei, permitand expeditorului originar sa o inregistreze in vederea utilizarii ei ulterioare.
Metoda de adresare descrisa pretinde un unic prefix de retea pentru fiecare retea fizica In afara de difuzare, metoda de adresare IP suporta si o multitransmisie [multicasting] - adica livrarea unui pachet catre mai multi destinatari din retea (dar nu toti).
Codificarea informatiilor despre o retea sub forma de adresa de internet prezinta si unele dezavantaje. Cel mai evident dezavantaj il constituie faptul ca adresa se refera la conexiunea cu o retea si nu la un calculator: daca un calculator se muta dintr-o retea in alta, adresa sa IP trebuie schimbata. Pentru a intelege consecintele, sa consideram cazul unui utilizator care, deplasandu-se in alta tara isi deconecteaza laptop-ul de la Internet si il reconecteaza la destinatie. Laptop-ului nu i se poate atribui o adresa IP permanenta intrucat adresa IP identifica reteaua la care este atasata masina.
Un alt punct slab al metodei de adresare in internet este faptul ca, daca o retea de clasa C se extinde la peste 255 de calculatoare, adresa ei trebuie schimbata intr-o adresa de clasa B. Desi aceasta pare o problema minora, schimbarea adresei de retea se dovedeste a fi o operatiune cu consum mare de timp si dificil de depanat. Din cauza faptului ca majoritatea programelor nu sunt proiectate sa faca fata adreselor multiple pentru aceeasi retea fizica, administratorii nu pot planifica o tranzitie lina pentru trecerea pe rand la noile adrese, ci trebuie sa intrerupa brusc utilizarea unei adrese de retea, sa schimbe adresele tuturor masinilor din ea si doar apoi sa reia comunicatia utilizand noua adresa de retea.
Cea mai mare importanta a modului de adresare in internet va deveni evidenta in problema rutarii, care va fi tratata mai departe. Deocamdata putem schita aici o mica introducere in aceasta problema. Am mentionat deja faptul ca rutarea se va baza pe adresele de internet, utilizand portiunea netid a unei adrese pentru a lua deciziile de rutare. Sa consideram un calculator cu doua conexiuni la internet. Se stie ca un astfel de calculator trebuie sa aiba mai mult de o adresa IP. Exista urmatoarea regula: intrucat rutarea utilizeaza portiunea netid a adresei IP, traseul urmat de pachetele ce se deplaseaza catre un calculator cu multiple adrese IP depinde de adresa utilizata
Implicatiile acestei reguli sunt surprinzatoare. Utilizatorii umani vad in orice calculator o unica entitate si doresc sa utilizeze pentru el un singur nume. Ei sunt adesea surprinsi de constatarea ca ei trebuie sa cunoasca mai multe nume ale acestui calculator si mai ales de faptul ca pachetele trimise pe mai multe nume se comporta in mod diferit.
O
alta consecinta surprinzatoare a modului de adresare in internet este faptul ca simpla cunoastere a
uneia din adresele IP ale unei destinatii poate sa nu fie
suficienta si ca s-ar putea sa fie imposibil de ajuns la acea destinatie utilizand
respectiva adresa. Sa
consideram exemplul de internet
reprezentat in fig.
ce urmeaza.
In aceasta internet, calculatorul B este cu mai multe apartenente. De regula calculatoarele A si B comunica direct prin reteaua 1, la care ambele sunt atasate. Deci utilizatorii de pe calculatorul A se refera la calculatorul B utilizand, in mod normal, adresa IP I3 . Exista si o alta cale de la A la B, prin ruterul R; ea este utilizata atunci cand A trimite pachete la adresa I5 (adresa lui B pe reteaua 2). Sa presupunem ca conexiunea lui B la reteaua 1 se defecteaza dar ca B functioneaza corect. Utilizatorii de la A care specifica adresa IP I3 nu pot transmite lui B dar utilizatorii care folosesc adresa I5 pot transmite lui B, trecand prin ruterul R.
Cand sunt comunicate utilizatorilor umani - fie in documentele tehnice, fie in cadrul programelor de aplicatii -, adresele IP sunt scrise sub forma de patru numere intregi zecimale, separate prin puncte; fiecare din cele patru numere da valoarea unui octet din adresa IP. Aceasta notatie este cunoscuta sub numele de notatia zecimala cu puncte (separatoare) / notatia cuadrupla cu puncte [dotted decimal notation / dotted quad notation]. Astfel, adresa de internet pe 32 biti
10000000.00001010.00000010.00011110
se scrie:
128.10.2.30
In cele ce urmeaza vom utiliza notatia zecimala cu puncte separatoare pentru a exprima adresele IP. Majoritatea programelor TCP/IP care afiseaza sau solicita unui operator uman sa introduca adresa IP utilizeaza aceasta reprezentare. De exemplu, comanda netstat din UNIX - care afiseaza traseul curent -, ca si programele de aplicatii precum telnet si ftp, utilizeaza toate notatia zecimala cu puncte atunci cand accepta sau afiseaza adrese IP. Prin urmare, este util sa intelegem relatia dintre clasele de adrese IP si numerele din notatia zecimala cu puncte. Tabela ce urmeaza rezuma domeniul de valori pentru fiecare clasa
Clasa
Cea mai mica adresa
Cea mai mare adresa
A
0.1.0.0
126.0.0.0
B
128.0.0.0
191.255.0.0
C
192.0.1.0
223.255.255.0
D
224.0.0.0
239.255.255.255
E
240.0.0.0
247.255.255.255
Tabela de mai sus pune in evidenta faptul ca nu toate adresele posibile au fost atribuite claselor de adrese. De exemplu, adresa 127.0.0.0 - o valoare din domeniul clasei A - este rezervata pentru bucla de reactie [loopback] si destinata pentru utilizarea la testarea TCP/IP si pentru comunicatia inter-procese de pe masina locala. Cand vreun program utilizeaza aceasta adresa ca adresa de destinatie, protocolul din calculator returneaza datele fara a trimite trafic in retea. Standardele precizeaza ca un pachet trimis unei adrese de retea 127 nu trebuie sa apara in nici o retea. Mai mult, un calculator sau un ruter nu trebuie in nici o conditie sa propage informatii privind traseul sau posibilitatea de a ajunge la reteaua cu numarul 127 (caci ea nu reprezinta o adresa de retea).
In practica, IP utilizeaza doar un numar mic de combinatii de tip 0 pe toti bitii ("aceast/aceasta") sau 1 pe toti bitii ("toate ). Fig. de mai jos listeaza aceste posibilitati:
0 peste tot
Acest calculator 1
0 peste tot
calculator
Calculator in aceasta retea 1
1 peste tot
Difuzare limitata (retea locala) 2
retea
1 peste tot
Difuzare directa pentru retea 2
127
orice (adesea 1)
Bucla de reactie 3
Observatii:
1 Permisa doar la pornirea sistemului; nu reprezinta nici o data o adresa valida de destinatie.
2 Nu reprezinta nici o data o adresa valida de sursa.
3 Nu trebuie sa apara nici o data pe o retea.
Mentionam ca lungimea portiunii aferente retelei, in cazul unei difuzari directe, depinde de clasa adresei de retea.
Pentru a se asigura unicitatea portiunii aferente retelei dintr-o adresa Internet, toate adresele Internet sunt alocate de catre o autoritate centrala. Aceasta este Autoritatea de atribuire a numerelor in Internet [Internet Assigned Number Authority (IANA)], care are controlul final asupra numerelor atribuite si stabileste strategiile in acest sens. Totusi, cand o organizatie se alatura Internet-ului, ea poate obtine adrese de retea de la INTERNIC.
Autoritatea centrala este necesara doar pentru atribuirea portiunii de adresa aferenta retelei; dupa ce o organizatie obtine prefixul pentru retea, ea poate decide singura cum sa atribuie cate un unic sufix fiecarui calculator din reteaua sa, fara a mai trebui sa ia legatura cu autoritatea centrala. IANA atribuie un numar din clasa C unei retele cu un numar mic (inferior lui 255) de calculatoare atasate; ea rezerva numere din clasa B pentru o organizatie care are o retea mai mare. O organizatie trebuie sa aiba o retea cu peste 65 535 de calculatoare atasate pentru a putea obtine un numar din clasa A. Spatiul de adrese este inegal utilizat, intrucat majoritatea retelelor sun tmici, un numar mai mic sunt de dimensiuni medii iar doar cateva sunt foarte mari.
Este esential ca autoritatea centrala sa aloce adrese IP doar pentru retelele care sunt (sau vor fi) conectate la Internet-ul global. O organizatie isi poate asuma responsabilitatea de a-si atribui adrese unice de retea in cadrul internet TCP/IP pe care o poseda, atata timp cat ea nu se va conecta nici o data cu lumea exterioara In fapt, multe corporatii care utilizeaza protocoalele TCP/IP isi atribuie propriile adrese de internet. De exemplu, Corporatia IBM a primit adresa de retea 9.0.0.0 iar AT&T are adresa de retea 12.0.0.0 . Daca o organizatie se hotaraste sa utilizeze protocoalele TCP/IP pe doua din retelele sale nelegate la Internet-il global, ea poate aloca adresele 9.0.0.0 si 12.0.0.0 celor doua retele locale ale sale. Dar experienta a aratat ca nu este inteleapta crearea unei internet private utilizand aceleasi adrese de retea ca si Internet-ul global, intrucat aceasta impiedica viitoarea interoperabilitate si poate cauza probleme atunci cand se incearca un schimb de programe cu alte site-uri. Prin urmare, toti cei care utilizeaza TCP/IP sunt insistent invitati sa obtina adrese de Internet de la INTERNIC.
Pentru a lamuri modul de stabilire a adreselor IP, sa consideram exemplul a doua retele conectate la Internet, cu adresele alocate conform celor prezentate mai sus. Fig. ce urmeaza ilustreaza doua astfel de retele din Computer Science Department de la Purdue University din S.U.A., conectate la coloana Internet (reteaua ARPANET) prin intermediul a doua rutere. Celor trei retele li s-au alocate adresele (numerele): 10.0.0.0 pentru ARPANET, 128.10.0.0 pentru Ethernet si 192.5.48.0 pentru Token Ring.
Fig.
de mai jos detaliaza aceleasi retele, indicand calculatoarele atasate si
adresele de Internet atribuite fiecarei
conexiuni de retea.
Fig. indica patru calculatoare atasate celor doua retele locale; ele au numele: Arthur, Merlin, Guenevere si Lancelot. Taliesyn este un ruter ce conecteaza ARPANET cu Token Ring, iar Glatisant este un ruter ce interconecteaza retelele locale Token Ring si Ethernet. Calculatorul Merlin are conexiuni atat ambele retele locale, astfel incat el poate avea acces direct la calculatoarele din ambele retele. Desi un calculator cu mai multe apartenente - precum Merlin - poate fi configurat sa ruteze pachetele intre cele doua retele, majoritatea site-urilor utilizeaza calculatoare dedicate pe post de rutere, pentru a evita supraincarcarea sistemelor de calculatoare conventionale cu procesarile necesare rutarii. In exemplul din fig., ruterul dedicat Glatisant indeplineste sarcina de a dirija ("ruta") traficul intre retelele Token Ring si Ethernet.
Dupa cum se constata din fig. de mai sus, fiecarei conexiuni la o retea trebuie sa i se aloce o adresa IP. Calculatorului Lancelot, care este conectat doar la reteaua Ethernet, i s-a alocat doar o singura adresa IP: 128.10.2.26 . Merlin are adresa 128.10.2.3 pentru conexiunea sa la reteaua Ethernet si 192.5.48.3 pentru conexiunea sa la reteaua Token Ring. Cei care au decis atribuirea adreselor au ales aceeasi valoare pentru octetul cel mai putin semnificativ al acestor doua adrese. Adresele atribuite ruterelor Glatisant si Taliesyn nu urmeaza aceasta conventie; ele sunt siruri de cifre fara nici o legatura unul cu celalalt (10.0.0.37 si 192.5.48.6). IP nu da importanta faptului ca octetii din forma zecimala cu puncte pentru adresele unui calculator sunt identici sau difera. Totusi, inginerii de retele si administratorii utilizeaza adresele pentru intretinerea, testarea si depanarea Internet-ului. Alegand ca toate adresele unui calculator sa se termine cu acelasi octet face ce personalul sa si aminteasca sau sa intuiasca mai usor adresa unei anume interfete.
Pentru a crea o internet independenta de orice arhitectura a masinii sau hardware de retea, programele trebuie sa defineasca o reprezentare standard a datelor. Pentru a intelege aceasta cerinta, sa consideram ce se intampla, de exemplu, cand un program de pe un calculator trimite o valoare intreaga, exprimata in binar pe 32 de biti. Hardware-ul de la nivelul fizic deplaseaza secventa de biti de la prima masina la a doua fara sa schimbe ordinea bitilor. Totusi, nu toate masinile stocheaza intregii pe 32 de biti in acelasi mod. In unele masini (numite Little Endian), adresa de memorie cea mai mica contine octetul cel mai putin semnificativ al intregului. In alte masini (numite Big Endian), adresa de memorie cea mai mica contine octetul cel mai semnificativ al intregului. Iar alte masini stocheaza intregii in cuvinte de 16 biti, cu adresa de memorie cea mai mica continand cuvantul cel mai putin semnificativ, dar cu octetii interschimbati. Asadar, copierea directa a octetilor de pe o masina pe cealalta poate schimba valoarea unui numar.
Standardizarea ordinii octetilor ce reprezinta valori intregi este deosebit de importanta intr-o internet intrucat pachetele din internet transporta numere binare ce constituie informatii precum adreselw destinatiilor si lungimile pachetelor. Asemenea valori trebuie intelese atat de catre emitatoare cat si de receptoare. Protocoalele TCP/IP rezolva problema ordinii octetilor definind o ordine standard a octetilor in retea pe care toate masinile trebuie sa o utilizeze pentru campurile binare ale pachetelor din internet. Fiecare calculator sau ruter converteste entitatile binare din reprezentarea locala in ordinea standard a octetilor in retea inainte de a emite un pachet si converteste in sens invers la sosirea unui pachet. Evident, campul de date ale utilizatorului dintr-un pachet este exceptat de la acest standard; utilizatorii sunt liberi sa si aleaga dupa bunul plac formatul datelor proprii. Desigur, majoritatea utilizatorilor se bazeaza pe programele de aplicatii srandard si nu au de-a face direct cu problema ordinii octetilor.
din pacate, o versiune mai veche a protocoalelor TCP/IP, ce insotea Berkeley UNIX, utiliza in mod incorect numai biti de valoare 0 pentru difuzare; intrucat eroare persista inca, protocoalele TCP/IP include, adesea, o optiune ce permite unui site sa utilizeze o astfel de configuratie pentru difuzare.