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.
Quante sono le porte speciali per cui devi essere loggato come utente root per fare il bind?
tutte le porte sotto la 1024
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).
Domanda inode
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
Come faccio a testare le variabili d’ambiente(lab)? Si possono provare a fare redirezioni di I/O
non corrette?
Cos’è il PID?
Il PID (Process ID) è un numero intero non negativo che identifica un processo.
Execve
4
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).
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.
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:
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
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.
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
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.