Lo strato di applicazione in Internet

Documenti analoghi
Uso di Internet: Esempio. Prof. Franco Callegati

Reti (già Reti di Calcolatori )

TECN.PROG.SIST.INF. I Socket Roberta Gerboni

I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci

Esercitazione [7] Client/Server con Socket

I a Prova in Itinere di Telematica di Base 24 marzo 2006

PROTOCOLLI APPLICATIVI PER INTERNET

Lo strato di Trasporto

Uso di Internet: introduzione. Prof. Franco Callegati

Le Reti Informatiche

Programmazione in Rete

Transmission Control Protocol

Organizzazione della lezione

API Socket di Berkeley

L interfaccia Socket

Applicazioni di rete 1

Il World Wide Web. Marco Porta - CIM: Web Design & Technologies

Reti di Calcolatori Servizi di Rete Laboratorio di Didattica in Rete

Applicazioni web. Sommario. Parte 4 http. http Metodi, intestazioni e codici di stato get post Parametri e cookie. Applicazioni web.

Socket (TCP/IP) Socket (TCP/IP) Concetto di socket. Cenni (reti)

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Lunedì 24 Gennaio 2005, ore 15.00

Livello di trasporto:

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

Introduzione alle applicazioni di rete

LABORATORIO di Reti di Calcolatori

Strato di trasporto. Livello di applicazione SAP. Livello di trasporto. Livello di rete SAP

Reti di Calcolatori:

Funzioni del protocollo TCP

Introduzione a Internet e World Wide Web

Architettura dei calcolatori e sistemi operativi. Input Output. IO 3 Device driver

L uso di Socket UDP. Usiamo le API Winsock incluse in <Winsock.h> A.A. 2005/06. Dott.ssa Valeria Carofiglio

Funzioni del protocollo TCP

SISTEMI DI ELABORAZIONE

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Le Reti Informatiche

MODELLI ISO/OSI e TCP/IP

Parte II: Reti di calcolatori Lezione 6 (30)

Esercitazione [6] Client/Server con Socket

ORGANIZZAZIONE DI SISTEMI OPERATIVI E RETI

Struttura interna del sistema operativo Linux

Introduzione alla rete Internet

Livello di trasporto: meccanismi trasferimento dati affidabile, TCP

Dal protocollo IP ai livelli superiori

Tecnologie di Sviluppo per il Web. Introduzione alle Reti di Calcolatori

Reti di Telecomunicazione Lezione 6

Basi di Dati Architetture Client/Server

UD 3 PROTOCOLLO ISO-OSI

Introduzione. Java HTTP. G. Prencipe

ISO- OSI e architetture Client-Server

Corso di Sistemi di Misura Distribuiti. Ing. Domenico Capriglione

Architetture Client/Server. Un architettura è centralizzata quando i dati e le applicazioni (programmi) risiedono in un unico nodo elaborativo

Corso di Reti di Calcolatori T

MODELLI ISO/OSI e TCP/IP

Parte II: Reti di calcolatori Lezione 11 (35)

Parte II: Reti di calcolatori Lezione 7 (31)

Internet Protocol Cenni introduttivi

Livello applicazione. Fondamenti di Informatica

Applicazioni e protocolli a livello applicazione

Introduzione alla rete Internet

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Soluzione dell esercizio 2 (TCP) dell esame del 16 giugno 2015

11. Protocollo di trasporto a datagramma: User Datagram Protocol (UDP)

la trasmissione è regolata solamente dall algoritmo per il controllo del flusso prima di inviare l ACK.

Scrittura dei programmi applicativi di rete

Introduzione alla rete Internet

Protocolli applicativi basati su TCP/IP

Reti di calcolatori. Reti di calcolatori

Protocolli di strato applicazione

Reti di Calcolatori. Master "Bio Info" Reti e Basi di Dati Lezione 3

Programmazione in Rete

Architetture Client/Server e World Wide Web

Terminologia e concetti fondamentali La struttura di Internet (hardware e software):

MODELLO TCP/IP LIVELLO 4 Trasporto. Il protocollo per il controllo della trasmissione. La gestione degli errori di trasmissione

Parte II: Reti di calcolatori Lezione 8 (32)

Informatica. Alfredo Cuzzocrea. Reti di Calcolatori

Esercitazione. Formato di compitini e compiti: domande ed esercizi "closed book" G. Ferrari - Reti di calcolatori.

2000 Pier Luca Montessoro (si veda la nota di copyright alla slide n. 2) 1

IL LIVELLO APPLICAZIONI WEB e HTTP

Internetworking with TCP/IP (Douglas E. Comer) Vol. I and Vol III.

Parte II: Reti di calcolatori Lezione 6 (30)

Introduzione ai socket

ALTRI TIPI DI CONNESSIONE

Il livello trasporto: Introduzione e protocollo UDP

I Socket. Laboratorio Software M. Grotto R. Farina

Reti di Calcolatori. IL LIVELLO APPLICAZIONI WEB e HTTP

IL LIVELLO APPLICAZIONI WEB e HTTP

3: Architettura TCP/IP

OSOR. Applicazioni di Rete

Informatica: arte e mestiere 3/ed

CAP9. Device drivers

SISTEMI DI ELABORAZIONE

Introduzione alle Architetture di Rete

Architettura di rete. Modelli di Riferimento: TCP/IP e OSI. Modello di riferimento OSI. Modelli di riferimento. architettura di rete

Corso di Informatica

Parte II: Reti di calcolatori Lezione 13 (37)

Esempi di applicazioni internet. WEB Trasferimento File Posta Elettronica Sistema dei nomi di dominio (DNS)

Corso di Reti di Telecomunicazioni. Giovanni Schembra. Trasmissione trame su canale broadcast

Il livello trasporto: Introduzione e protocollo UDP

Transcript:

Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web, SMTP per la posta elettronica Hanno in comune alcune caratteristiche generali 1

Elementi di un protocollo applicativo Tipi di messaggio che vengono scambiati Es: richieste e risposte Sintassi dei vari tipi di messaggio Significato dell informazione nei campi (semantica) Regole che governano lo scambio dei messaggi Protocolli standard I protocolli dello strato di applicazione per Internet vengono definiti nelle RFC in ambito IETF Se un protocollo e definito nella RFC chiunque si conforma ad esso e in grado di comunicare indipendentemente dalla realizzazione della applicazione di rete Concetto di sistema aperto Esistono protocolli applicativi proprietari Sistemi chiusi 2

Caratteristiche dei protocolli applicativi Un protocollo applicativo ha in generale due componenti: Client e server Il lato client di un terminale comunica con il lato server su un altro terminale Es: browser web e server web Per trasferire o ricevere informazione dalla rete il processo applicativo utilizza le API (Application Programming Interface) o socket che vengono viste come porte Architettura del protocollo Processo API Strato di trasporto Protocollo applicativo TCP Processo API Strato di trasporto INTERNET 3

Modello client-server La comunicazione tra due applicazioni residenti su macchine distinte avviene seguendo lo schema client-server Un programma SERVER esegue precise funzioni ed attende una richiesta di connessione da un client Un programma CLIENT vuole usufruire di un certo servizio e instaura una connessione col server Indirizzamento dei processi Il processo trasmittente deve poter identificare il processo ricevente Si usa una coppia di informazioni Indirizzo IP + numero di porta Ai protocolli applicativi piu diffusi vengono assegnati numeri di porta standard (RFC 1700) Well known port: porta 80 HTTP, porta 25 SMTP 4

L interfaccia Socket Gli standard non specificano come gli applicativi debbano interagire con i protocolli L interfaccia, che non è standardizzata e dipende dall implementazione del sistema operativo, viene comunemente chiamata Socket Interfaccia Socket in Unix-Linux Un programma applicativo interagisce con il sistema operativo mediante system calls: - open: apre la socket - read: legge dalla socket - write: scrive sulla socket - close: chiude la socket 5

Uso delle socket Al momento della connessione è necessario un accordo tra i due host per stabilire i numeri di porta da utilizzare L host che inizia la connessione deve comunicare a quale porta si vuole connettere sul server e qual è il numero di porta da lui utilizzato localmente Il numero di porta a cui connettersi deve essere in qualche modo noto a priori all host sorgente (welcome port o well known port) Connessione client-server: welcome port Un processo client, avviato nell host sorgente, tenta di connettersi ad un processo server (demone) nell host destinazione per ottenere un servizio A questo scopo e presente sul server la welcome socket in attesa su una porta definita in fase di configurazione del server Il processo server crea successivamente una socket di connessione identificato da quattro valori: (1) numero di porta sorgente del segmento, (2) indirizzo IP del terminale sorgente, (3) numero di porta destinazione assegnata, (4) proprio indirizzo IP 6

Well-known port (esempi) Le porte da 0 a 255 sono riservate e si attribuiscono ai vari demoni dei numeri di porta prefissati, uguali per qualunque host di Internet. Questi numeri riservati danno vita alle well-known port. Numero Nome Tipo di servizio 21 FTP trasferimento file 22 SSH terminale virtuale criptato 23 TELNET terminale virtuale in chiaro 25 SMTP invio posta elettronica 53 DOMAIN server DNS 80 HTTP server web 109 POP ricezione posta elettronica Funzionamento di HTTP E il protocollo utilizzato dal servizio web Al web spetta il merito di aver portato Internet oltre gli ambienti accademici HTTP e definito in RFC 1945 e RFC 2616 HTTP e implementato come programma client (browser) e come programma server Una pagina web consiste di oggetti individuabili ciascuno attraverso un URL File base HTML con vari oggetti referenziati attraverso singoli URL 7

URL (Uniform Resource Locator) Consiste di due parti: Nome host Nome del percorso nell host Es: www.deis.unibo.it/home/index.html Attraverso la funzione DNS e possibile associare al nome dell host un indirizzo IP Esempio di connessione non permanente www.deis.unibo.it/home/index.html 1: il client HTTP inizia una connessione TCP verso il server www.deis.unibo.it in cui alla porta 80 il server HTTP e in ascolto 2: il client HTTP invia una richiesta al server attraverso il socket associato alla connessione TCP stabilita al punto 1. Nella richiesta specifica il percorso /home/index.html 3: il server riceve la richiesta, incapsula l oggetto specificato nella risposta HTTP e invia il messaggio al client attraverso la socket 4: il server HTTP invia al TCP la richiesta di chiusura della connessione che ha effetto solo dopo che il messaggio di risposta e stato ricevuto correttamente 5: Il client riceve il messaggio di risposta. La connessione TCP si conclude. Il messaggio indica che l oggetto e un file HTML. Il client lo estrae e trova i riferimenti agli oggetti referenziati 6: i primi 4 passi vengono ripetuti per ciascuno degli oggetti referenziati (eventualmente connessioni in parallelo) 8

Tempo di risposta Per ricevere il file base HTML occorre 1 RTT (Round Trip Time) per l instaurazione della connessione TCP 1 RTT per l invio della richiesta e l arrivo della risposta Tempo di trasmissione del file HTML al server Richiesta HTTP Instaurazione connessione TCP + richiesta HTTP Risposta HTTP Tempo di trasmissione del file base Connessione permanente E la connessione di default per HTTP 1.1 Il server non chiede la chiusura della connessione TCP se non dopo che e scaduto un time out durante il quale la connessione non e utilizzata Con parallelismo: e la soluzione di default: viene inviata una richiesta per ogni oggetto individuato nella pagina base -> 1 RTT per tutti gli oggetti Senza parallelismo Viene generata una nuova richiesta ogni volta che si riceve una risposta-> 1 RTT per oggetto Le connessioni permanenti (con e senza parallelismo) richiedono una sola fase di partenza lenta (slow start) del TCP 9

Formato dei messaggi HTTP I messaggi sono di due tipi: richiesta e risposta Es. richiesta Caratteri ASCII: 5 linee seguite da un CR/LF GET /home/index.html HTTP 1.1 request line: metodo,url,versione Host: www.deis.unibo.it host Connection:close connessione non permanente User-agent:Mozilla/4.0 tipo di browser Accept language: fr indicazione di lingua Attivazione delle porte Il server deve essere in attesa di ricevere sulla porta a cui il client intende connettersi Passive open: il server associa l indirizzo IP alla porta e aspetta Il client effettua active open per comunicare con il server: questa operazione si completa dopo che la procedura TCP si e completata Una volta stabilita la connessione il processo applicativo invoca le funzioni di send e receive sulla porta 10

Ancora sulle API/socket Ogni protocollo fornisce un insieme di servizi e l API fornisce la sintassi con cui i servizi possono essere richiamati da un sistema operativo L interfaccia socket fornisce una sintassi generale per diversi tipi di servizi ed e quindi utilizzabile con diversi protocolli In pratica la socket e il punto in cui un a applicazione locale si attacca alla rete La definizione della interfaccia socket consiste nella definizione di come creare la socket, di come inviare e ricevere messaggi attraverso la socket e di come distruggere la socket L interfaccia socket e stata originariamente definita nel sistema operativo UNIX Passo 1: creazione di una socket int socket(int domain,int type, int protocol) Domain: indica la famiglia di protocolli che si utilizza Type indica il tipo di comunicazione: se orientata al byte o al bit Protocol indica lo specifico protocollo utilizzato ES: int socket (PF_INET,SOCK_STREAM, UNSPEC) Indica una socket per protocolli della famiglia Internet orientati al carattere: questa coppia implica TCP Il valore di ritorno e l identificatore della socket da utilizzare 11

Passo 2: server int bind( int socket, struct sockaddr *address, int addr_len) Collega la socket ad un indirizzo address e una struttura dati che include sia l indirizzo IP del server che che il numero di porta TCP int listen(int socket, int backlog) Definisce quante conessioni possono essere accettat sulla socket int accept(int socket, struct sockaddr *address, int addr_len Realizza la passive open Non ritorna valore fino a che un utente remoto non stabilisce una connessione In presenza di connessione restituisce un valore di socket nuovo e l indirizzo remoto La vecchia socket continua a servire da passive open Passo 3: client Si realizza la active open int connect(int socket, struct sock_addr address, int addr_len) Address contiene l indirizzo remoto del server La porta del client viene scelta tra quelle disponibili dal sistema operativo Questa operazione ritorna un valore quando la connessione TCP e stata stabilita 12

Passo 4: send/receive Il processo applicativo, una volta stabilita la connessione invoca le due funzioni seguenti: int send(int socket, char *message, int msg_len, int flags) per inviare il messaggio message sulla socket int receive(int socket, char *buffer, int buf_len, int flags) per ricevere un messaggio memorizzato in buffer I flag servono per il controllo delle operazioni 13