35
SERVIZI DI RETE PROF. MAURIZIO NALDI ABILITÀ INFORMATICHE

SERVIZI DI RETE · 2018-11-15 · Fisico Rete Sessione Applicazione HOST A Fisico Rete Router Bit Frame Pacchetto Fisico Rete Router Bit Frame Pacchetto Bit Frame Pacchetto Fisico

  • Upload
    phamnga

  • View
    216

  • Download
    0

Embed Size (px)

Citation preview

SERVIZI DI RETEPROF. MAURIZIO NALDI ABILITÀ INFORMATICHE

PILE PROTOCOLLARI

Fisico

Rete

Sessione

Applicazione

HOST A

Fisico

Rete

Router

Bit

Frame

Pacchetto

Fisico

Rete

Router

Bit

Frame

Pacchetto

Bit

Frame

Pacchetto

Fisico

Rete

Sessione

Applicazione

HOST B

Unità di trasmissione dati a livello trasporto

Unità di trasmissione dati a livello sessione

Unità di trasmissione dati a livello presentazione

Unità di trasmissione dati a livello applicazione

Limite della sottorete di interconnessione

Presentazione

Trasporto

Data link Data link Data link Data link

Trasporto

Presentazione

PROTOCOLLI TCP/IP

• Coprono 2 livelli

– Trasporto: controlla l’affidabilità del trasporto end-to-end

– Rete: protocollo IP di invio ed instradamento dei singoli pacchetti di dati sulla rete

• Indirizzo IP = indirizzo dei dispositivi in rete

LA STRUTTURA DI INTERNET

infrastruttura di connessione:livello di connessione fisica

TCPprotocolli di trasmissione:livello di trasmissione

HTTPFTP

TELNET

SMTP/POPprotocollo applicativo: livello applicativo

World Wide WebCopia di file

Accesso remotoPosta elettronicail contenuto della

comunicazione …

IPprotocollo di instradamento:livello di rete

UDP

PROTOCOLLI TCP E IP

• Il TCP Suddivide i dati in uscita in pacchetti a cui viene aggiunta un’intestazione (header) con tutte le informazioni sulla destinazione (Internet è una rete a commutazione di pacchetto)

– I singoli pacchetti (datagrammi) hanno piccole dimensioni (<1500 byte)

– I pacchetti sono spediti separatamente e poi riassemblati dal ricevente

• TCP controlla se la comunicazione va a buon fine

– conferma esplicita (ack) di avvenuta ricezione

– in assenza di ack la trasmissione viene ripetuta

• L’IP provvede all’instradamento dei messaggi.

Rete 2Rete 1

Indirizzo del punto di collegamento alla sottorete

Protocollo di accesso alla rete 1

Livello Fisico (collegato a rete 1)

Livello IP

Livello TCP

Livello Applicazione

App. XApp. Y

HOST A

Indirizzo di rete(globale)

Punti di accesso al servizio (porte)

Protocollo di accesso alla rete

Livello Fisico

Livello IP

ROUTER

Protocollo di accesso alla rete 2

Livello Fisico (collegato a rete 2)

Livello IP

Livello TCP

Livello Applicazione

App. XApp. Y

HOST B

Connessione logica (TCP)

INDIRIZZI TCP/IP

DA UN LIVELLO ALL’ALTRO• Ogni livello attraversato aggiunge un’intestazione (header)

(contiene informazioni utili alle funzioni proprie di quel livello):

– TCP (porta TCP, checksum, numero d’ordine, …)

– IP (indirizzo host destinazione, indirizzo host mittente, …)

– Rete (indirizzo MAC destinazione, indirizzo MAC mittente, …)

– … Dati utente Flusso dati proveniente

dall’applicazione

Intestazione TCP Unità dati a livello TCP

Intestazione IP Unità dati a livello IP

(datagramma)

Intestazione di rete Unità dati a livello rete

(frame)

Nota: indirizzo MAC (Medium Access Control) assegnato in modo univoco dal produttore ad ogni scheda di rete

AFFIDABILITÀ SU TCP/IP

• IP è un protocollo connectionless (non orientato alla connessione)

– frammenta il flusso dei dati in pacchetti;

– ogni pacchetto inviato a destinazione lungo percorsi (potenzialmente) distinti;

– il controllo di integrità (checksum) consente soltanto la verifica dell’intestazione non dei dati;

– attenzione:

• non c’è garanzia che tutti i pacchetti arrivino a destinazione né che arrivino “in ordine”

• la correttezza e l’ordine di ricezione dei dati devono essere assicurati da protocolli di livello più elevato.

AFFIDABILITÀ SU TCP/IP

• TCP è un protocollo connection-oriented (orientato alla connessione)

– Stabilisce preliminarmente una connessione

– garantisce la consegna di un flusso di dati completo di tutte le sue parti, ordinato correttamente e senza duplicazioni

– il controllo di integrità riguarda sia l’intestazione TCP sia i dati

– il protocollo gestisce le situazioni di congestione del traffico

AFFIDABILITÀ SU TCP/IP

• La combinazione delle due modalità permette di ottenere sia una buona efficienza di trasmissione sia una elevata affidabilità:

– OK per applicazioni client-server;

– Non necessaria dove l’affidabilità è requisito meno essenziale della leggerezza del protocollo. In questi casi che corrispondono, ad esempio a trasmissione in streaming o comunicazioni VoIP, il TCP può essere sostituito con altri protocolli (e.g., UDP - User Datagram Protocol).

WORLD WIDE WEB: TERMINOLOGIA ESSENZIALE

• Pagina Web: – È costituita da “oggetti” (di solito: pagina HTML iniziale+oggetti indirizzati) – È indirizzata da un URL

• Uniform Resource Locator – Identifica un oggetto nella rete e specifica il modo per accedere ad esso – Ha due componenti: nome dell’host e percorso nell’host:

• Il browser è un user agent per il Web :

–MS Internet Explorer –Firefox –Chrome –Safari –etc.

• Un server per il Web è detto semplicemente Web server:

–Apache (open source) –MS Internet Information Server –etc.

http://www.cersi.it/testcenter

APPLICATION LAYER: WORLD WIDE WEB

▸ Si basa sul protocollo HTTP (HyperText Transfer Protocol) che gestisce l’interazione tra un user agent (browser) e un server web

▸ Client e server si scambiano dei messaggi

▸ Richieste da parte del client

▸ Risposte da parte del server

▸ Più precisamente:

▸ L’utente richiede una pagina residente su un server

▸ Il browser richiede una connessione TCP con il server

▸ Il server accetta la connessione iniziata dal browser

▸ Il browser ed il server si scambiano messaggi

▸ La connessione viene chiusa

URL (UNIFORM RESOURCE LOCATOR)

https://www.lumsa.it/maurizio-naldi?nf=2252&tpage=docenti

protocollo://indirizzo_IP[:porta]/cammino/file (http)

IL WEB: PROTOCOLLO HTTP

▸ http: HyperText Transfer Protocol

▸ Protocollo di livello applicativo per il Web

▸ Usa il modello client/server

▸ client: browser che richiede, riceve e “mostra” oggetti Web

▸ server: Web server che invia oggetti in risposta alle richieste

PC running Chrome

Server con Apache Web server

Mac running Firefox

http request

http request

http response

http response

IL PROTOCOLLO HTTPHTTP: usa TCP:

• Il client inizia una connessione TCP (crea un socket) verso il server sulla porta 80

• Il server accetta la connessione TCP dal client

• Vengono scambiati messaggi http (messaggi del protocollo di livelo applicativo) tra il browser (client http) e il Web server (server http)

• La connessione TCP è chiusa

• HTTP è “stateless”

• Il server non mantiene informazioni sulle richieste precedenti del client

ESEMPIO HTTP

L’ utente accede alla URL www.cersi.it/ecdl.html

1a. Il client http inizia una connessione TCP verso il server (processo) HTTP sull’host www.cersi.it. La porta 80 è quella standard (default) per i server HTTP.

2. Il client http invia un messaggio di richiesta HTTP (request message) del tipo

GET ecdl.html

1b. Il server HTTP presso l’host www.cersi.it è “in ascolto” sulla porta 80. “Accetta” la richiesta di connessione e ne dà conferma al client

3. Il server HTTP riceve il messaggio di richiesta, costruisce un messaggio di risposta (response message) contenente l’oggetto richiesto (ecdl.html), inoltra il messaggio nel socket

Tempo

(contiene testo e immagini)

ESEMPIO HTTP (CONT.)4. Il client http riceve il messaggio di risposta

contenente il file HTML. Analizzando il file HTML, il browser trova i riferimenti a 10 oggetti jpeg ed invia una richiesta GET per gli oggetti JPEG

7. Il server HTTP chiude la connessione TCP.

Tempo

5. Il server HTTPriceve il messaggio di richiesta, costruisce un messaggio di risposta (response message) contenente l’oggetto richiesto (ecdl.html), inoltra il messaggio nel socket

6. Il client invia l’ultimo ACK per TCP

SOCKET (LATO SERVER)▸ Un socket (presa, attacco) è uno dei terminali di un collegamento

bidirezionale tra due applicazioni di rete.

▸ Un socket è legato (bind) a una porta così che il livello TCP possa identificare l’applicazione a cui sono destinati i dati:

▸ l’indirizzo di un socket è la combinazione dell’indirizzo IP e del numero di porta (# telefono, interno).

▸ Ogni servizio utilizza un socket connesso ad uno specifico numero di porta

▸ La porta 25 è utilizzata per l’email

▸ La porta 80 per il web

▸ Il servizio mette in “ascolto” (listen) il socket in attesa che un cliente inoltri una richiesta di connessione.

SOCKET (LATO CLIENT)

▸ Un client che vuole usufruire del servizio:

▸ crea un socket

▸ si connette (connect) al servizio in ascolto

▸ specifica l’indirizzo IP del server ed il numero di porta corrispondente al servizio di cui vuole usufruire

▸ invia sul socket la sua richiesta

▸ rimane in attesa della risposta

▸ al termine chiude il socket.

SOCKET

FORMATO DEI MESSAGGI HTTP

• Due tipi di messaggi HTTP: request, response

• Messaggio HTTP request: – ASCII (formato testo leggibile)

GET /somedir/page.html HTTP/1.1 Host: www.cersi.it Connection: close User-agent: Mozilla/4.0 Accept: text/html, image/gif,image/jpeg Accept-language:fr

(extra carriage return, line feed)

Richiesta (GET, POST, HEAD commands)

header lines

Carriage return, line feed indica fine richiesta

Chiudi la connessione al termine della richiesta

FORMATO DEI MESSAGGI HTTP (RESPONSE)

HTTP/1.1 200 OK Connection: close Date: Thu, 06 Aug 1998 12:00:15 GMT Server: Apache/1.3.0 (Unix) Last-Modified: Mon, 22 Jun 1998 …... Content-Length: 6821 Content-Type: text/html data data data data data ...

status line (protocol codice di ritorno status phrase)

header lines

data, e.g., l’oggetto html richiesto Client HTTP 1.0: Server chiude connessione al

termine della richiesta Client HTTP 1.1: mantiene aperta la connessione oppure chiude se Connection: close

SINTESI DEL FLUSSO DEI MESSAGGI HTTP

POSTA ELETTRONICA

▸ Tre componenti principali :

▸ User agent (client)

▸ Server di posta

▸ Simple Mail Transfer Protocol: SMTP

▸ User Agent

▸ Interfaccia utente per l’email

▸ Composizione e lettura di messaggi di posta

▸ Es., Eudora, Outlook, elm, (oppure interfaccia web: gmail)

▸ I messaggi in ingresso/uscita memorizzati sul server

user mailbox

outgoing message queue

mail server

user agent

user agent

user agent

mail server

user agent

user agent

mail server

user agent

SMTP

SMTP

SMTP

POSTA ELETTRONICA: MAIL SERVER

▸ Mail Server

▸ Mailbox contenente messaggi (non ancora letti) per l’utente (nella casella di posta)

▸ Coda di messaggi in uscita (non ancora spediti)

▸ Protocollo SMTP tra i mail server per il recapito dei messaggi

▸ “client”: mail server che invia il messaggio

▸ “server”: mail server che riceve il messaggio

mail server

user agent

user agent

user agent

mail server

user agent

user agent

mail server

user agent

SMTP

SMTP

SMTP

COME VIENE RECAPITATO UN MESSAGGIO DI POSTA ELETTRONICA

1. Alice compone un messaggio e lo inoltra al suo Mail Server

2. Mail Server dispone il messaggio nella coda di messaggi in uscita

3. Mail Server di Alice apre una connessione smtp con il Mail Server di Bob ed inoltra il messaggio

4. Se il contatto fallisce, l’invio è ripetuto ogni trenta minuti

5. Se l’invio fallisce per diversi giorni (in genere 5), mail di notifica inviata ad Alice

6. Mail Server di Bob riceve il messaggio dal Mail Server di Alice e lo salva nella Mailbox (casella di posta) di Bob

7. Bob accede la propria Mailbox specificando Username e Password

8. Messaggi possono essere trasferiti dalla Mailbox all’host da cui Bob ha effettuato l’accesso (attraverso il POP) o consultati direttamente sull server (IMAP)

9. Bob legge il messaggio di Alice

POSTA ELETTRONICA: SMTP [RFC 821] (1982!)• Usa TCP per il trasferimento affidabile dei messaggi da client a server, porta 25

• Il trasferimento può coinvolgere più server

• Ad ogni passaggio (hop) si ripete la procedura

• Tre fasi

▸ Handshaking (saluto)

▸ Trasferimento di uno o più messaggi (connessione permanente)

▸ Chiusura

• Interazione mediante comandi/risposte

▸ Comando: testo ASCII

– HELLO, MAIL FROM, RCPT TO, etc.

▸ Risposta: codice di stato (200, 354, etc,) e frase

• Attenzione: I messaggi devono essere comunque inviati in formato ASCII a 7 bit, anche i dati multimediali.

FORMATO DEI MESSAGGISMTP: protocollo per lo scambio di

messaggi di posta

RFC 822: standard per il formato dei messaggi inviati:

• header, ad esempio

– To:

– From:

– Subject:

Diversi dai comandi smtp!

• body

– Il “messaggio” vero e proprio, solo caratteri ASCII

header

body

SMTP

• Connessioni TCP persistenti

• Richiede che il messaggio (header & corpo) sia in formato ascii 7-bit

• Alcune sequenze di caratteri non consentite (es., <CRLF>.<CRLF>). Conseguenza: il messaggio deve essere codificato

• Il server smtp usa <CRLF>.<CRLF> per determinare la fine del messaggio

• Confronto con HTTP

• http: pull

• email: push

• Entrambi usano un’interazione mediante comandi/risposta in testo ASCII e codici di stato

• http: ogni oggetto incapsulato nel messaggio di risposta

• smtp: un messaggio con più oggetti è inviato mediante un messaggio in più parti

PROTOCOLLI DI ACCESSO ALLA POSTA

• Soluzione tradizionale: l’utente legge direttamente la posta sul Mail Server – L’host su cui è attivo il Mail Server deve essere sempre attivo

• I client di posta permettono di trasferire l’email dal Mail Server al computer dell’utente

• Possibile visualizzare file multimediali e di specifiche applicazioni

• Occorre un protocollo “Pull” per accedere alla Mailbox collocata sul Mail Server

PROTOCOLLI DI ACCESSO ALLA POSTA

▸ SMTP: consegna al / memorizzazione nel server di posta del ricevente

▸ Protocollo di accesso: recupero della posta dal server locale

▸ POP: Post Office Protocol [RFC 1939]

▸ Autenticazione (agent <-->server) e scaricamento

▸ IMAP: Internet Mail Access Protocol [RFC 1730]

▸ Manipolazione dei messaggi memorizzati sul server attraverso client di posta, es.: outlook

▸ HTTP: Interfaccia web, es: Hotmail , Yahoo! Gmail, ...

user agent

mail server del mittente

user agent

SMTP SMTP POP3 o IMAP

mail server del ricevente

PROTOCOLLO POP3

Scarica ed elimina:

1. User Agent elimina la posta dalla Mailbox dopo averla scaricata

2. Un utente disperde la posta sui diversi host da cui accede la Mailbox

3. User Agent permette di creare cartelle, spostare messaggi, effettuare ricerche nei messaggi

2. Scarica e conserva:

1. User Agent conserva la posta sulla Mailbox

2. Utente può leggere i messaggi da host diversi

3. POP3 stateless: non permette di strutturare i messaggi in cartelle

4. Si può ottenere lo stesso effetto con altre applicazioni

PROTOCOLLO IMAP• Permette di gestire cartelle di

posta remote come se fossero locali

• IMAP deve mantenere una gerarchia di cartelle per ogni utente

• Permette allo User Agent di scaricare solo parti del messaggio:

– Intestazione

– Solo intestazione file MIME Multipart

– Messaggi di dimensione piccola per utenti a banda limitata

– Stati:

– Non-authenticated: utente deve fornire username e password per la connessione

– Authenticated State: utente deve specificare una cartella prima di eseguire comandi che influiscono sul messaggio

– Selected State: utente può dare comandi che influiscono sul messaggio, e.g. elimina, salva, sposta

– Logout State: sessione terminata

UN ESEMPIO MODERNO: WHATSAPP• Servizio di messaggistica “istantanea”

– Oltre a messaggi testo può inviare immagini, video, file audio, etc.

– Utilizza una versione proprietaria di un protocollo open: Extensible Messaging and Presence Protocol (XMPP).

▸ XMPP: specificamente sviluppato per

• Messaggistica real-time

• Fornire informazioni sulla disponibilità e la localizzazione

• Mantenimento della lista di contatti

• Originariamente proposto nel 1999!

• Utilizza il TCP come protocollo di trasporto, porta 5222

▸ L’applicazione notifica la ricezione di messaggi

UN ESEMPIO MODERNO: WHATSAPP

• Multipiattaforma: iOS, Android, MS Windows Phone, Blackberry, Symbian, etc.

• Creazione automatica di un’utenza all’atto dell’installazione:

• [numero_di_telefono]@s.whatsapp.net

• La password dipende dallo specifico dispositivo

• Centinaia di milioni di utenti!