Skip to content

Sistemi Informatici

Base marziana

I marziani hanno tre dita in una mano e solo un dito nell’altra.
I marziani maschi hanno le loro tre dita sulla mano sinistra, mentre le femmine hanno le loro tre dita sulla mano destra. Ciò rende più semplice ballare il valzer.

Come gli esseri umani ed altre specie intelligenti, i Marziani hanno incominciato a contare usando le loro dita ed avendo solo quattro dita hanno sviluppato un sistema numerico posizionale in base quattro.


Le quattro cifre che usano sono:

  • Θ  (xip), il loro zero
  • ∫   (foo), l’unità
  •  ∩   (bar), due
  •  ≡   (bas), tre

In un numero marziano il peso di ciascuna cifra è specificato da un suffisso. I suffissi seguono la seguente logica:

  • “by” per le cifre che hanno peso 4
  • “bity” per le cifre che hanno peso 4*4
  • “bidity” per le cifre che hanno peso 4*4*4
  • “bididity” per le cifre che hanno peso 4*4*4*4
  • e cosi via “bidi…di…dity” per le cifre che hanno peso 4*4*…*4*…*4*4

quindi, ad esempio:
∫ = 1 (foo),
∫Θ = 1*4 + 0 = 4 (fooby)
∫ΘΘ = 1*4*4 + 0*4 + 0 = 16 (foobity)
∫ΘΘΘΘΘ = 1*4*4*4*4*4 = 1024 (foobidididity)
∩Θ = 2*4 + 0 = 8 (barby)
≡∩∫ = 3*4*4 + 2*4 + 1 = 57 (basbity barby foo)
≡Θ∩∫ = 3*4*4*4 + 0*4*4 + 2*4 +1 = 201 (basbidity barby foo)

Esercizio
Come utile esercizio, si scriva una funzione che sia in grado di tradurre un numero terrestre in uno marziano e ne riporti la pronuncia.

Segue una possibile soluzione in PHP, che opportunamente inclusa in una pagina web (ad esempio questa), permette la traduzione dei numeri in marziano.

/**
 * Traduce un numero terrestre in marziano
 *
 * @param int
 * @return string
 */
function martianize($n) {
// corrispondenze tra cifre terrestri e marziane
$traduzione = array(
'0' => 'xip',
'1' => 'foo',
'2' => 'bar',
'3' => 'bas'
);

$s='';
$r=0;
$out='';

/*
* Convertiamo il numero $n in base 4
* e memorizziamo ogni cifra in una stringa $s
*/
while ($n > 3){
$r = $n % 4; //resto intero della divisione
$n = (int)($n / 4); //quoziente intero della divisione
$s = (string)$r . $s;
}
$s = (string)$n .$s;

/*
* Adesso convertiamo la stringa $s in marziano
*/
$len = strlen($s);
for ($i = 0; $i < $len; $i++ ){
$char = $s[$i];
$peso = $len-$i-1;
/* gli zeri di un numero non si pronunciano, ammeno che non sia proprio lo zero */
if ($char == '0' && $len > 1) continue;
$martian = $traduzione[$char];
/* se ilpeso è zero, allora la cifra corrisponde con la traduzione */
if ($peso == 0) $out.= $martian;
/* se il peso è 1 allora la cifra è pronunciata con il suffisso "by"*/
else if ($peso == 1) $out .= $martian . 'by';
/* se il peso è 2, il suffiso "bity",
se invece il peso è x allora il suffisso è "bi..di..di..ty"*/
else {
$di = '';
for($j=0; $j < $peso-2; $j++) $di .= 'di'; // con "di" che si ripete x-2 volte
$out.= $martian."bi{$di}ty";
}
/*separiamo la pronuncia delle cifre aggiungendo uno spazio*/
$out .= ' ';
}

return $out;
}

Esercizi sulle query in SQL

Alcune premesse:
1) Ho svolto questi esercizi come applicazione di quanto ho potuto appendere dalla visione
delle video lezioni (anche qui) del corso di basi di dati tenuto dal Prof. Paolo Atzeni e dal Prof. Riccardo Torlone.
2) Ho usato SQLite 3.7 come dbms per svolgere e testare questi esercizi. Un’istanza del database a scopo di esercizio è qui
3) Sono riportate le soluzioni degli esercizi così come li ho svolti,
ciò non implica che gli esercizi non possano essere svolti trovando soluzioni alternative.
4) Per semplicità si assume che l’attributo “nome” nella tabella “persone” sia sufficiente ad
identificare univocamente una persona

Dato il seguente schema di database,

CREATE TABLE maternita(
madre text references persone(nome),
figlio text unique references persone(nome)
);
CREATE TABLE paternita(
padre text references persone(nome),
figlio text unique references persone(nome)
);
CREATE TABLE persone(
nome text primary key,
eta numeric,
reddito numeric
);

scrivere in SQL le query necessarie a:

 

  1. Trovare nome e reddito della madre di Filippo.SELECT nome, reddito
    FROM persone, maternita WHERE nome = madre AND figlio = ‘Filippo’;oppure tramite l’uso di query annidateSELECT nome, reddito
    FROM persone
    WHERE nome = (SELECT madre FROM maternita WHERE figlio = ‘Filippo’);
  2. Trovare i padri delle persone che guadagnano più di 20.SELECT DISTINCT padre
    FROM paternita, personeWHERE figlio = nome AND reddito > 20;Osservazione: questo esercizio mostra l’uso della parola chiave
    DISTINCT e mette in evidenza le differenze che esistono tra ciò che in
    pratica è una tabella e quello che invece nella teoria dei database
    relazionali viene considerata una relazione.Una relazione è un insieme di tuple, mentre una tabella è una lista
    di ennuple. Capito qual’è la differenza?oppure tramite query annidate

    SELECT DISTINCT padre
    FROM paternita
    WHERE figlio IN (SELECT nome FROM persone WHERE reddito > 20);

  3. Ricavare la relazione genitore-figlio.
    Questa relazione è già presente nel database, ma è divisa nelle
    relazioni di maternità e paternità. Per ottenere la relazione richiesta
    è sufficiente unire maternità e paternità insieme facendo attenzione a
    rinominare opportunamente i loro attributi.SELECT padre AS genitore, figlio FROM paternita
    UNION
    SELECT madre AS genitore, figlio FROM maternita;
  4. Trovare nome, padre e madre delle persone per cui sia noto il padre e la  madre.
    Si ricercano i figli che sono comuni alle relazioni di paternità e maternità. E’necessario un equi-join sull’attributo figlio.SELECT P.figlio, padre, madre
    FROM paternita P, maternita M
    WHERE P.figlio=M.figlio;oppureSELECT figlio, padre, madre
    FROM paternita NATURAL JOIN maternita;
  5. Per ogni persona trovare padre e madre.Rispetto al caso precedente sono da considerarsi informazioni da riportare nel risultato anche i casi in cui nella base di dati NON siano presenti padre e/o madre di un individuo.Nota: se nel database fossero presenti padre e madre di ogni persona, allora questo dovrebbe contenere l’intero albero genealogico fino ad Adamo ed Eva!SELECT nome,padre,madre
    FROM (persone LEFT JOIN paternita ON nome = figlio) AS P LEFT JOIN maternita AS M on nome = M.figlio;Per risolvere questa interrogazione è necessario l’uso dell’operatore
    di join esterno.

    SQLite ha a disposizione l’operatore di join a sinistra.

  6. Quanti figli ha avuto ciascuna madre?

    SELECT madre, count(*) AS numFigli FROM maternita GROUP BY madre;Questa interrogazione mostra l’uso dell’operatore di aggregazione GROUP
    BY e delle funzione che operano sugli aggregati (nel nostro caso la funzione count). L’operatore di aggregazione non è un operatore dell’algebra relazionale ma è specifico del linguaggio SQL.
  7. Qual’è lo stipendio medio dei figli di ciascun padre?

    SELECT padre, AVG(reddito) AS redditoMedioFigli
    FROM paternita JOIN persone
    WHERE figlio = nome
    GROUP BY padre;
  8. Trovare le persone che guadagnano più dei rispettivi padri; mostrando nome della persona, il suo reddito ed il reddito del padre.SELECT bimbo.nome AS nome, bimbo.reddito AS reddito, papa.reddito AS padrereddito
    FROM persone papa, paternita relazione, persone bimbo
    WHERE papa.nome = relazione.padre AND bimbo.nome = relazione.figlio AND bimbo.reddito > papa.reddito
  9. Trovare tutte le persone che hanno un figlio.SELECT DISTINCT madre AS genitore FROM maternita
    UNION
    SELECT DISTINCT padre AS genitore FROM paternita;Oppure si può usare il quantificatore esistenziale EXISTSSELECT nome AS genitore FROM persone
    WHERE EXISTS (SELECT * FROM paternita WHERE nome = padre)
    OR EXISTS (SELECT * FROM maternita WHERE nome = madre);
  10. Trovare i padri che hanno figli che guadagnano TUTTI più di 20.Risolvere questa interrogazione richiederebbe l’uso di un quantificatore universale, che però non è presente in SQL ma può essere facilmente simulato con l’uso del quantificatore esistenziale EXISTS.Come noto dalla logica, l’interrogazione richiesta è equivalente a
    “trovare i padri che NON hanno ALCUN figlio che guadagna meno di 20”.SELECT DISTINCT padre FROM paternita AS A
    WHERE NOT EXISTS (SELECT * FROM paternita B, persone
    WHERE A.padre = B.padre AND B.figlio = nome AND reddito <= 20);

    Si può anche risolvere osservando che l’insieme dei padri che hanno figli che guadagnano più di 20 può essere ottenuto sottraendo all’insieme di tutti i padri quelli  che hanno almeno un figlio che ha un reddito minore o uguale a 20.

    SELECT DISTINCT padre FROM paternita
    EXCEPT
    SELECT DISTINCT padre FROM paternita, persone
    WHERE figlio = nome AND reddito <= 20;

    quest’ultimo esempio mostra che pensare in termini d’insiemi può essere altrettanto efficace.

.

Domande sistemi informatici

Rispondere alle seguenti domande:

  1. Per configurare la rete di un azienda viene acquistata la rete di indirizzo IP 193.1.1.0
    1. determinare la classe dell’indirizzo
    2. determinare la corrispondente maschera di rete
    3. scrivere quali bit vengono riservati al net id e quali all’host id
    4. determinare l’indirizzo di rete, di broadcast, l’intervallo di indirizzi utilizzabili per gli host e quello tradizionalmente assegnato al router.
  2. Per configurare la rete di un azienda viene acquistata la sottorete 193.1.1.0/24. L’azienda è suddivisa in 6 dipartimenti. Il dipartimento più grande deve supportare fino a 25 host.

    1. determinare quali bit vengono riservati al net id e quali all’host id
    2. determinare quanti bit sono necessari per definire le sei sottoreti
    3. determinare di quanti bit è fatto l’extended net id
    4. determinare quanti bit sono riservati per l’host id
    5. scrivere la maschera di sottorete (in dotted decimal notation)
    6. per una delle sottoreti che sono state definite (ad esempio la prima), scrivere l’indirizzo di sottorete, l’indirizzo di broadcast, e l’intervallo degli indirizzi host.
  3. Si deve configurare il collegamento ad Internet, via router, per una azienda con 5 computer collegati. Viene acquistato il servizio di connettività da Telecom che fornisce le informazioni del foglio allegato. I computer dell’azienda devono essere configurati con una rete privata
    1. disegnare lo schema del collegamento, comprensivo dei computer dell’azienda, del router, del router telecom, etc.
    2. elencare gli indirizzi IP facenti parte della sottorete assegnata da telecom, indicando qual è l’indirizzo della sottorete, quello di broadcast, quelli degli “host” e qual è l’indirizzo assegnato al router telecom
    3. mettere in evidenza la parte WAN e quella LAN dello schema
    4. preparare gli indirizzi e maschere di rete/sottorete da assegnare ad ognuna delle interfacce presenti nello schema
  4. Spiegare il concetto di NAT e perché sorge la necessità di introdurlo.
  5. Il livello 4 dello stack di protocolli IP implementa 2 nuovi servizi da offrire al livello 5 – Application sovrastante. Quali sono e quali sono le loro caratteristiche?
  6. Scrivere lo schema per punti delle operazioni che un programma client che usa i socket per comunicare con un server deve effettuare

    1. Per configurare la rete di un azienda viene acquistata la rete di indirizzo IP 193.1.1.0
      1. determinare la classe dell’indirizzo
      2. determinare la corrispondente maschera di rete
      3. scrivere quali bit vengono riservati al net id e quali all’host id
      4. determinare l’indirizzo di rete, di broadcast, l’intervallo di indirizzi utilizzabili per gli host e quello tradizionalmente assegnato al router.

      Risposta domanda 1:

      1. Non ha senso parlare di classi, essendo l’indirizzamento per classi sostituito da CIDR da molto tempo, tuttavia in letteratura informatica capita di farne ancora uso.
        Convertendo in binario 193.1.1.0 = 11000001.00000001.00000001.00000000
        siccome l’indirizzo incomincia con 110 si tratta di una classe C
      2. Le classi C usano i primi 3 ottetti per identificare l’indirizzo di rete, quindi la maschera deve essere 255.255.255.0
      3. Come conseguenza della risposta precedente, i primi 24 bit sono riservati al net id ed i successivi 8 all’host id.
      4. L’indirizzo di rete è formato dai bit del net id seguito dall’host id con tutti i biti posti a zero.
        Pertanto l’indirizzo di rete è 193.1.1.0 come da acquisto.
        L’indirizzo di broadcast diretto alla rete ha tutti i bit dell’host id posti a 1.
        Pertanto l’indirizzo di broadcast è 193.1.1.255
        Ne segue che gli indirizzi validi per identificare i nodi della rete sono quelli che vanno da 193.1.1.1 a 193.1.1.254
        Tradizionalmente si assegna al router l’indirizzo più basso, quindi 193.1.1.1. Ma questa è solo una convenzione arbitraria, alcuni amministratori per esempio usano l’indirizzo più alto disponibile o uno del tutto arbitrario.
    2. Per configurare la rete di un azienda viene acquistata la sottorete 193.1.1.0/24. L’azienda è suddivisa in 6 dipartimenti. Il dipartimento più grande deve supportare fino a 25 host.
      1. determinare quali bit vengono riservati al net id e quali all’host id
      2. determinare quanti bit sono necessari per definire le sei sottoreti
      3. determinare di quanti bit è fatto l’extended net id
      4. determinare quanti bit sono riservati per l’host id
      5. scrivere la maschera di sottorete (in dotted decimal notation)
      6. per una delle sottoreti che sono state definite (ad esempio la prima), scrivere l’indirizzo di sottorete, l’indirizzo di broadcast, e l’intervallo degli indirizzi host.

Risposta domanda 2:

  1. Come fornito da traccia, il blocco d’indirizzi acquistati ha una maschera composta da 24 bit. Quindi, 24 bit saranno corrisposti all’indirizzo di rete ed i restanti 8 saranno per l’host id. Ovviamente, internamente all’azienda, al fine di suddividere gli indirizzi disponibili su più sottoreti, si dovranno usare differenti maschere di rete.
  2. Dovendo stabilire quanti bit sono necessari ad indirizzare 6 sottoreti, si sceglie l’intero superiore che approssima il logaritmo in base 2 di 6. Quindi sono necessari 3 bit.
  3. Per poter indirizzare 25 host sono necessari almeno 5 bit (2^5 – 2 = 30). Ne segue che l’extended net id non dovrà essere più grande dei bit dell’host id meno 5: 8-5 = 3. Dato che 3 sono proprio il numero di bit minimo per indirizzare 6 reti, si pone la lunghezza dell’extended net id = 3bit.
  4. Come si evince dalla risposta alla domanda precedente sono necessari 5 bit.
  5. La maschera di rete è quindi composta da 24+3 =27bit pertanto sarà:
    255.255.255.224
  6. Usando un extended net id di 3 bit, si ottengono 8 reti tali che ciascuna può contenere 30 host. 2 reti più del necessario.
    Dal punto di vista della scalabilità conviene allineare le prime due sottoreti fino al 6°bit dell’indirizzo IP. Mentre le restanti 4 possono tranquillamente restare allineate fino al 5°bit. In questo modo si possono realizzare:
    CASO *) 2 reti da 62 host più 4 reti da 30 host, così che due dei dipartimenti (da scegliere fra quelli con maggiore previsione di crescita) possano ospitare un maggior numero di host, o meglio
    CASO **) se si lascia la seconda e la quarta sottorete inutilizzata, si ci potrà ricondurre in al caso * in previsione di un aumento di host per un dipartimento oppure le sottoreti inutilizzate potranno venir usate nel caso della nascita di un nuovo dipartimento.Nel caso ** le 8 reti disponibili avranno indirizzi:
    193.1.1.0/27 broadcast 193.1.1.31 range 193.1.1.1 ~ 193.1.1.30
    193.1.1.32/27 (da lasciare inutilizzata)
    193.1.1.64/27 broadcast 193.1.1.95 range 193.1.1.65 ~ 193.1.1.94
    193.1.1.96/27 (da lasciare inutilizzata)
    193.1.1.128/27 broadcast 193.1.1.159 range 193.1.1.129 ~ 193.1.1.158
    193.1.1.160/27 broadcast 193.1.1.191 range 193.1.1.161 ~ 193.1.1.190
    193.1.1.192/27 broadcast 193.1.1.223 range 193.1.1.193 ~ 193.1.1.222
    193.1.1.224/27 broadcast 193.1.1.255 range 193.1.1.225 ~ 193.1.1.254che potranno essere trasformate a quelle del caso * semplicemente cambiando la maschera di rete delle prime due a 26bit:
    193.1.1.0/26 broadcast 193.1.1.63 range 193.1.1.1 ~ 193.1.1.62
    193.1.1.64/26 broadcast 193.1.1.127 range 193.1.1.65 ~ 193.1.1.126
    193.1.1.128/27 broadcast 193.1.1.159 range 193.1.1.129 ~ 193.1.1.158
    193.1.1.160/27 broadcast 193.1.1.191 range 193.1.1.161 ~ 193.1.1.190
    193.1.1.192/27 broadcast 193.1.1.223 range 193.1.1.193 ~ 193.1.1.222
    193.1.1.224/27 broadcast 193.1.1.255 range 193.1.1.225 ~ 193.1.1.254

 

  • Si deve configurare il collegamento ad Internet, via router, per una azienda con 5 computer collegati. Viene acquistato il servizio di connettività da Telecom che fornisce le informazioni del foglio allegato. I computer dell’azienda devono essere configurati con una rete privata
    1. disegnare lo schema del collegamento, comprensivo dei computer dell’azienda, del router, del router telecom, etc.
    2. elencare gli indirizzi IP facenti parte della sottorete assegnata da telecom, indicando qual è l’indirizzo della sottorete, quello di broadcast, quelli degli “host” e qual è l’indirizzo assegnato al router telecom
    3. mettere in evidenza la parte WAN e quella LAN dello schema
    4. preparare gli indirizzi e maschere di rete/sottorete da assegnare ad ognuna delle interfacce presenti nello schema

    Risposta:
    Nella figura riportata in basso è evidenziato lo schema della rete aziendale, l’identificativo della rete e l’indirizzo di broadcast sulla rete. Gli indirizzi IP usabili nella rete aziendale sono quelli che vanno da 81.116.244.25 fino a 81.116.244.30

    nello schema è riportata la configurazione di rete e le tabelle di routing di esempio per il router e per un solo host (81.116.244.26) essendo uguale per tutti gli altri host, dovendo cambiare solo l’indirizzo ip.
    La tabella di routing del host è quella tipica che ci si aspetta per un host connesso ad una rete che comunica con internet usando un router.
    La tabella di routing del router aziendale è leggermente più complessa in quanto è direttamente connesso ad internet tramite il router Telecom. Al router viene assegnato indirizzo ip 81.116.244.25, come richiesto da Telecom.
    Nel foglio fornito da Telecom è fatto riferimento ad un indirizzo punto punto 81.114.220.230, è dunque da ritenersi che la connessione WAN sia da configurarsi come punto punto.
    Per la connessione punto punto WAN, dato che non sono necessari indirizzi fisici per l’instradamento dei pacchetti, si può usare una tecnica che è detta “connessione a rete anonima” che non richiede, l’assegnazione di indirizzi ip inquanto basta inviare i pacchetti sull’interfaccia giusta.
    Nella tabella di routing del router aziendale, anche se non è strettamente necessario, è presente una regola per poter raggiungere il router Telecom, ad esempio per poter “pingare” il router Telecom.

  • Spiegare il concetto di NAT e perché sorge la necessità di introdurlo.Risposta: Il nat è un router specializzato che mantiene una tabella delle connessioni aperte dagli host di una rete locale verso degli host su internet. La tabella è del tipo:
    (host-locale:porta-host-loc ; host-remoto:porta-host-rem)
    Quando il nat riceve dei pacchetti da un host locale indirizzati ad un host remoto, egli sostituisce nel pacchetto l’indirizzo del host-locale con quello di una sua interfaccia connessa verso internet.(Al fine di evitare ambiguità, se porta-host-loc è già presente in tabella per una coppia host-remoto:porta-host-remoto si occupa anche di sostituire porta-host-loc con un numero di porta non usato per quella data coppia remota.)In questo modo, per l’host-remoto è come se i pacchetti avessero origine presso il nat.
    Quando il nat riceve pacchetti dalla internet, controlla se nella tabella delle connessioni c’è una corrispondenza tra porta-locale, host-remoto,porta-host-remoto ed in caso affermativo sostituisce nel pacchetto l’indirizzo di destinazione con quello del host locale precedentemente memorizzato in tabella.

    Per l’host-locale tutto questo processo è trasparente e la comunicazione verso l’host remoto avviene “quasi” come se il nat non ci fosse.

    Il nat è fondamentale per permettere ai computer che si trovano su indirizzi di sottorete riservati di instaurare connessioni con gli host che si trovano sulla rete internet pubblica, dato che le connessioni avvengono sfruttando l’indirizzo ip del nat.

    In aggiunta si può osservare che il nat incrementa la sicurezza delle reti private, poiché nasconde la loro topologia interna e protegge gli host da eventuali connessioni in ingresso provenienti da internet.

  • Il livello 4 dello stack di protocolli IP implementa 2 nuovi servizi da offrire al livello 5 – Application sovrastante. Quali sono e quali sono le loro caratteristiche?Il livello 4 (trasporto) introduce i protocolli TCP e UDP. Si pongono al livello trasmissione del modello OSI. Hanno in comune la caratteristica di permettere la “multiplazione” (tramite i numeri di porta) di più connessioni su di uno stesso indirizzo ip.
    Lo strato TCP, sebbene si collochi allo stesso livello del UDP, si differenzia dall’UDP perché è un protocollo orientato alla connessione: ha l’importante compito di garantire l’affidabilità (ovvero la consegna dei pacchetti).
  • Scrivere lo schema per punti delle operazioni che un programma client che usa i socket per comunicare con un server deve effettuare– Il programma client effettua una chiamata a socket() per ottenere un descrittore di rete
    – Poi effettua una chiamata a connect() che si occupa di “connettere” il socket precedentemente creato ad un altro socket che risiede sul server.
    (ovviamente il metodo connect() avrà bisogno come parametro sia del descrittore al socket, sia di una struttura tipo sockaddr che contenga l’indirizzo e la porta di destinazione del server remoto)
    – Il programma potrà quindi inviare e ricevere dati dal socket creato tramite le primitive di rete send() e recv() oppure se non ha bisogno delle loro specifiche funzionalità potrà usare il socket come un descrittore a file ed usare delle primitive che operano su file come ad esempio read() e write()
    – Sistemi operativi tipo UNIX si occupano automaticamente di chiudere descrittori aperti da un programma quando questo termina, mentre sistemi operativi come Windows lasciano invece i descrittori aperti creando problemi. Quindi, prima che il programma termini la sua esecuzione è bene ricordarsi di effettuare una chiama a close() per chiudere il socket di rete precedente aperto.

 

Domande sistemi informatici

  1. Si supponga di dover collegare in rete tre computer, con numeri di inventario 1,2 e 3. Si vuole utilizare la rete 10.0.0.
    1. Creare e compilare una tabella di inventory contentente tutte le informazioni che, allo stato attuale, si ritengono ragionevolmente necessarie per gestire la rete formata da questi tre computer;
    2. preparare il livello fisico: scegliere una topologia di rete ed implementarla con il materiale a disposizione.
    3. Elencare preventivamente (prima cioè di fare i collegamenti e le configurazioni) ciò di cui si ha bisogno per effettuare i collegamenti, sia in termini di harware che di parametri di configurazione;
    4. Preparare il livello network dello stack dei protocolli, configurarlo e collaudarlo.
  2. Spiegare in cosa consiste l’indirizzo fisico (MAC address), a che livello si colloca nello stack dei protocolli ISO/OSI e TCP/IP, come è formato, quale problema/esigenza consente di risolvere, dove viene memorizzato.
  3. Protocollo ARP: a cosa serve, fornire un esempio di interazione tra parti (peer) mediante un sequence diagram (commentandolo brevemente). A cosa serve il comando arp? A cosa serve  il comando ping? (Facoltativo: Si può fare a meno del protocollo ARP? Se non ci fosse, quali problemi si presenterebbero?)
  4. Spiegare a cosa serve l’indirizzamento IP, a che livello si colloca nello stack dei protocolli ISO/OSI e TCP/IP, quale problema consente di risolvere, in che cosa consiste un indirizzo IP, da quali parti è formato, quali sono le classi di indirizzi che si considerano, perché sono state introdotte, come le si distingue. Perché l’indirizzo IP viene detto classfull? Cos’è una maschera di rete? A cosa serve?
  5. Dato il seguente indirizzo IP espresso in dotted decimal notation: 15.193.112.23.
    Ricavare: la classe dell’indirizzo, la maschera di rete, l’indirizzo della rete, l’indirizzo di broadcast.
  6. Usando il programma Wireskark (o MS Netmon) e il file di cattura:
    CollegamentoLibero_3.pcap”, presente nella cartella:\srv20035 seraleSistemi,
    commentare e descrivere il significato dei più significativi tra i pacchetti scambiati durante la fase di instaurazione e di abbattimento della connessione. In particolare indicare quali vengono scambiati durante la configurazione di ciascuno dei livelli dello stack di protocolli (quali sono i livelli coinvolti?) e i parametri significativi che vengono scambiati/negoziati.

  1. Si supponga di dover collegare in rete tre computer, con numeri di inventario 1,2 e 3. Si vuole utilizare la rete 10.0.0.
    1. Creare e compilare una tabella di inventory contentente tutte le informazioni che, allo stato attuale, si ritengono ragionevolmente necessarie per gestire la rete formata da questi tre computer;
    2. preparare il livello fisico: scegliere una topologia di rete ed implementarla con il materiale a disposizione.
    3. Elencare preventivamente (prima cioè di fare i collegamenti e le configurazioni) ciò di cui si ha bisogno per effettuare i collegamenti, sia in termini di harware che di parametri di configurazione;
    4. Preparare il livello network dello stack dei protocolli, configurarlo e collaudarlo.

    Risposta:
    a) Se non si usa DHCP allora servono le seguenti informazioni: maschera di sottorete – indirizzo ip del router di default – indirizzo ip del server DNS
    b) ethernet
    c) un hub oppure uno switch, i cavi UTP per collegare gli host all’hub ed ovviamente una scheda di rete per ogni host
    d) Nei sistemi windows si possono usare le interfacce grafiche disponibili dal pannello di controllo.
    Nei sistemi Linux, si può usare il comando ip che si occupa della gestione manuale dello strato di rete, oppure il comando ifconfig che si occupa anche di creare le voci opportune nella tabella di routing per la sottorete di appartenenza. in ogni caso va specificato il gateway predefinito tramite il comando ip oppure il comando route. Per il DNS va creata un opportuna voce in /etc/resolv.conf.

  2. Spiegare in cosa consiste l’indirizzo fisico (MAC address), a che livello si colloca nello stack dei protocolli ISO/OSI e TCP/IP, come è formato, quale problema/esigenza consente di risolvere, dove viene memorizzato.
    Risposta:
    L’indirizzo mac identifica univocamente le interfacce di rete connesse ad una rete ethernet. E’un indirizzo a 48 bit solitamente espresso in esadecimale separando ogni byte con il simbolo di due punti ed è memorizzato nel firmware della scheda di rete.
  3. Protocollo ARP: a cosa serve, fornire un esempio di interazione tra parti (peer) mediante un sequence diagram (commentandolo brevemente). A cosa serve il comando arp? A cosa serve il comando ping? (Facoltativo: Si può fare a meno del protocollo ARP? Se non ci fosse, quali problemi si presenterebbero?)

    Risposta:
    Il protocollo ARP serve agli host di una rete ethernet di associare ad ogni indirizzo IP che si trovi sul proprio segmento di rete l’indirizzo mac dell’interfaccia a cui inviare i frame ethernet.
    Dopo che un host, usando il meccanismo delle maschere di rete, ha stabilito che l’indirizzo ip col quale vuole comunicare si trova sul suo stesso segmento di rete, ha la necessità di conoscere l’indirizzo mac a cui inviare i frame.
    Per questo invia in broadcast una richiesta (ARP request) a tutti gli host della propria rete chiedendo che l’host con l’IP richiesto risponda con il suo mac-address. Tutti gli host della rete, prestano attenzione alla richiesta e ne approfittano per aggiornare le proprie tabelle ARP con il mac e l’IP del richiedente in modo da poter usare il record così ottenuto per eventuali comunicazioni future.
    L’host interpellato (e solo lui) risponde al richiedente con un messaggio che contiene il proprio mac (ARP reply).

    In assenza di ARP, ogni host della rete deve avere una tabella che associ ad ogni host della rete l’IP con il corrispondente MAC. Tale tabella è molto difficile da gestire (anche se è uguale per tutti gli host della rete) quando la rete è di grosse dimensioni o quando gli host vi si connettono dinamicamente.
    Tuttavia il protocollo ARP si bassa sulla fiducia che ogni host segua fedelmente il protocollo e tutti si comportino correttamente: è molto facile impersonare un altro host (ARP spoofing) e farlo credere a tutti gli altri host della rete (ARP poisoning). Quando la sicurezza della rete è molto importante ed altri meccanismi in grado di prevenire l’ARP spoofing non possono essere usati, allora l’uso di tabelle statiche può essere una valida soluzione.

    Il comando arp serve a manipolare la cache arp del proprio sistema.
    Il comando ping serve per inviare delle ICMP echo request ad un host per poter verificare che sia raggiungibile (ammesso che l’host sia configurato per rispondere ai messaggi ICMP e questi non siano bloccati da firewall lungo il percorso)

  4. Spiegare a cosa serve l’indirizzamento IP, a che livello si colloca nello stack dei protocolli ISO/OSI e TCP/IP, quale problema consente di risolvere, in che cosa consiste un indirizzo IP, da quali parti è formato, quali sono le classi di indirizzi che si considerano, perché sono state introdotte, come le si distingue. Perché l’indirizzo IP viene detto classfull? Cos’è una maschera di rete? A cosa serve?

    Risposta:
    Gli indirizzi IP servono ad identificare univocamente gli host connessi ad internet.
    Si pone al 3°livello dello stack ISO-OSI (rete) fra lo strato datalink e quello di trasporto.
    Si pone al 2°livello dello stack TCP/IP (internet) fra lo strato host-to-host e quello di trasporto.
    Un indirizzo ip è composto da 32 bit che possono essere divisi in due parti, una che identifica la rete, l’altra l’host sulla rete.
    Le classi d’indirizzi sono state introdotte per evitare che i router avessero delle tabelle d’instradamento enormi, dovendo tenere traccia degli instradamenti per ogni singolo ip.
    Dividendo gli ip in classi (ossia reti) i router devono tenere traccia soltanto degli intradamenti verso le reti.
    L’indirizzamento a classi prevede che siano i primi bit di un indirizzo ip a determinarne la classe di appartenenza, secondo il seguente schema:
    0… classe A
    10… classe B
    110… classe C
    1110… indirizzi multi cast
    1111… riservato per usi futuri

    Le maschere di sottorete sono un meccanismo per la determinazione della rete di appartenenza di un indirizzo ip.
    Le maschere di rete sono una sequenza di 32 bit.
    Tramite un operazione di AND bit a bit con un indirizzo ip, ne permettono la divisione in due parti: parte di rete e parte host.

  5. Dato il seguente indirizzo IP espresso in dotted decimal notation: 15.193.112.23.
    Ricavare: la classe dell’indirizzo, la maschera di rete, l’indirizzo della rete, l’indirizzo di
    broadcast.
    Risposta:
    Classe A – maschera di rete 255.0.0.0 – Indirizzo di rete 15.0.0.0 – Broadcast 15.255.255.255
  6. Usando il programma Wireskark (o MS Netmon) e il file di cattura:
    CollegamentoLibero_3.pcap”, presente nella cartella:\srv20035 seraleSistemi,
    commentare e descrivere il significato dei più significativi tra i pacchetti scambiati durante la fase di instaurazione e di abbattimento della connessione. In particolare indicare quali vengono scambiati durante la configurazione di ciascuno dei livelli dello stack di protocolli (quali sono i livelli coinvolti?) e i parametri significativi che vengono scambiati/negoziati.