Sei sulla pagina 1di 9

1

DOMANDE ORALE

HACKERINO:

Cosa fa la fork?
La system call fork clona un processo, cioè crea una copia praticamente identica del processo che
l’ha invocata. Il nuovo processo, detto figlio, è identico al padre (il processo che ha chiamato la
sys) eccetto che per il pid; infatti, vengono copiati sia i file descriptor che lo spazio di
indirizzamento.

Spazio di indirizzamento con fork?


Il processo figlio condivide le stesse pagine di indirizzamento in memoria fisica del padre che
vengono marcate con “read only” per evitare che i processi modifichino in contemporanea i dati
nelle pagine in comune.

Bit setuserid a cosa serve e quando entra in gioco?


Il setuserid è appunto un bit che se abilitato nel file eseguibile allora effective UID e saved UID
diventano quelli del proprietario del file. Di solito succede per i file di proprietà di root. Questo
accade quando si chiama la system call execve.

I tre userID di un processo:


i tre UID di un processo sono real, effective e saved che servono rispettivamente a sapere chi è il
proprietario di un processo, e può quindi fare la kill, per sapere l’identità usata per determinare i
permessi di accesso alle risorse condivise e l’ultimo che serve sostanzialmente a salvare l’originale
real UID che potrebbe riservire e quindi si usa saved per memorizzarlo.

Principio del minimo privilegio:


è il principio secondo il quale ad un’entità vadano dati solo il minor numero di privilegi necessari
solo per svolgere i propri compiti. Questo perché in caso di errori si avrebbero conseguenze
limitate ai soli file accessibili con quei permessi.
Per esempio, se fossimo root faremmo parecchi guai, potremmo persino cancellare tutti i comandi
(che stanno in “bin”).

In quale esercitazione è stato usato ? É stato usato in incapache.

Quante sono le porte speciali per cui devi essere loggato come utente root per fare il bind?
tutte le porte sotto la 1024

Cosa succede se ho un inode marcato come occupato ma nessuna directory punta a


quell’inode? Si può sistemare?
Va sicuramente nella cartella Lost and found perché lì la system call fsck ci mette i frammenti di file
che non è riuscita ad attaccare da nessuna parte all’albero delle directory.
Questa situazione si può risolvere facendo fsck sull’inode che si vuole ripristinare.

Cosa si dovrebbe fare se volessimo scrivere un programma in c equivalente alla scelta di


un comando del tipo “./bin/sort<Pippo”?
Dovrei sicuramente usare una open in quanto si deve prendere l’input da pippo e poi immagino di
dover implementare un algoritmo di sort degli elementi del file.

Quale sys potrebbe modificare la bitmap sul file System?


La system call che potrebbe modificare la bitmap sul file system è fsck che serve per verificarne
l’integrità.
2

Completely fair schedule


Il completely fair scheduler è lo scheduler attualmente in uso su Linux. Conteggia il tempo usando
il concetto di virtual runtime, è un tempo virtuale che dipende dalla priorità dei processi, serve per
misurare il tempo di utilizzo della CPU, attraverso questo il CFS decide quale processo mandare in
esecuzione. Per evitare la starvation quando un processo viene messo in attesa (p.es I/O) e poi
torna ready, il suo virtual runtime viene aggiornato e impostato uguale al minimo tra tutti gli altri
processi. Stessa cosa quando arriva un nuovo processo. Per questo motivo viene chiamato
Completely Fair.

Perché albero binario? Questi alberi permettono di trovare il processo con vruntime più piccolo
tra n processi e di aggiornare la priorità in un tempo di log(n).

Quando creo un processo nuovo che valore metto?


Solitamente quando creo un nuovo processo lo faccio attraverso la sys fork, che ritorna per il
processo padre il pid del figlio e per il figlio ritorna 0. Per fare la chiamata la sys fork non ha
bisogno di parametri in quanto è void.

Cos’è una race condition?


Una race condition è una situazione che si verifica quando ci sono più flussi di esecuzione e
succede quando il risultato finale dipende dalla temporizzazione con cui vengono schedulati ed
eseguiti i flussi di esecuzione, cioè succede quando due thread vanno ad eseguire nello stesso
momento una sezione critica, che è un frammento di codice che accede ad una risorsa condivisa.
Per evitarle bisogna avere una sincronizzazione sui thread.

Domanda inode

Direi che tipicamente, ma non sempre, f1 ed f2 fanno riferimento a inode diversi.

Implementazione dei Lock.


Per costruire dei lock dobbiamo tener conto della mutua esclusione, della fairness/ starvation e
delle performance. Per poterlo fare nel modo corretto abbiamo bisogno di primitive atomiche date
dai processori come il test and set e gli scambi atomici. Con questi strumenti possiamo
implementare gli spin lock, questi garantiscono la mutua esclusione ma non c’è la garanzia che un
thread acquisisca il lock, questo significa che è possibile ricadere nella starvation.
Per quanto riguarda le performance invece bisogna distinguere rispetto il numero di core, infatti su
un singolo core se un thread che ha il lock viene deschedulato, gli altri sprecano tempo e CPU e
questo non va bene. La situazione cambia invece su un multicore, perché se i thread sono scritti
bene allora non dovrebbero tenere il lock a lungo e quindi funziona discretamente.

Cos’è la starvation ?
La starvation è una situazione che si verifica quando un processo non può mai andare in
3

esecuzione perché l’algoritmo di scheduling non gli rilascia mai l’uso di CPU

Quando ti logghi in un sistema cos’hai ?


Durante la fase di login l’utente che sta accedendo ha tutti i privilegi al massimo.
Inoltre gli User ID coincidono.

Quando cambia UID?


Tramite setuid(2) un processo può modificare l’effective UID, facendolo diventare come il real o il
saved. Se il chiamante è privilegiato, può modificare tutti e tre come vuole.

Quando entra in gioco exec UID?

Come faccio a testare le variabili d’ambiente(lab)? Si possono provare a fare redirezioni di I/O
non corrette?

Cosa succede quando creo un file System?


Quando creo un file system, questo viene in automatico agganciato ad una particolare directory già
esistente all’interno del file system attuale

Differenza tra thread e processo.


La differenza principale fra thread e processi è la condivisione (o meno) dello spazio di
indirizzamento: due processi diversi hanno due CPU virtuali e due spazi di indirizzamento diversi,
mentre due thread in un processo vedono lo stesso spazio di indirizzamento.

Cos’è il PID?
Il PID (Process ID) è un numero intero non negativo che identifica un processo.

Cos’è un file descriptor e cosa ci posso fare?


Un file descriptor è un intero non negativo che identifica un file aperto. Grazie ai file descriptor si
può lavorare con i file, inoltre tutto l’I/O in Posix avviene attraverso i file descriptor.

Redirezione input output:


A livello di sys come faccio a fare la redirezione di I/O?
La redirezione di I/O a livello di sys è fattibile attraverso due system call: dup e open.
La prima è sicuramente la migliore in quanto crea un nuovo file descriptor equivalente ad uno che
abbiamo già ed entrambi i fd punteranno allo stesso file aperto. Il nuovo file descriptor sarà il più
piccolo possibile come anche per la open. La sys open fa praticamente la stessa cosa ma in modo
molto più brusco; infatti, si può reindirizzare chiudendo e riaprendo un fd con open. È un approccio
poco ideale perché se ci sono errori si perde il file da reindirizzare.

Per eseguire ls che sys userei?


Dovrei eseguire una fork per creare un processo figlio, successivamente sul figlio si dovrebbe
eseguire una exec mandando in esecuzione il comando ls. Per finire basta fare una wait per
aspettare la fine dell’esecuzione di ls sul processo figlio.

Execve
4

Molto spesso si fa una fork, un exec e una wait

Perché non si fa solo la fork?


Perché altrimenti significherebbe killare la bash, questo perché il suo spazio di indirizzamento
verrebbe completamente sostituito

Come vedere il contenuto di grep pass VD?


Per vedere il contenuto di Grep pass VD posso scrivere su terminale: ls –l grep pass VD

Cosa fa grep e cosa filtro con grep pass VD?


Grep è un comando che permette di filtrare le linee che contengono una certa espressione
regolare, con grep pass VD filtro nel file pass le linee che contengono “VD”

Algoritmo di scheduling: multi level feedback queue


L’algoritmo cerca di determinare le caratteristiche di un processo e premia i processi I/O bound
mettendoli in coda per essere eseguiti non appena diventano ready. Questo algoritmo prevede più
livelli di code in cui sono messi i processi in base alle loro caratteristiche. L’algoritmo cerca di
ottimizzare sia il turnaround time che il response time.

Come cambia la priorità dei processi?


La priorità di un processo viene determinata in base al suo comportamento. Un nuovo processo
entra con priorità massima e quando usa un tempo t ad una certa priorità allora la priorità viene
ridotto.

Cosa vuol dire andare in round Robin?


Si va in round robin quando due job hanno la stessa priorità, andare in round robin significa dare
un po’ di tempo ad un processo per permettergli di eseguire al massimo quella quantità di tempo,
una volta scaduto il processo viene interrotto e sostituito. Sostanzialmente fanno un po’ ed un po’.

Context Switch:
Perché è meno costoso il context switch ?
Il context-switch fra thread costa meno del context-switch fra processi: questo perché
condividendo lo spazio di indirizzamento tutti i thread dello stesso processo utilizzano la stessa
tabella delle pagine.
Inoltre ogni thread, corrispondendo ad un flusso di esecuzione, ha il proprio stack (ma condivide
codice e dati con gli altri thread dello stesso processo).

Gli indirizzi che usa un processo sono virtuali o fisici ?


Lo spazio di indirizzamento è l'astrazione della memoria fisica.
I processi utilizzano indirizzi logici/virtuali che vengono tradotti in indirizzi fisici tramite la MMU
(Memory Management Unit). Questa traduzione può avvenire tramite segmentazione, paginazione
oppure tramite delle combinazioni dei due metodi

Come fa il kernel a passare ad una stringa ed eseguirla?

Supponi che A punta a B e B punta A; se faccio una open, il kernel va in loop?


È possibile che vada in loop

Come vengono controllati i permessi? I permessi vengono controllati grazie a read, write ed
exec diversi nelle directory. Ogni permesso è fatto da un flag rappresentato da un bit.

C’è un utente diverso dagli altri ?


Ovviamente si, è l’utente root. È un po’ come se fosse un dio all’interno del computer perché può
fare tutto ed ha accesso ad ogni cosa.
5

CHIOLA:

WI-FI
è un protocollo abbastanza semplice ma ha qualche complicazione, è usato per la comunicazioni
nella rete locale, è uno dei protocolli più usati nella pratica. È una sorta di versione wireless del
protocollo ETHERNET (802.3). Possiamo dire che gli indirizzi MAC sono gli stessi, condividono lo
stesso formato: 6 byte univoci all’interno della rete locale alla quale si connettono.
Wi Fi in un certo senso è una via intermedia tra i due approcci visti con ETHERNET. L’idea è che
un Host deve essere dotato di un’antenna attraverso il quale possa ricevere segnali radio, a cui
potrebbero connettersi altri host facendo sì che tali segnali vengano inviati e ricevuti attraverso
l’uso della stessa frequenza.
La modalità di comunicazione via radio possiamo trovarla su diverse applicazioni, dal punto di vista
informatico questa comunicazione viene chiamata di tipo PEER-to-PEER (P2P).
Quando la comunicazione è stabilita la comunicazione funziona fino ad una certa distanza che
dipende:

- dalla potenza del segnale elettromagnetico utilizzato


- dalla presenza di eventuali ostacoli presenti tra i due (a seconda dell’ostacolo presente
avremo conseguenze diverse)
- dalla frequenza usata.

Oltre una certa soglia di segnale potrebbe essere pericoloso per la salute delle persone; quindi, è
vietato (parliamo di frequenze elevate dell’ordine delle microonde).

Ethernet
Questo protocollo è standardizzato in IEEE 802.3 ed sviluppato sul livello fisico, è un sistema
abbastanza complicato, perché è molto vecchio, nel tempo ha subito cambiamenti e miglioramenti
ma le basi non sono mai state toccate.
L’ethernet originale è ormai obsoleto e non più usato, lavorava principalmente su reti locali di
piccole dimensioni, geograficamente limitate a circa 100 metri.
La prima versione aveva una struttura di connessione di tipo bus con un cavo di tipo coassiale,
avendo letteralmente un cavo per inviare i segnali c’era la necessità di doversi coordinare con gli
altri host per inviare un solo messaggio.
Si è pensato successivamente di cambiare il cavo per utilizzare connessioni con connettori a T,
rimangono tuttavia una serie di problemi relativi ai guasti.
CI sono state poi una serie di evoluzioni dei cavi, ed è stato introdotto un dispositivo che funziona
come amplificatore e ripetitore del segnale chiamato hub che continua a funzionare in modalità
broadcast, questa è la prima vera novità seguita poi da miglioramenti come l’uso della fibra ottica.
Altro grande miglioramento è stato quello di sostituire l’hub con uno switch. Questo nuovo
dispositivo ha la necessità di avere il doppio dei cavi utilizzati per poter supportare il full duplex, un
meccanismo per evitare collisioni che comporta l’utilizzo di un buffer nello switch dove
memorizzare il messaggio.
La banda aumenta ma il prezzo da pagare, oltre all’avere più cavi, è quello dell’introduzione dello
store and forward, significa che lo switch riceve i messaggi, li salva e li inoltra al destinatario. Resta
tuttavia la possibilità di inviare i messaggi broadcast.

SMTP
Il protocollo SMTP è basato sul trasporto TCP, il servizio era originariamente definito sulla porta
25, altre porte furono introdotte per aggiungere nuove funzionalità introdotte in seguito.
Restrizioni:
- Il limite di lunghezza del messaggio è di 72 caratteri.
- Si possono usare solo caratteri ASCII 7 bit
- Non si può usare la stringa che contiene un punto e un a capo perché è il segnale che indica la
fine del messaggio.
6

Quando il client vuole inviare un messaggio di posta elettronica, questo si connette al server SMTP
1. I comandi usati sono quelli per specificare gli attributi principali (Indirizzo destinatario, oggetto
etc.) dal punto di vista del protocollo segue poi il contenuto del messaggio, questo, viene
memorizzato nel server. Il messaggio può essere destinato a chiunque (quindi il destinatario può
non essere presente sul server SMTP 1), nel caso in cui il destinatario sia fuori dal primo server,
allora deve essere SMTP1 stesso a contattare un ipotetico SMTP2 per inoltrare il messaggio da
recapitare al destinatario, a quel punto il primo server SMTP finisce il suo lavoro e lascia la
consegna in mano di SMTP2. Se chi deve ricevere il messaggio ha la casella di posta elettronica
in quel server allora in SMTP2 esiste un file del destinatario.

Il messaggio può essere inviato in qualsiasi momento (asincrono), anche con macchina del
destinatario spenta, se questo avviene allora SMTP2 si occupa del far arrivare il messaggio
riprovando più volte a consegnarlo, dopo qualche tentativo il server salva il messaggio e, passato
un po’ di tempo, ritenta a consegnarlo (Best effort). Se fallisce del tutto la consegna allora si invia
un messaggio di errore al mittente.

FTP
È un protocollo alternativo al protocollo http.
Nel protocollo FTP si ha però la seccatura di dover aprire le due connessioni (controllo e dati),
un’altra differenza tra i due protocolli è quella che il protocollo FTP richiede un’autenticazione per
accedere ai file mentre il protocollo HTTP no, i client sono anonimi e i server non richiedono un
login per l’accesso alle info.
Esistono due versioni:
- versione 1.0  è la versione più semplice con connessioni TCP non persistenti, ogni volta
che si vuole inviare un messaggio si deve quindi aprire la connessione. Lo stream viene
usato solo per trasferire un file, questo comporta costi relativi al tempo dovuti dal 3-way-
handshake.
- Versione 1.1  in questa versione le connessioni sono persistenti e quindi si possono
inviare più richieste senza chiudere la connessione

È un protocollo senza stato, per ricordare comunque le informazioni è stato introdotto un


meccanismo chiamato “cookies”, questi cookies non sono altro che una stringa di caratteri ASCII
memorizzati dal client.

Controllo di Congestione
La congestione è un fenomeno che si verifica dalla condivisione di router/ canali di condivisione tra
tanti utenti diversi, quindi più che possibile che il percorso di un datagramma sia lo stesso o
almeno in parte di un altro datagramma. Nel caso in cui ci fosse un punto in cui si concentrano un
grande flusso di messaggi e non ci sia abbastanza memoria, potrebbe verificarsi una congestione,
cioè un eccessivo uso della rete.
Il protocollo di controllo della congestione implementa una “congestion window” che contiene una
stima delle informazioni ricevibili dai buffer intermedi.
Per calcolare queste qunatità si utilizzano due algoritmi:

- Slow start, sostanzialmente si inviano pochi dati che man mano crescono di quantità fino a
quando non si arriva ad una congestione

- Fast recovery, parte quando l’algoritmo di slow start provoca una congestione e si
memorizza l’ultimovalore prima di essa. Con questo algo si riparte ad inviare una piccola
parte di dati che cresce in maniera esponenziale fino alla soglia limite, a quel punto la
quantità di dati inviati cresce di uno in uno fino ad una congestione. A questo punto riparte
il fast recovery.,
7

Protocollo arp
È un protocollo di livello applicativo che serve per coadivuare il livello 3 ed il livello 2 di
comunicazione.
L’idea è quella che un qualunque host appartenente alla rete possa voler sapere l’indirizzo MAC
associato ad uno specifico indirizzo IP di una macchina connessa alla stessa rete. Questo è un
protocollo estremamente semplice che è composto dalla richiesta e dalla risposta con l’indirizzo
MAC. A livello di trasporto è basato su udp perché la richiesta è inviata tramite broadcast.
Il protocollo richiede che solo una delle macchine risponda, quella che riconosce l’indirizzo IP
come il suo, risponderà in privato al richiedente dicendogli il suo indirizzo MAC. Il richiedente
conoscendo l’indirizzo MAC ora potrà costruirsi un frame ethernet associando il messaggio al
giusto indirizzo MAC.
Come già detto è un protocollo semplice ma costoso dal punto di vista dell’occupazione della rete,
per evitare ogni volta di inviare messaggi per sapere gli indirizzi MAC, quelli già conosciuti
vengono salvati su una memoria cache per evitare l’utilizzo del protocollo rendendone così
tollerabile l’uso. Una delle caratteristiche principali è quella di essere un protocollo senza memoria,
questo per renderlo più veloce.
Per senza memoria si intende che una volta inviata la richiesta l’host si dimentica di averla fatta e
quando riceve una risposta la salva senza chiedersi se questa sia lecita o meno.
Di conseguenza ci sono dei problemi:
 se rispondo 2 o più host alla richiesta, il protocollo prevede che ce ne sia solo una e allora
ogni volta che riceve risposta lui salva su cache
 attacco → Cache poisoning, basta ricevere una risposta sbagliata per compromettere tutta
la memoria cache. Da un attacco di tipo ARP cache poisoning si può arrivare a fare un
attacco del tipo man-in-the-middle. Per dire, E dice che l’indirizzo di B è in realtà E
(indirizzo IP giusto ma quello MAC no !) e viceversa con B verso A. Così facendo E sarà
nel mezzo della comunicazione e potrà ricevere i messaggi che vanno da A a B e
viceversa.
Questo problema può essere evitato disabilitando il protocollo ARP e inserendo manualmente gli
indirizzi simbolici/numerici IP e inserendo l’indirizzo MAC inserendo delle macchine appartenenti
alla LAN.
In assenza di queste contromisure è bene non fidarsi troppo sul fatto che le cache non siano
corrotte, per avere più sicurezza devo evitare che ci siano macchine che possono essere
controllate da attaccanti.

Protocollo tcp
E’ un protocollo di livello 4 che serve principalmente per favorire lo scambio di informazioni con le
comunicazioni bidirezionali, lavora al livello 4 (di trasporto) con trasmissione di parole da 32 bit. Il
protocollo TCP ha un’intestazione di lunghezza variabile.
Lo possiamo considerare affidabile grazie all’uso del messaggio di ack che fa da conferma di
avvenuta ricezione del messaggio. Nel caso in cui il mittente non riceve l’ack, passato un tempo
prestabilito, invia nuovamente il messaggio causando un aumento dei costi ed un’occupazione non
calcolata del canale di trasmissione. Un messaggio si perde quando il buffer del ricevente è pieno
ed invio il messaggio dopo aver ricevuto l’ack. Per evitare questo problema è stato introdotto un
ulteriore protocollo chiamato Protocollo di flusso che è basato su un campo da 16 bit detto finestra
di ricezione che permette al mittente la capacità di immagazzinamento del buffer del ricevente, è
un campo costantemente aggiornato e per far si che il mittente non mandi messaggi troppo lunghi
sono stati introdotti dei limiti di grandezza attraverso un altro protocollo.
Questo funziona perfettamente se la comunicazione è bidirezionale, se fosse unidirezionale
potrebbero esserci problemi con l’ack si è quindi pensato di far inviare un solo byte di messaggio
8

per volta, così nel caso in cui il buffer si riempisse si andrebbe a perdere una quantità minima di
messaggio, altro meccanismo usato è quello del cd piggy bank,

DHCP
Il protocollo DHCP lavora sul livello applicativo ed ha come scopo l’assegnazione di indirizzi IP alle
macchine di una LAN. Per evitare problemi si utilizza il protocollo UDP per inviare i messaggi così
da poter usare l’indirizzo broadcast, si manda quindi la richiesta di indirizzo in broadcast a tutte le
macchine della rete locale sulla porta 68. La risposta contenuta l’indirizzo IP sarà mandata sulla
porta 67.

WI-FI: controllo RTS e CTS


Il controllo RTS è un frame del protocollo CSMA/CA che serve per richiedere l’invio di un
messaggio che viene inviato dall’host all’access point e basta. Questo frame di controllo è
composto da una coppia di bit 01. Per fare il controllo è necessario anche il frame CTS(clear to
send) che viene inviato in broadcast a tutti gli host connessi per fargli sapere che sta per essere
inviato un messaggio. Così facendo nessuno oltre che l’host che ha inviato il request to send potrà
inviare un messaggio evitando quindi le collisioni. L’unica collisione che si potrebbe verificare è
quella nell’invio del frame di controllo. Avremo altri messaggi di controllo che verificano che la
connessione sia ancora attiva e altri di dissociazione in cui l’host comunica il termine della
connessione all’access point.

Versioni WI-FI:
Esistono diverse versioni del protocollo WIFI, queste si distinguono dalle frequenze usate per
implementarle, in Europa non è possibile utilizzare versioni che sono sui 5 Giga Hertz.
Le versioni più importanti sono:
802.11a che lavora su 5 GHz;
802.11b che lavora su 2.5 GHz, questa versione era inizialmente diffusa in Europa.
802.11g che è un mix tra le prime due che lavora sempre su 2.5 GHz ma usa un protocollo di
accesso ai canali radio che deriva infatti dalla versione a. Questa versione permette di usare una
banda di comunicazione più elevata.
Esiste poi la versione 802.11n che usa in contemporanea le due versioni 5 GHz e 2.5 GHz e che
quindi non si può usare in Europa; infine esiste la versione del 2020 che è appunto chiamata
802.11-2020 oppure 802.11ax che usa una frequenza di modulazione con 6Ghz

Protocollo IP, livello di rete


Questo è un protocollo vecchi ma non ancora obsoleto che permette di assegnare gli indirizzi agli
host. Di questo protocollo esistono due versioni che sono la versione 4 e la versione 6.
Nella versione 4 l’header varia per i protocolli TCP ed UDP. In generale si può dire che il controllo
di integrità viene svolto solo sulla parte che precede il payload; il TTL serve per occuparci
dell’instradamento dei datagrammi in modo che il messaggio arrivi all’host di destinazione
passando dai router. Il time to live è un protocollo che serve appunto per far arrivare a
destinazione i datagrammi attraverso il loro instradamento.
È da ricordarsi però il fatto che ogni host deve avere un indirizzo IP univoco nella rete! Con la
versione 4 si potevano avere un massimo di 232 indirizzi connessi. Mentre la versione 6 che è
quindi stata introdotta per aumentare il numero di indirizzi, si sono infatti aumentati i bit che sono
passati da 32 a 128.

Principali differenze tra versione IP V4 e IP v6


Una delle differenze più grandi è che nella versione 6 è stata rimossa tutta la parte della
frammentazione perché si è deciso che venga fatta del mittente; inoltre si è deciso di togliere il
checksum per evitare di dover calcolare ogni volta il singolo hop. Sostanzialmente nella versione 6
sono state tolte tutte quelle cose che nella versione 4 erano poco usate, vi è stata infatti una
9

semplificazione del tutto. Altra differenza tra le due è che nella versione 6 la lunghezza dell’header
è fissa. Del resto si può dire che non è cambiato molto, qualche nome o la lunghezza ma lo scopo
è lo stesso.

Routing a livello di rete


Ci possono essere tanti percorsi alternativi per raggiungere lo stesso host destinatario. Per
instradare il messaggio non si ha bisogno di tutti i 32 bit dell’indirizzo, servono solo i bit
corrispondenti alla parte in comune di tutti gli host della rete locale (LAN) in modo di far arrivare al
router (connesso con rete locale) il messaggio, verrà lasciato a lui il compito di consegnare il
messaggio a destinatario vero e proprio.
Il routing funziona solo sulla rete geografica e non in reti locali (LAN), la consegna all’host verrà
fatto sulla base di indirizzo MAC, sfruttando capacità del router locale.
L’instradamento viene organizzato in base alla principale priorità, mandare al destinazione il
messaggio più in fretta possibile !!!!!
Il metodo più veloce è conoscere già il percorso, conviene quindi imbastire l’instradamento su delle
tabelle, le tabelle in questione sono chiamate “Routing table” oppure “Tabelle di forwarding”.

Come vengono organizzate le tabelle di instradamento all’interno dei router?


In base all’indirizzo la tabella indica su quale uscita mandare il messaggio, ogni router ha la sua
tabella.
Il problema sorge sulla lunghezza della tabella perché bisognerebbe conoscere tutti gli indirizzi
possibili a cui inviare il messaggio, una possibile soluzione potrebbe essere quella di non salvare il
numero in bit dell’host (se LAN non ha un solo host).
Usare un sottoinsieme di bit che è in base al router e non alla netmask del router di destinazione.
Nelle tabelle viene associato un preambolo di indirizzo associato alla porta d’uscita.
Nel penultimo router ha senso mettere tutto l’indirizzo di rete.
Man mano che si va indietro e ci si allontana dalla destinazione, si vanno a diminuire i bit di
preambolo per l’indirizzo di destinazione.
Una soluzione non perfettamente ottimale è rappresentata dal compromesso che si trova tra i bit di
preambolo e l’effettiva bontà dei percorsi che si riescono a trovare/calcolare.

Differenza versione 4 e 6 dal punto di vista del Routing


Dal punto di vista del routing la versione 4 è implementata in modo tale da far fare la
frammentazione a chi invia il messaggio per quanto riguarda il primo Hop, mentre, ad ogni salto
successivo, sono poi i router che se ne occupano verificando se la grandezza del messaggio va
bene o se si devono effettuare ulteriori frammentazioni.
Il destinatario invece, prima di poter assemblare tutto il messaggio e inviarlo al livello superiore,
deve aspettare che tutti i frammenti arrivino a destinazione. Prima di ciò tutto questo occupa
memoria, per questo motivo la frammentazione è stata messa nel router del destinatario.
In caso di perdita di uno o più sotto messaggi, l’intero messaggio verrà perso.
La versione 6 invece implementa il routing in modo tale da alleggerire il lavoro ai router e quindi fa
fare la frammentazione al mittente.
Per permettere ciò il mittente deve basarsi sugli eventuali errori che gli potrebbe comunicare il
protocollo ICMP, per questa versione di IP, in caso di frammenti troppo grandi.

Potrebbero piacerti anche