Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
INTERNET: ORIGINI ED EVOLUZIONE
Internet nasce come interconnessione di diverse reti di carattere sperimentale.
Kleinrock, attraverso la teoria delle code, mostra la fattibilità delle reti a commutazione di pacchetto
(1961), verificando che sotto certe condizioni è possibile gestire le comunicazioni all’interno di unità
discrete.
K. lo aveva dimostrato solo a livello esplicativo, per cui solo 3 anni dopo si ebbero le prime attività di rilievo
come sperimentazione di reti a commutazione di pacchetto finanziate per scopi militari (Department of
Defence – DoD, tramite Defence Advanced Research Projects Agency – DARPA) (1964).
Una delle cose mancanti erano i dispostivi di rete in grado di trasportare i pacchetti, per cui si realizzò
l’ARPANET: rete sperimentale basata su Interface Message Processors (IMP) con meccanismi Store-and-
Forward (1967/1969), ovvero oggetti in grado di ricevere un pacchetto, vedere dove questo doveva spedirsi
ed inviarlo (processo appunto di store and forward).
Si giunse, poi, ad un approccio Datagram per garantire la sopravvivenza in
caso di eliminazione di nodi e linee: se ho un fault su un nodo, perdo ciò
che sta attraversando il nodo in quel momento, ma comunque continuo a
“parlare”.
Quindi, un primo gruppo di Università crea un nucleo di rete per sperimentare applicazioni (1969-72), con
collegamenti da 56 kbps. Le sperimentazioni mostrano l’inadeguatezza dei protocolli ARPANET per
differenti architetture: perché ARPANET si preoccupò solo delle reti militari, che ovviamente sono in
numero minore.
Pertanto, ci furono problemi di scalabilità: si aveva, perciò, esigenza di protocolli per “internetworks”.
V. Cerf e R. Kahn progettano la suite TCP-IP (1974)
BBN e UCB vengono finanziate per inserire TCP-IP in Unix BSD • Quattro fattori di successo: PDP/Vax, LAN,
TCP-IP, Unix.
1984: la parte militare di ARPANET si separa (MILNET)
• 1986: La National Science Foundation (NSF) finanzia lo sviluppo di una rete basata su TCP-IP (NSFNET) 9
• NSFNET ha una struttura gerarchica: una dorsale ad alta velocità ed una serie di reti regionali
• Collegamenti da 56 Kbps a T1 (1,544 Mbps)
• 1989: ARPANET è smantellata
• 1990: NSF smette di finanziare la rete e cede la struttura ad una organizzazione non-profit
• Nasce Advanced Network and Services (ANS), una organizzazione fondata da Merit, IBM ed MCI
• Collegamenti da T1 a T3 (45 Mbps)
• 1995: NSFNET è smantellata
• Nascono i Network Access Point (NAP) per interconnettere varie reti commerciali
Internet: architettura della rete
• La rete è progettata secondo un modello a datagram
• L’informazione viaggia in pacchetti (datagram) che vengono trattati dalla rete indipendentemente l’uno
dagli altri
• Ogni terminale è univocamente individuato da un indirizzo associato alla interfaccia che lo collega alla
rete
• Ogni pacchetto contiene almeno l’indirizzo del mittente e l’indirizzo del destinatario
• L’infrastruttura della rete è costituita dai router, che hanno il compito di instradare i pacchetti e
consegnarli a destinazione
• Non c’è garanzia che un pacchetto venga realmente consegnato a destinazione:
- i pacchetti possono andare persi nella rete
- i pacchetti possono seguire percorsi diversi ed arrivare in un ordine diverso da quello con cui sono stati
trasmessi
Struttura di internet
L’accesso ad Internet avviene per mezzo di un fornitore di servizi o
Internet Service Provider, ISP.
Gli ISP sono collegati tra loro secondo una struttura gerarchica:
- ISP locali
- ISP nazionali
Gli ISP nazionali si collegano a fornitori di connettività
internazionali: i Network Backbone Provider (NBP).
Gli NBP sono tra loro collegati in punti di interscambio detti NAP,
Network Access Point.
Cosa manca ad Internet?
Internet non è stata pensata con un protocollo di sicurezza (motivo che risiede nello scenario storico in cui
essa è stata creata, non si aveva bisogno di alcuna sicurezza) e non esiste per essa nessuna primitiva che
consente di capire cosa non sta funzionando in una data comunicazione. 10
ADSL: perché asimmetrica?
A causa dell’elevata
differenza tra la mole di
upstream e downstream. 11
Protocolli HTTP ed FTP
Strato dell’applicazione
Comunicazioni tra processi, ovvero programmi che stanno girando. Cosa definisce un protocollo dello strato
di applicazione:
- tipo di messaggi scambiati
- sintassi dei messaggi
- semantica dei campi
- regole di trasmissione
Applicazioni lato client e lato server (es.: servizi Web, FTP)
Applicazioni utilizzano protocolli: standard (RFC), noti ma non standard, privati e volutamente non
disponibili.
NOTA: un RFC (“Request For Comment”) è un documento pubblico sottoposto alla comunità Internet al fine
di essere valutato. Ciò che è un RFC rappresenta uno standard de facto nella comunità di Internet.
Il protocollo http è un protocollo standard, in quanto non solo ne è noto il funzionamento, ma esso è stato
standardizzato, dunque chiunque voglia fare web server può osservare le specifiche dell’RFC che ha definito
http ed utilizzarle.
Esistono, inoltre, protocolli noti ma non standard, per i quali esistono documenti che ne descrivono il
funzionamento, ma sono definiti non standard in quanto non hanno superato i controlli RFC oppure trattasi
di protocolli di cui non si necessitava la standardizzazione (es.: due studenti che lo usano tra loro).
Infine, vi sono protocolli privati e volutamente non disponibili (ad esempio Skype agli esordi, che voleva
evitare che si potessero controllare le conversazioni, solo un esempio, ma ve ne sono molti altri).
Comunicazione tra processi
API: Application Programming Interface, definisce l’interfaccia tra il livello applicativo e il livello trasporto.
socket: Internet API : due processi comunicano mandando dati in un socket e leggendo dati dal socket.
Come un processo può “identificare” l’altro processo con cui vuole comunicare? Non sono a livello di rete,
ma applicativo, non voglio identificare la macchina, ma il processo che sta girando sulla macchina:
l’indirizzo IP della macchina non basta, perché 1) non è detto che su quella macchina si trovi
esclusivamente quel particolare processo; 2) supponendo di avere una macchina che si collega ad uno
stesso sito, ma aprendo più tab, l’IP non è utile nel riconoscere in quale delle due la macchina sta lavorando
sul processo di interesse
- indirizzo IP dell’host che esegue l’altro processo
- “numero di porta” che permette all’host ricevente di sapere a quale processo locale il messaggio è
destinato (identifica il processo locale a cui vengono inviati i messaggi).
Esistono 3 tipologie di porte per le applicazioni che sono in attesa di ricevere il traffico:
– The Well Known Ports are those from 0 through 1023 (associati ai protocolli standard)
– The Registered Ports are those from 1024 through 49151 (associati ad applicazioni note, ma non
standardizzati) 12
– The Dynamic and/or Private Ports are those from 49152 through 65535 (sono o dinamici o
utilizzati da applicazioni in modo privato; in realtà essi sono usati anche nel contesto del NAT).
I porti Registrati e Dinamici vengono utilizzati da applicazioni multimediali mentre sono già in
comunicazione : esse, sul canale di signaling (di controllo), si mettono d’accordo sul porto da utilizzare per
scambiarsi informazioni, trattandosi perciò di un porto assegnato dinamicamente.
Tutte le connessioni http arrivano per default sul porto 80.
( così dovrebbe funzionare, ma in realtà non più )
Livello Trasporto: cenni
Due tipologie di protocolli:
• TCP (Transmission Control Protocol):
- connection oriented
- trasferimento affidabile
- congestion control (recap: quando i livelli 4 di sorgente e destinazione si accorgono che la comunicazione
si avvicina alla congestione, riducono i flussi di trasmissione)
- nessuna garanzia su velocità di trasmissione e ritardo
(un’applicazione su TCP non deve perdere i pacchetti)
In alternativa, si ha:
• UDP (User Datagram Protocol):
- connection less
- trasferimento non affidabile
- no congestion control
- garanzie sul rispetto di una velocità minima (processi real-time)
(un’applicazione su UDP può perdere i pacchetti, ma è time sensitive per la trasmissione dei dati).
Attualmente, la percentuale di traffico UDP si è notevolmente ridotto. Interazione Client->Server
Occorre conoscere l’IP del
Server(ma esso potrebbe
non esserci proprio o non
star funzionando); Il client
apre una connessione ed
invia il messaggio in un
socket con l’IP Server, si
prende un “efimered port” ?
e lo associa all’uscita.
Riposta: il sorgente come
indirizzo di destinazione e
l’efimered port diviene
mittente (DA
CONTROLLARE)
Ogni duo request-response
non è accoppiato, ovvero non esiste uno stato per esso.
HTTP
Vengono studiate due versioni di http: 13
- http/1.0 (persistente)
- http/1.1 (non persistente)
Il protocollo HTTP/1.0
• Si basa su TCP
• Il client apre un socket verso il porto 80 (se non diversamente specificato) del server
• Il server accetta la connessione
• Il client manda una richiesta
• Il server risponde e chiude la connessione
• Il protocollo è definito/descritto nelle RFC
- http1.0: RFC 1945
- http1.1: RFC 2068, RFC 2616
• Il protocollo HTTP è stateless (privo di stato): né il server né il client mantengono a livello http
informazioni relative ai messaggi precedentemente scambiati (perché, benché risulti fattibile creare uno
stato per i client, come può invece mantenersi lo stato per il server?)
(i cookies dei siti servono a “mantenere” lo stato)
Esempio di comunicazione tramite http/1.0 : 14
Una delle
problematiche risiede
nel tempo impiegato. 15
Esiste un vantaggio tra http 1.0 e 1.1 pipeline se tutte le risorse sono tutte sullo stesso server. Dove è
scritto se sono sullo stesso server? Domanda esame. 16
Il protocollo http
Per effettuare richieste, specificare cosa si richiede, rispondere alle richieste, si rende necessario un
opportuno protocollo. Per lo scambio di documenti, su Internet si usa il protocollo http (che è comunque
usato anche per altri scopi). È un protocollo testuale, per il quale i messaggi sono costituiti da sequenze di
byte. Ogni byte identifica un carattere secondo la tabella ASCII. In certi casi, il payload dei messaggi può
esser