Sunteți pe pagina 1din 6

Note de seminar Retele de calculatoare I

Specializare Info 3

Lab 4
Descriere: Clase de adrese IP. Subnetting. Aplicatie Java pentru subnetting. Obiective: Realizarea unei aplicatii Java pentru calculul adreselor IP a subretelelor si a domeniilor de adrese IP pentru fiecare subretea.

Programa
1. Clase de adrese IP Adresa IP este o adres pe 32 bii (n versiunea IPv4) care conine suficiente informaii pentru a identifica n mod unic o reea sau o gazd aparinnd unei reele. Toate dispozitivele si protocoalele de pe nivelul retea folosesc adrese IP. Formatul adresei corespunde notatiei cu punct zecimal. Aceasta notatie imparte o adresa IP in 4 campuri de cate 8 biti fiecare, si specifica valoarea fiecarui camp ca un numar zecimal. Campurile sunt separate prin puncte. Pentru a putea lucra cu o adresa IP, aceasta trebuie exprimata in binar.

10001010 . 00001100 . 00110001 . 00001001

138.12.43.9
Fig 4.1 :

Conversia unei adrese IP in formatul cu punct Notatie Binara 11011001 10010001 00101011 00001100 11000000 10101000 00000000 00000001 00001010 00000010 00000001 01111011 Fig 4.2 : Exemple de adrese IP

Notatie cu punct 217.145.43.12 192.168.0.1 10.2.1.123

O adres IP conine un cmp care identific reeaua sau subreeaua la care este ataat gazda identificat de ctre respectiva adres i un cmp care identific n mod unic fiecare gazd din reea. Numrul de bii folosii pentru identificarea reelei (cmpul NetId) i numrul de bii folosii pentru identificarea host-ului (cmpul HostId) depind de clasa adresei. Exist cinci clase de adrese: A, B, C, D i E, dintre care numai primele trei sunt disponibile pentru adresarea reelelor standard. Adresele de clas D sunt rezervate pentru adresarea la nivel de grupuri (tip multicast) n timp ce adresele de clas E sunt rezervate pentru scopuri experimentale (nefolosite pentru a adresa gazde sau grupuri multicast).

Retele de calculatoare I
Urmtorul tabel rezum caracteristicile fiecrei clase de adrese:
Clasa A B C D E Primul Octet 0xxxxxxx 10xxxxxx 110xxxxx 1110xxxx 1111xxxx Intervalul de adrese 0.0.0.0-127.0.0.0 128.0.0.0-191.254.0.0 192.0.0.0-223.255.254.0 224.0.0.0-239.255.255.0 240.0.0.0-255.255.255.0
Fig 4.3

NetId (octei) 1 2 3 -

HostId (octei) 3 2 1 -

Nr. de reele 128 (2 rezervate) 16.384 2.097.152 -

Nr. de host-uri /reea 16.777.214 65.534 254 -

Caracteristicile claselor de adrese IP

1.1 Adrese IP speciale Orice adres al crei prim octet este 127 este o adres de bucl, folosit la diagnosticare si testare. Un mesaj transmis unei adrese IP al crei prim octet are valoarea 127 este returnat expeditorului. 255 este un octet ce indic o difuzare n reteaua local (broadcast) expedierea multipl a unui mesaj. Primul octet nu poate avea o valoare mai mare dect 223. Celelalte adrese sunt rezervate pentru anunturi n retele si pentru scopuri experimentale.Ultimul octet al unui identificator de gazd nu poate fi 0 sau 255. Adrese private: 10.0.0.010.255.255.255 172.16.0.0172.31.255.255 192.168.0.0192.168.255.255 2. Masca de subretea Este o machet de biti ce defineste portiunea din adresa IP ce reprezint adresa de subretea. n plus, masca de subretea permite subalocarea adresei de retea (subnetting). Subalocarea nseamn mprtirea unei adrese IP n sensul folosirii acesteia n mai multe retele mai mici. Formatul mstii de subretea corespunde cmpului 255 pentru portiunea netid si uneia din valorile urmtoare pentru cmpurile corespunztoare portiunii hostid: Binar 0000.0000 1000.0000 1100.0000 1110.0000 1111.0000 1111.1000 1111.1100 1111.1110 1111.1111 Zecimal 0 128 192 224 240 248 252 254 255

Mtile de reea predefinite, corespunztoare claselor de adrese A,B si C sunt prezentate n tabelul urmtor. Clas A 255.0.0.0 /8 Clas B 255.255.0.0 /16 Clas C 255.255.255.0 /24

Retele de calculatoare I
2.1 Folosirea mstii de subretea Plecnd de la o adres IP ce apartine uneia din clasele A, B si C, exprimat binar, se realizeaz un si logic la nivel de bit cu masca de subretea folosit, exprimat tot binar. Alegerea mstii de subretea se face din considerentul obtinerii numarului dorit de subretele, pentru fiecare din acestea permitndu-se un numr de hosturi cerut de datele de proiectare. 2.1.1 Exemplu: Clasa C 205.101.55.91 in format binar 11001101 01100101 00110111 01011011 masc: 255.255.255.224 in format binar 11111111 11111111 11111111 11100000

205.101.55.32

11001101 01100101 00110111 01000000

Rezult c adresa 205.101.55.91 aparine subreelei 205.101.55.32 Pentru cei trei biti imprumutati avem urmatoarele valori posibile: 000111. Cele dou combinaii 000 i 111 sunt excluse (conform specificaiilor IP), dat fiind neinterpretarea ca adrese de subreea valide de ctre unele dispozitivele de reea. Rezulta ca putem construi 23-2=6 subretele. Cele 6 subretele desemnate de masca de subretea 255.255.255.224 vor fi asociate urmatoarelor domenii de valori ale celui de-al 4-lea octet din adresa IP: Subretea 1 Subretea 2 Subretea 3 Subretea 4 Subretea 5 Subretea 6 001.00001 001.11110 010.00001 010.11110 001.00001 001.11110 100.00001 100.11110 101.00001 101.11110 110.00001 110.11110 33 62 65 94 97 156 129 158 161 190 193 222 AND 0 0 0 1 0 1 0 1

Folosind formatul 224 pentru masca de subretea, practic, mprumutm 3 biti din cmpul hostid n scopul realizrii subalocrii adresei IP de clas C pentru un numr de 6 subretele cerute. Pentru fiecare din subretelele prezentate, avem un numar de 25-2 = 30 de gazde. 2.1.2 Evaluarea gradului de utilizare a unei adrese de clas C Adres clasa C: Netid (24 biti) + Hostid (8 biti) = NT hosturi. Masc de subretea /26 NS (Numr subretele disponibile) = 22-2 = 2 si NH (Numr hosturi pe fiecare subretea) = 26-2 = 62. NS NH Grad de utilizare = NT 3. Exercitii de subnetting Ex1. O organizatie a primit adresa de retea 193.1.1.0/24 si are nevoie de sase subretele. Cea mai mare dintre aceste subretele trebuie sa contina 25 de host-uri. Definiti masca de subretea corespunzatoare si determinati adresele subretelelor precum si adresele gazdelor din subreteaua 2. Calculati adresele de broadcast pentru fiecare dintre cele sase subretele. Ex2. O organizatie a primit adresa de retea 140.25.0.0/16 si trebuie sa defineasca subretele care sa suporte fiecare maxim 60 de gazde. Definiti masca de subretea corespunzatoare si determinati

Retele de calculatoare I
adresele subretelelor precum si adresele gazdelor din subreteaua 3. Calculati adresele de broadcast pentru fiecare subretea. Ex3. Se da adresa de retea 200.35.1.0/24. Cati biti trebuie imprumutati din campul hostid pentru a permite definirea unor subretele care sa suporte minim 20 de gazde? Care este numarul maxim de gazde care poate fi suportat de fiecare subretea? Care este numarul maxim de subretele care poate fi definit? Determinati subretelele si exprimati adresele IP in format binar si in formatul cu punct zecimal. Care este domeniul de adrese IP folosit de subreteaua 6? Care este adresa de broadcast pentru subreteaua 6? 4. Exemple de metode Java pentru lucrul cu clase de adrese 4.1 Metoda care intoarce clasa unei adrese IP
public static char getClass(InetAddress ia) { byte[] address = ia.getAddress( ); int firstByte = address[0]; if ((firstByte & 0x80) == 0) return 'A'; else if ((firstByte & 0xC0) == 0x80) return else if ((firstByte & 0xE0) == 0xC0) return else if ((firstByte & 0xF0) == 0xE0) return else if ((firstByte & 0xF8) == 0xF0) return else return 'F'; }

'B'; 'C'; 'D'; 'E';

4.2 Metoda pentru conversia unei adrese IP salvata sub forma unui tablou de bytes in format cu punct zecimal.
int unsignedByte = signedByte < 0 ? signedByte + 256 :signedByte;

4.3 Operatori pe biti in limbajul Java &(AND) 0 1 0 0 0 1 0 1 |(OR) 0 1 0 0 1 1 1 1 ^(XOR) 0 1 0 0 1 1 1 0 0 1 1 0

~(NOT)

Operatorii de deplasare ( << , >> si >>>) se definesc astfel: a << b = a * 2b a >> b = a / 2b. a >>> b este egala cu valoarea lui a deplasata la dreapta cu b pozitii prin completarea la stanga cu zerouri Problema 1 Realizati o aplicatie Java pentru subnetting. Adresa IP si masca de subretea sunt preluate de la tastatura. Programul trebuie sa afiseze: 1.Clasa din care face parte adresa. 2.Numarul de biti pentru campul hosted, respectiv campul netid. 3.Adresa subretelei din care face parte adresa IP. 5.Masca de subretea pentru clasa de adrese din care face parte adresa IP. 6.Numarul de subretele posibile in reteaua specificata. 7.Numarul de gazde pentru fiecare subretea in parte. 8.Adresele host-urilor pentru fiecare subretea in parte, de exemplu:

Retele de calculatoare I
Retea 123.16.49.96 , Adrese Hosturi 123.16.49.97 -123.16.49.126. 9.Adresa de broadcast 10.Gradul de utilizare al adresei 11.Programul trebuie sa salveze toate datele intr-un fisier. Exemplu Aplicatie care testeaza validitatea unei adresa IP si afiseaza clasa din care face parte si adresa in format binar.
public class TestIP{ public static void testareAdresa(String strIP){ boolean err = false; String output = null; int adresa=0; String [] sIP = strIP.split("\\."); if(sIP.length!=4) { err= true; output = "Adresa IP incorecta: o adresa IP are 4 campuri numerice!\n"; return; } int [] intIP= new int[4]; for(int i=0; i<4; i++){ intIP[i]= Integer.parseInt(sIP[i]); if((intIP[i]<0||intIP[i]>255)) { err= true; output = "Adresa IP incorecta:" + + "Campurile unei adrese IP pot lua valori numai intre 0 si 255!\n"; return; } } for(int i=3; i>=0; i--) adresa= adresa|(intIP[i] << (8*(3-i))); System.out.println("Adresa IP este de clasa " + getClass(intIP[0])); System.out.println("In format binar " + toBits(adresa)); System.out.println("Eroare=" + err); System.out.println("Output=" + output);

public static char getClass(int firstByte) { if ((firstByte & 0x80) == 0) return 'A'; else if ((firstByte & 0xC0) == 0x80) return else if ((firstByte & 0xE0) == 0xC0) return else if ((firstByte & 0xF0) == 0xE0) return else if ((firstByte & 0xF8) == 0xF0) return else return 'F'; } //Citeste un bit public static int getBit(int nr, int b){ if(b>31) return 0; int x=1; x=x<<b; if((nr&x)!=0) return 1;

'B'; 'C'; 'D'; 'E';

Retele de calculatoare I
} else return 0;

public static String toBits(int n){ String ret=""; for(int i=31;i>=0; i--){ ret+=getBit(n,i); } return ret;

public static void main(String [] args) throws Exception{ String strIP = "192.168.0.1"; testareAdresa(strIP); }

Bibliografie 1. Understanding IP Addressing: Everything You Ever Wanted To Know, Chuck Semeria, 3Com Corporation 2. Java API, http://java.sun.com/j2se/1.4.2/docs/api/