Applicazioni, servizi e protocolli di rete

Una applicazione di rete è costituita da un insieme di programmi che vengono eseguiti su due o più computer contemporaneamente. Essa:

  • Fornisce/realizza un servizio per un utente finale

  • è composta da più programmi in esecuzione (processi) su host diversi

    • Client: processo che inizia la comunicazione
    • Server: processo che aspetta di essere contattato
  • Usano il livello applicazione del modello ISO/OSI e TCP/IP

  • Viene identificata da un socket

  • per esempio:

    • Posta elettronica
    • Internet
    • Scambio di file FTP
  • Sono basate su servizi offerti da server

    • Data base server
    • Web server
    • File server
    • Application server
    • Print server
    • Proxy server
    • DHCP server
    • DNS server
    • Server di autenticazione
    • Game server
  • Si basano su protocolli (cioè degli standard che permettono alle organizzazioni di realizzare determinati software compatibili con altri software che rispettano codesto standard. Essi sono importanti per lo stesso motivo per cui due persone che non parlano la stessa lingua non si capiscono)

    • Hypertext Transfer Protocol (HTTP e HTTPS)
    • Domain Name System (DNS)
    • Dynamic Host Configuration Protocol (DHCP)
    • Simple Mail Transfer Protocol (SMTP)
    • Post Office Protocol (POP)
  • Possono richiedere una cifratura per garantire la sicurezza (SSL/TSL)

Mail

Il servizio di posta elettronica è uno dei servizi di rete più diffusi. La trasmissione di e-mail tra utenti avviene attraverso lo scambio di messaggi fra client mail server. Quest’ultimo memorizza le e-mail in un database e le associa ad un determinato utente in modo che possa accedere solo allo spazio di propria competenza (casella di posta elettronica).

Nel 1970 il Network Working Group, nato dalla collaborazione tra le università legate ad Arpanet, definisce il NCP (Network Control Protocol), in altre parole l’insieme delle regole necessarie per far parlare tra loro due host, computer collegati alla rete. Nel 1971 Ray Tomlinson, ricercatore della BBN, spedisce il primo messaggio di posta elettronica della storia. Lo standard ufficiale dell’e-mail viene elaborato nel corso degli anni attraverso varie tappe, l’ultima delle quali è la RFC 821 (Request For Comment) del 1982, con la quale si definisce il SMTP, il protocollo di trasmissione dei messaggi e-mail tuttora in uso.

Gli indirizzi di e-mail hanno la nota forma:

  • MUA (Mail User Agent): è il software installato dagli utenti della mail (Microsoft office Outlook, Thunderbird, Eudora, …) oppure utilizzato sul browser (Gmail, Hotmail, Outlook.com, …), che permette di:
    • Leggere i messaggi di posta e scaricare gli allegati;
    • Inviare messaggi di posta e inviare gli allegati;
    • Eliminare, archiviare e ordinare i suddetti messaggi.
  • MTA (Mail Transport Agent): è il sottosistema dedicato all'interscambio dei messaggi tra diverse caselle di posta.

Esso si basa su due protocolli: SMTP e POP3 (o IMAP).

  • SMTP si occupa di inviare la mail alla casella di posta del destinatario. Il protocollo SMTP non può essere usato per il trasferimento “finale”, poiché la macchina destinataria è di solito offline ed è connessa solo per brevi periodi. Perciò il server SMTP trasferisce la posta al server POP (Post Office Protocol), dove viene accodato. Il destinatario per recuperare l’e-mail usa il protocollo POP:

Dallo schema si deduce che un server può avere più di una casella di posta, ed è possibile inviare mail allo stesso server: da [email protected] a [email protected] senza nessun problema.



  • POP3 (o IMAP) si occupano di tenere la posta e quando richiesto farla scaricare all'utente per poterla leggere.
    • Usando POP il programma di posta si connette al server, recupera tutta la posta, la conserva in locale come nuova posta da leggere, cancella i messaggi dal server principale e poi si disconnette. Il comportamento predefinito del POP è quello di eliminare la posta dal server, questo significa che non è più possibile vederla se si accede al proprio account email via browser tramite la WebMail. E’ comunque possibile attivare nei vari programmi di posta la relativa opzione per conservare una copia dei messaggi sul server senza cancellarli. Il POP segue l’idea che si acceda alla posta solo da un unico client o postazione, quindi le mail possono essere salvate localmente (ad esempio sul computer). I vantaggi dell’usare il protocollo POP3 sono:
      • Le email vengono memorizzate localmente e sono sempre accessibili sul computer e sul cellulare, anche senza connessione internet
      • La connessione è necessaria solo per l’invio e la ricezione della posta
      • Si risparmia spazio di archiviazione sul server (non rimangono mai dei messaggi in remoto)
      • Resta comunque la possibilità di lasciare copia dei messaggi ricevuti (posta in arrivo) sul server.
      • POP3 blocca la casella postale durante la consultazione, il che significa che è impossibile avere una consultazione simultanea della stessa casella da due utenti.
    • Usando IMAP il programma di posta si connette al server, richiede il contenuto dei nuovi messaggi e li presenta salvandoli nella cache (file temporanei). Se l’utente legge un messaggio, lo modifica, lo cancella o la segna come letto, tali modifiche vengono riprodotte anche sul server e quindi sulla WebMaile sugli eventuali altri dispositivi dove è stato configurato lo stesso account di posta. Il flusso di lavoro IMAP è più complesso di quello POP ed è per questo che non tutte le caselle di posta elettronica e i client email supportano IMAP. I vantaggi di usare il protocollo IMAP sono:
      • La posta viene salvata sul server remoto ed è accessibile da più postazioni e/o dispositivi diversi
      • La connessione ad internet è sempre necessaria per accedere alla posta
      • Vengono scaricate solo le intestazioni dei messaggi (almeno fino a che non è richiesto anche il contenuto), si può quindi ottenere una panoramica veloce delle mail
      • Si risparmia spazio sul computer e/o sul dispositivo mobile perchè i messaggi restano sul server
      • Non c’è il rischio di perdere i messaggi anche se si rompe il computer o il dispositivo utilizzato perchè la posta rimane sempre online sul server
      • E’ sempre comunque possibile salvare le mail in locale

Negli ultimi anni si stanno diffondendo le WebMail. La WebMail è un'applicazione web che permette di gestire uno o diversi account di posta elettronica attraverso un browser. La WebMail è un servizio molto utile in quanto permette di ricevere ed inviare le proprie email, ovunque vi troviate. È sempre possibile spedire e ricevere files in allegato. Attraverso l'interfaccia grafica si stabilisce una normale connessione verso un server di posta. Esse offrono diversi vantaggi:

  • Possibilità di leggere la propria posta ovunque vi sia una connessione ad internet;
  • I messaggi non necessitano di essere scaricati;
  • Le caselle di posta possono essere amministrate molto facilmente.

Ma bisogna ricordare che per usare le WebMail:

  • È richiesta una connessione sia per la visualizzazione che per la composizione dei messaggi;
  • Una connessione lenta inficia la funzionalità generale della WebMail;
  • Le funzionalità di composizione di messaggi sono generalmente limitate sia per la formattazione sia per la dimensione totale di un messaggio;
  • La quota di spazio per le caselle di posta è generalmente limitata.

Inoltre servizi come Gmail e Outlook.com (i più usati) stanno lentamente abbandonando i classici protocolli (STMP, POP3 e IMAP) rendendo di fatto superfluo i client di posta tradizionali. L’abbandono di tali sevizi si è reso necessario in quanto essi sono molto insicuri e vulnerabili.

Infatti SMTP è un protocollo testuale basato sulla codifica ASCII, non è permesso trasmettere direttamente testo composto con un diverso set di caratteri e tanto meno file binari, nonostante è pratica comune inviare allegati tramite una codifica base64.
Una delle limitazioni del protocollo SMTP originario è che non gestisce l’autenticazione del mittente. Oltre al rischio di spam, esiste la possibilità di inviare e-mail facendo apparire come
mittente l’indirizzo corrispondente ad un altro account. Per ovviare a questi problemi è stata sviluppata un’estensione chiamata SMTP-AUTH. Nonostante questo, lo spam rimane ancora oggi un grave problema. Per questo motivo sono stati proposti diversi protocolli ausiliari per assistere le transazioni SMTP. Infatti, si sta lavorando su varie proposte di autenticazione e-mail.

Il protocollo POP3, invece, gestisce così l'autenticazione attraverso il nome utente e password, ma non è invece sicuro dato che le password, come le mail, circolano in chiaro (in modo non criptato), sulla rete. In realtà, secondo la RFC1939, è possibile codificare la password utilizzando l'algoritmo MD5 e quindi beneficiare di un'autenticazione sicura. Tuttavia, essendo questo un comando opzionale, solo pochi server lo implementano.

La prima mail è stata inviata Ray Tomlinson nella rete di ARPANET tra due università distinte.

Formato di una e-mail

hMailServer

hMailServerpermette di creare e mantenere in autonomia un server di posta elettronica con le funzionalità basilari dei protocolli POP3, IMAP ed SMTP (non tralasciando la sicurezza).

Comandi e risposte dei protocolli POP3 e IMAP

La comunicazione client-server avviene, normalmente, tramite telnet o SSH, tramite alcuni comandi standard.
In particolare i seguenti protocolli vengono visti più approfonditamente quì: +1. Applicazioni, servizi, protocolli

Comandi IMAP

Risposte IMAP


Esempio di connessione IMAP

Comandi ed esempio di connessione POP3

Comandi IMAP

Alcuni mail server in circolazione

  • Micorosft Exchange: richiede un computer con Windows Server e Active Directory, ha una grossa dipendenza da Active Directory

  • hMail Server: non ha i requisiti di Microsoft Exchange ed è semplice e intuitivo

HTTP/HTTPS

Il protocollo HTTP (HyperText Transfer Protocol) è usato per trasferire risorse come pagine web, immagini, file, video, suoni, musica, interrogazioni a database, ecc. Come tutti i protocolli del livello Applicazione, anche HTTP si basa sulla architettura client server. La comunicazione è avviata dal client che richiede una risorsa al server HTTP, quest’ultimo risponderà fornendo le risorse richieste a condizione che queste siano disponibili. I client http consistono in software, detti browser, che hanno il compito di interpretare e visualizzare le risorse ricevute dal server (file, video, immagini ecc.). I browser più comuni sono Microsoft Explorer, Google Chrome, Mozilla Firefox. La richiesta, da parte di un client, è descritta all’interno di una stringa chiamata URL (Uniform Resource Locator). L’URL è un particolare formato del formato più generale di identificazione delle risorse on line detto URI (Uniform Resource Identifier). L’URL, in particolare, indica in quale luogo è disponibile la risorsa e con quale protocollo è possibile prelevarla. Un esempio di URL è il seguente:

http://www. esempio1.com/documento.html

Osserviamo che il primo elemento dell’URL è “http” che indica il protocollo che si intende usare per prelevare la risorsa che, in questo esempio, è un file in formato html di nome “documento.html”; tale documento è depositato in un server il cui nome a dominio è www.esempio1.com. Più in generale un URL ha il seguente formato:

protocollo://<username:password@>nomeDominio<:porta></percorso><?querystring><#fragment identifier>
  • protocollo: Identifica il protocollo-applicazione di cui si ha bisogno per accedere alla risorsa: esempi HTTP, HTTPS...

  • <username:password@>: campo opzionale: si tratta di un accesso dove il prelievo della risorsa avvienemediante l’invio dell’username e password; questo campo però non è quasi mai usato in quanto queste informazioni verrebbero inviate in chiaro; l’autenticazione mediante username e password si effettua mediante tecniche più sicure.

  • nomeDominio: campo obbligatorio; indica l’indirizzo IP o il nome del dominio DNS del server che contiene larisorsa ;

  • <:porta>:campo opzionale; se questo campo è omesso viene utilizzata la porta TCP di default del protocollo:80 per HTTP, 21 per FTP, 443 per HTTPS ecc.

  • /percorso: campo opzionale; indica qual è il percorso della risorsa (file, video, immagine, ecc.) situata nel supporto di memorizzazione del server (quasi sempre Hard disk); se omesso il server apre un file predefinito, ad esempio index.html.

  • <?querystring>:Campo opzionale: le query string sono delle stringhe utilizzate per inviare dei valori al server, una query string ha questo formato: [...]?parametro1=valore&parametro2=valore2.

  • <#fragment identifier>:campo opzionale: indica dove è posizionata una particolare parte all’interno di una risorsa.

Connessione HTTP

Il protocollo HTTP, come tutti i protocolli del livello di applicazione, stabilisce una connessione client server mediante il protocollo di trasporto. In particolare HTTP impiega TCP sulla porta 80.

Per comprendere come avviene una connessione HTTP supponiamo di voler visualizzare una pagina HTML di un blog naturalistico depositato su un server HTTP raggiungibile tramite il dominio www.mioblog.org. La risorsa è la pagina html di nome benvenuto.html che raffigura anche due immagini, aquila.jpg e bosco.png, situati nella cartella /immagini del server HTTP .

  1. il client avvia un’interrogazione DNS per conoscere l’indirizzo IP del server www.mioblog.org
  2. Il DNS risponde inviando al client l’indirizzo IP del server http
  3. Il client avvia una connessione TCP con il server sulla porta 80 e successivamente invia una richiesta le cui risorse sono il file benvenuto.html che contiene l’immagine aquila.jpg e bosco.png all’interno della cartella /immagini sull’hard disk del server
  4. Il server HTTP preleva le risorse e le invia al client mediante un messaggio di risposta, il client riceve il messaggio ed elabora le risorse visualizzandole sullo schermo; la connessione TCP termina.

è facile dedurre che un client richiede sempre più di una richiesta al server soprattutto quando le risorse richieste sono complesse. La versione HTTP 1.0 prevedeva una connessione TCP separata per ogni richiesta (connessione non persistente - non persistent connection) che risultò immediatamente inefficace non appena lo sviluppo di piattaforme e i servizi WEB diventarono sempre più complessi. Nella versione HTTP 1.1 venne introdotto la connessione persistente (persistent connection), mediante la quale un client invia tutte le richieste attraverso una sola connessione TCP.

Richiesta HTTP

Un messaggio di richiesta HTTP, è formato da tre parti fondamentali:

  • linea di richiesta (request line)

  • intestazioni http (request header)

  • corpo del messaggio (message body): opzionale

Risposta HTTP

Il messaggio di risposta del server verso il client, ha un formato molto simile al messaggio di richiesta. L'unica differenza significativa è che le risposte cominciano con una linea di stato piuttosto che con una linea di richiesta. In definitiva una risposta HTTP, come per la richiesta, è formata dalle tre parti fondamentali:

  • linea di stato (status line)

  • intestazioni http (request header)

  • corpo del messaggio (message body): opzionale

All'interno della linea di stato troviamo i codici di stato:

  • Categoria 1: Codici da 100 a 199: messaggi informativi: il server ha ricevuto la richiesta ma la risposta non è ancora pronta;

  • Categoria 2: Codici da 200 a 299: Successo: il server ha risposto con successo;

  • Categoria 3: Codici da 300 a 399: Redirezione: la richiesta non è fallita definitivamente, ma è necessario che il client riprovi con un altro server o altra risorsa

  • Categoria 4: Codici da 400 a 499: Errore sul lato client: la richiesta del client contiene un errore che ha impedito al server di rispondere

  • Categoria 5: Codici da 500 a 599: Errore sul lato server: la richiesta del client è corretta ma il server per qualche ragione non è in grado di rispondere.

HTTPS

Per eseguire comunicazioni WEB sicure si ricorre al protocollo HTTP Secure (HTTPS). Il servizio HTTPS è fondamentale quando lo scambio di messaggi fra client e server http deve essere protetto da potenziali tentativi di intercettazione. HTTPS infatti usa degli algoritmi di autenticazione e di crittografia in modo tale che eventuali messaggi intercettati in maniera dolosa risultano indecifrabili. L'URL di un sito che utilizza una trasmissione sicura inizia con https://.... invece di http:// come di consueto.

HTTPS utilizza il protocollo TLS (Transport Layer Security) / SSL (Secure Socket Layer) per crittografare i messaggi. Il protocollo HTTPS, a causa delle procedure di crittografia e de-cifratura, richiede maggior carico di rete e risulta più lento, a parità di condizioni, del protocollo http.

A questo punto scatta il TLS Handshake con le relative implicazioni che sono state illustrate nel paragrafo precedente. Al termine della fase il colloquio tra un client HTTPS (tipicamente un client Web) e un server HTTPS (tipicamente un server Web) risulta autenticato, integro e segreto. Però gli host che sono equipaggiati con i client HTTPS più diffusi, ovvero browser come MS Explorer, Google Chrome, Mozilla Firefox, Opera e Safari, non hanno alcuna necessità di acquistare un certificato digitale da un ente autorizzato ben noto (CA). Un utente privato, ad esempio, non ha nessuna esigenza di questo, come la stragrande maggioranza degli utenti che operano in modo ‘client’ sul Web.

L'uso di HTTPS è utile in contesti in cui è richiesta la privatezza dei contenuti trasmessi. Inoltre è un requisito per la realizzazione di applicazioni per Facebook.
I dati inviati utilizzando HTTPS vengono tutelati mediante il protocollo

Transport Layer Security (TLS), che fornisce tre livelli di protezione essenziali:

  • Crittografia. I dati scambiati vengono criptati per proteggerli dalle intercettazioni. Ciò significa che, mentre l'utente consulta un sito web, nessuno può "ascoltare" le sue conversazioni, tenere traccia delle attività svolte in più pagine o carpire le sue informazioni.

  • Integrità dei dati. I dati non possono essere modificati o danneggiati durante il trasferimento, intenzionalmente o meno, senza essere rilevati.

  • Autenticazione. Dimostra che gli utenti comunicano con il sito web previsto. Protegge da attacchi man-in-the-middle e infonde fiducia negli utenti, il che si traduce in altri vantaggi commerciali.

Dal mese di gennaio 2017 Google ha introdotto una nuova politica sulla sicurezza dei domini internet, imponendo di fatto ai siti internet di dotarsi di un certificato SSL DV (certificato sicuro per la validazione del dominio). Ciò significa che anche nei risultati di ricerca, Google, preferirà i siti internet che inizieranno per https, rispetto ai siti in http.

Dai primi mesi 2017, i browser come Google Chrome, segnalano tutti i siti non SSL come non sicuri: il che non significa assolutamente che il nostro sito sia pericoloso per chi vi naviga, ma questo avviso potrebbe spaventare gli internauti meno esperti, scoraggiandoli a visitare la vostra pagina.

Inoltre, cosa ben più importante, il motore di ricerca Google favorirà nell’indicizzazione i siti protetti da SSL, penalizzando così nella ricerca tutti i siti senza certificato.

SSL DV è un acronimo inglese, sta perSecure Sockets Layer - Domain validated. È un certificato che una autorità chiamata CA (Certificate Authority) rilascia al proprietario del sito internet, per rendere sicura la comunicazione tra il dominio e l'utente finale. Quando un utente visita un sito web concertificato SSL DV attivo, la comunicazione tra sito e utente è crittografata a 128bit.

Al di là di quanto siamo disposti a spendere per un certificato, è lecito chiedersi perchè alcuni servizi offrano certificati gratuiti, mentre altri richiedano cifre non sempre indifferenti. In generale, infatti, possiamo distinguere i certificati SSL in tre principali tipologie:

  • Domain Validation: può essere applicato ad un singolo dominio o a domini di secondo livello. In genere, questo genere di certificati si possono ottenere nel giro di pochi minuti e a prezzi molto contenuti, con una semplice verifica tramite mail (senza documenti cartacei o altra burocrazia);
  • Business/Organization Validation: anche questo tipo di certificato può essere applicato ad un singolo dominio o a domini di secondo livello, ma richiede una verifica atta ad accertare l’identità della società richiedente il certificato. In genere, questo tipo di certificato richiede tra le 24 e le 72 ore per essere emesso, ma offre un maggior livello di sicurezza e affidabilità;
  • Extended Validation: come il precedente, ma richiede procedure meno rapide e burocraticamente più “faticose”, offrendo però un maggiore livello di sicurezza. I costi sono in genere più elevati, e l’emissione del certificato richiede tra i 2 ed i 7 giorni.

Princiapli web server in circolazione

  • Microsoft IIS: richiese un computer con Windows Server
  • Apache: non ha le necessità di Microsoft IIS, gira ovunque.

FTP

FTP è il protocollo standard per il trasferimento di file tra un client (client FTP) e un server (server FTP). Utilizza TCP come protocollo di trasporto. La sua versione più semplice, denominata Trivial FTP , usa UDP. FTP utilizza due canali per la comunicazione tra client e server:

  • Uno per l’invio di comandi;
  • L’altro per i dati.

La connessione tra client e server può avvenire secondo due modalità:

  • Attiva (FTP active mode);
  • Passiva (FTP passive mode).

Sono previste due modalità predefinite di accesso:

  • Utente;
  • Anonima.

La modalità di accesso

anonima

presenta due limitazioni:

  • È necessario limitare l’accesso alle sole informazioni che si vogliono diffondere;
  • Non bisogna consentire l’uso di FTP server per la distribuzione e modifica di materiale di terzi (per esempio si può rendere write-only la cartella di upload).

MQTT

è il protocollo pensato da IBM per l’IoT nel 1999. L’acronimo sta per Message Queuing Telemetry Transport protocol.MQTT `e un protocollo basato sul modello publish/subscribe progettato per essere aperto, semplice, leggero e facile da implementare. Queste caratteristiche lo rendono perfetto per essere utilizzato in situazioni particolari quali per esempio:

  • Quando la rete ha bisogno di poco bandwidth.
  • Quando il sistema che lo implementa è eseguito su sistemi embedded con limitate capacita di memoria e di CPU

La sua implementazione utilizza tcp, ed è un protocollo machine-tomachine(m2m).

L'MQTT permette di specificare il QoS:

  • At most once (0)
  • At least once (1)
  • Exactly once (2)

Inoltre esiste una versione "Sicura" chiamata SMQTT.

Però necessita di un "Broker" che smista i messaggi, che rallenta una comunicazione client-server, ma aumenta la velocità quando ci sono vari server che elaborano dei dati ed ognuno ha bisogno di una porzione dei dati.

results matching ""

    No results matching ""