Sistemi operativi ed informatica
(A. Andreazza)
Scuola di Specializzazione in Fisica Medica
“Sistemi operativi ed informatica”?
• Non sarà un vero e proprio corso,
ma piuttosto un insieme di informazioni e stimoli (spero) utili.
• I temi sono stati scelti in base alla mia esperienza personale (ed ignoranza):
– Scripting in bash
– Il funzionamento di internet (modello a strati)
– Regole basi di sicurezza (password e certificati)
• Feedback per le prossime edizioni:
– Attività concrete che secondo voi sarebbe utile trattare – Equilibrio lezioni teoriche/laboratorio
A. Andreazza – Sistemi operativi ed informatica
Piano del corso
• Giovedì 2 maggio
– Connessione ai PC del laboratorio – Introduzione a Linux/bash
– Informazioni sulle reti
– Dissertazioni sulla sicurezza
• Lunedì 6 maggio
– Introduzione a Matlab o bash scripting
• Mercoledì 8 e Lunedì 13 maggio
– Tecniche di Calcolo (prof. Stefano Ferrari)
3
PC del laboratorio (o su vs. laptop)
Lezione 1: Introduzione alla bash
• La shell
• Programmazione in bash
Referenze:
• Gareth Anderson, GNU/Linux Command-Line Tools Summary http://tldp.org/guides.html
• Machtelt Garrels, Bash Guide for Beginners http://tldp.org/guides.html
• Mendel Cooper, Advanced Bash-Scripting Guide http://tldp.org/guides.html
A. Andreazza – Sistemi operativi ed informatica
Un salto nella preistoria
• Siamo abituati ad interagire con un calcolatore tramite una Graphical User Interface (GUI).
– Semplifica le operazioni – Protegge dagli errori
più comuni
– Non è sempre stato così – Non sempre è il modo più
efficiente
• Oggi interagiremo con il calcolatore attraverso un terminale, usando la linea di comando.
5
Un editor non interattivo!
Ricerca di espressioni
Linguaggio per
manipolazione di testi
Un salto nella preistoria
GUI
Olduvai stone chopping tool Neil MacGregor,
A History of the World in 100 objects
http://www.britishmuseum.org/explore/a_history_of_
the_world.aspx
A. Andreazza – Sistemi operativi ed informatica
Connessione ai PC del laboratorio
• Account di ateneo:
– Username: nome.cognome (senza @unimi.it))
– Password: quella del vostro account e-mail di ateneo
• Per chi ha già frequentato questo laboratorio:
– esiste ancora il vostro account @studenti.unimi.it – fateci sapere se avete problemi di accesso
• Queste slides su:
http://www2.fisica.unimi.it/andreazz – Per aprire un browser web:
selezionare Applications⇒Internet⇒Firefox Web Broswer – Per aprire il Nautilus explorer:
cliccare sull’icona Home
– Per aprire una finestra terminale:
selezionare Applications⇒System Tools⇒Terminal
7
Benvenuti in Linux!
• Linux è un sistema operativo della famiglia UNIX.
• Le componenti principali sono:
– Kernel: gestisce le risorse del calcolatore
– Librerie di sistema: software che realizza le funzionalità di uso generale (shared libraries, equivalenti alle DLL di Windows)
– Tool di base (generalmente operanti da linea di comando) – Shell: l’interprete delle istruzioni date sulla linea di comando.
• In pratica l’interfaccia tra utente e calcolatore
• Linux in senso stretto è il Kernel del sistema operativo
• I tool di base sono forniti dal progetto GNU (www.gnu.org)
– Sarebbe più corretto parlare di GNU/Linux
• Interfaccia grafica X Windows: www.x.org
• Distribuzioni: insieme coerente di sistema operativo ed applicativi.
• Software open source, distribuito secondo la licenza GPL:
http://www.gnu.org/licenses/gpl.html
A. Andreazza – Sistemi operativi ed informatica
La shell
• La shell o interprete dei comandi è un programma che serve ad impartire comandi al sistema operativo.
• Ci sono numerose scelte: sh, bash, ksh, zsh, csh, tcsh…
– bash è diventata il default di Linux, di Mac OS X e di Cygwin (Windows)
– anche Windows ha una sua shell (Windows PowerShell), ma qui (e nel resto del corso) preferiamo enfatizzare la portabilità.
• I comandi sono righe di testo inserite al prompt, che vengono interpretate ed eseguite quando si preme il tasto di invio.
• L’immissione di un comando interpretabile fa partire un sotto-processo in cui quel comando viene eseguito.
• Numerose funzionalità:
– utilizzo di variabili, wild-character, espressioni
– auto-completion (tasto TAB ) per i nomi di comandi, file, variabili – ridirezione di input e output
– gestione dei processi e del flusso di esecuzione – history dei comandi (usando il cursore)
9
Chi siamo?
• Unix è un sistema operativo multi-utente.
• Ciascun utente ha un nome testuale (username) ed un numero (UID), che viene utilizzato internamente al sistema operativo.
• Utenti possono appartenere a uno o più gruppi
• Gli utenti accedono alle risorse del sistema in base ai loro privilegi:
• Esiste un super-user (username=root), preposto all’amministrazione e alla supervisione del sistema.
Sul terminale
• whoami mostra il nome dell’utente
• who quali utenti sono connessi sulla macchina
• groups a quali gruppi apparteniamo
• echo $SHELL che shell stiamo usando
A. Andreazza – Sistemi operativi ed informatica
Dove siamo?
• Il sistema operativo è organizzato in file raccolti in directory.
– Il concetto di file è generico: sono visti come file dal sistema operativo non solo i dati su disco ma anche tutti i dispositivi hardware (tastiera, interfacce di rete...) ed i
processi stessi.
– Una directory può avere sotto-directory, e tutte partono dalla directory root: / – Il carattere ‘/’ serve per separare i nomi delle sotto-directory in un path che
definisce la posizione di un file.
• Ogni utente ha a disposizione una propria home directory sulla quale mette i suoi file
– Noi useremo in aggiunta una directory /home/comune per il materiale condiviso
11
Sul terminale
• pwd mostra in quale directory ci troviamo
• uname -a informazioni sul kernel e sulla macchina
• df elenco dei file system disponibili
File system
• È il componente che gestisce i dati sui dispositivi di archiviazione
• Diversi tipi di filesystem
– Disco: ext2, ext3, reiserfs, xfs, vfat, ntfs, iso, udf,…
– Virtuali: proc, sys, dev, tmpfs – Di rete: nfs, coda, smb/cifs
• Provate a inserire una chiavetta USB e vedere dove compare.
– fare umount path_della_chiavetta prima di estrarla!
nomi dei file corrispondenti al disco fisico
path da cui accedere al contenuto del file system
dischi montati via rete (tutte le home directory)
A. Andreazza – Sistemi operativi ed informatica
Guardiamoci attorno
13
Sul terminale
• ls path mostra il contenuto di una directory (quella corrente se non si fornice il path)
• ls -a path mostra anche i file nascosti (che iniziano con ‘.’)
• ls -l path mostra informazioni dettagliate sui file
• ls -al path fa entrambe le cose di cui sopra
owner group dimensione [B] Due directory speciali:
. = questa directory .. = la directory superiore Altre directory importanti:
~ = home directory / = root directory d= directory
Privilegi dell’owner:
r = lettura w = scrittura x = esecuzione
Privilegi dei membri del gruppo Privilegi di tutti
AIUTO!!!
• Nel sistema operativo (e nella distribuzione) ci sono moltissimi comandi:
– C’è un comando per fare quasi tutto
– Anche i comandi più semplici hanno spesso opzioni molto utili – Le opzioni normalmente si forniscono con:
-lettera oppure --parola
• Quasi tutti i comandi forniscono un sommario con l’opzione –h o –-help
• Per avere informazioni più dettagliate:
– man comando o info comando
– man –k parola_chiave cerca comandi relativi alla parola chiave.
Sul terminale
• ls –h non funziona! la risposta al prossimo comando
• ls --help sommario del comando
• man ls descrizione dettagliata del comando
• info ls descrizione dettagliata del comando
• man –k directory tutti i comandi che riguardano le directory
...e ricerca in rete!
A. Andreazza – Sistemi operativi ed informatica
File e directory
• mkdir path : crea una nuova directory
• cd path : ci si sposta nella directory indicata
(cd .. si sale al livello superiore, cd da solo o cd ~ si torna nella home)
• cp sorgente destinazione : copia il file sorgente nella destinazione (può essere un altro file o una directory)
• mv sorgente destinazione : sposta (rinomina) il file sorgente in destinazione. Se la destinazione è una directory, possiamo fornire anche più di un file sorgente.
• cat nomefile o less nomefile : stampa il contenuto di un file
(il secondo permette di muoversi all’interno del file con il cursore, q per uscire)
• rm nomefile : cancella il file
• rm –r nomedirectory : cancella una directory
15
File e directory
Esercizio:
1) creare una sottodirectory SSFM nella vostra home 2) fare un cd in /home/comune/SSFM/datafiles
(cercare di usare il TAB per completare il nome)
3) scegliere un file .txt e provare a cambiargli nome 4) copiarlo nella directory creata precedentemente
5) spostarsi in quella directory e provare nuovamente a rinominarlo 6) vederne il contenuto con cat e con less
7) fare pulizia: cancellare il file e la directory
8) copiare tutta la directory /home/comune/SSFM/datafiles nella propria home
Per chi vuole usare il proprio PC
• potete scaricare i file da:
http://www2.fisica.unimi.it/andreazz/SSFM_datafiles.zip
• chiaramente i passi 2), 4), 5), 7) e 8) non sono più necessari/utili
A. Andreazza – Sistemi operativi ed informatica
Wild character, ridirezione e piping
• Nello scrivere il nome di un file possiamo usare dei caratteri generici:
– * rappresenta un qualunque numero (anche 0) di caratteri – ? rappresenta esattamente un carattere
– [afg] rappresenta esattamente un carattere che può essere a o f o g – [a-g] rappresenta esattamente un carattere compreso tra a e g
• Nell’eseguire un comando la shell sostituirà il nome contenente i caratteri generici con la lista dei file che soddisfano la descrizione fornita.
• Normalmente un comando riceve dati dallo standard input e scrive i risultati sullo standard output
• Normalmente standard input ed output sono il terminale
– comando < nomefile : utilizza il file come standard input invece del terminale – comando > nomefile : utilizza il file come standard output invece del terminale
– comando | comando : utilizza lo standard output di un comando come standard input del comando successivo
• Sono istruzioni molto potenti perché permettono di salvare il risultato di un comando in un file, o di concatenare due comandi (piping).
17
Wild character, ridirezione e piping
• wc nomefile : stampa il numero di caratteri, parole e righe nel file
– o nello standard input se il nomefile non è fornito (utile per il piping) – se lo standard input è dato da terminale, per terminare dare Ctrl-D
Esercizio:
• considerare i file copiati da datafiles
• fare un file con la lista dei file con il cognome Moretti
(usare ls con ridirezione dell’output)
• verificarne il contenuto con cat e con less
• contare il numero dei file, usando wc:
• passando il file come argomento
• ridirigendo lo standard input di wc
• contare il numero dei file corrispondenti ad esami nel 2011 facendo una pipe da ls a wc
• contare il numero dei file corrispondenti ad esami fatti nel mese di luglio
• Dividere i file in due directory, una con i file prima del 2003 ed una con quelli successivi.
A. Andreazza – Sistemi operativi ed informatica
Espressioni regolari
• Espressioni regolari definiscono come sono fatte delle stringhe.
• Possono poi venire usate per verificare se delle stringhe di prova soddisfano o meno tali criteri.
– Caratteri:
– ^ rappresenta l’inizio della stringa – $ rappresenta la fine della stringa – . rappresenta un carattere generico
– [afg] rappresenta esattamente un carattere che può essere a o f o g – [a-g] rappresenta esattamente un carattere compreso tra a e g
– caratteri speciali vanno fatti precedere dal carattere di escape \
– Molteplicità:
– * rappresenta un qualunque numero (anche 0) del carattere che lo precede
• grep espressione nomi_di_file : stampa le righe dei file che contengono l’espressione
– spesso conviene delimitare l’espressione con singoli o doppi apici
– l’opzione –c stampa solo il numero di righe che contengono l’espressione – l’opzione –l stampa solo il nome dei file che contengono l’espressione
19
Espressioni regolari
Esercizio:
• considerare i file copiati da datafiles
• stampare i nomi delle persone di cognome Rossi
• stampare i file delle persone il cui nome finisce per due vocali
• fare una lista dei file corrispondenti al sig. Stefano Bianchi
A. Andreazza – Sistemi operativi ed informatica
Variabili
• La shell permette di definire due tipi di variabili:
– locali: nomevariabile=valore
– di ambiente: export nomevariabile=valore – le variabili ambiente sono passate ai sottoprocessi – env elenca le variabili d’ambiente ed i loro valori
• Per accedere al loro valore si utilizza il prefisso $
– Spesso conviene mettere il nome tra parentesi
• Le variabili vengono trattate come stringhe di caratteri
– Per effettuare operazioni aritmetiche, l’operazione deve venire inclusa tra (( ... ))
• Confrontare il risultato delle seguenti serie di istruzioni:
• Suggerimento: si possono mettere più istruzioni su una stessa riga, separate da ;
21
a=1 b=2 c=a+b echo $c
a=1 b=2
c=$a+$b echo $c
a=1 b=2
((c=a+b)) echo $c
a=1 b=2
((c=$a+$b)) echo $c
Shell scripting
• La bash è anche un linguaggio di programmazione:
– si possono inserire delle sequenze di istruzioni in un file (script) – eseguire il file
• Permette di automatizzare delle operazioni ripetitive.
• In generale, gli scripting language sono linguaggi di programmazione in cui delle istruzioni vengono passare ad un interprete al momento dell’esecuzione.
– diversamente dai linguaggi compilati dove l’interpretazione viene fatta prima dell’esecuzione e risulta nella costruzione di un file eseguibile.
– sviluppo più rapido (non necessita di compilazione) – sintassi molto più accomodante
– spesso hanno una migliore manipolazione delle stringhe – sono meno efficienti (interpretazione ad ogni esecuzione)
A. Andreazza – Sistemi operativi ed informatica
Il nostro primo script
• Ripetiamo l’ultimo esercizio usando uno script
• gedit listfiles.sh & : apre l’editor per il nostro script in background
• chmod u+x listfiles.sh : diamo al file il privilegio di esecuzione
• ./listfiles.sh Stefano Bianchi : eseguiamo lo script
23
sha-bang: il path dell’interprete
argomenti: all’interno dello script sono predefinte le variabili 1, 2, 3... corrispondenti al primo, secondo, terzo argomento della riga di comando
Controllo del flusso
• Per essere utile, un linguaggio di programmazione deve permettere di controllare il flusso di un programma:
– eseguire cicli:
for variabile in lista_di_valori do
...
done
– controllare il verificarsi di determinate condizioni:
if [[ condizione ]]
then ...
fi
• Queste sono solo quelle che servono per fare degli esercizi:
– tutte le strutture di controllo sono nelle pagine indicate in bibliografia – in particolare si possono fare:
• cicli su variabili numeriche
• cicli while
• condizioni alternative (else, elif)
A. Andreazza – Sistemi operativi ed informatica
Ciclo for ... in
• Nel ciclo for:
– for variabile in lista_di_valori do
...
done
• la lista_di_valori può venire data esplicitamente, o risultare da una sostituzione operata dalla shell:
– wild character
– sostituzione con l’output di un comando (usando gli accenti): `comando`
25
creadirectory.sh
(copia i file in una directory individuale)Lista dei file relativi ad una persona messi in un file temporaneo
Lista dei valori della
variabile filename creata dall’output di cat
Rimuovo il file temporaneo
Esercizio:
• scrivere lo script invocando lo script dell’esempio precedente
A. Andreazza – Sistemi operativi ed informatica
Test di condizioni
• La condizioni tra parentesi [[...]] dell’if può essere:
– un comando: vera se il comando viene eseguito con successo – un test, tipicamente su di un file o directory, ad esempio:
• -d directory vero se la directory esiste
• -f file vero se il file esiste
• -r file vero se il file esiste ed è leggibile
• -w file vero se il file esiste ed è scrivibile
• -x file vero se il file esiste ed è eseguibile
• Si possono usare gli operatori logici ! (not) && (and) || (or) tra i test
• Si possono usare confronti aritmetici, ma bisogna usare ((...)) invece di [[...]]
27
creadirectorysafe.sh
(con controllo di esistenza della directory)A. Andreazza – Sistemi operativi ed informatica
Manipolazione di stringhe e file
• La bash ha delle funzioni molto potenti per manipolare le stringhe.
• Questo, oltre alla stretta interazione con il sistema operativo, la rende utile per effettuare operazioni sui file.
– un’operazione su stringhe è racchiusa tra ${...}
– ${#string} restituisce la lunghezza di $string
– ${string:position} restituisce una sottostringa di $string a partire da $position – ${string:position:length} restituisce una sottostringa di $string lunga $length a
partire da $position
– ${string#pattern} cancella il primo match di $pattern all’inizio di $string
– ${string##pattern} cancella il più lungo match di $pattern all’inizio di $string – ${string%pattern} cancella il primo match di $pattern alla fine di $string
– ${string%%pattern} cancella il più lungo match di $pattern alla fine di $string
• sed “comando” nomefile : lo stream editor della GNU, produce in output il file modificato dal comando:
– Ad esempio un comando per sostituire Prova con Test è “s|Prova|Test|”
29
Manipolazione di stringhe e file
Esempio:
• modificare la data da giorno/mese/anno in anno/mese/giorno.
• Lo script cambiadata.sh prende come argomento il nome di un file e restituisce nello standard output il file con la data modificata.
Esercizio:
• scrivere uno script che, utilizzando cambiadata.sh e la ridirezione dell’output crei una cartella newfiles, e metta in questa tutti i file in datafiles dopo il
cambiamento del formato della data.
Esempio con Bianchi_20020826.txt data⇐“Data⇥26/08/2002”
vecchiadata⇐“26/08/2002”
anno⇐“2002”
giorno⇐“26”
data⇐“26/08”
mese⇐“08”
A. Andreazza – Sistemi operativi ed informatica
L’esercizione
31
Esercizio:
• considerare i file copiati da datafiles
• per ogni persona che abbia fatto almeno un esame, creare una cartella con il suo nome e cognome e copiare in questa cartella i file che le corrispondono.
• L’esercizio quindi richiede:
• ciclare su tutti i file
• per ogni file estrarre il nome della persona
• controllare se la directory corrispondente esiste
• se non esiste, crearla
• copiare il file nella directory
Altri esercizi:
• cambiare in tutti i file il suffisso .txt in .dat
• modificare il nome del file in modo che compaia prima la data e dopo il cognome.
Windows Subsystem for Linux
• Versioni di diverse distribuzioni linux integrate in Windows
– Ubuntu, Debian, Suse, Fedora…
• Disponibile a partire da:
– Windows 10 Anniversary Update build 14393 (solo versione a 64-bit)
• Istruzioni e tutorial: https://msdn.microsoft.com/commandline/wsl/about
• Per interfaccia grafica necessita di un X server come VcXsrv https://sourceforge.net/projects/vcxsrv/
Lezione 2: Reti
• Cos’é la rete
• Architettura di internet:
• Applicazione e Trasporto
• Network: Internet Protocol
• Data link e livello fisico
Referenze:
1. Lezioni del prof. Campanella (a.a. 2013/14)
Cos’è internet
• La rete principale per il trasporto dell’informazione
1. Tante reti fisiche di trasmissione dati (domini), come una rete autostradale fra paesi diversi gestita in modo cooperativo.
2. I calcolatori ad essa collegati ed i protocolli di comunicazione.
3. Le applicazioni ed i programmi (e-mail, web, broadcasting…).
4. …e soprattutto il contenuto disponibile
A. Andreazza – Sistemi operativi ed informatica
Cos’è internet
• La rete principale per il trasporto dell’informazione
1. Tante reti fisiche di trasmissione dati (domini), come una rete autostradale fra paesi diversi gestita in modo cooperativo.
2. I calcolatori ad essa collegati ed i protocolli di comunicazione.
3. Le applicazioni ed i programmi (e-mail, web, broadcasting…).
4. …e soprattutto il contenuto disponibile
35
https://www.internetworldstats.com
Cos’è internet
• La rete principale per il trasporto dell’informazione
1. Tante reti fisiche di trasmissione dati (domini), come una rete autostradale fra paesi diversi gestita in modo cooperativo.
2. I calcolatori ad essa collegati ed i protocolli di comunicazione.
3. Le applicazioni ed i programmi (e-mail, web, broadcasting…).
4. …e soprattutto il contenuto disponibile
A. Andreazza – Sistemi operativi ed informatica
SCUOLA DI SPECIALIZZAZIONE IN FISICA MEDICA
https://www2.telegeography.com/global-internet-map37
In Italia: GARR,
la rete dell’Università e della RicercaGARR-X è l’attuale infrastruttura di rete a banda ultralarga dell’istruzione e della ricerca.
Entrata in funzione nel 2012, conta oggi più di 8.850 km di fibra ottica di dorsale e altri 6.400 km di accesso e vanta una banda aggregata di oltre 1900Gbps.
I link di dorsale hanno una capacità minima di 10Gbps e possono arrivare fino ai 200Gbps per le tratte a maggior traffico, mentre la capacità minima dei collegamenti di accesso è di 100Mbps simmetrici, che possono arrivare fino a multipli di 10Gbps nel caso di sedi caratterizzate da requisiti particolarmente elevati.
La rete dispone di circa 100 punti di presenza (PoP) distribuiti sul territorio nazionale ed è integrata con varie reti regionali e metropolitane.
https://www.garr.it
A. Andreazza – Sistemi operativi ed informatica
39
Il primo sito web:
http://info.cern.ch/hypertext/WWW/TheProject.html
Il costo della rete
• Spazio di archiviazione: 1 TB ~100 € 10-10 €/B
• Abbonamento ADSL: 20 €/mese 2×10-5 €/s velocità 8 Mb/s 106 B/s
• Wikipedia: 2807 volumi × 8’000’000 caratteri (1600000 parole)
= 22×109 B
– archiviazione: 2.2 €
– download: 21000 s 0.44 €
By VGrigas (WMF) - Own work, CC BY-SA 3.0,
https://commons.wikimedia.org/w/index.php?curid=41054498
A. Andreazza – Sistemi operativi ed informatica
Architettura a strati
Applicazione Trasporto
Rete Data Link
Fisico
• Posta elettronica, trasferimento file, browser web...
• Protocollo per il trasferimento dei dati, ad esempio TCP, UDP
• Internet Protocol (IP): si occupa della consegna dei pacchetti di dati
• Diverse tecnologie per il trasferimento dei dati
41
softwarehardware
Architettura a strati
Applicazione Trasporto
Rete Data Link
Fisico
• Ogni strato:
– svolge una funzione specifica tramite servizi, forniti attraverso protocolli
– comunica solo con gli strati adiacenti tramite opportune interfacce
• Riduzione della complessità, permettendo di identificare le funzioni e le relazioni tra di esse
• Modularità del sistema, separando le parti e rendendo il sistema indipendenta dalla realizzazione di esse.
• È la chiave della scalabilità ed evoluzione dell’architettura di internet.
softwarehardware
A. Andreazza – Sistemi operativi ed informatica
Un esempio di struttura a strati
Ufficio Vendite Magazzino Spedizioniere
Strada
43
Ufficio Acquisti Magazzino Spedizioniere
Strada
ordine
pacco
camion camion
ricevimento
pacco
Protocolli
corrispondenza
documenti di trasporto
codice della strada tracciamento spedizione
Strati e dati: incapsulamento
Trasmittente Applicazione
Trasporto Rete Data Link
Fisico
• Messaggio
• Segmento
• Datagramma
• Frame
Ricevente Applicazione
Trasporto Rete Data Link
Fisico
M M Ht
M Ht Hr
M Ht Hr
Hl
M M Ht
M Ht Hr
M Ht Hr
Hl
sequenza di bit
A. Andreazza – Sistemi operativi ed informatica
Strati e dati: incapsulamento
45
message segment datagram frame
source
application transport
network link physical
Ht Hn
Hl M Ht Hn M
Ht M M
destination application
transport network
link physical
Ht Hn
Hl M Ht Hn M
Ht M M
network link physical
link physical
Ht Hn
Hl M Ht Hn M
Ht Hn
Hl M Ht Hn M Ht
Hn
Hl M Hl Hn Ht M
router switch
Riassunto (4)
Incapsulamento
Strati e dati: dimensioni
Trasmittente Applicazione
Trasporto Rete Data Link
Fisico
• Messaggio:
virtualmente infinito, limitato dal più grande indirizzo del sistema operativo
• Segmento
illimitato, in pratica MSS < 65535 e normalmente ≈1500 byte
• Datagramma
< 65535, scelto in funzione del valore massimo del data link
• Frame
Ogni data link ha una MTU (Maximum Transmission Unit) diversa < 65535
M M Ht
M Ht Hr
M Ht Hr
Hl
SOCKET, TCP, UDP
Socket
Applicazione Trasporto
Rete Data Link
Fisico
• Una “porta”
– controllata da un descrittore di file
– creata dall’applicazione
– controllata dal sistema operativo
– attraverso cui un processo può ricevere e/o inviare messaggi ad un altro processo
• Interfaccia tra i livelli di applicazione e trasporto
– specifica il servizio di trasporto da usare – TCP: Transmission Control Protocol
– UDP: User Datagram Protocol
sistema operativo
socket
applicazio- ne utente
In Unix tutte le operazione di I/O avvengono su “file”
A. Andreazza – Sistemi operativi ed informatica
Trasporto e Rete
• Il servizio di trasporto fornisce la comunicazione logica (orizzontale) fra applicazioni nei due nodi.
• Trasporto e Rete svolgono funzioni simili ma:
– Il servizio di Rete viene suddiviso tra vari nodi che compongono la rete stessa
– Il servizio di trasporto opera solo nei nodi iniziali e finali del trasferimento, indipendentemente dalle prestazioni dello stato di rete
• l’esistenza dello strato di trasporto rende possibile
– fornire un servizio globale di trasporto più affidabile e sicuro di quello che offrirebbe da sola la rete
• Per esempio nella rete esistono errori fisici nei pacchetti, duplicazioni, perdite ...
– rende l’applicazione indipendente dalla tecnologia di rete.
49
UDP – User Datagram Protocol
• Definisce un trasporto semplice in cui ogni operazione di invio da parte dell ’applicazione produce esattamente un datagramma.
– senza connessione (nessun ritardo nella spedizione) – semplice: nessuno stato nel mittente e nel ricevente – header minimo
– nessun controllo di congestione o flusso: i pacchetti possono essere inviati costantemente alla massima velocità
• Non garantisce la consegna e quindi neanche altri
parametri di qualità.
A. Andreazza – Sistemi operativi ed informatica
TCP – Transmission Control Protocol
• Il principale protocollo di trasporto dei dati in Internet
– fornisce un servizio affidabile
– orientato alla connessione punto–punto fra mittente e destinatario (end-to-end)
– trasporta uno stream di byte (non riconosce o inserisce
delimitazioni nel flusso di dati passato dall’ applicazione) diviso in segmenti.
– in grado di riordinare i dati nei segmenti ricevuti – in grado di eliminare i duplicati
• Flusso dati sempre bidirezionale
51
TCP: apertura connessione
client! server! stato
LISTEN
ESTABLISHED SYN_RCVD
SYN 2347:2347 (0) ACK 14156
stato
CLOSED
SYN_SENT
SYN 14155:14155 (0)
ACK 2348 (0)
ESTABLISHED
• SYNchronize + numero casuale di inizio sequenza A
• ACKnowledge: restituisce A+1
A. Andreazza – Sistemi operativi ed informatica
Porte TCP importanti
Service Port Service Port
FTP 20,21 NNTP 119
SSH 22 NTP 123
telnet 23 IMAP4 143
SMTP 25 LDAP 389
DNS 53 HTTPS 443
DHCP 67,68 IMAPS 993
TFTP 69 RADIUS 1812
HTTP 80 AIM 5190
POP3 110
53
INTERNET PROTOCOL
A. Andreazza – Sistemi operativi ed informatica
Lo strato di rete e il modello di internet
• Scopo dello strato di rete è di trasportare i pacchetti dalla sorgente alla destinazione utilizzando uno schema di indirizzamento
• La funzione principale è di individuare un percorso, possibilmente ottimizzando alcuni parametri:
– protocolli (e algoritmi) di routing
• Il modello di Internet:
– nessuna chiamata all’inizio della connessione
– i router smistano i pacchetti usando l’indirizzo di destinazione:
– nessun stato per connessione (flusso) ovvero la gestione è pacchetto per pacchetto, senza memoria:
• pacchetti fra la stessa sorgente e destinazione possono percorrere percorsi diversi
• il percorso inverso può seguire un cammino differente
– Modello cooperativo basato sul best effort dei nodi:
• Il servizio non viene mai rifiutato
• degradazione ridotta per la perdita di un nodo (compensato dagli altri)
55
IP – Internet Protocol
• IP è progettato per:
– l’uso in reti a commutazione di pacchetto
– tramettere datagrammi da una sorgente ad una destinazione identificata da indirizzi di lunghezza fissata
– permettere la frammentazione di datagrammi lunghi, se necessario
• IP è specificamente limitato nello scopo:
– fornisce le funzioni necessarie a consegnare un datagramma dalla sorgente alla destinazione attraverso un sistema interconnesso di reti
– non possiede meccanismi per aumentare l’affidabilità end to end quali il controllo di flusso, consegna in sequenza od altri servizi esistenti in
protocolli host-to-host.
– ...alcune di queste funzioni nello strato di trasporto
A. Andreazza – Sistemi operativi ed informatica
Digressione: un po’ di aritmetica
Prima di parlare degli indirizzi IP, ricordiamo come rappresentiamo i numeri:
2015 = 2×10
3+ 0×10
2+ 1×10
1+ 5×10
0– Diciamo che contiamo in base 10
In generale, un numero abcd in base m:
– abcd = a×m3 + b×m2 + c×m1 + d×m0 – le cifre del numero 0 ≤ a,b,c,d < m
• Sistema binario: m=2
– due cifre (bit) possibili: 0,1 – 2015 =
= 1×1024 + 1×512 + 1×256 + 1×128 + 1×64 + 0×32 + 1×16 +1×8 + 1×4 + 1×2 + 1
= 11111011111 in base 2
– Un numero di k cifre binarie può assumere i valori tra 0 e 2k-1
57
Digressione: un po’ di aritmetica
• L’unità più comune in informatica è il byte (B) costituito da 8 bit.
– Rappresenta un carattere
– Valori da 0 a 255: bbbbbbbb
– Oppure visto come due gruppi di 4 bit: bbbb bbbb – Ogni gruppo può assumere valori da 0 a 15
• è naturale l’uso della base 16
• cifre: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E F
• Esempio:
– 48 in base 10
– 00110000 in base 2 – 00110000
– 30 in base 16
A. Andreazza – Sistemi operativi ed informatica
Indirizzo IP
• Un indirizzo IPv4 è un intero di 32 bit
– rappresentato in forma decimale puntata
– es.: labmaster.mi.infn.it (il nostro server) ha IP address 193.205.78.41
11000001 11001101 01001110 00101001
• I bit dell’indirizzo sono divisi tra:
– rete (bit più significativi) – nodo (bit meno significativi)
– L’indizzo viene spesso dato come indirizzo/bit di rete tali bit più significativi definiscono la subnet mask – es.: 193.205.78.41/24
11000001 11001101 01001110 00101001 subnet mask:
11111111 11111111 11111111 00000000 = 255.255.255.0
59
Indirizzamento IP
• Due nodi sulla stessa rete possono comunicare
direttamente:
Local Area Network (LAN)
• Due nodi su reti diverse possono comunicare solo attraverso uno o più router
– nodi con interfacce su reti multiple
3 reti locali
con subnet mask 255.255.255.0 3 reti estese
con subnet mask 255.255.255.252
Router Router Router
A. Andreazza – Sistemi operativi ed informatica
Indirizzamento IP
• ifconfig : stato delle interfacce di rete
61
[labmaster] ~ % /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr 00:15:17:CC:A3:7C
inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: 2001:760:4210:1ab::ff/64 Scope:Global
inet6 addr: fe80::215:17ff:fecc:a37c/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:142621117 errors:0 dropped:0 overruns:0 frame:0 TX packets:135070582 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:94629491348 (88.1 GiB) TX bytes:112620596922 (104.8 GiB) Interrupt:130 Memory:df3c0000-df3e0000
eth1 Link encap:Ethernet HWaddr 00:26:B9:48:3C:90
inet addr:193.205.78.41 Bcast:193.205.78.255 Mask:255.255.255.0 inet6 addr: 2001:760:4210:1::9/64 Scope:Global
inet6 addr: fe80::226:b9ff:fe48:3c90/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:243350016 errors:0 dropped:0 overruns:0 frame:0 TX packets:122948019 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000
RX bytes:89558665765 (83.4 GiB) TX bytes:103300878387 (96.2 GiB) Interrupt:114 Memory:da000000-da012800
Interfaccia verso il laboratorio
calcolo
Interfaccia verso internet
Indirizzi particolari
rete nodo
0 0 “0.0.0.0” questo nodo
0 questo nodo in
questa rete
N “rete.N”
1 1 broadcast a tutti i
nodi rete locale
“255.255.255.255”
R 1 broadcast su una
rete locale remota
“rete.255”
127 (qualsiasi valore) “127.nodo” loopback
A. Andreazza – Sistemi operativi ed informatica
Indirizzi IP privati e IPv6
• Lo spazio IPv4 ha solo 232 indirizzi: non sono sufficienti globalmente
• Sono definiti tre blocchi di indirizzi che possono essere liberamente usati su una rete locale o privata, ma non esportati nell’Internet generale, perché ovviamente duplicati.
• Con IPv6 si passerà a indirizzi di 16 byte (128 bit)
– (232)4 ~ (4×109)4 = 256×1036 indirizzi
• I 16 byte sono scrivibili con otto gruppi di 4 cifre esadecimali (nibble) separate da “:”
63
da 10.0.0.0 a 10.255.255.255/8 (16777215 nodi) 1 rete di classe A da 172.16.0.0 a 172.31.255.254/12 (1048576 nodi) 16 reti di classe B da 192.168.0.0 a 192.168.255.254/16 (65535 nodi) 256 reti di classe C
Campfire
A. Andreazza – Sistemi operativi ed informatica
DHCP – Dynamic Host Configuration Protocol
• Assegna un indirizzo per un tempo massimo (lease) ed un nodo
deve rinnovare il
prestito dell’indirizzo in uso prima della scadenza
• Utilizza un pool di indirizzi, che sono riusati se necessario.
Un nodo mantiene
l’indirizzo solo quando è attivo.
65
DHCP server: 223.1.2.5 client
richiedente
tempo
DHCP discover src : 0.0.0.0, 68
dest.: 255.255.255.255,67 yiaddr: 0.0.0.0
transaction ID: 654 DHCP offer
src: 223.1.2.5, 67 dest: 255.255.255.255, 68 yiaddrr: 223.1.2.4
transaction ID: 654 Lifetime: 3600 secs DHCP request
src: 0.0.0.0, 68
dest:: 255.255.255.255, 67 yiaddrr: 223.1.2.4
transaction ID: 655 Lifetime: 3600 secs
DHCP ACK
src: 223.1.2.5, 67 dest: 255.255.255.255, 68 yiaddrr: 223.1.2.4
transaction ID: 655 Lifetime: 3600 secs
NAT – Network Address Translation
• Per ovviare alla scarsezza di indirizzi globali pubblici di IPv4, è stato inventato un metodo controverso di permettere l’accesso ad Internet a molti nodi utilizzando un solo indirizzo pubblico.
• NAT cambia “al volo” gli indirizzi IP ed altri campi dell’header IP con altri, permettendo di avere indirizzi IP diversi fra interno della rete privata e Internet.
• Poiché la rete locale usa solo un indirizzo IP pubblico:
– basta uno solo indirizzo pubblico
– si può cambiare ISP senza modificare l’indirizzamento interno
– i nodi interni non si possono raggiungere direttamente, né sono visibili dall’esterno, aumentandone la sicurezza
• Port forwarding.
– Per fornire accesso dall’esterno ad un nodo interno
– Una porta del router (corrispondente all’indirizzo pubblico) viene staticamente collegata alla stessa porta di un nodo al di là del NAT.
A. Andreazza – Sistemi operativi ed informatica
NAT – Network Address Translation
67
10.0.0.1 10.0.0.2
10.0.0.3 10.0.0.4
138.76.29.7
rete locale
(per esempio rete a casa) 10.0.0/24
resto di Internet
Datagrammi con sorgente o destinazione in questa rete hanno indirizzi 10.0.0/24 per
sorgente, destinazione (come normale)
Tutti i datagrammi uscenti dalla rete locale hanno il medesimo indirizzo
singolo IP NAT: 138.76.29.7, ma differenti numeri di porta
NAT – Network Address Translation
10.0.0.1
10.0.0.2
10.0.0.3
S: 10.0.0.1, 3345 D: 128.119.40.186, 80
1
10.0.0.4 138.76.29.7
1: Il nodo 10.0.0.1 invia un datagramma a 128.119.40, 80
tabella traduzione NAT
ind. lato WAN ind. lato LAN 138.76.29.7, 5001 10.0.0.1, 3345
…… ……
S: 128.119.40.186, 80
D: 10.0.0.1, 3345 4
S: 138.76.29.7, 5001 D: 128.119.40.186, 80
2 2: Il router NAT cambia l’indirizzo di sorgente del
datagramma da 10.0.0.1, 3345 a 138.76.29.7, 5001, e aggiorna la
tabella
S: 128.119.40.186, 80
D: 138.76.29.7, 5001 3 3: La risposta arriva
all’indirizzo di destinazione:
138.76.29.7, 5001
4: router NAT
cambia l’indirizzo di
destinazione del datagramma da 138.76.29.7, 5001 a 10.0.0.1, 3345
A. Andreazza – Sistemi operativi ed informatica
DNS – Domain Name System
• Uno schema di nomi gerarchico che si appoggia su un di un database distribuito
– Realizzato come un protocollo dello strato di applicazione – Permette ai nodi IP nella rete di risolvere (tradurre)
nomi indirizzi
• La struttura gerarchica è ad albero
– La radice dell’ albero (root) indicata col il . (punto) è presa come punto più alto della gerarchia e da lì si procede con la creazione di
domini per ramificazione.
– Il nome si legge, gerarchicamente, da destra a sinistra ed è del tipo:
nodo.sottodominio.dominio.country
69
DNS – Domain Name System
• La radice è il “.” e corrisponde ai Root Name Server
• seguono i domini corrispondenti ai vari paesi ed a pari livello i domini
“generici” (p.e. biz, info) e quelli USA originari: gov(ernament), mil(itary), edu(cation), com(mercial), int(ernational), org(anisation), net(work)
• la zona seguente corrisponde alle varie entità (es. apple) o sotto domini del paese (es co per commercial)
A. Andreazza – Sistemi operativi ed informatica
I 13 Root servers
Hostname IP Addresses Manager
a.root-servers.net 198.41.0.4, 2001:503:ba3e::2:30 VeriSign, Inc.
b.root-servers.net 192.228.79.201, 2001:500:84::b University of Southern California (ISI) c.root-servers.net 192.33.4.12, 2001:500:2::c Cogent Communications
d.root-servers.net 199.7.91.13, 2001:500:2d::d University of Maryland
e.root-servers.net 192.203.230.10 NASA (Ames Research Center) f.root-servers.net 192.5.5.241, 2001:500:2f::f Internet Systems Consortium, Inc.
g.root-servers.net 192.112.36.4 US Department of Defence (NIC) h.root-servers.net 128.63.2.53, 2001:500:1::803f:235 US Army (Research Lab)
i.root-servers.net 192.36.148.17, 2001:7fe::53 Netnod
j.root-servers.net 192.58.128.30, 2001:503:c27::2:30 VeriSign, Inc.
k.root-servers.net 193.0.14.129, 2001:7fd::1 RIPE NCC l.root-servers.net 199.7.83.42, 2001:500:3::42 ICANN
m.root-servers.net 202.12.27.33, 2001:dc3::35 WIDE Project
71
https://www.iana.org/domains/root/db
Alcuni comandi
• ifconfig
mostra la configurazione di rete della macchina
• host [nome o indirizzo IP]
effettua la traduzione nome indirizzo IP l’opzione –v fornisce ulteriori dettagli
• ping [nome o indirizzo IP]
scambia pacchetti di test con la macchina remota
• netstat
monitoraggio delle connessioni. In particolare l’opzione –s fornisce una statistica del traffico e degli errori
• traceroute [nome o indirizzo IP]
mostra il tragitto seguito per raggiungere un nodo remoto
A. Andreazza – Sistemi operativi ed informatica
Da casa a fisica
73
traceroute www2.fisica.unimi.it
traceroute to cucciolobal.fisica.unimi.it (159.149.45.67), 64 hops max, 52 byte packets 1 192.168.1.254 (192.168.1.254) 3.505 ms 2.053 ms 2.058 ms
2 10.49.132.67 (10.49.132.67) 4.697 ms 4.058 ms 11.861 ms 3 10.251.58.73 (10.251.58.73) 5.252 ms * 9.205 ms
4 10.251.54.33 (10.251.54.33) 4.861 ms 5.043 ms 3.579 ms 5 * 10.251.55.1 (10.251.55.1) 4.872 ms 6.101 ms
6 10.251.59.194 (10.251.59.194) 3.850 ms 5.659 ms 3.835 ms 7 10.0.44.53 (10.0.44.53) 4.877 ms 5.569 ms 4.867 ms
8 10.0.0.178 (10.0.0.178) 4.171 ms 3.554 ms 3.682 ms 9 10.254.2.174 (10.254.2.174) 4.300 ms 3.853 ms 3.974 ms 10 10.254.12.125 (10.254.12.125) 10.938 ms 4.485 ms 3.961 ms
11 62-101-124-98.fastres.net (62.101.124.98) 4.672 ms 4.123 ms 5.755 ms 12 93-63-100-222.ip27.fastwebnet.it (93.63.100.222) 5.302 ms
93-63-100-250.ip27.fastwebnet.it (93.63.100.250) 5.086 ms 93-63-100-218.ip27.fastwebnet.it (93.63.100.218) 8.762 ms 13 93-63-100-49.ip27.fastwebnet.it (93.63.100.49) 33.220 ms
93-63-100-165.ip27.fastwebnet.it (93.63.100.165) 4.974 ms 93-63-100-249.ip27.fastwebnet.it (93.63.100.249) 4.972 ms 14 garr.mix-it.net (217.29.66.39) 4.720 ms 4.833 ms 5.882 ms
15 r-mi2-rx1-mi2.mi2.garr.net (90.147.80.74) 5.441 ms 5.671 ms 5.262 ms 16 rx1-mi3-rx1-mi2.mi2.garr.net (90.147.80.230) 5.219 ms 7.422 ms 8.061 ms 17 rx1-mi3-ru-unimi.mi3.garr.net (193.206.129.178) 7.719 ms 5.590 ms 5.727 ms 18 divtlc-unimi-1.campus.unimi.it (159.149.95.2) 6.504 ms 6.355 ms 6.258 ms 19 agra-divtlc.campus.unimi.it (159.149.95.42) 6.731 ms 5.780 ms 6.269 ms 20 fisica-chim.campus.unimi.it (159.149.95.65) 6.854 ms 8.018 ms 6.108 ms 21 cucciolobal.fisica.unimi.it (159.149.45.67) 6.247 ms 5.993 ms 5.599 ms
DATA LINK E STRATO FISICO
A. Andreazza – Sistemi operativi ed informatica
Il data-link
• Host e router, componenti attivi della rete sono dei nodi.
• I nodi sono tra di loro collegati da un mezzo fisico: link
• Il data-link si occupa di trasmettere/ricevere i bit di un frame sul/dal mezzo fisico:
– è una funzione locale tra macchine sullo stesso mezzo fisico
• la connessione end-to-end tra due macchine può passare attraverso diversi data-link
– il protocollo è indipendente dal protocollo di rete
• protocolli ad accesso multiplo: mezzo fisico condiviso da più data-link, regola l’accesso al canale gestendo trasmissioni multiple.
– Identificato da un indirizzo Media Access Control (MAC address):
• 48 bit (6 byte, di solito espressi in esadecimale)
• Identificatore unico, scritto nella ROM della componente
75
MAC address
• Output di ifconfig
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500 ether 68:a8:6d:10:52:ea
inet6 fe80::6aa8:6dff:fe10:52ea%en0 prefixlen 64 scopeid 0x4 inet 192.168.1.128 netmask 0xffffff00 broadcast 192.168.1.255 nd6 options=1<PERFORMNUD>
media: autoselect status: active
MAC address
A. Andreazza – Sistemi operativi ed informatica
Ethernet
• Tecnologia dominante sulle reti cablate:
– economica
– ampio spettro di velocità (da 10 a 10’000 Mb/s)
– genitore dei protocolli wireless 802.11
• Mezzi fisici:
– cavi coassiali doppini incrociati
77
Il primo schizzo di ethernet
Switch ethernet
• Connessione a stella di diversi data-link di una rete locale
• Permette di connettere direttamente due link
• Diverse connessioni attive contemporaneamente
Ethernet senza collisioni
A. Andreazza – Sistemi operativi ed informatica
Fibre ottiche
• Riflessione totale della luce
– ncoresinθcore=ncladsinθclad
– θcrit=arc sin (nclad/ncore) ~16°
• Lunghezze d’onda usate nell’infrarosso
– non guardare dentro una fibra
79
• Fibre per trasmissioni a lunga distanza:
– attenuazione 0.2 db/km – db = 10 log10 (A1/A2)
– dopo 1 km la potenza è ridotta di un fattore:
10-0.2/10 = 0.95
Protocolli Wireless
https://en.wikipedia.org/wiki/IEEE_802.11Lezione 3: Cenni di sicurezza informatica
• Password e password managers
• Crittografia e protezione dei dati
• Crittografia in chiave pubblica
Referenze:
1. Ross J. Anderson, Security Engineering (2nd edition), Wiley 2. PGP 7.0 User Guide, An Introduction to Cryptography
ftp://ftp.zedz.net/pub/crypto/pgp/pgp_pdf_files/IntrotoCrypto.pdf Slides il futuro dell’hashing (dal sito di uno dei maggiori password cracker)
http://www.openwall.com/presentations/Passwords12-The-Future-Of-Hashing/
3. xkdb.com
I problemi
– Accesso a delle risorse
• solo chi ha diritto a farlo deve poter accedere a delle risorse:
siano esse strumenti (CPU, stampanti...) o dati
– Identità
• essere in grado di identificarsi con certezza
• essere sicuri che l’entità che ci sta di fronte è proprio chi dice di essere.
– Per voi:
• la legislazione sta diventando sempre più restrittiva nel resposabilizzare il proprietario/utente per l’utilizzo illecito del suo PC/account
– Per gli altri:
• una volta avuto accesso al sistema in qualche modo, l’hacker può implementare attacchi più in profondità
• anche se voi non avete informazioni sensibili in un sistema, potreste compromettere qualcun altro
A. Andreazza – Sistemi operativi ed informatica
La password
• La password è il metodo di identificazione più diffuso:
– economicità e comodità
83
(Ref. 3)