Fondamenti di telematica
Che cosa è Internet
Internet sono milioni di dispositivi interconnessi (hosts, end-systems, ecc.), links di comunicazione (fibre ottiche, doppini telefonici, ecc.) e routers che instradano pacchetti (sequenze) di dati attraverso la rete. Le entità telematiche sono: applicazioni e processi (coloro che elaborano le informazioni), i protocolli (coloro che regolamentano la trasmissione e la ricezione di messaggi; es. TCP, IP, HTTP, ecc.), le interfacce (sono le "membrane" che separano gli strati) ed infine gli standard Internet e del Web.
Gestione e organismi rilevanti
Per la gestione abbiamo:
- IETF (Internet Engineering Task Force): l’organismo che studia e sviluppa i protocolli in uso su Internet e che si basa su gruppi di lavoro a cui chiunque può accedere.
- RFC/STD (Request For Comments e STanDards): i documenti "ufficiali" che descrivono i protocolli usati su Internet e che sono pubblicamente accessibili in rete.
- ICANN (Internet Corporation for Assigned Names and Numbers): l’organismo che coordina il sistema dei nomi di dominio (DNS), assegna i gruppi di indirizzi di rete ed ha funzioni di controllo dello sviluppo di Internet.
Struttura stratificata e standardizzazione
Presenta una struttura stratificata, ovvero la scomposizione dei sistemi complessi, cosa che facilita la manutenzione e l’aggiornamento dell’intero sistema e dove i principi base sono:
- Separation of Concern: separazione degli interessi e delle responsabilità, fare ciò che compete, delegando ad altri tutto ciò che è delegabile.
- Information Hiding: nascondere tutte le informazioni che non sono indispensabili a che il committente possa compiutamente definire l'operazione.
Le prime reti di calcolatori nascono come sistemi chiusi, ovvero tutti i componenti della rete dovevano essere dello stesso costruttore, cosa che, però, portò a problemi di interoperabilità: gli apparati non riescono ad interpretare i segnali degli altri in altre reti in quanto parlano linguaggi diversi. Si passò così ai sistemi aperti, dove l’obiettivo è quello di realizzare una rete di calcolatori in cui qualsiasi terminale comunica con un qualsiasi fornitore di servizi mediante qualsiasi rete.
Il modello a strati
Per realizzare un sistema aperto è necessario stabilire delle regole comuni, ovvero degli standard: un set di protocolli è aperto se i dettagli del protocollo sono disponibili pubblicamente ed i cambiamenti sono gestiti da un’organizzazione la cui partecipazione è aperta al pubblico, per cui un sistema che implementa protocolli aperti è un sistema aperto (open system); a tal proposito, a partire dal 1976, la ISO (International Organization for Standards) ha dato il via a lavori per giungere ad una serie di standard unificati per la realizzazione di reti di calcolatori aperte, basati sull’architettura a strati di cui sopra, che scompone il problema in sottoproblemi più semplici da trattare, rendendo i vari livelli indipendenti e definendo solamente servizi e interfacce.
Abbiamo qui tre livelli di astrazione:
- Reference Model: modello concettuale che definisce formalmente cosa si intende per strato (layer), per servizio e le relazioni tra gli strati.
- Service Architecture: descrive il servizio fornito da ogni layer ed il punto di accesso al servizio (service access point).
- Protocol Architecture: insieme di regole che descrivono come viene offerto un servizio da uno strato.
Definizioni
Lo strato (o livello) è un modulo interamente definito attraverso i servizi, i protocolli e le interfacce che lo caratterizzano.
Il servizio è un insieme di primitive (operazioni) che uno strato fornisce ad uno strato soprastante.
Il protocollo è un insieme di regole che definiscono il formato e l’ordine dei messaggi inviati e ricevuti tra entità della rete e le azioni che vengono fatte per la trasmissione e ricezione dei messaggi e che, quindi, permettono agli strati paritari di due entità diverse uno scambio efficace ed efficiente delle informazioni:
- Efficace: un sistema che riesce a raggiungere lo scopo prefissato con la maggior frequenza possibile.
- Efficiente: un sistema che riesce a raggiungere lo scopo prefissato con il minor sforzo possibile.
In un protocollo è, quindi, necessario specificare: la sintassi di un messaggio (che campi contiene ed in quale formato), la semantica del messaggio (cosa significa il messaggio) e le azioni da intraprendere dopo la ricezione di un messaggio.
Interfaccia e API
L’interfaccia è un insieme di regole che governano il formato e il significato dei frame, dei pacchetti o dei messaggi che vengono scambiati tra due strati successivi della stessa entità.
L’API (Application Programming Interface) è, infine, un insieme di regole e «contratti» che descrivono i servizi che un programma espone e come possono essere invocati da altri programmi.
Livelli della rete
Abbiamo 7 livelli/strati (ciascuno con i propri protocolli), dove i primi tre sono di Rete, gli altri quattro di Utente:
- Fisico: 1 – trasmette un flusso di bit.
- Datalink: 2 – consegna trame tra interfacce.
- Rete: 3 – instradamento del traffico.
- Trasporto: 4 – trasferimento dati tra host.
- Sessione: 5 – controllo del dialogo.
- Presentazione: 6 – unificazione dati.
- Applicazione: 7 – elaborazione dati.
Connessione tra entità
In particolare, uno strato fornisce servizi allo strato superiore e riceve servizi dallo strato inferiore; lo strato n-esimo di una entità comunica con lo strato n-esimo di un'altra entità secondo un protocollo assegnato e tale comunicazione attraverso un'interfaccia.
Scendiamo nel dettaglio: il generico strato di livello X è costituito da gruppi funzionali chiamati entità (entity), in particolare in ciascuno dei sistemi si ha una entity per strato (a volte in un sottosistema si possono avere più entity per strato); ognuna di tali entity fornisce un servizio allo strato superiore attraverso un’interfaccia alla quale le entity di livello superiore accedono mediante un Service Access Point (SAP); analogamente ogni entity riceve a sua volta un servizio dallo strato inferiore attraverso il SAP di livello inferiore ed il dialogo fra i due strati avviene secondo uno scambio di primitive.
Quanto detto vale, però, all’interno di un sistema, infatti, per quanto riguarda l’interazione fra sistemi, essa avviene unicamente fra entity di pari livello (dette anche peer entity) secondo certe regole che costituiscono il protocollo di quel livello (gli enti di standardizzazione definiscono i vari protocolli cui i sistemi devono allinearsi per poter comunicare, mentre la realizzazione delle interfacce è lasciata libera ai costruttori, purché siano realizzate funzionalmente le primitive che definiscono il servizio).
Service Access Point (SAP)
Il SAP non è altro che un’interfaccia logica tra un’entità di livello N+1 e una di livello N, attraverso la quale viene fornito un servizio; ogni N-SAP ha un indirizzo univoco ed un’entità di strato N può servire più N-SAP contemporaneamente ed, inoltre, uno user può servirsi di più N-SAP contemporaneamente.
La connessione tra entità avviene in questo modo: una N-entity attiva primitive di servizio del livello N-1 per comunicare con una peer entity, fornendo l’indirizzo della N-entity con cui vuole comunicare; infatti ogni entity è univocamente definita da un "titolo" (identificatore assoluto) con le necessarie funzioni di trasformazione per tradurre il titolo in indirizzo relativo; in tal modo una N-entity conosce il titolo della N-entity remota con cui vuole aprire la connessione. Quest’ultima può essere di due tipi:
- Connection-Oriented: associazione logica tra due o più sistemi al fine di trasferire dati; prevede, quindi, la gestione della connessione (instaurazione della connessione; trasferimento dei dati; chiusura della connessione).
- Connection-Less: i dati vengono trasferiti senza stabilire una connessione.
Pertanto, nella rete, l'informazione ha origine al livello Applicativo e discende i vari livelli fino alla trasmissione sul canale fisico: ogni livello aggiunge all’informazione del livello superiore una propria sezione informativa (o più di una) tramite l’incapsulamento; per i dati ricevuti, ovviamente, si segue il cammino inverso. Il processo di incapsulamento delle informazioni è, in particolare, ricorsivo (ogni livello esegue una operazione di incapsulamento su dati già incapsulati dal livello precedente) e reversibile (la definizione dell'incapsulamento è tale da garantire la possibilità di estrarre i dati precedentemente incapsulati).
Formattazione delle informazioni
L’informazione è così formattata: l’entità dello Strato X riceve attraverso il SAP l’informazione da trasferire, che per lei è una Service Data Unit (SDU); a tale SDU viene aggiunto un insieme di informazioni di controllo che costituiscono la Protocol Control Information (PCI) tipiche del protocollo usato ed il blocco di dati così costruito costituisce l’unità di scambio del protocollo usato e viene detta Protocol Data Unit (PDU). L’entità in esame, una volta formata la PDU, la trasmette alla propria peer-entity dell’altro sistema e, per effettuare tale trasmissione, chiede un servizio allo strato inferiore passando la PDU da trasmettere (in generale la PDU di un certo strato è una SDU per lo strato inferiore). A causa di limitazioni sulla lunghezza massima dei messaggi è, e inoltre, possibile che il contenuto di una SDU venga suddiviso in una o più PDU (Segmentazione e Riassemblamento).
Primitive
I comandi e le risposte che livelli si scambiano attraverso l'interfaccia sono chiamati primitive; esse sono divise in quattro classi:
- Richiesta
- Indicazione
- Risposta
- Conferma
Esempio di domanda:
- CONNECT.REQUEST: richiede che venga stabilita una nuova connessione.
- CONNECT.INDICATION: segnala una richiesta di connessione al partner chiamato.
Esempio di risposta:
- CONNECT.RESPONSE: usato dal partner chiamato per accettare o rifiutare le chiamate.
- CONNECT.CONFIRM: informa il chiamante sull' accettazione o sul rifiuto della chiamata.
Tuttavia alcune azioni non hanno necessità di tutte le quattro primitive, ad esempio il troncamento di una conversazione:
- Richiesta: riappendo la cornetta.
- Indicazione: lei sente che ho riappeso (e fa altrettanto).
Tutti i livelli si basano su queste primitive per il controllo di tutte le loro interazioni attraverso le interfacce che li separano, per cui non sono necessari altri tipi di interazione per il controllo degli scambi dati.
Lo strato applicativo
I processi sono programmi eseguiti dai dispositivi terminali (o host o "end system") di una rete ed, all’interno di uno stesso host, due processi possono anche comunicare attraverso la comunicazione inter-processo definita dal sistema operativo; in tale comunicazione, due o più processi girano su ciascuno degli host comunicanti e si scambiano messaggi.
Il protocollo dello strato applicativo definisce: i tipi di messaggi scambiati a livello applicativo (es: di richiesta e di risposta), la sintassi dei vari tipi di messaggio (i campi del messaggio), la semantica dei campi (significato) e le regole per determinare quando e come un processo invia messaggi o risponde ai messaggi.
User agent
Uno User Agent è un’interfaccia tra l’utente e l’applicazione di rete:
- User Agent del Web: "browser".
- User Agent della posta elettronica: il "lettore di posta" o "mail reader".
- User Agent nello streaming audio/video: "media player".
Le applicazioni di rete hanno tipicamente due elementi:
- Client: inizia il contatto con il server ("parla per primo") e tipicamente richiede il servizio al server.
- Server: fornisce al client il servizio richiesto ed è sempre attivo.
Socket
L’interfaccia Socket è l’API che funge da interfaccia tra gli strati di applicazione e di trasporto: è l’API di Internet per eccellenza e due processi comunicano mandando dati alla socket e leggendoli da questa. Come fa, quindi, un processo ad identificare un altro processo con cui vuole comunicare? Serve un identificativo: devo indicare un processo particolare all'interno di un dato host e, quindi, per la comunicazione tra processi, sono necessari l’indirizzo dell’host (mittente e destinazione) e gli identificatori dei processi, sia trasmittente (host mittente) che ricevente (host destinazione).
Uniform resource identifier (URI)
Una URI è una forma generale per identificare una risorsa presente sulla rete: è una sequenza di un set limitato di caratteri (lettere dell’alfabeto, numeri e alcuni caratteri speciali).
Uniform: uniformità della sintassi dell’identificatore anche se i meccanismi per accedere alle risorse possono variare.
Resource: qualsiasi cosa abbia un’identità (documento, servizio, immagine, ecc.).
Identifier: oggetto che può agire da riferimento verso qualcosa che ha identità.
Ci sono due tipi di URI:
- Uniform Resource Locator (URL): sottoinsieme dell’URI che identifica le risorse attraverso una rappresentazione del loro meccanismo di accesso primario, ad esempio la loro "locazione" di rete: http://www.apple.com/index.html
- Uniform Resource Name (URN): sottoinsieme dell’URI che deve rimanere unico e persistente globalmente anche quando la risorsa cessa di esistere o diventa indisponibile: urn:doi:10.1000/1
Una URI può essere formata da quattro componenti:
- <scheme>: obbligatorio, è lo schema per identificare la risorsa.
- <authority>: è il nome di dominio di un host o il suo indirizzo IP in notazione decimale puntata (server).
- <path>: contiene dati specifici per l’autorità (o schema) e identifica la risorsa nel contesto di quello schema e autorità. Può consistere in una sequenza di segmenti separati da "/".
- <query>: stringa di informazioni che deve essere interpretata dal server.
Le URI, inoltre, possono essere assolute o relative:
- URI assoluta: identifica una risorsa indipendentemente dal contesto in cui è usata.
- URI relativa: informazioni per identificare una risorsa in relazione ad un’altra URL (è priva dello schema e della authority); non viaggiano sulla rete e sono interpretate dal browser in relazione al documento di partenza.
Hypertext transfer protocol (HTTP)
L’HTTP, usato dal 1990 come protocollo di trasferimento per il World Wide Web, permette di costruire sistemi di accesso all’informazione indipendenti dal tipo dell’informazione stessa. È un protocollo di tipo request/response: la connessione viene iniziata dal client, che invia un messaggio di request ed il server risponde con una response; in particolare le coppie richiesta/risposta sono indipendenti (protocollo generico e stateless).
Lo schema "http" è usato per localizzare risorse di rete attraverso il protocollo HTTP: "http:" "//" host [ ":" port ] [ path ]
- host = un nome di dominio di host legale in Internet o l’indirizzo IP (in notazione decimale puntata).
- port = numero di porta (se assente, si assume 80 come porta).
La connessione viene terminata con HTTP 1.0, oppure, con HTTP 1.1, si procede con un’altra coppia di request/response. Tale connessione è un circuito virtuale a livello di trasporto stabilita tra due programmi applicative con lo scopo di comunicare e può essere:
- Non-persistente (http1.0): per ogni URL viene stabilita una connessione TCP separata.
- Persistente (http1.1): dove non altrimenti indicato, il client può assumere che il server manterrà una connessione persistente. Il server lascia aperta la connessione TCP dopo aver spedito la risposta e può quindi ricevere le richieste successive sulla stessa connessione; chiude, invece, la connessione quando viene specificato nell’header del messaggio (desiderata da parte del cliente) oppure quando non riceve richieste per un certo intervallo di tempo (time out).
Per migliorare le prestazioni, si adotta anche la strategia di pipelining, che consiste nell’invio da parte del client di molteplici richieste senza aspettare la ricezione di ciascuna risposta; il server deve poi inviare le risposte nello stesso ordine in cui sono state ricevute le richieste (il client non può inviare in pipeline richieste che usano metodi HTTP non idempotenti).
Intermediari di rete
Il percorso logico che seguono request e response è detto chain e tale percorso può essere modificato da tre entità di rete (intermediari) con funzionalità diverse:
- Proxy: programma intermediario che agisce sia da client che da server con lo scopo di effettuare le richieste per conto di altri client. Queste richieste sono servite internamente oppure passate, con una possibile traduzione ad altri server.
- Gateway: server che agisce da intermediaro per altri server. A differenza di un proxy, un gateway riceve richieste come se fosse il server di origine per la risorsa richiesta.
- Tunnel: programma intermediario che agisce come un relè cieco tra le due connessioni (funge da punto di inoltro tra due connessioni senza modificare i messaggi).
Cache di rete
È adottato anche un sistema di cache, ovvero memorizzare copie temporanee di risorse Web (es. pagine HTML, immagini) e servirle al client per ridurre l’uso di risorse (come la banda):
- Web cache
- User Agent Cache: il browser mantiene una copia delle risorse visitate dall’utente.
- Proxy Cache: il proxy intercetta il traffico e mette in cache le risposte, per cui successive richieste alla stessa Request-URI possono essere servite dal proxy senza inoltrare la richiesta al server.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
-
Riassunto Fondamenti I° Modulo
-
Riassunto fondamenti di informatica
-
Riassunto Fondamenti di informatica
-
Riassunto esame Fondamenti di fisiologia, Prof. Fioranelli Massimo, libro consigliato Neuroscienze. Esplorando il c…