Salta al contenuto
Note per Studenti Esercizio - notazione decimale puntata, classi e blocchi

Esercizio - notazione decimale puntata, classi e blocchi

In questa pagina 6

Testo.

  1. Passare dalla notazione binaria alla notazione decimale puntata: 10000001 00001011 00001011 1110111110000001\ 00001011\ 00001011\ 11101111.
  2. Passare dalla notazione decimale puntata alla notazione binaria: (a) 111.56.45.78111.56.45.78; (b) 75.45.301.1475.45.301.14.
  3. Trovare la classe degli indirizzi: (a) 00000001 00001011 00001011 1110111100000001\ 00001011\ 00001011\ 11101111; (b) 11000001 10000011 00011011 1111111111000001\ 10000011\ 00011011\ 11111111; (c) 227.12.14.87227.12.14.87; (d) 193.14.56.22193.14.56.22.
  4. Trovare classe, blocco e intervallo degli indirizzi: (a) 17.0.0.017.0.0.0; (b) 132.21.0.0132.21.0.0; (c) 220.34.76.0220.34.76.0.

Teoria usata: Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP → (notazione decimale puntata, indirizzamento con classi).

Punto 1: da binario a decimale

Un indirizzo IPv4 ha 32 bit divisi in 4 byte. Ogni byte si converte da solo in un numero tra 0 e 255, sommando le potenze di 2 corrispondenti ai bit a 1 (pesi 128,64,32,16,8,4,2,1128,64,32,16,8,4,2,1 da sinistra a destra). È la regola dei sistemi posizionaliin base 2 la cifra in posizione i da destra, a partire da 0, pesa 2 elevato a iSistemi di numerazione posizionali → ed è spiegata con altri esempi in Basi di numerazione e conversioni - binario, ottale ed esadecimaleUn numero in base $r$ vale $\sum a_i r^i$ (cifre $a_i\in{0,\dots,r-1}$). Conversioni: base $r\to$ decimale con la somma pesata; decimale $\to$ base $r$ per divisioni successive (parte intera, resti letti dal basso) e moltiplicazioni successive (parte frazionaria, parti intere lette dall'alto); binario $\leftrightarrow$ ottale/esadecimale a gruppi di 3/4 bit. Somma, differenza e prodotto binari seguono le regole decimali con cifre 0 e 1; la differenza ha prestiti, il prodotto somma prodotti parziali traslati.Basi di numerazione e conversioni - binario, ottale ed esadecimale →. Il massimo di un byte è 111111112=28−1=25511111111_2=2^8-1=255, perché la somma dei pesi è 128+64+32+16+8+4+2+1=255128+64+32+16+8+4+2+1=255.

byte bit a 1 valore
1000000110000001 128+1128+1 129129
0000101100001011 8+2+18+2+1 1111
0000101100001011 8+2+18+2+1 1111
1110111111101111 128+64+32+8+4+2+1128+64+32+8+4+2+1 239239

Risultato: 129.11.11.239\mathbf{129.11.11.239}.

Punto 2: da decimale a binario

(a) Si converte ogni numero in 8 bit, scomponendolo nei pesi 128,64,…,1128,64,\dots,1. Metodo: si parte dal peso più grande; se sta nel numero lo si sottrae e si scrive 1, altrimenti si scrive 0 e si passa al peso successivo (per 111111: 128>111→0128>111\to0; 64≤111→164\le111\to1, resta 4747; 32≤47→132\le47\to1, resta 1515; 16>15→016>15\to0; 8≤15→18\le15\to1, resta 77; 4→14\to1, resta 33; 2→12\to1, resta 11; 1→11\to1, resta 00: 0110111101101111).

  • 111=64+32+8+4+2+1→01101111111=64+32+8+4+2+1\to01101111;
  • 56=32+16+8→0011100056=32+16+8\to00111000;
  • 45=32+8+4+1→0010110145=32+8+4+1\to00101101;
  • 78=64+8+4+2→0100111078=64+8+4+2\to01001110.

Risultato: 01101111 00111000 00101101 0100111001101111\ 00111000\ 00101101\ 01001110.

(b) 75.45.301.1475.45.301.14: il terzo numero, 301301, supera 255255, cioè il massimo che si scrive con 8 bit (28−12^8-1). Un byte non può valere 301301, quindi l'indirizzo non è valido e non esiste una sua rappresentazione binaria.

Punto 3: la classe

Nell'indirizzamento con classi la classe si legge dai primi bit (o, in decimale, dal primo byte):

classe primi bit primo byte
A 00 00–127127
B 1010 128128–191191
C 110110 192192–223223
D 11101110 224224–239239
E 11111111 240240–255255
  • (a) Il primo bit è 00: classe A (in decimale è 1.11.11.2391.11.11.239).
  • (b) I primi due bit sono 1111 e il terzo è 00 (prefisso 110110): classe C (in decimale 193.131.27.255193.131.27.255).
  • (c) Il primo byte è 227227, tra 224224 e 239239: classe D (multicast).
  • (d) Il primo byte è 193193, tra 192192 e 223223: classe C.

Punto 4: classe, blocco e intervallo

La classe fissa la lunghezza del prefisso (n=8,16,24n=8,16,24 per A, B, C). Il blocco è l'insieme degli indirizzi con lo stesso NetID; l'intervallo va dal NetID con HostID tutto a 0 al NetID con HostID tutto a 1.

indirizzo classe (primo byte) NetID intervallo indirizzi
17.0.0.017.0.0.0 A (17∈[0,127]17\in[0,127]) 1717 (n=8n=8) 17.0.0.017.0.0.0 – 17.255.255.25517.255.255.255 224=16 777 2162^{24}=16\,777\,216
132.21.0.0132.21.0.0 B (132∈[128,191]132\in[128,191]) 132.21132.21 (n=16n=16) 132.21.0.0132.21.0.0 – 132.21.255.255132.21.255.255 216=65 5362^{16}=65\,536
220.34.76.0220.34.76.0 C (220∈[192,223]220\in[192,223]) 220.34.76220.34.76 (n=24n=24) 220.34.76.0220.34.76.0 – 220.34.76.255220.34.76.255 28=2562^{8}=256

Confronto con la soluzione ufficiale

Tutti i risultati coincidono con quelli ufficiali (punto 1: 129.11.11.239129.11.11.239; punto 2: 01101111 00111000 00101101 0100111001101111\ 00111000\ 00101101\ 01001110 e indirizzo non accettabile per 301301; punto 3: A, C, D, C; punto 4: gli intervalli della tabella). Le conversioni sono state ricalcolate con Python.

Errori comuni

  • Accettare un numero maggiore di 255255 in un byte.
  • Dimenticare il peso dei bit nei byte con molti 11 (per esempio 239=255−16239=255-16).
  • Per la classe, guardare un byte qualsiasi invece del primo.
  • Dire che il blocco di 17.0.0.017.0.0.0 ha 224−22^{24}-2 indirizzi: sono 2242^{24} (i −2-2 danno gli host utilizzabili).

Versione ripasso

Dati. Conversioni binario/decimale di 10000001 00001011 00001011 1110111110000001\ 00001011\ 00001011\ 11101111, 111.56.45.78111.56.45.78, 75.45.301.1475.45.301.14; classe di quattro indirizzi; classe, blocco e intervallo di 17.0.0.017.0.0.0, 132.21.0.0132.21.0.0, 220.34.76.0220.34.76.0. Teoria: Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP →.

  • Binario a decimale (pesi 128,64,32,16,8,4,2,1128,64,32,16,8,4,2,1): 128+1=129128+1=129; 8+2+1=118+2+1=11; 128+64+32+8+4+2+1=239128+64+32+8+4+2+1=239. Risultato 129.11.11.239\mathbf{129.11.11.239}.
  • Decimale a binario: 111→01101111111\to01101111; 56→0011100056\to00111000; 45→0010110145\to00101101; 78→0100111078\to01001110. In 75.45.301.1475.45.301.14 è 301>255301>255: non valido.
  • Classe dal primo byte: A 00–127127 (n=8n=8), B 128128–191191 (n=16n=16), C 192192–223223 (n=24n=24), D 224224–239239, E 240240–255255. Risposte: A, C, D (multicast), C.
  • Blocchi: 17.0.0.017.0.0.0 (A) →17.0.0.0\to17.0.0.0–17.255.255.25517.255.255.255, 224=16 777 2162^{24}=16\,777\,216 indirizzi; 132.21.0.0132.21.0.0 (B) →132.21.0.0\to132.21.0.0–132.21.255.255132.21.255.255, 216=65 5362^{16}=65\,536; 220.34.76.0220.34.76.0 (C) →220.34.76.0\to220.34.76.0–220.34.76.255220.34.76.255, 28=2562^{8}=256.
  • Errori: byte >255>255; guardare il byte sbagliato per la classe; 224−22^{24}-2 come dimensione del blocco (−2-2 solo per gli host).

Lezioni in cui compare

Teoria collegata