Caratteristiche e utilizzo dei WebSocket in informatica

Caratteristiche e utilizzo dei WebSocket in informatica

Tra le novità portate da HTML5, i WebSocket rappresentano quella di maggior importanza dal punto di vista dell’interazione tra client e server. WebSocket è una tecnologia per effettuare comunicazioni bidirezionali in tempo reale. I WebSocket HTML5 rappresentano dunque un’evoluzione della comunicazione sul Web permettendo di utilizzare un canale di comunicazione bidirezionale full-duplex che opera attraverso un unico socket. In particolare, essi prevedono un canale di comunicazione sempre attivo, a bassa latenza, tra client e server, utilizzabile da entrambi sia in scrittura che in lettura. Tale canale è costituito da una connessione TCP persistente, garantito da un handshaking client-key iniziale ed un modello di sicurezza originbased. Per la protezione dei dati trasmessi contro lo sniffing sono applicate apposite maschere. Ecco le caratteristiche principali dei WebSocket:

  1. Bidirezionali. Quando il canale di comunicazione è attivo, sia il client che il server sono connessi ed entrambi possono inviare e ricevere messaggi.
  2. Full-duplex. Dati inviati contemporaneamente dai due attori (client e server) non generano collisioni e vengono ricevuti correttamente.
  3. Basati su TCP. Il protocollo usato a livello di rete per la comunicazione è il TCP, che garantisce un meccanismo affidabile (controllo degli errori, re-invio di pacchetti persi, ecc) per il trasporto di byte da una sorgente a una destinazione.
  4. Client-key handshake. All’apertura di una connessione, il client invia al server una chiave segreta di 16 byte codificata con base64. Il server aggiunge a questa un’altra stringa, detta magic string, specificata nel protocollo (“258EAFA5-E914-47DA-95CA-C5AB0DC85B11”), codifica con SHA1 e invia il risultato al client. Cosi facendo, il client può verificare che l’identità del server che ha risposto corrisponda a quella desiderata.
  5. Sicurezza origin-based. Alla richiesta di una nuova connessione, il server può identificare l’origine della richiesta come non autorizzata o non attendibile e rifiutarla.
  6. Maschera dei dati. Nella trama iniziale di ogni messaggio, il client invia una maschera di 4 byte per l’offuscamento. Effettuando uno XOR bit a bit tra i dati trasmessi e la chiave è possibile ottenere il messaggio originale. Ciò è utile per evitare lo sniffing, cioè l’intercettazione di informazioni da parte di terze parti. L’utilizzo dei WebSocket lato client è possibile attraverso l’uso di specifiche API Javascript che consentono di ottenere informazioni sullo stato della connessione (aperta, chiusa, in apertura o in chiusura), di interagire con essa (inviare dati o chiudere la comunicazione) o di gestire particolari eventi come la ricezione di errori. Lato server, esistono implementazioni dei WebSocket per la maggior parte dei linguaggi più utilizzati (Node.js, Java, C#, Python, Ruby).

Caratteristiche e utilizzo dei WebSocket in informatica

Le ragioni per usare i WebSocket sono molte:

  • I WebSocket rendono la comunicazione in tempo reale molto più efficiente risparmiando in traffico di dati, utilizzo di CPU e in latenza.
  • Rendono la comunicazione tra client e server molto più semplice. Mantenere aperta una connessione con i metodi di Push è molto difficile e laborioso, inoltre usare i metodi HTTP per casi limite aumenta drasticamente la complessità del codice, invece i WebSocket sono stati creati appositamente per questi scopi e sono stati progettati per semplificare tutto questo processo.
  • I WebSocket non sono altro che un protocollo di rete che permette di costruire altri protocolli su di sè, questo permette di creare applicazioni più flessibili.

Pubblicato da Vito Lavecchia

Lavecchia Vito Ingegnere Informatico (Politecnico di Bari) Email: [email protected] Sito Web: https://vitolavecchia.altervista.org

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *