Reti di Telecomunicazione Lezione 6
Transcript
Reti di Telecomunicazione Lezione 6
Reti di Telecomunicazione Lezione 6 Marco Benini Corso di Laurea in Informatica [email protected] Programma della lezione • Lo strato di applicazione – protocolli • Applicazioni di rete – – – – client - server comunicazione attraverso la rete indirizzamento di processi user agent • Servizi per le applicazioni • Servizi offerti dal livello di trasporto Lo strato di applicazione • Una applicazione di rete (o distribuita) è un insieme di programmi che operano concorrentemente, scambiandosi informazioni attraverso una rete • Per poter comunicare, una applicazione di rete necessita di un supporto da parte dei sistemi – il supporto sistemico per le applicazioni di rete è offerto dal livello di applicazione dello stack Internet • Ogni processo che opera su un nodo della rete, può scambiare messaggi con gli altri processi della medesima applicazione utilizzando i servizi offerti dal livello di applicazione Lo strato di applicazione Due processi comunicano utilizzando i servizi offerti dallo strato di applicazione application transport network data link physical application transport network data link physical Protocolli di applicazione • E’ importante distinguere tra applicazioni e protocolli di applicazione – un protocollo di applicazione è implementato dal livello di applicazione – quindi, un protocollo è una parte (importante) di una applicazione • Ad esempio, l’applicazione World Wide Web (WWW) – è costituita da numerose componenti, come i browser, i server ed i proxy server – utilizza molte convenzioni per codificare i dati, come HTML, CSS, ... – per permettere la comunicazione tra i vari componenti, utilizza un protocollo implementato nel livello di applicazione: HTTP (HyperText Transfer Protocol) Protocolli di applicazione • Un protocollo del livello di applicazione definisce: – i tipi di messaggi scambiati, per esempio, messaggi di richiesta o di risposta – la sintassi dei vari tipi di messaggio, per esempio, i campi del messaggio e come questi campi vengono codificati – la semantica dei messaggi, ovvero il significato dell’informazione dei messaggi, e quale è il modo corretto di interpretarla – le regole per determinare quando e come un processo invia messaggi o risponde a messaggi • Il software del livello applicazione che realizza un protocollo si preoccupa di rispettare la specifica data dal protocollo stesso User agents • Una componente (processo) di una applicazione di rete è composta di due parti: – l’implementazione dei protocolli che permettono all’applicazione di funzionare, come parte del livello di applicazione – uno user agent, che funge da interfaccia tra l’utilizzatore dell’applicazione e gli aspetti comunicativi • Ad esempio, un browser Web: – ha una interfaccia utente che serve a visualizzare i documenti ricevuti ed a permettere la loro navigazione – inoltre l’interfaccia utente consente di richiedere nuovi documenti specificando la loro URL – il motore di un browser, invece, è la parte che si preoccupa di inviare le richieste ai vari server e di ricevere le risposte User agents User Agent Client Protocol User Agent Client Protocol User Agent messages Server Protocol Un processo, parte di una applicazione di rete, è composto da una implementazione dei protocolli di livello applicazione e da uno user agent Codificare un protocollo • Per codificare un protocollo di livello applicazione, è necessario comunicare con l’interfaccia del livello di trasporto • Lo strumento di programmazione messo a disposizione nel caso dello stack Internet è dato dalla API (Application Programmer’s Interface) delle socket Protocol • Una socket consente di comunicare attraverso la rete utilizzando lo stack di Internet a partire dal livello di trasporto – in questo corso non spiegheremo la sintassi e l’uso delle socket, essendo questo argomento già trattato in altri corsi Indirizzamento dei processi • Affinché lo strato di applicazione di un processo possa inviare un messaggio ad un altro processo su di un altro nodo, è necessario identificare il processo ricevente – in realtà, vogliamo identificare lo strato di applicazione del processo ricevente • Questo indirizzamento è composto di due parti – una identificazione del nodo su cui opera il processo con cui si desidera comunicare – una identificazione del particolare processo all’interno di quel nodo • L’indirizzamento di un processo è una funzione che viene fornita dallo strato di trasporto Indirizzamento dei processi • Il nome dell’host viene codificato in modo univoco su tutta Internet mediante un indirizzo IP – l’indirizzo IP è una parte del protocollo di livello rete IP • Il processo da indirizzare viene identificato con una coppia di valori: – il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro) – l’unico processo (se esiste) sull’host indirizzato che sia associato ad un certo valore di porta Indirizzamento dei processi • Il nome dell’host viene codificato in modo univoco su tutta Internet mediante un indirizzo IP – l’indirizzo IP è una parte del protocollo di livello rete IP • Il processo da indirizzare viene identificato con una coppia di valori: – il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro) – l’unico processo (se esiste) sull’host indirizzato che sia associato ad un certo valore di porta host processo Indirizzamento dei processi • Il nome dell’host viene codificato in modo univoco su tutta Internet mediante un indirizzo IP – l’indirizzo IP è una parte del protocollo di livello rete IP • Il processo da indirizzare viene identificato con una coppia di valori: – il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro) – l’unico processo (se esiste) sull’host indirizzato che sia associato ad un certo valore di porta host indirizzo IP processo protocollo porta Indirizzamento dei processi • Il nome dell’host viene codificato in modo univoco su tutta Internet mediante un indirizzo IP – l’indirizzo IP è una parte del protocollo di livello rete IP • Il processo da indirizzare viene identificato con una coppia di valori: – il protocollo di trasporto che si intende utilizzare (TCP, UDP o altro) – l’unico processo (se esiste) sull’host indirizzato che sia associato ad un certo valore di porta nome indirizzo IP globalmente unico processo protocollo specifico dell’host porta Indirizzamento dei processi • Il protocollo di trasporto ed il numero di porta sono definiti a priori per i server che offrono un servizio pubblico • Ad esempio: – per inviare una email usando il protocollo applicativo SMTP, occorre inviare un messaggio opportunamente codificato alla porta TCP 25 del server – per richiedere una pagina web, si usa il protocollo applicativo HTTP, che invia un opportuno messaggio di richiesta alla porta TCP 80 del server – per trasformare un nome di un calcolatore in un indirizzo IP, si invia una opportuna richiesta alla porta UDP 53 di un DNS server • Per sapere quali sono i protocolli di trasporto e le porte associate ai vari servizi applicativi standard, si veda http://www.iana.org Servizi per una applicazione • Quali servizi servono ad una applicazione? – Ogni applicazione di rete ha bisogno di servizi specifici – Ogni servizio specifico viene realizzato da un opportuno protocollo, che può essere standard oppure progettato e realizzato ad hoc • Quali caratteristiche deve offrire il livello di trasporto per poter efficacemente implementare protocolli di livello applicativo? – Sebbene ogni protocollo di livello applicativo abbia le proprie specificità, tuttavia il trasporto dei messaggi da un punto ad un altro della rete è una caratteristica comune di tutte le applicazioni – Tuttavia esiste più di un protocollo di trasporto • Quale protocollo di trasporto adottare per realizzare un protocollo applicativo? Servizi per una applicazione • Perdita di dati – alcune applicazioni (ad esempio, audio) possono sopportare la perdita di alcuni dati – altre applicazioni (ad esempio, trasferimento di files) richiedono un trasferimento di informazione affidabile al 100% • Due protocolli di trasporto – quando la perdita di dati è un fatto accettabile, il protocollo di trasporto può essere senza connessione: nello stack Internet, UDP – quando la perdita di dati è un evento inaccettabile, il protocollo deve essere orientato alla connessione, ovvero essere affidabile: nello stack Internet, TCP Servizi per una applicazione • Temporizzazione – alcune applicazioni (ad esempio, telefonia su Internet, giochi interattivi) richiedono ritardi molto contenuti per essere efficaci • Protocolli di trasporto – il protocollo TCP non è affidabile dal punto di vista temporale: un pacchetto è garantito che giunga integro a destinazione, ma non entro un tempo stabilito a priori – il protocollo UDP è più veloce di TCP, dovendo effettuare meno controlli, tuttavia non è temporalmente affidabile • Soluzione – usare un protocollo di trasporto in tempo reale, come RTP (Real Time Protocol) – studiare i ritardi di rete e calibrare gli apparati ed i collegamenti per garantire di restare nei limiti di tempo prefissati, quindi usare UDP o TCP Servizi per una applicazione • Larghezza di banda – alcune applicazioni (ad esempio, multimedia) richiedono una quantità minima di larghezza di banda per poter essere efficaci – altre applicazioni (elastiche) fanno uso della quantità di banda che hanno a disposizione • Protocolli di trasporto – su Internet, proprio per la sua natura eterogenea, non è possibile garantire la presenza di una certa quantità di banda per trasmettere un messaggio • Soluzione – implementare un protocollo applicativo che realizza un circuito virtuale – costruire un protocollo flessibile, che fallisce o si adatta se la banda è insufficiente Servizi per una applicazione Applicazione trasferimento di file posta elettronica documenti web audio/video in tempo reale audio/video memorizzati giochi interattivi applicazioni finanziarie Perdita di dati esclusa esclusa tollerabile tollerabile tollerabile tollerabile esclusa Banda elastica elastica elastica audio: 5K-1Mbs video:10K-5Mbs come sopra pochi Kbps elastica Tempo no no no sì, 100 ms sì, pochi sec sì, 100 ms sì e no Applicazioni e trasporto Applicazione posta elettronica accesso remoto Web trasferimento file streaming multimedia file server remoto telefonia su Internet Protocolli di livello applicazione smtp [RFC 821] telnet [RFC 854] http [RFC 2068] ftp [RFC 959] proprietario (ad es., RealNetworks) NFS, SMB proprietario (ad es., Vocaltec) Protocollo di trasporto usato TCP TCP TCP TCP TCP o UDP TCP o UDP usualmente UDP Conclusione • Questa lezione è tratta da: – Kurose, cap. 2.1 • Esercizi: – Studiare il protocollo HTTP: siete in grado di identificare i tipi di messaggio, le regole di scambio, le regole di codifica? – Rivedere cosa sono e come funzionano le socket – Quali protocolli di trasporto scegliereste per il servizio applicativo del Domain Name System? Perché? – Quali protocolli di trasporto scegliereste per realizzare un gioco di ruolo su rete? Perché? E per una simulazione di Gran Premio?