Adrese IP Publice, private, rutere si wifi explicate pe intelesul tuturor
February 25th 2010
Din experienta pe care am acumulat-o la Join Telecom in lucrul cu clientii, combinata cu studiile si literatura de specialitate, reiese faptul ca utilizatorii de Internet nu numai ca nu isi pun intrebarile corecte ci si obtin raspunsuri incorecte, in majoritatea cazurilor prin manipulari publicitate care initial le iau ochii, apoi banii, ca urmare a semnarii de contracte paguboase.
Accesul la Internet, care ofera utilizatorului final de la entertainement pana la cultura, informare de orice natura, are inca o latura tehnica destul de pronuntata. Alegerile tehnice proaste pot influenta masiv experienta de lucru pe Internet a utilizatorului final.
Articolul de fata incearca sa educe utilizatorul final in scopul invatarii acestuia care sunt alegerile corecte si in ce context trebuie acestea efectuate.
1. Adrese IP
Adresa IP este acel numar care identifica in mod unic un calculator care este legat la Internet. Unicitatea adresei IP este necesara, la fel cum este necesara unicitatea unui numar de telefon. Daca doua persoane ar avea acelasi numar de telefon, cum le-am mai putea deosebi?
La origine, exista un singur model de adrese IP, toate fiind Publice (adica vizibile din Internet direct, de la oricare alta adresa IP). Datorita faptului ca numarul adreselor IP este limitat la putin peste 4 miliarde, odata cu explozia Internetului brusc acest numar a devenit insuficient pentru nevoile actuale. O persoana poate utiliza simultan peste 5-6 adrese IP: doua laptopuri, un desktop, un telefon mobil cu wifi, routerul wifi si un prieten in vizita.
Porturi
Toata lumea a auzit de porturi, putini sunt cei care stiu ce sunt si la ce servesc.
Legatura dintre doua calculatoare se efectueaza pe modelul introducerii unui stecher intr-o priza de curent(socket in engleza). Priza este dispozitivul care ofera energie (in cazul calculatoarelor, ofera informatie), iar stecherul este cel care culege informatia dorita.
Dat fiind ca orice calculator trebuie sa poata accea simultan informatie variata de la mai multe calculatoare, trebuie sa aiba mai multe prize.
La fel un server care ofera informatie, trebuie sa poata oferi simultan informatii variate, cu alte cuvinte trebuie sa aiba mai multe prize.
Dat fiind ca modul de comunicare este bidirectional, un canal de comunicatii al unui calculator oarecare poate fi atat priza cat si stecher, in functie de directia in care circula informatia. Canalul de comunicare este acea legatura priza-stecher, in care atat priza cat si stecherul au cate un numar alocat, identic sau diferit.
Cineva a stabilit ca orice calculator poate avea maxim 65535 porturi, din care primele 1024 au fost rezervate pentru servicii standard, iar restul au fost lasate libere pentru utilizare la libera alegere.
Modul general de utilizare al porturilor
Calculatoarele end-user (client) sunt de regula consumatoare de informatie (fac download), pe cand serverele sunt donatoare de informatie (fac upload).
La calculatoarele client, sistemul de operare, oricare ar fi el, in momentul initierii unei conexiuni, cauta care priza (port de iesire) este liber, si realizeaza o conexiune intre acest port si portul (priza) serverului. In momentul stabilirii unei noi conexiuni, de regula se utilizeaza portul imediat urmator pentru a stabili o conexiune cu noul server. Conexiunile sunt tinute minte intr-o tabela in memorie, pentru a nu se face alocari duble pe acelasi port.
De regula, o conexiune are notatia A.B.C.D:P , unde A.B.C.D este adresa IP iar P este portul utilizat pentru acea conexiune.
O intrebare care se ridica in mod natural, este aceasta: cum poate fi accesata o aceeasi pagina web de doua ori simultan de pe acelasi calculator?
Simplu:
La prima conexiune sistemul de operare client aloca, sa zicem, portul 32005.
In tabela de conexiuni va aparea legatura: A.B.C.D:32005 - X.Y.Z.T:80
unde A.B.C.D este adresa IP client, X.Y.Z.T este adresa IP a serverului, portul 32005 este portul alocat dinamic de catre sistemul de operare client, iar portul 80 este portul utilizat in mod normal pentru vizualizarea unei pagini web (protocol http).
La a doua conexiune sistemul de operare client aloca, portul urmator, 32006.
In tabela de conexiuni va aparea legatura: A.B.C.D:32006 - X.Y.Z.T:80
Dupa cum se vede, cele doua legaturi sunt unice, iar sistemul de operare nu se poate insela despre cine si ce legatura a efectuat.
Adrese IP Publice
Adresele IP au forma A.B.C.D, unde A,B,C si D sunt cifre cuprinse intre 0 si 255. Notatia este o simpla modalitate de notare, evident ar fi fost posibil sa se aleaga la inceput si alta forma, insa daca aceasta este in uz, trebuie sa traim cu ea si sa nu ne punem intrebari suplimentare.
Toate adresele de la 0.0.0.0 la 255.255.255.255 sunt adrese publice, cu exceptia celor private si a celor speciale (vezi mai jos).
Adrese IP Private
Cineva destept a introdus conceptul de adrese private in scopul maririi numarului de adresare posibil. Astfel, adresele de la 192.168.0.0 la 192.168.255.255, 10.0.0.0 la 10.255.255.255 si 172.16.0.0 la 172.31.255.255 au fost scoase din Internet si puse deoparte pentru uz privat (de unde si denumirea de adrese private).
Adresele private:
- nu pot exista in Internet, din moment ce au fost scoase din lista de adrese valide;
- au nevoie de un translator (router, gateway) pentru a putea accesa internetul;
- pot fi utilizate de catre oricine, fara aprobare prealabila, in constructia unei retele private.
Adresele private au nevoie de un translator care sa efectueze conexiuni in numele lor si de aceea calculatorul care joaca rol de translator necesita de regula o putere de calcul semnificativa, daca are de tradus (translatat) multe adrese IP private. Este acelasi sistem utilizat la telefonia clasica, cu numere de interior intr-o institutie. Centralistul sau centrala telefonica este punctul in care se strang toate apelurile din interior si sunt translatate catre exterior. Translatarea adreselor IP private este numita generic NAT (Network Address Translation).
Practic, daca notam:
A.B.C.D = adresa IP a clientului cu adresa privata;
X.Y.Z.T = adresa IP a serverului care trebuie accesat;
K.L.M.N = adresa IP a translatorului;
P = portul de iesire al clientului;
R1 = portul de iesire al translatorului inspre Internet;
R2 = portul de iesire al translatorului inspre reteaua locala, cea cu adrese private;
S = portul de intrare al serverului;
Clientul A.B.C.D:P face o cerere catre X.Y.Z.T:S
Translatorul observa cererea, o blocheaza, insa genereaza la randul lui cererea:
K.L.M.N:R1 - X.Y.Z.T:S
Cand se intoarce raspunsul pe canalul X.Y.Z.T:S - K.L.M.N:R1, translatorul genereaza raspunsul catre clientul cu adresa privata:
K.L.M.N:R2 - A.B.C.D:P
Astfel, legatura dintre client si server este realizata prin intermediul translatorului.
Adrese APIPA (Automatic Private IP Addressing)
Adresele 169.254.0.1 pana la 169.254.255.254 sunt de asemenea adrese private, cu o utilizare speciala, in cazul in care un client face o cerere de adresa IP dar nu exista nici un server care sa i-o aloce. In acest caz, clientul isi auto-aloca o adresa Ip din acest interval.
2. Modele de conexiuni Client
2.1 Conexiunea cu adrese IP Publice
Conexiunea cu adrese IP publice este cea mai avantajoasa, deoarece in circuitul conexiunii dintre client si server nu exista intermediari de tipul NAT, iar transmiterea informatiei de la client la server si inapoi se face de catre circuite comutate, extrem de rapide, care nu interpreteaza si nu modifica informatia transmisa.
2.1.1 Conexiunea cu adrese IP Publice fixe (rezervate)
In cazul in care clientului i se aloca intotdeauna aceasi adresa IP publica, clientul poate, in plus fata de a fi un simplu client, sa devina de asemenea un server: calculatorul poate fi accesat intotdeauna de pe Internet, de oriunde, avand certitudinea ca este vorba intotdeauna despre acelasi calculator si nu de catre altul.
Retelele de cartier aloca INTOTDEAUNA clientului acelasi IP pe perioada de valabilitate a contractului comercial.
2.1.2 Conexiunea cu adrese IP Publice variabile (nerezervate)
In anumite cazuri, de regula in momentul in care furnizorul de Internet nu dispune de suficiente adrese IP pe cati clienti are, se practica alocarea de adrese IP publice variabile (este cazul RDS). In acest caz, detinatorul calculatorului client nu poate sti ce adresa IP i s-a alocat, sau daca aceasta s-a modificat intre timp, si astfel nu isi poate utiliza calculatorul pe post de server, pentru a oferi servicii sau pur si simplu pentru a-si accesa calculatorul din alta retea de Internet.
2.1.2 Conexiunea cu adrese IP Private.
Este cazul UPC, Astral, Romtelecom, Vodafone, Orange, Cosmote.
In acest caz nu numai ca calculatorul client nu mai poate fi accesat din afara sub nici o forma, dar existenta unui NAT la nivel macro, care deserveste sute sau mii de clienti simultan, poate conduce, si chiar conduce in anumite situatii, la:
- intarzieri semnificative din cauza ca translatorul NAT nu are putere suficienta de calcul in acel moment (este supra-aglomerat de cereri);
- nu poate efectua tranzactiile deoarece tabelele de NAT sunt pline:
In exemplul de mai sus am aratat ca un translator NAT are nevoie sa utilizeze doua porturi pentru a satisface cu succes cererea unui singur client pe un port. Cum insa numarul lui propriu de porturi este limitat la 65535, inseamna ca, indiferent de cat de puternic ar fi, nu poate satisface mai mult de (65535-1024)/2=32255 cereri simultane. orice alte cereri suplimentare fata de aceasta cifra sunt pur si simplu ignorate, creand intarzieri, de regula masive, la client.
Luand, din practica, un numar mediu de 200 de conexiuni per calculator client, acestea necesita 400 de conexiuni la nivelul NAT, micsorand numarul de calculatoare pe care un NAT le poate deservi simultan la doar 164. In momentul scrierii acestui articol, calculatorul meu avea 1496 de conexiuni simultane cu diversi. In cazul in care as fi utilizat un NAT si toti clientii ar fi fost in acesi situatie cu calculatorul meu, acesta nu ar fi putut prelucra informatia de la mai mult de 65535/2/1496 = 21 de calculatoare!
3. Rutere si WiFi
In afara retelelor de cartier, care utilizeaza rutere cu adrese IP publice fixe pentru stabilirea legaturii dintre clientii lor si restul Internetului, toti ceilalti ISP care se adreseaza segmentului rezidential utilizeaza rutarea cu NAT (cu adrese private) sau cu adrese publice variabile.
Ruterele wifi montate la clienti preiau adresa publica sau privata alocata clientului si o retranslateaza catre mai multe adrese private. Aceste aparate au procesoare de mica sau medie putere, utilizate la translatarea cererilor clientului, conducand in final la:
- posibile pierderi de conexiuni;
- intarzieri in realizarea conexiunilor din cauza NAT si/sau a partii radio;
- imposibilitatea realizarii de conexiuni peer-to-peer (sau adresa publica la adresa publica - legaturi directe intre calculatoare din Internet).