Presentazione del corso

Presentazione del corso
Corso di laurea in Informatica
Laboratorio di Reti di Calcolatori
A.A. 2014-2015
Simone Bassis
[email protected]
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
Informazioni generali
o
Il docente
o
o
o
o
o
nome: Simone Bassis
e-mail: [email protected]
[email protected]
Telefono: (02) 503 16295
Ufficio: T304 in via Comelico
Ricevimento:
• Appuntamento via mail
o
o
Strutturazione Corso
o
o
Parti frontali di teoria
alternate a
Parti di laboratorio
o in cui lavoriamo assieme
Modalità d’esame
o
Prove di laboratorio
o Della durata di un paio d’ore l’una
1.
2.
o
Configurazione rete tramite Cisco Packet
Tracer
Sviluppo client/server in C/Java (da decidersi
di volta in volta...)
Voto
o Media ponderata delle due modalità
o
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
Il voto di laboratorio pesa 40% sul totale
2
1
Il “libro” di testo
The Java Tutorial
Custom Networking
http://java.sun.com/docs/books/tutorial/networking/index.html
Slide del docente (o altro materiale aggiuntivo)
http://laren.di.unimi.it/~simone/teachRetiInf.html
JavaDoc & API
http://docs.oracle.com/javase/6/docs/
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
3
Il libro di testo
o
Dario Maggiorini, Introduzione alla Programmazione ClientServer, Pearson Addison Wesley, 2009
o
o
o
Parte I: Aspetti teorici
Parte II: Java
Parte III: C
In realtà copre solo una parte di ciò che
affronteremo durante il corso
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
4
2
Per chi volesse approfondire
W. Richard Stevens
“UNIX Network Programming”
Vol 1: Sockets Networking APIs
3° edizione, Addison-Wesley
ISBN 0-13-141155-1
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
5
In soldoni
o
Le slide che trovate sul sito sono più che sufficienti
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
6
3
Che cosa dò per scontato
o
Assumerò che abbiate già acquisito le seguenti
nozioni in altri corsi
1.
2.
3.
4.
Il linguaggio java e c (sintassi e strutture di controllo)
Come leggere il manuale
Che cosa vuol dire compilare
Come eseguire del codice
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
7
L’ambiente che verrà utilizzato
o
L’importante è il risultato
o In laboratorio non mi interessa che cosa userete per
programmare, l’importante è risolvere gli esercizi
o
Alcuni suggerimenti
o Eclipse, ConText, gedit, nedit, vim (editor con highlight
sintattico)
• Per chi preferisce NetBeans
o Sistema operativo: Windows o Linux, è indifferente
• Per la parte in C consiglio vivamente di utilizzare Linux per problemi di
compatibilità
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
8
4
Eclipse
Si tratta di un ambiente integrato e “pronto da usare” per lo
sviluppo in java
o http://www.eclipse.org/
o Cliccare su “download”
o Scegliete il pacchetto che
preferite tra i tanti disponibili
• Eclipse IDE for Java Developers
è più che sufficiente agli
scopi del corso
o Meglio l’ultima versione Luna
(4.4.1): più funzionalità, meno
bug
Potete cominciare subito, non
c’è bisogno di installare il kit di
sviluppo di java (su sistemi
Windows)
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
9
Eclipse Luna
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
10
5
Modelli di Servizio
Corso di laurea in Informatica
Laboratorio di Reti di Calcolatori
A.A. 2014-2015
Simone Bassis
[email protected]
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
Modelli di servizio
o Un modello è una definizione funzionale
del comportamento di un sistema
o Definisco come deve essere strutturata
l’erogazione del servizio, non come
implementare il servizio
o L’implementazione sarà dipendente dalla
definizione funzionale
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
12
6
Il modello client-server
o
Presuppone l’esistenza di due entità
o CLIENT
richiede un servizio
o SERVER
eroga un servizio
o
Esempi
o un risparmiatore e uno sportello bancomat
o la segretaria di un’azienda e gli impiegati
che ci lavorano
o un correntista e la sua banca
o lo sportello bancomat al primo punto e un
istituto di credito.
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
13
Server iterativo
1. il server è libero e il client può entrare in servizio immediatamente
2. il server è occupato, quindi:
(a) c’è spazio in coda e il client può mettersi in attesa
(b) la coda è piena e il servizio viene rifiutato
es. un risparmiatore e uno
sportello bancomat
Problemi
• chi gestisce la coda?
• lunga attesa (starvation)
• attacchi Denial of Service (DoS)
Quando è utile allora?
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
14
7
Server concorrente
La concorrenza dell’erogazione è un parallelismo nel mantenere i rapporti, non
nell’inviare o ricevere dati.
es. la segretaria di
un’azienda e gli impiegati
che ci lavorano
Problemi
• gestione difficile: il server deve accentrare su di sé tutti i canali di comunicazione
aperti con i client
• e se i canali finiscono?
• non scalabile verso l’alto
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
15
Server multiprocesso
Più server entrano in gioco contemporaneamente
• entità distinte e contemporaneamente attive
• più flussi esecutivi paralleli per la fornitura del servizio
• processi
• thread
Problemi
• gestione limitatezza e carico
computazionale di ciascun processo/thread
Soluzioni gerarchiche
es. un correntista e la sua banca
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
• pool di thread dormienti
• il server interpella il thread meno
carico
• ogni thread gestisce la coda in modo
iterativo o concorrente
16
8
Server multiprocesso
nel dettaglio
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
17
Processi
o
o
o
Sono le unità esecutive all’interno di un sistema
operativo
Si tratta di un programma associato ad un
contesto (che cosa sta facendo)
Sono come delle persone che condividono uno
stesso spazio
o Vivono di vita propria
o Interagiscono tra di loro
o Ognuno è indipendente dagli altri
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
Ogni processo ha:
• Proprio spazio di indirizzamento
• Variabili globali
• Codice eseguibile
• Descrittori relativi a oggetti nel Sistema
• Process id
• Variabili d’ambiente
• Processi figli
• Segnali e signal handler
• Pending alarms
• Almeno un thread di esecuzione
• Security context, Classe di priorità, …
18
9
Thread
o Sono unità esecutive all’interno di un
sistema operativo dotate di una granularità
più bassa di quella di un processo
o Condividono delle variabili
o È possibile avere dei meccanismi semplici di
sincronizzazione
o In java vanno per la
maggiore i thread
è possibile creare nuovi processi
con java.lang.ProcessBuilder
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
Ogni thread:
• È una entità all’interno di un
processo che può essere schedulata
per essere eseguita
Tutti i thread di un processo
condividono:
• Spazio di indirizzamento
• Risorse di Sistema
Ogni thread mantiene
• exception handlers
• scheduling priority
• thread local storage
• unique thread identifier
• strutture dati per salvare il contesto
• Program counter
• registri
• stack
• stato
• security context
19
Servizi “a più stadi”
server
client o server ?
client
es. lo sportello bancomat al primo punto e un istituto di credito.
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
20
10
Client o server ?
o
o
Non esistono cose da client o cose da server
Non esistono comandi e funzioni che possono
essere utilizzati solo da una parte della
connessione e non dall’altra
o
Le etichette client e server sono due
identificatori che diamo noi per chiarire chi
eroga e chi riceve il servizio in un certo
contesto, e come tali, servono solo al
programmatore per non confondersi
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
21
Protocolli
Corso di laurea in Informatica
Laboratorio di Reti di Calcolatori
A.A. 2014-2015
Simone Bassis
[email protected]
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
11
Reti e Protocolli
o
Lo scopo di una rete: portare una informazione
dal punto A al punto B di una maglia di
connessioni
o Servono una serie di regole che A e B devono rispettare
per poter dialogare tra loro
• e non solo A e B…
o Ogni architettura di rete definisce quindi una serie di
protocolli di comunicazione necessari al suo
funzionamento.
o
o
SBAGLIATO: “i protocolli fanno uso della rete”
CORRETTO: “le reti basano la loro struttura sul
concetto di protocollo”
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
23
I protocolli
o
La rete esiste solo grazie a delle strutture
sintattiche che permettono di trasmettere dati in
maniera organizzata
o
Tutte le attività di Internet sono governate da
protocolli
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
24
12
Più formalmente
o
Protocollo:
1. l’insieme delle norme che regolano lo svolgimento di
manifestazioni, visite, ricevimenti ufficiali;
2. insieme di regole che governano la successione e lo scambio di
informazioni fra due dispositivi comunicanti tra loro.
Dizionario Garzanti
o
Protocol:
1. an original draft, minute, or record of a document or transaction;
2. a code prescribing strict adherence to correct etiquette and
precedence (as in diplomatic exchange and in the military
services);
3. a set of conventions governing the treatment and especially the
formatting of data in an electronic communications system;
4. a detailed plan of a scientific or medical experiment, treatment, or
procedure.
Merriam-Webster dictionary
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
25
Caratteristiche di un protocollo
Quando descriviamo un protocollo dobbiamo stabilire:
o
Un lessico
o Il formato dei messaggi
o
Una sintassi
o Quali sono le sequenze di messaggi valide
o
Una semantica
o Dare un significato ai messaggi
o
Un sistema di turni
o Quando inviare e quando ricevere
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
26
13
Esempio
un protocollo umano a confronto con un protocollo di rete
Hi
TCP connection
request
Hi
TCP connection
response
Got the
time?
Get http://www.awl.com/kurose-ross
2:00
<file>
time
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
27
Il modello ISO/OSI
International Standard Organization (ISO) Open System Interconnection (OSI)
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
28
14
comunicazione
reale
Layer in ISO/OSI
sistema di
indirizzamento
comunicazione virtuale
tra peer
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
29
Come in un’azienda
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
30
15
Internet e i suoi protocolli
o Con il termine Internet si fa
riferimento ad una rete che fa uso di
certi tipi di protocolli quando si vanno
ad esaminare certi tipi di funzionalità
o Vedrete i dettagli nella seconda metà del
corso di teoria
o IP
o TCP
o UDP
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
31
Architettura TCP/IP
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
32
16
Livello di Rete
o
Protocollo IP
o Permette lo scambio di dati tra entità anche se non sono
fisicamente connesse tra loro
o Servizio best-effort: nessuna garanzia sulla consegna
o
Indirizzi IP
o identificano in maniera univoca un nodo della rete
o Due versioni (IPv4, IPv6)
o
Non è possibile, con java, interagire
direttamente con il protocollo IP
o Questo viene usato in maniera indiretta da TCP e UDP
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
33
Indirizzamento IP
Indirizzo IP (IPv4):
o Identificatore di 32 bit
associato ad un’interfaccia di
rete
•
•
Notazione decimale puntata (dotnotation)
Hostname
o assegnati da Internet
Assigned Numbers Authority
(IANA)
o Ne esistono di pubblici e
privati, statici e dinamici,
unicast o multicast
223.1.1.1
223.1.2.1
223.1.1.2
223.1.1.4
223.1.1.3
223.1.3.1
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
223.1.2.9
223.1.3.27
223.1.2.2
223.1.3.2
34
17
Livello di trasporto
o
TCP (Transmission Control Protocol)
o
o
o
o
o
Ordinato alla connessione
Affidabile
Consegna ordinata
Controllo di flusso
Controllo di congestione
o
UDP (User Datagram Protocol)
o non offre miglioramenti rispetto a IP, a
parte il fatto di essere direttamente
raggiungibile dalle applicazioni
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
35
Indirizzamento di processi
o
Per poter mandare un messaggio ad un
processo questo deve essere identificabile in
maniera univoca
o
Uno nodo ha un indirizzo di 32 bit (indirizzo IP)
L’indirizzo IP può andare bene (bastare) anche per i
processi ?
No, perché ci sono tanti processi contemporaneamente
in un calcolatore
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
36
18
Indirizzamento a
livello di trasporto
Per rendere possibile una
connessione virtuale tra due
applicazioni
o
223.1.3.1:80
223.1.3.2:1600
o serve una granularità più fine
o
numeri di 48 bit
o i primi 32 identificano il nodo e coincidono
con il suo indirizzo IP
o gli ultimi 16 (numero di porta)
rappresentano un riferimento al canale di
comunicazione in possesso dell’applicazione
• Un po’ come le porte dei vari appartamenti
all’interno di un condominio
• Ma con alcune differenze!
Ogni servizio standardizzato di cui è possibile fruire in rete è assegnato a una porta specifica
(Well Known Port o Registered Port) dalla IANA.
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
37
Livello di Applicazione
o
i protocolli utilizzati tra applicazioni per la
fruizione dei servizi:
o
o
o
o
o
o
o
gestione della posta elettronica (SMTP, POP, IMAP)
trasferimento file (FTP, TFTP)
condivisione di file system (NFS, SMB)
gestione di sessioni di lavoro (telnet, Secure Shell (SSH))
trasporto informazioni (gopher, HTTP)
ricerca di informazioni (DNS,whois)
La specifica del protocollo si trova sul sito web
della Internet Engineering Task Force (IETF)
o in documenti indicati con la dicitura Request For
Comments (RFC).
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
38
19
Indirizzamento
a livello applicazione
o
o
In generale (in passato) le applicazioni definivano una loro
sintassi
Oggi Uniform Resource Identifier (URI)
<scheme>:<scheme-specific-part>
Uniform Resource Locator (URL)
<scheme>://<authority><path>?<query>
•
•
•
•
Scheme: protocollo con cui accedere all’informazione
authority: indica una entità responsabile per la gestione e la fornitura del servizio
path: il percorso all’interno dello schema gerarchico
query: identifica una informazione che deve essere elaborata da una risorsa
http://www.unimi.it/chiedove/schedaPersonaXML.jsp?matricola=16088
Uniform Resource Name (URN)
doi:10.1000/182
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
39
Comunicazione tra processi/thread
o Due processi, un processo client ed un
processo server (ad esempio) si mettono
in comunicazione tra loro e fanno fluire
dei dati
o Sembra troppo semplice per essere vero!
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
40
20
Socket
o
o
o
Sono una infrastruttura di
comunicazione messa a
disposizione da un sistema
operativo per permettere
ad un processo di utilizzare
TCP o UDP per trasportare
i dati
host or
server
host or
server
process
controlled by
app developer
socket
socket
Una socket si definisce
come il punto terminale di
un sistema di
comunicazione
TCP with
buffers,
variables
strumento per accedere ai
moduli che implementano i
protocolli a livello di
trasporto
process
Internet
TCP with
buffers,
variables
controlled
by OS
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
41
Socket e TCP-IP
application
socket
TCP
UDP
IP
data link
physical link
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
42
21
Protocolli disponibili con le socket
o
Protocolli affidabili, con consegna ordinata e
garantita dei dati
o
o
o
o
o
TCP
Controllo di congestione
Controllo di flusso
Setup della connessione
Protocolli non affidabili, consegna non ordinata
né garantita dei dati
o UDP
o
Che cosa non riusciamo a dare ?
o Garanzie sui ritardi di consegna
o Garanzie sulla disponibilità delle risorse
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
43
Abbiamo detto che…
o Un processo che eroga un servizio
può essere identificato con un
numero costituito da:
o L’indirizzo del nodo
o Un numero di porta
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
44
22
… in realtà
o
Non stiamo indirizzando un processo ma una
socket
o
È logico che se un processo deve aprire una
socket per comunicare allora possiamo associare
l’identificatore al processo
Però un processo potrebbe avere aperte
contemporaneamente più socket, quindi
potrebbe essere associato a molti identificatori
o
o
Ricordatevi sempre che una socket, per il
sistema operativo è un descrittore di file esterno
Laboratorio di Reti di Calcolatori (Informatica) - A.A. 2014-2015
S. Bassis ([email protected])
Università di Milano – DI
45
23