REST; WebSocket (RFC 6455)



Похожие документы
Reti di Telecomunicazione Lezione 6

appunti delle lezioni Architetture client/server: applicazioni client

Protocolli applicativi: FTP

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

Lezione 1 Introduzione

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

Django - WebSocket. Web in real- 3me. Saverio Patruno ConoscereLinux - LUG Modena. #linuxdaymo15

Siti web centrati sui dati (Data-centric web applications)

Applicazioni web centrati sui dati (Data-centric web applications)

Programmazione dei socket con TCP #2

Indirizzi Internet e. I livelli di trasporto delle informazioni. Comunicazione e naming in Internet

Transmission Control Protocol

Approfondimento di Marco Mulas

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

Progettazione e Implementazione di API WebSocket per il Gateway Dog

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

Il Protocollo HTTP e la programmazione di estensioni Web

Introduzione alle applicazioni di rete

Reti di Telecomunicazione Lezione 8

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Modulo 1: Posta elettronica

Oreste Signore, Responsabile Ufficio Italiano W3C Area della Ricerca CNR - via Moruzzi, Pisa

Comunicazioni sicure su Internet: https e SSL. Fisica dell Informazione

Nelle reti di calcolatori, le porte (traduzione impropria del termine. port inglese, che in realtà significa porto) sono lo strumento

Reti di Telecomunicazione Lezione 7

INFORMATICA DISTRIBUITA. lez 4 Livello applicazione

Le Reti Informatiche

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Sicurezza delle applicazioni web: protocollo HTTP

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

Dal protocollo IP ai livelli superiori

HTTP adaptation layer per generico protocollo di scambio dati

MANUALE DI INTEGRAZIONE API SMSSmart (v 2.2)

Do-Dots Protocollo di comunicazione

Telematica II 12. Esercitazione/Laboratorio 4

Tecnologie per il Web. Il web: Architettura HTTP HTTP. SSL: Secure Socket Layer

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

b) Dinamicità delle pagine e interattività d) Separazione del contenuto dalla forma di visualizzazione

Casi di studio sulla migrazione di applicazioni web verso servizi REST Anno Accademico 2008/2009

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

Web e HTTP. path name. host name Realizzato da Roberto Savino.

Rete Internet Prova in Itinere Mercoledì 23 Aprile 2008

Esercizi di JavaScript

I Socket. Laboratorio Software M. Grotto R. Farina

Architetture Web Protocolli di Comunicazione

19. LA PROGRAMMAZIONE LATO SERVER

10.1. Un indirizzo IP viene rappresentato in Java come un'istanza della classe InetAddress.

Protocollo di metadata harvesting OAI-PMH Lavoro pratico 2

Seminari Eucip, Esercizio e Supporto di Sistemi Informativi

Protocolli e architetture per WIS

PRACTICAL DEVELOPMENT OF A WEB SERVICE

DOMOTICA ED EDIFICI INTELLIGENTI UNIVERSITA DI URBINO

Seminario di Sistemi Distribuiti RPC su SOAP

Topologia delle reti. Rete Multipoint: ogni nodo è connesso agli altri tramite nodi intermedi (rete gerarchica).

Inizializzazione degli Host. BOOTP e DHCP

SMS API. Documentazione Tecnica YouSMS SOAP API. YouSMS Evet Limited

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca. Parte II Lezione 5

Prova di Esame - Rete Internet (ing. Giovanni Neglia) Prova completa Mercoledì 14 Settembre 2005, ore 9.00

Cenni di programmazione distribuita in C++ Mauro Piccolo

Introduzione ai Web Services Alberto Polzonetti

Introduzione. Livello applicativo Principi delle applicazioni di rete. Stack protocollare Gerarchia di protocolli Servizi e primitive di servizio 2-1

DBMS e Linguaggi di programmazione nell'era di Internet

Reti di Calcolatori. Il Livello delle Applicazioni

Lezione n 1! Introduzione"

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

SMS-Bulk Gateway interfaccia HTTP

CONFIGURARE IL DISPOSITIVO DI TELEASSISTENZA

1. RETI INFORMATICHE CORSO DI LAUREA IN INGEGNERIA INFORMATICA SPECIFICHE DI PROGETTO A.A. 2013/ Lato client

Internet Architettura del www

Architettura client-server

Come funziona il WWW. Architettura client-server. Web: client-server. Il protocollo

La sicurezza nel Web

Componenti Web: client-side e server-side

SSL: applicazioni telematiche SSL SSL SSL. E-commerce Trading on-line Internet banking... Secure Socket Layer

sito web sito Internet

CORSO DI RETI SSIS. Lezione n.2. 2 Novembre 2005 Laura Ricci

Modulo 1.3 Reti e servizi

J+... J+3 J+2 J+1 K+1 K+2 K+3 K+...

Programmazione in Rete

Ipertesto. Reti e Web. Ipertesto. Ipertesto. Ipertestualità e multimedialità

Introduzione al TCP/IP Indirizzi IP Subnet Mask Frame IP Meccanismi di comunicazione tra reti diverse Classi di indirizzi IP Indirizzi IP privati e

Come funziona internet

Realizzazione di interazioni sincrone e asincrone tra applicazioni Web 2.0

Corso di Laurea in Ingegneria Informatica. Corso di Reti di Calcolatori a.a. 2009/10

Reti di Telecomunicazioni Mobile IP Mobile IP Internet Internet Protocol header IPv4 router host indirizzi IP, DNS URL indirizzo di rete

Interoperabilità e cooperazione applicativa tra sistemi informativi

FTP. Appunti a cura del prof. ing. Mario Catalano

P2-11: BOOTP e DHCP (Capitolo 23)

Introduzione alla programmazione in C

Un Sistema per il Monitoraggio di Reti di Sensori da Terminali Mobili

Транскрипт:

Corso di Laurea Magistrale in Ingegneria Informatica Corso di Linguaggi e Tecnologie Web II modulo Tecnologie e Sistemi Web-oriented A. A. 2014-2015 LINGUAGGI E TECNOLOGIE WEB REST; WebSocket (RFC 6455) 1

REST REST = REpresentational State Transfer Altro paradigma architetturale per servizi basati sul Web Termine introdotto nel 2000 nella tesi di dottorato di Roy Fielding (uno degli autori del protocollo HTTP) Il paradigma REST nasce come astrazione di alcune delle caratteristiche fondamentali di HTTP che lo hanno reso diffuso e hanno permesso di usarlo come base per servizi e protocolli di più alto livello RESTful Web service sono quei servizi basati sul Web che rispettano i vincoli del paradigma REST REST; WebSocket 2

Paradigma REST Un'applicazione distribuita è RESTful se rispetta 6 proprietà fondamentali (vincoli) Client-server Stateless Cacheable (i client possono fare caching delle risposte dei server) Layered system: un client può connettersi direttamente al server o ad un intermediario (che può avere lo scopo di incrementare la scalabilità o la sicurezza) Code on demand (requisito opzionale): il server può estendere temporaneamente le capacità del client consentendogli di ottenere codice aggiuntivo Uniform interface: l'interfaccia tra client e server è semplice e uniforme REST; WebSocket 3

Il WWW è RESTful? Client-server: sì Stateless: sì Cacheable: sì Layered systems: sì Proxy Code on demand: sì Client-side scripting, embedded objects Uniform interface: sì URI per identificare le risorse e ottenerne una rappresentazione Pochi semplici metodi per manipolare le risorse (metodo = azione, verbo; risorsa = complemento oggetto) I messaggi HTTP sono auto-descrittivi: indicano i formati delle risorse, la possibilità di effettuare il caching, etc. REST; WebSocket 4

RESTful Web Service Non c'è uno standard ufficiale per RESTful Web service I RESTful Web service sono Web service in senso lato (cioè sono cross-platform, interoperabili e invocabili mediante un'interfaccia pubblica), non in senso stretto (niente WSDL, SOAP, etc.) Per RESTful Web service si intende una API Web aderente al paradigma REST: HTTP è il protocollo di comunicazione Ogni risorsa è identificata da un URI Le risorse sono rappresentate in formati interoperabili (i più comuni: HTML, JSON, XML) Metodi PUT, GET, POST, DELETE per effettuare le 4 manipolazioni fondamentali su ogni risorsa: create, read, update, delete (CRUD) REST; WebSocket 5

Limiti di AJAX AJAX consente applicazioni Web più interattive aggiornare i dati senza ricaricare l'intera pagina ridurre i tempi di latenza e il traffico Ciononostante, restano alcuni limiti la comunicazione è sempre originata da una richiesta del client aggiornamento dei dati solo attraverso polling non è possibile coprire scenari più avanzati, quali applicazioni Web-based peer-to-peer aggiornamento dei dati in tempo reale Ciò perché la comunicazione HTTP è fondamentalmente half-duplex REST; WebSocket 6

WebSocket Candidate recommendation W3C del 2012 Soluzione composta da: un protocollo applicativo connection-oriented full-duplex che si aggiunge ad HTTP una API HTML5 per poterlo utilizzare Permette l'invio dei dati in tempo reale a Web application eseguite nei browser REST; WebSocket 7

Da HTTP a WebSocket Il protocollo ha due fasi Handshake Trasferimento dati WebSocket usa le stesse porte TCP di HTTP (80) e HTTPS (443) riutilizza gli elementi infrastrutturali di HTTP proxy autenticazione ha URI scheme ws:// per connessioni in chiaro wss:// per connessioni cifrate con TLS REST; WebSocket 8

Handshake lato client 1/2 L'handshake del client è una normale richiesta HTTP GET /chat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: dghlihnhbxbszsbub25jzq== Origin: http://example.com Sec-WebSocket-Protocol: chat, superchat Sec-WebSocket-Version: 13 l'uri della richiesta è l'endpoint della connessione WebSocket Connection: Upgrade richiede di modificare l'attuale connessione Upgrade: websocket indica il nuovo protocollo Origin: indica al server da quale client proviene la richiesta; è obbligatorio se il client è un browser REST; WebSocket 9

Handshake lato client 2/2 Altri header field obbligatori Sec-WebSocket-Version: versione richiesta del protocollo; la prima versione definitiva è la 13 Sec-WebSocket-Key: valore pseudocasuale di 16 byte, codificato in base64 Il client nella richiesta può specificare diverse opzioni Sec-WebSocket-Protocol: elenco di sub-protocolli di livello applicativo che il client vuole usare. Lo IANA detiene il registro dei nomi validi Sec-WebSocket-Extensions: insieme di estensioni di WebSocket supportate dal client. Lo IANA detiene il registro dei nomi validi Cookie Autenticazione REST; WebSocket 10

Risposta del server Struttura della risposta del server HTTP/1.1 101 Switching Protocols Upgrade: websocket Connection: Upgrade Sec-WebSocket-Accept: s3pplmbitxaq9kygzzhzrbk+xoo= Affinché l'handshake sia completato: lo status code deve essere 101 gli header field Upgrade e Connection devono essere presenti Sec-WebSocket-Accept serve a confermare l'accettazione della richiesta: deve essere pari all'hash SHA1 della concatenazione del valore di Sec-WebSocket-Key inviato dal client con la stringa univoca "258EAFA5-E914-47DA-95CA- C5AB0DC85B11" Header field opzionali Sec-WebSocket-Protocol indica il sub-protocollo applicativo scelto dal server tra quelli proposti dal client Set-Cookie REST; WebSocket 11

Trasferimento dati Nella fase di trasferimento dati, WebSocket aggiunge il minimo indispensabile per far funzionare un socket TCP nell'infrastruttura applicativa del WWW un modello di sicurezza per i browser basato sull'origine dei dati infatti usando solo HTML e JavaScript i browser non permettono di inviare richieste con header field che iniziano per Sec- indirizzamento (per supportare più host name su un unico IP) e indicazione del protocollo applicativo (per supportare più servizi su una porta) un meccanismo di framing come quello di TCP, ma senza limiti di lunghezza una procedura di tear down che complementa quella di TCP in presenza di proxy e altri intermediari REST; WebSocket 12

Frame WebSocket 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-------+-+-------------+-------------------------------+ F R R R opcode M Payload len Extended payload length I S S S (4) A (7) (16/64) N V V V S (if payload len==126/127) 1 2 3 K +-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - + Extended payload length continued, if payload len == 127 + - - - - - - - - - - - - - - - +-------------------------------+ Masking-key, if MASK set to 1 +-------------------------------+-------------------------------+ Masking-key (continued) Payload Data +-------------------------------- - - - - - - - - - - - - - - - + : Payload Data continued... : + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + Payload Data continued... +---------------------------------------------------------------+ REST; WebSocket 13

Campi frame WebSocket 1/2 FIN (1 bit): si usa per chiudere la connessione RSV1, RSV2, RSV3 (1 bit cad.): riservati alle estensioni Opcode (4 bit) 0000 continuation 0001 frame testuale 0010 frame binario 1000 conferma chiusura connessione (e il payload opzionalmente può contenere uno status code con la motivazione) 1001 ping 1010 risposta al ping gli altri valori sono riservati REST; WebSocket 14

Campi frame WebSocket 2/2 Mask (1 bit): indica se è attivo il mascheramento dei bit del payload. Per ragioni di sicurezza, tutti i frame inviati da client a server devono avere questo bit a 1 Payload length ( 7 bit) da 0 a 125: lunghezza del payload 126: la lunghezza è espressa nei 16 bit successivi 127: la lunghezza è espressa nei 64 bit successivi Masking key (32 bit, se presente): maschera di bit da applicare al payload REST; WebSocket 15

API WebSocket Nei browser che supportano WebSocket, l'interprete JavaScript mette a disposizione un nuovo template di oggetti, WebSocket Membri Costruttore WebSocket(url, [protocols]) Gestori degli eventi di comunicazione onopen onmessage onerror onclose Funzione close([code, reason]) Funzione di trasmissione send per dati HTML/XML, testo e binari REST; WebSocket 16

Esempio WebSocket echo client <!DOCTYPE html> <head> <meta charset="utf-8" /> <title>websocket Test</title> <script language="javascript" type="text/javascript"> // URI del server a cui collegarsi var wsuri = "ws://echo.websocket.org/"; var output; function init() { output = document.getelementbyid("output"); } testwebsocket(); REST; WebSocket 17

Esempio // Crea il WebSocket e assegna i gestori degli eventi function testwebsocket() { websocket = new WebSocket(wsUri); websocket.onopen = function(evt) { onopen(evt) }; websocket.onclose = function(evt) { onclose(evt) }; websocket.onmessage = function(evt) { onmessage(evt) }; websocket.onerror = function(evt) { onerror(evt) }; } function onopen(evt) { writetoscreen("connected"); dosend("websocket rocks"); } function onclose(evt) { writetoscreen("disconnected"); } REST; WebSocket 18

Esempio // L'attributo data dell'evento contiene i dati ricevuti function onmessage(evt) { writetoscreen('<span style="color: blue;">response: ' + evt.data+'</span>'); websocket.close(); } function onerror(evt) { writetoscreen('<span style="color: red;">error:</span> ' + evt.data); } function dosend(message) { writetoscreen("sent: " + message); websocket.send(message); } REST; WebSocket 19

Esempio function writetoscreen(message) { var pre = document.createelement("p"); pre.style.wordwrap = "break-word"; pre.innerhtml = message; output.appendchild(pre); } window.addeventlistener("load", init, false); </script> </head> <body> <h2>websocket Test</h2> <div id="output"></div> </body> </html> REST; WebSocket 20

Riferimenti I. Fette, A. Melnikov, The WebSocket Protocol (RFC 6455), http://tools.ietf.org/html/rfc6455 I. Hickson, The WebSocket API, W3C Editor's Draft, http://dev.w3.org/html5/websockets/ REST; WebSocket 21