# Architettura di rete

Un'architettura di rete, nell'ambito delle reti di telecomunicazioni, è una tipologia di architettura software che descrive il complesso delle funzionalità logiche della rete stessa, cioè come sono strutturate e interconnesse tra loro. In particolare le architetture di rete sono organizzate a livelli o strati, ciascuno dei quali fornisce al livello superiore o inferiore i servizi o funzionalità richieste, includendo in realtà anche il concetto di architettura a livello fisico di infrastruttura cioè a livello di interconnessioni tra terminali (host), ovvero la cosiddetta topologia della rete.
Tale insieme di funzionalità in buona parte non sono visibili o percepibili dall'utente finale, cioè nel terminale, il quale vede solo l'interfaccia di utenza con l'applicazione e parte dell'intera infrastruttura fisica, ma si nascondono all'interno del software di funzionamento del sistema, sia esso un terminale di rete (host client o server) oppure nodi interni di commutazione, o nelle rispettive interfacce di trasmissione lungo i collegamenti fisici di rete.

## Descrizione

Tipicamente ciascuno strato rappresenta un'astrazione di uno o più aspetti o funzionalità di rete con lo strato superiore che rappresenta lo strato che coinvolge i processi applicativi di rete, mentre quello più in basso è quello relativo alla trasmissione dell'informazione sul canale fisico di comunicazione. Il motivo del perché esistono varie funzionalità di rete è che la semplice trasmissione sul canale fisico non è tutto ciò che serve per una comunicazione efficace e affidabile tra due o più utenti (per via dei mezzi trasmissivi condivisi tra gli utenti, necessità di routing nei nodi interni di commutazione ecc...) avendo dunque bisogno di altre funzionalità per superare anche l'inaffidabilità del canale.
Le regole e le convenzioni usate nel dialogo tra livelli omologhi sono conosciute come protocolli di rete che rappresentano l'implementazione logica delle funzioni dei vari strati di rete. Storicamente nell'implementazione delle reti fisiche più che "suddividere" in maniera top-down le varie funzionalità di rete in strati si è trattato di aggiungere (bottom-up) via via funzionalità sotto forma di protocolli in vari strati aggiuntivi per supplire a difetti, mancanze e problematiche ed ottenere così una comunicazione efficace ed affidabile a partire dalle reti locali aumentando le dimensioni dell'intera interrete fino a giungere all'attuale rete Internet.
Un insieme di livelli e protocolli è detto semplicemente quindi architettura di rete.

### Struttura e funzionamento

Tutte le architetture di rete sono strutturate a livelli. Il livello n su un host porta avanti una comunicazione logica col livello n su un altro host finalizzata allo scambio di informazione. Le regole e le convenzioni che governano la conversazione sono collettivamente indicate col termine di protocollo di livello n. Le entità (processi) che effettuano tale conversazione tra due livelli n si chiamano peer entity (entità di pari livello). Nel caso di reti a commutazione di pacchetto il dialogo fra due peer entity di livello n viene realizzato attraverso lo scambio di PDU (Protocol Data Unit) o pacchetto composta dalla parte di dati utili o payload (SDU Service Data Unit) e dall'intestazione specifica del livello (PCI Protocol Control Information o header) ovvero l'informazione aggiuntiva di servizio (overhead) associata al protocollo stesso (se l'intestazione è aggiunta alla fine della SDU è detta trailer).
Lo scambio di informazioni tra due peer-entity è in realtà solo il frutto di una comunicazione logica tra i due livelli. In realtà a livello fisico non c'è infatti trasferimento diretto di dati dal livello n di host 1 al livello n di host 2: in trasmissione ogni livello di host 1 passa i dati e le informazioni di controllo al livello sottostante. Al livello 1 c'è il mezzo fisico ovvero il canale attraverso il quale i dati vengono trasferiti da host 1 ad host 2. In ricezione, cioè quando arrivano a host 2, i dati vengono passati da ogni livello (a partire dal livello 1) a quello superiore fino a raggiungere il livello delle applicazioni.
Ogni livello n comunica con quello direttamente superiore n+1 o inferiore n-1 attraverso un'interfaccia detta interfaccia SAP (Service Access Point) e identificata da un indirizzo univoco (indirizzo SAP) che si rende utile per capire a quale strato o livello di destinazione è indirizzato il pacchetto, mentre SDU (Service Data Unit) è il termine con cui si indicano i dati scambiati attraverso tali interfacce.
Ogni livello si occuperà quindi di formare il rispettivo pacchetto (framing) delimitandolo dagli altri. Ciascun livello prevede generalmente un campo dati ovvero una SDU di lunghezza variabile con un limite massimo di dati (MTU Maximum Transmission Unit), operando quindi eventuali frammentazioni o segmentazioni su pacchetti troppo lunghi, e spesso anche un limite minimo, operando eventuali aggregazioni o riempimenti aggiuntivi (padding) su pacchetti troppo corti. L'intestazione (header) ovviamente è sempre fissa contenendo informazioni di servizio del rispettivo protocollo essenziali. In alcuni casi invece la lunghezza del payload può essere fissa, ma sempre soggetta a frammentazione e padding eventuali. Nell'archittetura di rete sono inoltre incluse funzionalità di multiplazione/demultiplazione di più connessioni.
In trasmissione ciascuno strato incapsula i pacchetti informativi provenienti dagli strati superiori in un nuovo pacchetto di dimensioni via via più grandi aggiungendovi le informazioni di protocollo del rispettivo strato così che alla trasmissione di dati utili si aggiungono dunque via via sempre maggiori extra-informazioni o informazioni di overhead: per ogni funzionalità introdotta da un protocollo di un certo strato si aggiunge un rispettivo campo dati di overhead nell'intestazione del nuovo pacchetto. Tanto più alto è il numero di livelli e protocolli tanto maggiore sarà l'overhead totale finale e tanto maggiore dovrà essere la portata o throughput sul canale fisico, ma minore sarà il Goodput relativo cioè l'informazione utile rispetto al throughput totale.
In ricezione, avviene il processo inverso: a partire dai livelli più bassi ogni protocollo riconosce ed analizza il rispettivo header del pacchetto ricevuto, compie le funzioni di controllo o elaborazione preposte (realizzando così la comunicazione logico-paritaria tra protocolli omologi di dispositivi diversi) ed infine passa il restante pacchetto al protocollo di livello superiore quello che per questi è la propria PDU e così via fino allo strato o livello di destinazione. In sostanza dunque in trasmissione l'aggiunta delle informazioni di protocollo per ciascuno strato prepara in maniera duale il rispettivo strato protocollare di ricezione all'espletamento del servizio ad esso preposto su ciascun pacchetto dati inviato utilizzando le informazioni di overhead.
In un certo senso si può dire dunque che è proprio l'informazione aggiuntiva di overhead dovuto all'header o PCI dei pacchetti l'essenza stessa delle reti telematiche in termini di architettura: ad esse sono infatti associate tutte le funzioni/operazioni di elaborazione e controllo in ricezione per ottenere una comunicazione efficiente ed affidabile tra due processi di rete.
L'architettura logica di rete racchiude in sé in un unico schema generale tutti i livelli e i relativi protocolli, ma non è detto che tutti questi facciano sempre parte delle funzionalità di ogni sistema di telecomunicazioni all'interno di una rete di telecomunicazioni: alcuni livelli con i loro protocolli possono essere infatti implemenentati solo su nodi interni di commutazione della rete, altri invece solo su nodi esterni ovvero sui terminali host.
Spesso nell'implementazione reale di una rete di telecomunicazioni il meccanismo dell'incapsulamento consente di accoppiare più protocolli di uno stesso strato in soluzioni studiate ad hoc che offrono determinati vantaggi nella particolare situazione d'interesse (tunneling).

### Vantaggi

Rispetto ad un'implementazione a blocco unico una buona progettazione dell'architettura di rete a strati e delle relative interfacce presenta i seguenti vantaggi:
* facilità di organizzazione e implementazione dell'insieme delle funzionalità di rete grazie alla segmentazione e suddivisione di queste in sottoproblemi più semplici (i livelli) implementate poi sotto forma di protocolli all'interno di ciascun livello;
* rendere minimo il numero di informazioni da trasferire;
* facilità di gestione in caso di analisi di eventuali malfunzionamenti;
* semplicità di sviluppo ovvero possibilità di modificare l'implementazione del livello con una più attuale ed efficiente che offra gli stessi servizi.

## Modelli Standardizzati

In generale le tipologie di architetture di reti a livello applicativo possono essere client-server e peer-to-peer. Con questa distinzione si fa riferimento usualmente alle particolari azioni o ruoli svolti da due agenti di una comunicazione ovvero due terminali di rete.
Un modello standardizzato di architettura di rete per reti di calcolatori è il modello ISO/OSI mentre dal punto di vista protocollare, cioè implementativo, un esempio è dato dalla Suite di protocolli Internet.