Telematica - UDP e TCP

Download Report

Transcript Telematica - UDP e TCP

Telematica A.A. 2004/2005
Il datagramma
UDP
(STD 6, RFC 768)
1
Datagramma
Datagramma UDP
UDP
0
8
Zero
16
31
Indirizzo IP di Provenienza
Indirizzo IP di Destinazione
Proto (17)
Lunghezza UDP
0
16
Porta di Provenienza
Lunghezza Del Messaggio UDP
31
Porta di Destinazione
Checksum UDP
Dati
.....
2
Datagramma
Datagramma UDP:
UDP: campi
campi
●
●
●
●
●
La prima parte è uno pseudo-header, NON viene trasmesso.
Porta: numeri di porta della comunicazione (per il demultiplexing è
usato solo quello di destinazione: studiare tutta la RFC).
Checksum:checksum dell’intero pacchetto (compreso lo pseudoheader). E’ opzionale (se non è utilizzata viene posta a 0xFF,
complemento a 1 di 0x00).
Lo pseudo header avrebbe dovuto essere compreso nel pacchetto per
non compromettere il principio di stratificazione.
L'indirizzo di livello trasporto è una coppia (quadrupla) composta
dall'indirizzo IP e dalla porta del destinatario (con indicazione
dell'indirizzo IP e della porta del mittente).
Perche' diciamo che il SAP-UDP e' una coppia (quadrupla)?
3
Datagramma
Datagramma UDP:
UDP: osservazioni
osservazioni
●
Introduce il multiplexing e quindi indirizza
l'applicativo
●
Ogni datagram e' autonomo
●
Il checksum è facoltativo
●
●
E' facile e leggero da gestire (non richiede
particolari meccanismi)
Concepito (1980) solo in funzione del DNS
e del TFTP
4
Telematica A.A. 2004/2005
Il segmento TCP
(STD 7, RFC 793)
5
Segmento
Segmento TCP
TCP
0
8
Zero
0
4
16
31
Indirizzo IP di Provenienza
Indirizzo IP di Destinazione
Proto (6)
Lunghezza TCP
10
16
31
Porta di Provenienza
Porta di Destinazione
Numero Sequenziale
Numero Riscontro
Hlen
Reserved
Bit Codice
Finestra
Checksum
Puntatore Urgente
Opzioni (Eventuali)
Riempimento
Dati
.....
6
Segmento
Segmento TCP:
TCP: campi
campi
●
●
●
●
●
La prima parte è uno pseudo-header, NON viene trasmesso.
Porta: numeri di porta della comunicazione.
Numero di sequenza (32bit): è il numero di sequenza del primo byte
di dati di questo segmento (tranne quando SYN è presente). Se SYN
è presente il numero di sequenza è ISN (initial sequence number) e il
primo byte di dati è ISN+1.
Numero di riscontro (32bit): se il bit ACK è settato contiene il valore
del prossimo numero di sequenza che il mittente del segmento si
aspetta di ricevere. Una volta che la connessione è stabilita è sempre
inviato.
Hlen: lunghezza dell'header TCP espressa in parole da 32 bit.
7
Segmento
Segmento TCP:
TCP: campi
campi
●
●
●
Bit codice: sono 6 flag e servono per (da sinistra a destra):
– URG: Il campo Puntatore Urgente contiene dati significativi
–
ACK: Il campo Numero di Riscontro contiene dati significativi
–
PSH: Funzione Push (memorizza il segmento per un utilizzo
successivo)
–
RST: Reset della connessione
–
SYN: Sincronizza il Numero di Sequenza
–
FIN: Non ci sono altri dati dal mittente
Finestra: indica il numero di byte di dati a partire da quello indicato nel
campo Numero di Riscontro che il mittente di questo segmento è in
grado di accettare.
Checksum: checksum dell’intero pacchetto (compreso lo pseudo
header).
8
Segmento
Segmento TCP:
TCP: campi
campi
●
●
Puntatore Urgente (16 bits): questo campo è un offset positivo a
partire dal Numero di Sequenza del segmento corrente. E' interpretato
solo se il bit URG è uguale ad 1. Punta al primo byte di dati non
urgenti a partire dal Numero di Sequenza, e consente di far passare i
dati urgenti in testa alla coda di ricezione. Nel segmento contenente
dati urgenti deve essere presente almeno un byte di dati.
Opzioni (lunghezza variabile): le opzioni sono sempre multipli di 8 bit
e il loro valore è incluso nel checksum. Dopo le eventuali opzioni sono
necessari uno o più byte posti a zero per raggiungere la lunghezza
multipla di 32 bit.
9
Segmento
Segmento TCP:
TCP: funzioni
funzioni (1/6)
(1/6)
Funzioni base per il trasferimento di dati
➔
capacità di trasferire un flusso continuo di byte
➔
trasferimento bidirezionale (full duplex)
➔
funzione PUSH
10
Segmento
Segmento TCP:
TCP: funzioni
funzioni (2/6)
(2/6)
Affidabilità
➔
si intende la capacità di correggere tutti i tipi di
errore, quali:
dati corrotti
● segmenti persi
● segmenti duplicati
● segmenti fuori sequenza
●
11
Segmento
Segmento TCP:
TCP: funzioni
funzioni (3/6)
(3/6)
Controllo di flusso
➔
evitare di spedire più dati di quanti il ricevitore
sia in grado di trattare
12
Segmento
Segmento TCP:
TCP: funzioni
funzioni (4/6)
(4/6)
Multiplexing
➔
➔
consente di assegnare una data connessione
ad un particolare processo
(permette una comunicazione da processo a
processo)
definisce le well known ports
(porte ben definite per applicazioni standard)
Il SAP-TCP e' una quadrupla perche' . . . .
13
Segmento
Segmento TCP:
TCP: funzioni
funzioni (5/6)
(5/6)
Controllo della connessione
➔
meccanismi di inizio e fine trasmissione
(controllo di sessione)
14
Segmento
Segmento TCP:
TCP: funzioni
funzioni (6/6)
(6/6)
●
Precedenza e sicurezza
➔
è possibile indicare tipo di servizio e sicurezza
desiderati usando anche le opzioni di IP
(in barba alla stratificazione!)
Note:
- push, dati urgenti e tipo di servizio non sono
usati nella pratica
- essi sembrano anche non adeguati alle
esigenze presentate in tempi recenti
15
Segmento
Segmento TCP:
TCP: handshake
handshake
(1/2)
(1/2)
Host server
Host client
Richiesta di
connessione
ACK
SYN=1
, seq=c
lient_i
sn
_isn
r
e
v
r
se
=
q
e
s
1,
n+1
SYN=
s
i
_
t
ien
l
c
=
k
ac
SYN=0
, seq=c
lient_i
sn+1
ack=se
rver_is
n+1
Autorizzazione
connessione
16
Segmento
Segmento TCP:
TCP: Handshake
Handshake
(2/2)
(2/2)
●
Passo 1
è attivo il SYN, il numero di sequenza è il valore
iniziale (per es. client_isn = 41)
●
Passo 2
è attivo SYN, il numero di sequenza è il valore
iniziale (per es. server_isn = 78)
è attivo ACK, il server aspetta client_isn+1 (42)
●
Passo 3
SYN è inattivo: il prossimo dato, di norma non
presente, sarà client_isn+1 (42) ed il client attende
server_isn+1 (79)
17
Segmento
Segmento TCP:
TCP: comunicazione
comunicazione
Host server
Host client
Invio 'c'
Ti mando il 42,
aspetto il 79
Seq=42
, A CK =
79, dat
a='c'
=4
K
C
A
79,
=
q
e
S
ACK dell'host
per ricevuta di
'C'
Ti mando il 43
(o niente) e
aspetto l'80
Seq=43
C'
'
=
a
t
3, da
, ACK=
ACK dell'host
per ricevuta di
'c', restituisco
'C' (maiuscolo)
Ti mando il 79,
aspetto il 43
80
18
Segmento
Segmento TCP:
TCP: chiusura
chiusura
Host server
Host client
Chiude
FIN
AC K
FIN
Chiude
A CK
timeout
Chiude
Il timeout e' molto grande: 2*MSL
(Maximum Segment Lifetime = 120 s)
19
Segmento
Segmento TCP:
TCP: ritrasmissione
ritrasmissione
Host server
Host client
Seq=92, 8 b
yte di dati
timeout
ACK=100
Seq=92, 8 b
yte di dati
ACK=100
20
Segmento
Segmento TCP:
TCP: variabili
variabili TX
TX
●
SND.UNA
- send unacknowledged
●
SND.NXT
- send next
●
SND.WND
- send window
●
SND.UP
- send urgent pointer
●
SND.WL1
- segment sequence number used for last
window update
●
SND.WL2
- segment acknowledgment number used for
last window update
●
ISS
- initial send sequence number
21
Segmento
Segmento TCP:
TCP: variabili
variabili RX
RX
●
RCV.NXT
- receive next
●
RCV.WND
- receive window
●
RCV.UP
- receive urgent pointer
●
IRS
- initial receive sequence number
22
Segmento
Segmento TCP:
TCP: send
send space
space
1
2
SND.UNA
3
SND.NXT
4
SND.UNA+
SND.WND
1 - old sequence numbers which have been acknowledged
2 - sequence numbers of unacknowledged data
3 - sequence numbers allowed for new data transmission
4 - future sequence numbers which are not yet allowed
La “finestra di invio” è la porzione indicata con il numero 3
23
Segmento
Segmento TCP:
TCP: receive
receive space
space
1
2
RCV.NXT
3
RCV.NXT+
RCV.WND
1 - old sequence numbers which have been acknowledged
2 - sequence numbers allowed for new reception
3 - future sequence numbers which are not yet allowed
La “finestra di ricezione” è la porzione indicata con il numero 2
24
Segmento
Segmento TCP:
TCP: variabili
variabili
segmento
segmento
●
SEG.SEQ
- segment sequence number
●
SEG.ACK
- segment acknowledgment number
●
SEG.LEN
- segment length
●
SEG.WND
- segment window
●
SEG.UP
- segment urgent pointer
●
SEG.PRC
- segment precedence value
25
Segmento
Segmento TCP:
TCP: stati
stati (1/2)
(1/2)
●
●
●
●
●
LISTEN - represents waiting for a connection request from any
remote TCP and port.
SYN-SENT - represents waiting for a matching connection
request after having sent a connection request.
SYN-RECEIVED - represents waiting for a confirming
connection request acknowledgment after having both received
and sent a connection request.
ESTABLISHED - represents an open connection, data received
can be delivered to the user. The normal state for the data
transfer phase of the connection.
FIN-WAIT-1 - represents waiting for a connection termination
request from the remote TCP, or an acknowledgment of the
connection termination request previously sent.
26
Segmento
Segmento TCP:
TCP: stati
stati (2/2)
(2/2)
●
●
●
●
●
●
FIN-WAIT-2 - represents waiting for a connection termination
request from the remote TCP.
CLOSE-WAIT - represents waiting for a connection termination
request from the local user.
CLOSING - represents waiting for a connection termination
request acknowledgment from the remote TCP.
LAST-ACK - represents waiting for an acknowledgment of the
connection termination request previously sent to the remote
TCP (which includes an acknowledgment of its connection
termination request).
TIME-WAIT - represents waiting for enough time to pass to be
sure the remote TCP received the acknowledgment of its
connection termination request.
CLOSED - represents no connection state at all.
27
TCP
Functional
Specification
(RFC 793)
Closed
Passive open
Create TCB
CLOSE
Delete TCB
rcv SYN
snd SYN,ACK
SYN
recived
CLOSE
snd FIN
rcv ACK of SYN
x
SEND
snd SYN
rcv SYN
snd ACK
SYN
sent
rcv SYN, ACK
snd ACK
Estab
CLOSE
snd FIN
rcv FIN
snd ACK
FIN wait-1
rcv ACK of FIN
x
FIN wait-2
rcv FIN
snd ACK
Active OPEN
Create TCB
and SYN
CLOSE
delete TCB
Listen
Close wait
rcv FIN
snd ACK
CLOSE
snd FIN
Closing
rcv ACK of FIN
x
Time wait
Last ACK
rcv ACK of FIN
x
Timeout=2MSL
delete TCB
Closed
28
TCP:
TCP: calcolo
calcolo del
del timeout
timeout (1)
(1)
●
Il tempo di timeout è fondamentale per il funzionamento di TCP
●
Deve essere maggiore del RTT (Round Trip Time)
●
Viene calcolato analizzando gli RTT dei segmenti non ritrasmessi
RTT stimato=1−⋅RTT stimato ⋅RTT campionato
●
Il valore di alfa viene posto a 1/8 in modo da rendere meno importanti gli
RTT dei pacchetti più vecchi (RFC 2988)
RTT stimato=0,875⋅RTT stimato0,125⋅RTT campionato
29
TCP:
TCP: calcolo
calcolo del
del timeout
timeout (2)
(2)
●
Oltre al valore RTT stimato è necessario anche una stima della variabilità
di RTT data dalla seguente formula
RTT dev =1−⋅RTT dev ⋅∣ RTT campionato −RTT stimato∣
●
●
Il valore di beta viene posto a 1/4 (RFC 2988)
Una volta ottenuti questi valori, il timeout viene normalmente calcolato
come
Timeout=RTT stimato4⋅RTT dev
●
In molte implementazioni, dopo un errore si raddoppia il timeout: si
tratta di un primo meccanismo di controllo della congestione
30
TCP:
TCP: controllo
controllo di
di flusso
flusso
●
●
●
Si intende con controllo di flusso la capacità del mittente di
evitare la possibilità di saturare il buffer del ricevitore
TCP implementa questa caratteristica tramite una variabile
detta receive window mantenuta nel mittente: questa variabile
fornisce un'idea di quanto spazio è ancora a disposizione nel
buffer del ricevitore
Tale valore è comunicato nel campo window dell'intestazione
TCP
31
Algoritmo
Algoritmo controllo
controllo di
di flusso
flusso
Mittente
●
●
●
●
●
Dimensione buffer: MaxSendBuffer
LastByteSent – LastByteAcked <=
AdvertisedWindow
EffectiveWindow =
AdvertisedWindow - (LastByteSent
– LastByteAcked) spedisci se
EffectiveWindow > 0
Destinatario
●
●
●
Dimensione buffer: MaxRcvBuffer
LastByteRcvd - LastByteRead <=
MaxRcvBuffer
AdvertisedWindow = MaxRcvBuffer (LastByteRcvd - LastByteRead)
LastByteWritten - LastByteAcked
<= MaxSendBuffer blocca
applicazione mittente se
(LastByteWritten - LastByteAcked)
+ y > MaxSendBuffer
spedisci segmenti sonda (un byte
di dati) se AdvertisedWindow=0
32
TCP:
TCP: controllo
controllo della
della congestione
congestione
●
●
●
Si intende con controllo della congestione la capacità di TCP di
adattarsi alla velocità della rete
L'algoritmo di controllo della congestione di TCP ha i seguenti
componenti principali:
–
incremento additivo e decremento moltiplicativo
–
partenza lenta (slow start) e ripresa veloce (fast recovery)
–
reazione a eventi di timeout
Indicando con W il valore massimo in byte della finestra (ovvero
quando si verifica l'errore), TCP in regime stazionario offre il seguente
throughput
0,75⋅W
Throughput=
RTT
(-) I dettagli ed i calcoli si trovano in letteratura e sul libro di testo
33
TCP:
TCP: AIMD
AIMD
Additive Increase Multiplicative Decrease
●
●
TCP del mittente aumenta la propria
CongWin di 1 MSS ogni RTT finché non
percepisce congestione
TCP del mittente dimezza la propria
CongWin ad ogni evento di perdita
34
TCP:
TCP: Slow
Slow start
start
●
●
●
All'inizio CongWin = MSS/RTT
Se MSS=500 byte e RTT=200ms si ha circa
20kb/s: se ho 1Mb/s di banda impiego
molto tempo ad arrivarci con AIMD
Raddoppio CongWin ad ogni riscontro fino
ad un errore, poi CongWin dimezza.
35
TCP:
TCP: valore
valore di
di soglia
soglia
●
●
●
Aggiungo la variabile Threshold (soglia)
All'inizio la pongo ad un valore elevato
(65KB)
Ad ogni evento di perdita pongo la soglia
pari a ½ dell'attuale valore di CongWin
36
TCP:
TCP: RENO
RENO
●
●
●
●
Se CongWin < soglia, CongWin aumenta
esponenzialmente (slow start)
Se CongWin > soglia, Congwin aumenta
linearmente
Se ho 3 ACK duplicati pongo prima la
soglia a ½ di CongWin e poi dimezzo
CongWin (fast recovery)
Se ho un ACK perso per timeout pongo la
soglia a ½ di CongWin e pongo CongWin =
1 MSS
37
Fairness
Fairness
Ipotesi:
●
K connessioni TCP insistono su un unico link di capacità R bit/s
●
Non ci sono altri protocolli che insistono sullo stesso link
Risultato:
●
Ognuna delle connessioni TCP tende a trasmettere R/K bit/s
38
Throughput della connessione 2
Fairness
Fairness
Punto di tendenza
Throughput della connessione 1
39
Alcune
Alcune considerazioni
considerazioni (1/2)
(1/2)
UDP
●
●
●
La RFC-768 che definisce UDP è del 1980
La RFC-768 NON è stata cambiata o integrata da
altre RFC
La lunghezza totale è di 3 (TRE!!) pagine
40
Alcune
Alcune considerazioni
considerazioni (2/2)
(2/2)
TCP
●
●
●
La RFC-793 che definisce TCP è del 1981
La RFC-793 è stata aggiornata o cambiata da diverse
altre RFC:
–
2018 - TCP Selective Acknowledgement Options
–
1146 - TCP Alternate Checksum Options
–
2581 - TCP Congestion Control
–
1323 - TCP Extensions for High Performance
–
1693 - An Extension to TCP : Partial Order Service
–
1792 - TCP/IPX Connection Mib Specification
La lunghezza totale è di 85 pagine, con un glossario
con 67 voci
41
LICENZA SOFTWARE DELL'UNIVERSITA' DI FIRENZE
Versione 2.1, Aprile 2006 - Copyright (C) 2002-2006 Universita' di Firenze - Via S. Marta 3, 50139 Firenze - ITALIA
Tutti i diritti sono riservati.
Questo documento puo' essere liberamente copiato e distribuito da chiunque, ma a nessuno e' permesso di cambiarlo in alcun modo.
Preambolo
Il copyright imposto sui documenti pubblicati sul sito MMEDIA5.DET.UNIFI.IT ha lo scopo di consentire la libera circolazione del lavoro a scopo
educativo, mantenendo pero' il doveroso riconoscimento agli autori delle varie parti. Si vuole, inoltre, consentire l'ulteriore distribuzione del lavoro
sotto qualunque forma, anche con modifiche, mettendo pero' il successivo ricevente in grado di conoscere da chi il materiale sia stato
originariamente scritto e da chi rivisto o modificato. Per questo, si impone il Copyright su tutto il materiale, ma si concede gratuitamente licenza per
l'uso e l'ulteriore distribuzione, con la possibilita' di modificare il materiale, purche' vengano seguite le regole scritte piu' avanti.
Il diritto di cui sopra e' concesso con la restrizione che il materiale modificato e redistribuito sia soggetto alle stesse restrizioni del materiale
originario, e che la distribuzione avvenga a titolo gratuito o con la sola copertura delle spese vive con un piccolo margine per le spese generali di
distribuzione. Inoltre, la re-distribuzione del materiale o la distribuzione di materiale modificato dovranno essere fatte in modo da garantire che
ulteriori distribuzioni vengano fatte mantenendo le condizioni originarie.
Ogni utente di MMEDIA5 potra' proporre all'Universita' di Firenze la pubblicazione di documenti in MMEDIA5. Scrivere a: [email protected]
Tali documenti saranno soggetti ai termini qui specificati. Le condizioni per la licenza di pubblicazione e modifica sono riportate di seguito.
LICENZA PER IL MATERIALE "MMEDIA5" OVVERO PER IL CONTENUTO NEI SITI WEB "MMEDIA5.DET.UNIFI.IT" ,
"MEDIALAB.DET.UNIFI.IT" , “TELEMAT.DET.UNIFI.IT” , “LTT.DET.UNIFI.IT” -CONDIZIONI PER L'USO, LA MODIFICA E LA DISTRIBUZIONE
1.- Questa licenza e' applicabile al materiale contenuto nei siti WEB del Laboratorio di Tecnologia della Telematica, Dipartimento di Elettronica e
Telecomunicazioni dell'Universita' di Firenze, via di S. Marta 3, 50139 Firenze - Italia (attualmente con indirizzo internet:
http://mmedia5.det.unifi.it/ , http://medialab.det.unifi.it , http://telemat.det.unifi.it , http://ltt.det.unifi.it ) che riporta al suo interno un avviso o
legame con un file contenente la presente licenza. In questa licenza, con MMEDIA5 si intende un qualunque documento originariamente presente in
uno dei siti. Per "documento derivato" si intende ogni documento che contenga porzioni oppure un intero documento MMEDIA5, con o senza
modifiche, con o senza traduzioni in altra lingua, con o senza variazioni di supporto di memorizzazione o stampa; in questa licenza ogni documento di
questo tipo e' indicato come "documento derivato". Per licenziatario si intende qualunque persona o organizzazione che copia, consulta, legge,
memorizza su un qualunque supporto, produce o distribuisce a terzi un MMEDIA5 o un documento derivato. Per UNIVERSITA' si intende
l'Universita' di Firenze.
2.- Un licenziatario puo' copiare, consultare, leggere, memorizzare su un qualunque supporto, produrre e distribuire a terzi un MMEDIA5, purche' su
ogni copia, produzione, esibizione o distribuzione sia evidenziato il copyright originario, il ricevente sia adeguatamente informato della provenienza
del materiale e dell'esistenza di questa licenza e questa licenza sia inserita indivisibilmente e senza modifica alcuna assieme all'MMEDIA5.
L'eventuale cessione o distribuzione devono essere a titolo gratuito. E' comunque ammessa l'imposizione di un rimborso delle spese legate al
supporto fisico di memorizzazione dello MMEDIA5, con un piccolo margine per il recupero delle spese generali legate alla riproduzione fisica.
42
3.- Il licenziatario puo' produrre documenti derivati, ai sensi dell'articolo 1, e distribuirli a terzi purche' siano rispettate tutte le seguenti
condizioni:
3.1- ogni documento derivato deve riportare chiaramente la data e l'autore delle modifiche effettuate;
3.2- il licenziatario deve assicurare che ogni documento derivato sia sottoposto alla stessa licenza del documento originario, cosi' che la terza parte
ricevente sia impegnata a sua volta negli stessi termini di questa licenza;
3.3- ogni documento derivato deve riportare, all'inizio e in buona evidenza questa licenza o un legame ad un file che la contiene, e il file deve essere
distribuito indivisibilmente dal documento derivato;
4.- Al licenziatario e' espressamente vietato copiare, consultare, leggere, memorizzare su un qualunque supporto, produrre e distribuire a terzi un
MMEDIA5, se non nelle forme e nei modi previsti in questa licenza. Ogni forma di inosservanza di questa norma comporta l'immediata revoca di ogni
diritto concesso con questa licenza.
5.- L'uso di materiale soggetto a Copyright senza un esplicito assenso del proprietario del Copyright e' proibito dalla legge. L'UNIVERSITA' pone
come prerequisito per ogni uso di MMEDIA5 l'accettazione di questa licenza. Quindi,e' fatto espresso divieto, a chiunque non intenda accettare i
termini di questa licenza, di usare MMEDIA5 in alcun modo. Peraltro, non e' richiesta alcuna forma di accettazione esplicita della licenza, l'uso di
MMEDIA5 costituisce implicita accettazione e conferisce al licenzatario tutti i diritti qui espressi.
6.- Ogni volta che MMEDIA5 od un documento derivato vengono distribuiti, al ricevente e' automaticamente estesa questa licenza. Al licenziatario
non e' permesso imporre altri obblighi sul ricevente oltre la presente licenza. In ogni caso il licenziatario non e' considerato responsabile dell'uso
che il ricevente fa di MMEDIA5.
7.- Se per qualunque motivo, compresi regolamenti o leggi dello Stato, non e' possibile per il licenziatario imporre questa licenza, o parti di essa, al
ricevente, allora il licenziatario non puo' distribuire MMEDIA5, ne' parti di esso, ne' documenti derivati, in alcun modo.
8.- L'UNIVERSITA' potra' pubblicare revisioni di questa licenza. Le nuove versioni avranno intendimenti similari, ma potranno differire nei dettagli
per far fronte a nuove situazioni. Ogni nuova versione avra' un proprio numero distintivo e sara' applicata ai documenti MMEDIA5 da allora
pubblicati.
9.- Usi di MMEDIA5 diversi da quanto sopra specificato potranno essere autorizzati dall'UNIVERSITA'. Queste autorizzazioni non comporteranno
variazioni per i licenziatari preesistenti.
10.- Essendo la licenza gratuita, l'UNIVERSITA' fornisce MMEDIA5 cosi' come si trova, e non assume alcuna garanzia di esattezza dei contenuti, o
di adeguatezza a qualsiasi scopo. Inoltre, le singole parti di MMEDIA5 sono espressione dei vari autori o revisori menzionati e non espressione
dell'UNIVERSITA', non comportano ne' implicano accettazione del contenuto da parte dell'UNIVERSITA'.
43