diff --git a/001-ISO⁄OSI-TCP⁄IP.md b/001-ISO⁄OSI-TCP⁄IP.md index be7f6cb..413acf5 100644 --- a/001-ISO⁄OSI-TCP⁄IP.md +++ b/001-ISO⁄OSI-TCP⁄IP.md @@ -16,10 +16,44 @@ Per dimensioni, l'architettura di rete si puo' suddividere in: Per creare una comunicazione standard tra i vari host é stato creato il modello teorico ISO/OSI, implementato nel modello TCP/IP. +Si tratta di una struttura di dati che contiene un insieme di protocolli (regole), divisi, in base al loro scopo, tra i vari layer. + - `Physical layer` `Layer 1`: livello piú basso, che si occupa dell'effettiva trasmissione fisica dei dati, mediante un mezzo trasmissivo (es. cavo in rame, fibra ottica, onde radio, ecc.). Le informazioni inviate sono codificate come `bit` (0 e 1). - `Data-Link` o `Layer 2`: una serie di standard che si occupano di comunicazioni tra dispositivi locali (LAN), con eventuali meccanismi di correzione degli errori. I pacchetti di informazioni sono chiamati `frame`, che contengono anche i vari mac-address sorgente e destinazione. - -Ogni layer ha un suo determinato *meccanismo di indirizzamento* delle informazioni, che garantisce un flusso bidirezionale (come e da chi verso chi). Ad esempio, a livello data-link sarà il mac sorgente e destinatario. - - `Network Layer` o `Layer 3`: i `protocolli di routing` (instradamento dei pacchetti) permettono l'indirizzamento degli host a livello globale (WAN). -- `Transport Layer` o `Layer 4`: \ No newline at end of file +- `Transport Layer` o `Layer 4`: crea un vero e proprio canale di comunicazione tra i singoli processi, associati ad una porta, di due o piú host (TPC/UDP). +- `Session Layer` o `Layer 5`: gestione della sessione della comunicazione. +- `Presentation Layer` o `Layer 6`: a questo livello l'informazione viene elaborata e trasformata in modo da presentarla all'`Application Layer` (e quindi per essere comprensibile a noi umani). +- `Application Layer` o `Layer 7`: a stretto contatto coi software che utilizziamo. + +In ogni layer, il pacchetto di informazioni ha varie nomenclature. Inoltre, ogni layer ha un suo determinato *meccanismo di indirizzamento* delle informazioni, che garantisce un flusso bidirezionale (come e da chi verso chi). Ad esempio, a livello data-link sarà il mac sorgente e destinatario. + +- `Application`: payload o messaggio +- `Transport`: segmento TCP (indirizzamento tramite porte) +- `Network`: pacchetto IP (indirizzamento tramite indirizzo IP) +- `Data-Link`: frame (indirizzamento tramite mac-address) +- `Physical`: bit (mezzo trasmissivo che collega due o piú host) + +### Interazione tra i layer + +I layer sono modulari e indipendenti: qualche aggiunta o modifica ad un certo layer, non distrugge la struttura generale. Tuttavia, questi interagiscono tra di loro in diversi modi: + +- Interazione adiacente (`adjacent layer interaction`): si verifica quando un layer richiede un servizio da quello immediatamente sottostante, oppure quando un layer offre un servizio a quello immediatamente soprastante. Offrire un servizio, in questo contesto, significa mettere a disposizione un protocollo specifico. +Ad esempio, l'utilizzo del protocollo HTTPS implica la necessità di una trasmissione dati affidabile. Ciò comporta che il livello applicativo, che gestisce HTTPS, debba appoggiarsi al livello di trasporto per garantire la consegna affidabile dei dati. In altre parole, il livello applicativo "richiede" al livello di trasporto l'uso di un protocollo affidabile come il TCP, per assicurare che le informazioni vengano trasmesse correttamente. +- `Same layer interaction`: indica l'interazione tra stessi livelli di due stack protocollari di host differenti (come se l'application layer dell'host A comunicasse direttamente con l'application layer dell'host B). Questo collegamento logico prevede un meccanismo chiamato incapsulamento/deincapsulamento. + +1. Incapsulamento: + - Al momento dell’invio, i dati generati dall’applicazione vengono passati attraverso i vari layer dello stack dell’host A + - Ogni layer *aggiunge al payload informazioni* necessarie per la gestione della comunicazione, sotto forma di header e/o trailer + +2. Trasmissione: + - I dati, incapsulati in vari *strati*, viaggiano quindi attraverso la rete + +3. Deincapsulamento: + - All’arrivo dell’informazione sull’host B, i dati vengono elaborati seguendo l’ordine inverso rispetto a quello dell’incapsulamento + - Ogni layer *rimuove (o "spacchetta") le informazioni* (header/trailer) che erano state aggiunte dal corrispondente layer dell’host A + - In questo modo, l’host B riesce a recuperare i dati originali generati dall’applicazione + +L’architettura a strati facilita l’interoperabilità tra differenti sistemi e protocolli, poiché ogni layer opera in modo indipendente. + +Non tutti gli host implementano tutto lo stack protocollare. Ad esempio, un dispositivo embedded potrebbe avere solo le funzionalità base per comunicare via rete (come il livello di rete e di trasporto) senza implementare un layer applicativo complesso. \ No newline at end of file