• Non ci sono risultati.

Lezione 3-4

N/A
N/A
Protected

Academic year: 2021

Condividi "Lezione 3-4"

Copied!
72
0
0

Testo completo

(1)

Ritardi nelle reti a commutazione di

pacchetto

I pacchetti avvertono un

ritardo sul cammino sorgente-destinazione

‰ quattro sorgenti di ritardo

ad ogni hop (router visitato)

‰ Elaborazione del router:

o Controllo dei bit di errore o Determinazione del canale

di uscita

‰ accodamento

o Tempo d’attesa al canale di

uscita per la trasmissione

o Dipende dal livello di

congestione del router

A

B

propagazione trasmissione

(2)

Ritardi nelle reti a commutazione di

pacchetto

Ritardo di Trasmissione:

‰ R=larghezza di banda del

canale (bps)

‰ L=lunghezza del pacchetto

(bits)

‰ Tempo per spedire i bit

lungo il canale = L/R

Ritardo di Propagazione:

‰ d = lunghezza del canale fisico

(m)

‰ s = velocità di propagazione

nel mezzo (~2x108 m/sec)

‰ Ritardo di propagazione = d/s

A

B

propagazione trasmissione

Nota:

s ed R sono quantità

MOLTO diverse!

(3)

Ritardo di accodamento

‰ R=larghezza di banda del

canale (bps)

‰ L=lunghezza del pacchetto

(bits)

‰ a=velocità media di arrivo

di pacchetti

intensità di traffico = L a / R

‰

L a / R ~ 0: ritardo medio di accodamento piccolo

‰

L a / R -> 1: ritardo medio di accodamento diventa

grande

(4)

Ritardi e cammini “veri” in Internet

1 cs-gw (128.119.240.254) 1 ms 1 ms 2 ms 2 border1-rt-fa5-1-0.gw.umass.edu (128.119.3.145) 1 ms 1 ms 2 ms 3 cht-vbns.gw.umass.edu (128.119.3.130) 6 ms 5 ms 5 ms 4 jn1-at1-0-0-19.wor.vbns.net (204.147.132.129) 16 ms 11 ms 13 ms 5 jn1-so7-0-0-0.wae.vbns.net (204.147.136.136) 21 ms 18 ms 18 ms 6 abilene-vbns.abilene.ucaid.edu (198.32.11.9) 22 ms 18 ms 22 ms 7 nycm-wash.abilene.ucaid.edu (198.32.8.46) 22 ms 22 ms 22 ms 8 62.40.103.253 (62.40.103.253) 104 ms 109 ms 106 ms 9 de2-1.de1.de.geant.net (62.40.96.129) 109 ms 102 ms 104 ms 10 de.fr1.fr.geant.net (62.40.96.50) 113 ms 121 ms 114 ms 11 renater-gw.fr1.fr.geant.net (62.40.103.54) 112 ms 114 ms 112 ms 12 nio-n2.cssi.renater.fr (193.51.206.13) 111 ms 114 ms 116 ms 13 nice.cssi.renater.fr (195.220.98.102) 123 ms 125 ms 124 ms 14 r3t2-nice.cssi.renater.fr (195.220.98.110) 126 ms 126 ms 124 ms 15 eurecom-valbonne.r3t2.ft.net (193.48.50.54) 135 ms 128 ms 133 ms 16 194.214.211.25 (194.214.211.25) 126 ms 128 ms 126 ms 17 * * *

traceroute:

router, ritardi sul cammino

sorgente-destinazione path: vedi anche pingplotter, ed altri

(5)

Struttura di Internet: rete di reti

‰

a grandi linee gerarchica

‰

national/international

backbone providers (NBP)

o e.g. BBN/GTE, Sprint,

AT&T, IBM, UUNet

o si inter-connettono

direttamente, o tramite

Network Access Point (NAP)

‰

ISP regionali

o connettono ai NBP

‰

ISP locali

, privati,

istituzioni

o connettono agli ISP regionali

NBP A

NBP B

NAP

NAP

ISP regionali ISP regionali ISP locali ISP locali

(6)

National Backbone Provider

e.g. Sprint US backbone network

(7)

Livelli di un protocollo

Le reti di telecomunicazione

sono complesse!

‰

molte componenti:

o

host

o

router

o

canali di comunicazione

(diversi mezzi

trasmissivi)

o

applicazioni

o

protocolli

o

hardware, software

Domanda:

Si può organizzare la

struttura di una rete?

O, almeno, la discussione?

(8)

Organizzazione di un viaggio aereo

‰

Una serie di passi

biglietto (acquisto) bagaglio (accettazione) uscita (imbarco) pista (decollo) rotta aerea biglietto (reclamo) bagaglio (ritiro) uscita (sbarco) pista (atterraggio) rotta aerea rotta aerea

(9)

Organizzazione di un viaggio

: vista diversa

Livelli: ogni livello implementa un servizio

o attraverso azioni interne al proprio livello

e confidando su servizi forniti dal livello sottostante biglietto (acquisto) bagaglio (accettazione) uscita (imbarco) pista (decollo) rotta aerea biglietto (reclamo) bagaglio (ritiro) uscita (sbarco) pista (atterraggio) rotta aerea rotta aerea

(10)

Viaggi aerei “a livelli”: i servizi

persone+bagaglio da bancone a bancone da ritiro-bagagli a ritiro-bagagli

persone: uscita di imbarco a uscita di sbarco trasferimento aereo da pista a pista

(11)

Implementazione

distribuita

delle funzionalità di

un livello

Aeropo

rto di partenza

Siti intermedi di traffico aereo

rotta aerea rotta aerea

Aeropo

rto d’arrivo

biglietto (acquisto) bagaglio (accett.) uscita (imbarco) pista (decollo) rotta aerea biglietto (reclamo) bagaglio (ritiro) uscita (sbarco) pista (atterraggio) rotta aerea

(12)

Perché i livelli?

Sistemi complessi:

‰

Una strutturazione esplicita consente

l’identificazione e le relazioni tra parti di un

sistema complesso

o

modello di riferimento

a livelli per lo studio

‰

Modularizzazione facilita il mantenimento e

l’aggiornamento di un sistema

o

La modifica dell’implementazione del servizio di

un livello è trasparente al resto del sistema

o

e.g., modifica nella procedura d’imbarco non

condiziona il resto del sistema “viaggio aereo”

(13)

Stack di protocolli Internet

‰ application: supporto per applicazioni di

rete

o ftp, smtp, http

‰ transport: trasferimento dati da host a

host

o tcp, udp

‰ network: instradamento di datagram da

mittente a destinazione

o ip, protocolli di routing

‰ link: trasferimento dati tra due elementi

vicini (connessi) delle rete

o ppp, ethernet

‰ physical: trasferimento di bits lungo i canali

di comunicazione fisici

application

transport

network

link

physical

(14)

Funzionalità dei livelli

‰

Ogni livello può eseguire uno, o più, dei

seguenti tipi di compito

o

controllo degli errori

o

controllo di flusso

o

segmentazione e ricostruzione

o

multiplexing/demultiplexing

o

“setup” di connessione

(15)

Struttura a livelli: comunicazione logica

application transport network link physical application transport network link physical application transport network link physical application transport network link physical network link physical

Ogni livello:

‰

distribuito

‰

“entità”

implementano

funzioni di un

livello ad ogni

nodo

‰

entità eseguono

azioni, scambiano

messaggi con i

propri “pari”

(16)

Struttura a livelli: comunicazione logica

application transport network link physical application transport network link physical application transport network link physical application transport network link physical network link physical dati dati

E.g.: transport

‰ Riceve dati dall’

application ‰ Aggiunge indirizzamento, informazioni sul controllo di affidabilità per formare un segmento ‰ spedisce il segmento al proprio “pari” ‰ Attende che il “pari” confermi la ricezione (con un “ack”) dati transport transport ack

(17)

Struttura a livelli: comunicazione fisica

application transport network link physical application transport network link physical application transport network link physical application transport network link physical network link physical dati dati

(18)

Protocolli a livelli e dati

Ogni livello prende dati dal livello superiore

‰

Aggiunge informazioni in un header (intestazione)

per creare una nuova unità di dati

‰

Passa la nuova unità di dati al livello sottostante

application

transport

network

link

physical

application

transport

network

link

physical

sorgente

destinazione

M M M M Ht Ht Hn Ht Hn Hl M M M M Ht Ht Hn Ht Hn Hl messaggio segmento datagram frame

(19)

Storia di Internet

‰ 1961: Kleinrock – teoria

delle code dimostra l’efficacia della

commutazione di pacchetto

‰ 1964: Baran –

commutazione di pacchetto nelle reti militari

‰ 1967: ARPAnet concepita

dal Advanced Research Projects Agency

‰ 1969: primo nodo ARPAnet

operativo ‰ 1972: o Dimostrazione pubblica di ARPAnet o NCP (Network Control Protocol) primo protocollo host-host o Primo programma di e-mail o ARPAnet ha 15 nodi

1961-1972: primi principi della commutazione di

pacchetti

(20)

Storia di Internet

‰ 1970: rete satellitare

ALOHAnet nelle Hawaii

‰ 1973: Metcalfe nella sua tesi

di PhD propone Ethernet

‰ 1974: architettura proposta

da Cerf e Kahn per

l’interconnessione di reti

‰ fine anni 70: architetture

proprietarie: DECnet, SNA, XNA

‰ fine anni 70: commutazione di

pacchetti di lunghezza fissa (precursore di ATM)

‰ 1979: ARPAnet ha 200 nodi

Principi di internetworking di Cerf e Kahn:

o minimalismo, autonomia –

nessuna modifica interna richiesta per

interconnettere reti

o modello di servizio best

effort (al meglio)

o router che non mantengono

lo stato delle connessioni

o controllo decentralizzato

Definiscono l’architettura dell’attuale Internet

1972-1980: Internetworking, nuove reti e reti

proprietarie

(21)

Storia di Internet

‰ 1983: diffusione di TCP/IP ‰ 1982: definizione del

protocollo smtp per l’e-mail

‰ 1983: definizione del DNS

per la traduzione da nome ad indirizzo IP

‰ 1985: definizione del

protocollo ftp

‰ 1988: controllo di

congestione in TCP

‰

Nuove reti nazionali:

Csnet, BITnet,

NSFnet, Minitel

‰

100,000 host connessi

alla confederazione di

reti

(22)

Storia di Internet

‰ Primi anni 90: disarmo di

ARPAnet

‰ 1991: l’NSF allenta le

restrizioni sull’uso

commerciale di NSFnet (in disarmo nel 1995)

‰ Primi anni 90: WWW

o ipertesti [Bush 1945,

Nelson 1960’s]

o HTML, http: Berners-Lee o 1994: Mosaic, più tardi

Netscape o fine anni 90:

Fine anni 90:

‰

50 milioni di

computers on

Internet (stime)

‰

più di 100 milioni di

utenti (stime)

‰

canali di

comunicazione dei

backbone operanti a

1 Gbps

Anni 90: commercializzazione, il WWW

(23)

Introduzione: sommario

Molto materiale

‰ panoramica su Internet ‰ cos’è un protocollo?

‰ network edge, core, access

network

o commutazione di pacchetto e

di circuito

‰ prestazioni: perdite, ritardi

‰ strutturazione a livelli e modelli

di servizio

‰ backbone, NAP, ISP ‰ storia

Ora avete:

‰

Una panoramica sulle

problematica

(24)

Parte 2: livello Application

Obiettivi: ‰ Aspetti concettuali ed implementativi di protocolli di applicazioni di rete o Paradigma client-server

o Modello dei servizi

‰ Imparare concetti sui

protocolli esaminando protocolli a livello

applicazione molto diffusi

Altri obiettivi

‰

Protocolli specifici:

o http o ftp o smtp o pop o dns ‰

Programmazione di

applicazioni di rete

o socket API

(25)

Applicazioni e protocolli a livello

application

Applicazione: processi distribuiti comunicanti

o vengono eseguiti sugli host di

rete come processi utente

o scambio di messaggi per

implementare l’applicazione

o e.g., email, ftp, Web

Protocolli a livello Application

o una parte di un’applicazione o definiscono i messaggi scambiati dall’applicazione e le azioni intraprese o Usano i servizi di comunicazione forniti da application transport network data link physical application transport network data link physical application transport network data link physical

(26)

Applicazioni di rete: terminologia

Processo:

programma in

esecuzione in un host.

‰

sullo stesso host, due

processi comunicano

usando l’

interprocess

communication

(definito

dal sistema operativo).

‰

processi in esecuzione

su host diversi

comunicano con un

protocollo a livello

‰ user agent: processo

software, che si

interfaccia con l’utente “verso l’alto” e con la rete “verso il basso”.

o implementa il protocollo

a livello application

o Web: browser

o E-mail: mail reader

o streaming audio/video:

(27)

Paradigma Client-server

Una tipica applicazione di rete si compone di due parti: client e

server application transport network data link physical application transport network data link physical

Client:

‰ Avvia il contatto con il server

(“parla per primo”)

‰ Solitamente, richiede un

servizio al server

‰ Web: il client è implementato

nel browser; e-mail: in mail reader

request

reply

Server:

‰ Fornisce il servizio richiesto al client ‰ e.g., il Web server spedisce la pagina

(28)

Protocolli a livello application

API: application

programming interface

‰

Definisce l’interfaccia

tra l’applicazione ed il

livello transport

‰

socket: Internet API

o Due processi comunicano

spedendo dati nel socket, e leggendo dati dal socket

domanda:

come fa un

processo ad

identificare l’altro

processo con il quale

vuole comunicare?

o Indirizzo IP dell’ host sul

quale è in esecuzione l’altro processo

o “numero di porta” –

permette all’ host che riceve di determinare a quale dei processi che sta eseguendo (locali) debba essere recapitato

(29)

Applicazioni, socket e livello trasporto

Internet TCP con variabili, buffer processo socket sotto il controllo del programmatore sotto il controllo del sistema operativo host o server TCP con variabili, buffer socket sotto il controllo del programmatore sotto il controllo del sistema operativo host o server processo

(30)

Di quale servizio di trasporto necessita

un’applicazione?

Perdita di dati

‰ Alcune applicazioni (e.g., audio)

possono tollerare perdite

‰ Altre applicazioni (e.g.,

trasferimento file, telnet) richiedono un trasferimento dati affidabile al 100%

Time-sensitive

‰

Alcune applicazioni

(e.g., telefonia su

Internet, giochi

interattivi) richiedono

Larghezza di banda

‰

Alcune applicazioni (e.g.,

multimediali) richiedono

un ammontare minimo di

larghezza di banda per

essere “efficaci”

‰

Altre applicazioni

(“applicazioni elastiche”)

fanno uso di qualunque

larghezza di banda

(31)

Requisiti del servizio di Trasporto di

applicazioni comuni

Applicazione trasferimento file e-mail documenti Web real-time audio/video stored audio/video giochi interattivi applicazioni finanziarie Perdite dati senza senza tollerante tollerante tollerante tollerante senza Larghezza di banda elastica elastica elastica audio: 5Kb-1Mb video:10Kb-5Mb come sopra alcuni Kbps elastica Time Sensitive no no no

si, alcuni 100 msec si, pochi secs

si, alcuni 100 msec si e no

(32)

Servizi di trasporto in Internet

Servizio TCP:

‰ connection-oriented: fase

iniziale di “setup” necessaria tra client e server

‰ trasporto affidabile tra

processo mittente e destinatario

‰ controllo di flusso: il mittente

non sovraccaricherà il ricevitore

‰ controllo di congestione:

regolazione della velocità del mittente quando la rete è sovraccarica

Servizio UDP:

‰ trasferimento dati non

affidabile tra processo mittente e processo destinatario

‰ non fornisce: setup della

connessione, affidabilità, controllo di flusso,

controllo di congestione, tempi o larghezza di

banda garantiti

Domanda: perché mai esiste UDP?

(33)

Applicazioni Internet: protocolli a livello

applicazione e transport

Applicazione e-mail accesso a terminale remoto Web trasferimento file streaming multimedia file server remoto telefonia su Internet Protocollo a livello applicazione smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] proprietario (e.g. RealNetworks) NSF proprietario (e.g., Vocaltec) Protocollo a livello transport sottostante TCP TCP TCP TCP TCP or UDP TCP or UDP solitamente UDP

(34)

Il Web: il protocollo http

http: hypertext transfer

protocol

‰ Protocollo a livello

applicazione per il Web

‰ Modello client/server

o client: il browser che

richiede, riceve e mostra oggetti Web

o server: Web server che

spedisce oggetti in risposta ad una richiesta ‰ http1.0: RFC 1945 ‰ http1.1: RFC 2068-2616 PC che esegue Explorer Server che esegue NCSA Web server

Mac che esegue Navigator http req uest http request http respons e http respons e

(35)

Il WEB: terminologia

‰

pagina WEB (documento):

collezione di oggetti

‰

oggetto:

un file (HTML, JPEG, …)

‰

file HTML base:

con direttive e riferimenti ad

altri oggetti

‰

URL (Uniform Resource Locator):

meccanismo di

identificazione risorse. Si compone del nome del

host sul quale risiede l’oggetto e il path-name

dell’oggetto

o

www.di.unito.it/various/presentation_en.html

(36)

Il protocollo http

http: usa servizio TCP:

‰ il client avvia una

connessione TCP (crea un socket) con il server, porta 80

‰ il server accetta la

connessione TCP dal client

‰ vengono scambiati messaggi

http (messaggi del protocollo di livello applicazione) tra il browser (client http) ed il Web server (server http)

‰ la connessione TCP viene chiusa

http è “stateless”

‰ il server nono mantiene alcuna informazione sulle richieste passate dei client

I protocolli che mantengono lo stato sono complessi!

‰ Tutta la storia passata della

connessione (stato) deve essere mantenuta,

memorizzata

‰ se server o client subiscono un

crash, la loro conoscenza dello stato può essere inconsistente

(37)

http: esempio

Supponiamo l’utente digiti l’URL

www.someSchool.edu/someDepartment/home.index

1a. il client http inizia una

connessione TCP al server http (che è un processo)

all’indirizzo

www.someSchool.edu. La porta 80 è il default per i server

http.

2. il client http spedisce il messaggio http request message (contenente l’URL) nel socket della connessione TCP

1b. il server http sull’ host

www.someSchool.edu in attesa di connessioni TCP alla porta 80. “accetta” la connessione, notificandola al client

3. il server http riceve il

messaggio di richiesta, forma un messaggio http response message contenente l’oggetto richiesto

(contiene testo e 10 riferimenti ad

(38)

http: esempio (continuazione)

5. il client http riceve il messaggio di risposta

contenente il file html e lo mostra. Parsifica (analizza) il file html, trova i riferimenti a 10 oggetti jpeg.

6. passi 1-5 si ripetono per ognuno dei 10 oggetti jpeg.

4. il server http chiude la connessione TCP.

(39)

Connessioni persistenti e non persistenti

Non persistenti

‰ http/1.0: il server parsifica

le richieste, risponde, chiude la connessione TCP

‰ 2 RTT (round trip time) per

ottenere l’oggetto

o connessione TCP

o richiesta/trasferimento

oggetto

‰ Ogni trasferimento risente

della bassa velocità iniziale di trasferimento di TCP

‰ molti browser aprono

connessioni multiple in parallelo

Persistenti

‰ default per http/1.1 ‰ usando la stessa connessione TCP: il server, parsifica richieste,

risponde, parsifica nuove richieste……

‰ il client spedisce le

richieste per tutti gli oggetti a cui si fa

riferimento non appena riceve il file HTML base.

‰ Meno RTT, meno slow

start.

(40)

Connessioni persistenti e non persistenti

open close open close open close

client

server

HTTP 1.0

open close

client

server

HTTP 1.1

open close

client

server

HTTP 1.1

(41)

Formato dei messaggi http: request

‰

due tipi di messaggi http:

request, response

‰

http request message:

o ASCII (formato human-readable)

GET /somedir/page.html HTTP/1.0 Host: www.someschool.edu

User-agent: Mozilla/4.0

Accept: text/html, image/gif,image/jpeg Accept-language:fr

(extra carriage return, line feed)

request line

(comandi GET, POST, HEAD,…)

linee header Carriage return,

(42)
(43)

http request message: i metodi

‰

GET: richiede il trasferimento di una

risorsa (oggetto)

‰

OPTIONS: richiede le opzioni di

comunicazione associate ad un oggetto o al

server

‰

HEAD: simile al GET ma l’oggetto non viene

trasferito (controllo stato dei documenti)

‰

POST: per spedire dati al server

(44)

http request message: l’header

‰

Accept:

specifica i tipi di file accettati come

risposta.

‰

Accept-Encoding:

specifica il metodo di

compressione accettato.

‰

Accept-Language:

specifica i linguaggi accettati

(nel caso in cui un documento sia disponibile in più

lingue).

‰

Authorization:

e Proxy Authorization:

sono utilizzati per inviare le credenziali dell'utente

e servono per entrare in siti privati dove viene

chiesto user-name e password.

(45)

http request message: l’header

‰

Host:

specifica l'indirizzo del server a cui

è indirizzata la richiesta.

‰

If-Modified-Since:

restituisce il

documento solo se è stato modificato

recentemente.

‰

User-Agent:

specifica nome e versione

del programma client.

(46)

Formato dei messaggi http: response

HTTP/1.0 200 OK

Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix)

Last-Modified: Mon, 22 Jun 1998 …... Content-Encoding: gzip

Content-Length: 6821 Content-Type: text/html

data data data data data ...

status line (codice di stato del protocollo frase di stato) linee header dati, e.g., file html richiesto

(47)

http response message: formato generale

version version version

version status codestatus codestatus codestatus code phrasephrasephrasephrase

status

status

status

status

line

line

line

line

(48)

Codici di stato per http response

200 OK

o richiesta con successo, l’oggetto richiesto segue in questo

messaggio

301 Moved Permanently

o L’oggetto richiesto è stato spostato, la nuova locazione è

specificata dopo in questo messaggio (Location:)

400 Bad Request

o request message non compreso dal server

404 Not Found

Nella prima linea del response message server->client.

Alcuni codici d’esempio:

(49)

Provate http (lato client)

1. Collegatevi con telnet ad un Web server:

Apre una connessione TCP sulla porta 80 (porta di default per un http server) su

www.eurecom.fr. Qualunque cosa si digiti viene spedita sulla porta 80 a www.eurecom.fr

telnet www.eurecom.fr 80

2. Digitate un http request GET:

GET /~ross/index.html HTTP/1.0 Digitando questo (digitate due volte

carriage return), spedite un minimale (ma completo)

GET request al server http

(50)

Interazione utente-server: autenticazione

Autenticazione: controllo

dell’accesso ai contenuti sul server

‰ credenziali per autorizzazione:

tipicamente nome, password

‰ stateless: il client deve

presentare un’autorizzazione ad ogni richiesta

o authorization: header line in

ogni request

o senza authorization: header,

il server rifiuta l’accesso, e spedisce

WWW authenticate:

header line nel response

client

server

solito http request msg 401: authorization req. WWW authenticate: solito http request msg + Authorization: <cred> solito http response msg solito http request msg + Authorization: <cred>

(51)

Cookies: mantenere lo “stato”

‰ # generato dal server,

# ricordato dal server, usato in futuro per:

o autenticazione o ricordare le preferenze dell’utente, scelte precedenti ‰ il server manda un

“cookie” al client nel response message

Set-cookie: 1678453

‰ il client presenta il cookie

in richieste future

client

server

solito http request msg solito http response + Set-cookie: # solito http request msg cookie: # solito http response msg solito http request msg cookie: # solito http response azioni specifiche per il cookie azioni specifiche per il cookie

(52)

Conditional GET: caching lato client

‰ Obiettivo: non spedire un

oggetto se il client ha una versione in cache aggiornata

‰ client: specifica la data

della copia nella cache nel http request

If-modified-since: <date>

‰ server: l’http response non

contiene l’oggetto se la

copia in cache è aggiornata:

HTTP/1.0 304 Not Modified

client

server

http request msg If-modified-since: <date> http response HTTP/1.0 304 Not Modified oggetto non modificato http request msg If-modified-since: <date> http response oggetto modificato

(53)

Web Cache (proxy server)

‰ utente configura il

browser: accesso Web via web cache

‰ Il client manda tutti gli

http request al web cache

o oggetto nel web cache: il

web cache spedisce l’oggetto

o altrimenti il web cache

richiede l’oggetto dal server d’origine, quindi lo spedisce al client

Obiettivo:

soddisfare le richieste del client senza coinvolgere il server originale

client Proxy server client http req uest http request http respons e http respons e http req uest http respons e server d’origine server

(54)

Perché il Web Caching?

Se:

il web cache è

“vicino” al client (e.g.,

nella stessa rete)

‰

tempi di risposta

inferiori: il web cache

è “più vicino” al client

‰

Diminuzione del

traffico verso server

distanti

o i canali esterni alla rete

del ISP

locale/istituzionale sono spesso colli di bottiglia

server d’origine Internet pubblica rete istituzionale 10 Mbps LAN canale d’accesso a 1.5 Mbps cache istituzionale

(55)

Posta Elettronica

Tre componenti principali:

‰ user agent ‰ mail server

‰ simple mail transfer

protocol: smtp

User Agent

‰ alias “mail reader”

‰ comporre, editare, leggere

messaggi di posta

‰ e.g., Eudora, Outlook, elm,

Netscape Messenger ‰ Messaggi in uscita e in arrivo memorizzati su un user mailbox coda di messaggi in uscita mail server user agent user agent user agent mail server user agent user mail server user agent

SMTP

SMTP

SMTP

(56)

Posta Elettronica: mail servers

Mail Server

‰ mailbox contiene messaggi in

arrivo (ancora da leggere) per l’utente

‰ coda di messaggi in uscita

(da spedire)

‰ protocollo smtp tra mail

server per spedire messaggi di posta elettronica

o lato client: sul mail

server del mittente

o lato server: sul mail

server del destinatario

o un mail server ospita

mail server user agent user agent user agent mail server user agent mail server user agent

SMTP

SMTP

SMTP

(57)

Posta Elettronica: smtp

[RFC 821]

‰ usa TCP per trasferire in maniera affidabile messaggi di

posta elettronica dal client al server, porta 25

‰ trasferimento diretto: dal sending server al receiving

server

‰ tre fasi del trasferimento

o handshaking (greeting-saluti) o trasferimento del messaggio o chiusura

‰ Interazione comandi/risposte

o comandi: testo ASCII

o risposte: codici di stato e frasi (come HTTP e FTP)

(58)

Scenario tipico

1.

Alice usa il suo user agent per l’email, gli fornisce

l’indirizzo di Bob (bob@hamburger.edu), compone

il messaggio, invia il comando di spedizione

2.

lo user agent spedisce il messaggio al mail server

di Alice il quale lo inserice in una coda di messaggi

in uscita

3.

Il lato client SMTP, in esecuzione sul mail server

di Alice, esamina il messaggio nella coda, apre una

connessione TCP (porta 25) verso un SMTP

server in esecuzione sul mail server di Bob

4.

Dopo una fase iniziale di handshaking, il client

(59)

Scenario tipico

5.

Sul mail server di Bob, il lato server di

SMTP riceve il messaggio. Il mail server di

Bob lo deposita nella mailbox di Bob.

6.

Bob userà il suo user agent nel momento in

(60)

Scenario tipico

‰ Solitamente, SMTP non usa mail server intermedi

‰ Se il mail server di Bob

non è in funzione il messaggio rimane nel mail server di Alice

o nuovi tentativi di spedizione (e.g., ogni 30 minuti)

o dopo molti tentativi (e.g., alcuni giorni) il messaggio viene rimosso ed Alice viene avvertita con un email

(61)

Formato dei messaggi di posta

smtp: protocollo per lo scambio di messaggi di email

RFC 822: standard per i messaggi in formato testo:

‰ header lines, e.g.,

o To: o From: o Subject:

diversi dai comandi smtp !

‰ body

o il “messaggio”, solo caratteri

ASCII

‰ header lines aggiunte dal lato

server del SMTP che riceve

header

body

linea vuota

(62)

Esempio di interazione smtp

S: 220 hamburger.edu C: HELO crepes.fr

S: 250 Hello crepes.fr, pleased to meet you C: MAIL FROM: <alice@crepes.fr>

S: 250 alice@crepes.fr... Sender ok C: RCPT TO: <bob@hamburger.edu>

S: 250 bob@hamburger.edu ... Recipient ok C: DATA

S: 354 Enter mail, end with "." on a line by itself C: Do you like ketchup?

C: How about pickles? C: .

S: 250 Message accepted for delivery C: QUIT

(63)

Provate l’interazione smtp:

‰

telnet servername 25

‰

vedete la risposta 220 dal server

‰

digitando i comandi HELO, MAIL FROM, RCPT TO,

DATA, QUIT

vi permette di spedire un email senza usare uno user

agent (client)

(64)

smtp: ultime nozioni

‰ smtp usa connessioni

persistenti

‰ smtp richiede che i

messaggi (header e body) siano in ASCII a 7-bit

‰ alcune stringhe di caratteri

non sono permesse nel messaggio (e.g.,

CRLF.CRLF). Quindi il messaggio deve essere codificato (di solito, o base-64 o quoted printable) ‰ il server smtp usa per

Confronto con http:

‰ http: pull ‰ email: push ‰ entrambi hanno un’interazione

comando/risposta con testo ASCII e con codici di stato

‰ http: ogni oggetto è

incapsulato nel proprio messaggio di risposta

‰ smtp: oggetti multipli

(65)

multi-Formato messaggio: estensioni multimediali

‰ MIME: (multipurpose internet mail extension) RFC 2045,

2056

‰ linee aggiuntive nel header del messaggio dichiarano il

tipo di contenuto MIME

From: alice@crepes.fr To: bob@hamburger.edu

Subject: Picture of yummy crepe. MIME-Version: 1.0

Content-Transfer-Encoding: base64 Content-Type: image/jpeg

base64 encoded data ... ... ...base64 encoded data

tipo di dati multimedia, sotto-tipo, dichiarazione parametri metodo usato per

codificare dati versione MIME

(66)

Tipi MIME

Content-Type: type/subtype; parameters

Text

‰ esempi di sotto-tipo: plain, html

Image

‰ esempi di sotto-tipo: jpeg, gif

Audio

‰ esempi di sotto-tipo:

basic (8-bit mu-law

encoded), 32kadpcm (32 kbps coding)

Video

‰ esempi di sotto-tipo: mpeg, quicktime

Application

‰ altri dati che devono

essere elaborati dal reader prima che siano

“visualizzabili”

‰ esempi di sotto-tipo:

(67)

Tipo Multipart

From: alice@crepes.fr To: bob@hamburger.edu

Subject: Picture of yummy crepe. MIME-Version: 1.0

Content-Type: multipart/mixed; boundary=98766789

--98766789

Content-Transfer-Encoding: quoted-printable Content-Type: text/plain

Dear Bob,

Please find a picture of a crepe. --98766789

Content-Transfer-Encoding: base64 Content-Type: image/jpeg

base64 encoded data ... ...

(68)

Protocolli d’accesso alla Mail

‰ SMTP: recapito/memorizzazione al server del destinatario ‰ Protocollo d’accesso alla mail: recupero dal server

o POP: Post Office Protocol [RFC 1939]

• autorizzazione (agent <--> server) e download

o IMAP: Internet Mail Access Protocol [RFC 1730]

• più funzionalità (più complesso)

• manipolazione dei messaggi memorizzati sul server

o HTTP: Hotmail , Yahoo! Mail, etc.

user agent mail server del mittente user agent

SMTP

SMTP

POP3 o

IMAP

mail server del destinatario

(69)

Protocollo POP3

lo user agent (client) apre una

connessione TCP (porta 110) con il mail server (server)

fase di autorizzazione

‰ comandi client:

o user: dichiarazione username o pass: password

‰ risposte del server

o +OK o -ERR

fase di transazione,

client:

‰ list: elenca numeri di messaggio

‰ retr: recupera messaggio tramite numero C: list S: 1 498 S: 2 912 S: . C: retr 1 S: <message 1 contents> S: . C: dele 1 C: retr 2 S: <message 1 contents> S: . C: dele 2

S: +OK POP3 server ready C: user alice

S: +OK

C: pass hungry

(70)

ftp: il file transfer protocol

‰ trasferimento file da/a host remoto ‰ modello client/server

o client: lato che inizia il trasferimento (o da o verso

remoto)

o server: host remoto

‰ ftp: RFC 959 file transfer FTP server Interfaccia utente FTP FTP client file system locale file system remoto utente su un host

(71)

ftp: controllo e connessione dati separati

‰ il client ftp contatta il server

ftp sulla porta 21,

specificando TCP quale protocollo di trasporto

‰ si aprono due connessioni TCP

parallele:

o controllo: scambio di

comandi, risposte tra client e server.

controllo “out of band”

o dati: file di dati verso/dal

server

‰ server ftp mantiene lo

“stato”: directory corrente,

client FTP serverFTP controllo connessione TCP porta 21 connessione dati TCP porta 20

(72)

Comandi e risposte ftp

Esempi di comandi:

‰ Spediti come testo ASCII

sul canale di controllo

‰ USER username

‰ PASS password

‰ LIST restituisce la lista dei file nella directory corrente

‰ RETR filename reperisce il file

‰ STOR filename scrive il file sull’ host remoto

Esempi di codici di ritorno

‰ Codice di stato e frase (come

per http)

‰ 331 Username OK, password required

‰ 125 data connection

already open; transfer starting

‰ 425 Can’t open data connection

Riferimenti

Documenti correlati

We can go on and count the total number of summands i in all the compositions of number n.. represents the sequence studied in paper [8]. This recurrence relation can be explained

A color Doppler ultrasound scan should be performed as the first approach and an expect- ant management should be taken into account especially with a patient of childbearing age

Relative expression of Foxp3 in CD4 + CD25 + lymphocytes was significantly increased in the group treated with vitHEK cells compared to endotoxemic mice, which received homHEK

Key words: Central obesity; Waist circumference; Waist- to-height ratio; Waist to hip ratio; Developing countries Core tip: This study presents the first central obesity

Se Barbara Innocenti analizza il trattato del medico ottocentesco Giuseppe Ferrario sugli effetti fisici e psicofisici della musica e della declamazione e sulle conseguenti

[r]