I Protocolli di ReteI protocolli sono degli standard che specificano le modalità in cui avviene il trasferimento di informazioni da una macchina ad un'altra. Essi specificano le modalità di rappresentazione dei dati, le tecniche per la rivelazione degli errori e i meccanismi di acknowledgment per i pacchetti che vengono trasmessi.Con il termine TCP/IP non si intende esclusivamente il protocollo di trasmissione TCP con aggiunto il protocollo di rete IP, ma una intera famiglia di protocolli che comprende anche UDP, ICMP, ARP, RARP ed altro.
Da questa famiglia sono escluse applicazioni quali:
- posta elettronica (E-mail)
- trasferimento di file (FTP)
- emulazione di terminale remota (TELNET).
Il TCP/IP, al contrario dei molti standard diventati successivamente protocolli, è nato inizialmente come protocollo e solo successivamente si è evoluto tanto da diventare uno standard.. Il Modello a Strati (Layers)Il modello a strati è una rappresentazione dei sistemi di rete che permette di separare le diverse funzionalità in strati di protocolli, permettendo di analizzarli più facilmente.Tale modello è fondamentale per poter disegnare l'architettura software strutturata in più livelli ognuno dei quali, con i suoi vari protocolli, tratta una determinata parte delle problematiche di trasmissione.Il concetto di stratificazione si basa su un principio che afferma che lo strato ennesimo alla stazione di destinazione deve ricevere un pacchetto perfettamente identico a quello che è uscito dallo stesso livello della stazione di origine.I due principali esempi di modelli a strati sono rappresentati da:
- l'Open System Interconnection (OSI) dell'ISO
- il TCP/IP
Si può rappresentare il software di una macchina come costituito da diversi strati, ognuno dei quali svolge una propria specifica funzionalità.Uno strato, in questa rappresentazine, comunica unicamente con lo strato immediatamente superiore o inferiore e lo fa tramite delle interfacce standard, all'interno dello strato stesso la comunicazione può avvenire in una qualunque modalitàPer poter comunicare da uno strato n ad uno strato n-2 (n+2) bisogna necessariamente passare attraverso uno strato intermedio n-1 (n+1).Mandare un messaggio da un programma di una macchina ad un programma su un'altra significa trasferire il messaggio attraverso tutti i vari strati fino al livello di rete e, tramite l'hardware, raggiungere l'altra macchina, quindi risalire gli strati software in successione fino al livello di applicazione dell'utente di destinazione.In particolare il software TCP/IP è organizzato in quattro livelli più un quinto costituito dal supporto fisico vero e proprio. La figura seguente mostra i quattro livelli: Application LayerNel livello più alto, l'utente esegue i programmi applicativi che permettono di accedere ai servizi disponibili attraverso Internet; tale livello riguarda tutte le chiamate e le opzioni dei vari programmi. Questo livello, inn sintesi, gestisce l'interazione tra utente e macchina.Un determinato programma applicativo interagisce con uno dei protocolli del livello di trasporto per inviare o ricevere dati, quindi li passa al livello di trasporto nella forma richiesta.Tranport LayerLo scopo primario del livello di trasporto è quello di consentire la connessione in rete fra due utenze, cioè permettere la comunicazione tra un livello applicativo ed un altro; questa comunicazione viene definita anche "end-to-end".Il flusso di dati viene diviso in pacchetti, con una lunghezza di circa 500 byte. Questi vengono passati, insieme all'indirizzo di destinazione, allo strato sottostante. Il livello di trasporto deve accettare dati da molti utenti contemporaneamente e deve, inoltre, smistare i pacchetti che gli arrivano da sotto ai vari programmi, quindi utilizzare dei codici ad hoc per indicare le porte.Le procedure di trasporto dei pacchetti aggiungono ad ogni singolo pacchetto alcuni bit in più atti a codificare, tra l'altro, i programmi sorgente e destinazione.Il livello di trasporto può regolare il flusso di informazioni e può, nel caso del TCP e a differenza dell'UDP, definire un trasporto che sia affidabile, con la sicurezza che i dati arrivino alla destinazione senza errori e nella sequenza corretta mediante un meccanismo di acknowledgement e ritrasmissione.Internet Layer (IP)Questa tipologia di livello gestisce la comunicazione tra una macchina ed un'altra.Accetta la richiesta di inoltro di un pacchetto da un livello di trasporto legato all'identificazione della macchina alla quale il pacchetto deve giungere.Si definisce come IP (internet protocol) e crea il datagramma di base della rete. In sintesi riceve e trasferisce senza garanzie i pacchetti, che gli arrivano dal livello superiore, verso la macchina di destinazione.Accetta i pacchetti TCP, li spezzetta e li incapsula nei datagramma di base IP, riempie gli header necessari ed usa l'algoritmo di rouiting per decidere a chi deve mandare lo specifico pacchetto.Il livello Internet gestisce anche i datagrammi in ingresso e verifica la loro validità. Inoltre utilizza l'algoritmo di routing per decidere se il datagramma deve essere inoltrato a destinazione o processato a livello locale; in questo caso il software elimina l'header del datagramma e sceglie con quale protocollo di trasporto gestirà poi il pacchetto. In tale fase non solo si effettua la funzione di instradamento, ma viene effettuata la verifica della validità dei pacchetti ricevuti. Questo livello gestisce i messaggi ICMP in ingresso ed uscita.Network Interface LayerIl quarto strato consiste in una interfaccia di rete che accetta il datagramma IP e lo trasmette, tramite incapsulamento in appositi frame.Il pacchetto, se necessario, può attraversare altre macchine intermedie (router) prima di giungere alla destinazione e in queste penetra solo i due strati più bassi dell'interfaccia di rete e del datagramma base IP.Uno dei vantaggi di questa separazione è che diventa possibile sostituire una componente senza includere le altre nel processo.Fine della prima parte...