Verso la fine degli anni '70 la ISO (International Standard Organization) con lo scopo di uniformare la comunicazione anche tra reti progettate da case diverse, sviluppò un modello standardizzato, chiamato modello di riferimento OSI (Open System Interconnection).
Il modello di riferimento OSI descrive il modo in cui le informazioni vengono trasferite tra gli host in rete tramite 7 livelli (layer): Application, Presentation, Session, Transport, Network, Data Link, Physical.
- Application layer (livello applicazione): è il livello più vicino all'utente e si occupa di fornire i servizi di rete (ad esempio il traferimento di file o la posta elettronica). Tra i protocolli che fanno parte di questo livello abbiamo: SMTP (Simple Mail Transfer Protocol) il quale si occupa del trasferimento dei messaggi di posta elettronica, HTTP (Hypertext Transfer Protocol) per l'interconnessione con siti web, TELNET il quale svolge le operazioni necessarie a creare una sessione con un host remoto, FTP (File Transfer Protocol) che permette il traferimento dati attraverso la rete tra due host, POP3 (Post Office Protocol v3) per il download dei messaggi di posta, IMAP (Internet Mail Access Protocol) un protocollo relativo alla posta, ma più avanzato e complesso, NNTP (Network News Transfer Protocol) che permette di leggere e scrivere informazioni su Usenet;
- Presentation layer (livello presentazione): gestisce le conversioni tra formati di dati, cioè definisce una codifica indipendente dalla macchina utilizzata allo scopo di creare un formato standard comprensibile da tutti. Se necessario, sono utilizzate anche la funzioni di compressione e crittografia;
- Session layer (livello sessione): definisce le regole per aprire e chiudere una connessione logica riguardante il trasferimento dati tramite protocolli di connessione e comunicazione. In questo layer sono svolte anche funzioni di sicurezza al fine di garatire che due host siano autorizzati a comunicare tra loro. Tra i protocolli di questo layer troviamo NFS (Network File System), RPC (Remote Procedure Call), X Window;
- Transport layer (livello trasporto): assicura la corretta trasmissione dei dati segmentando il flusso proveniente dal livello superiore in porzioni di dimensione prevista dal supporto utilizzato dalla rete. Inoltre fornisce un riscontro delle trasmissioni e nel caso in cui si verifichino errori provvede a reinviare i dati. I protocolli caratteristici di questo layer sono TCP e UDP;
- Network layer (livello rete): si occupa di trovare il percorso migliore per il trasferimento dati tra host. Suddivide i dati in pacchetti che verranno poi instradati in un determinato percorso stabilito tramite degli algoritmi che analizzano le condizioni di traffico della rete. Tra i protocolli che sono coinvolti nelle funzioni svolte da questo livello abbiamo: IP (il quale si occupa dell'instradamento dei dati) e ICMP (si occupa della gestione degli errori ed il controllo dei messaggi) e protocolli di routing quali ad esempio RIP (Routing Information Protocol), IGP (Internet Gateway Protocol), oppure OSPF (Open Shortest Path First);
- Data link layer (livello collegamento dati): provvede ad organizzare i dati in blocchi di lunghezza predefinita chiamati frame ed effettua i primi controlli sulla validità tramite CRC (Cyclic Redundancy Check). Inoltre in questo strato sono definite le tecniche di sincronizzazione cioè le modalità per evitare che siano inviati dati ad una velocità incompatibile alla capacità di acquisizione del destinatario oppure che in una trasmissione bidirezionale i due nodi trasmettano contemporaneamente. Il Data link layer è suddiviso in due sottostrati: LLC (Logical Link Control) il quale si occupa del controllo errori e lavora a con il Network layer e MAC (Media Access Control) che fornisce l'accesso al mezzo trasmissimo (il cavo) e lavora quindi a stretto contatto con il Physical layer;
- Physical layer (livello fisico): gestisce l'interazione tra il computer e il mezzo trasmissivo e si occupa della conversione tra bit e segnali.
Le informazioni che vengono scambiate da un layer all'altro sono chiamate PDU (Protocol Data Unit). I dati del livello superiore vengono incpasulati come informazioni dallo strato inferiore.
Un esempio di processo:
1. I dati utente (Es. E-mail) vengono convertiti in un formato dati trattabile via rete;
2. I dati convertiti, a loro volta vengono trasformati in segmenti, quindi spediti tramite TCP o UDP ad un host remoto;
3. I segmenti vengono quindi incapsulati in pacchetti ai quale viene aggiunto l'indirizzo di partenza e di destinazione;
4. I pacchetti sono convertiti in frame a seconda del mezzo trasmissivo;
5. I frame sono convertiti in bit ed inviati via cavo.
Processo che dal punto di vista di Layer e PDU è il seguente:
[Dati] - in Application
[Dati] - in Presentation
[Dati] - in Session
[TCP o UDP Header][Dati] - in Transport (PDU = segmenti)
[IP Header][Dati] - in Network (PDU = pacchetti)
[LLC Header][Dati] - in Data Link (LLC) (PDU = frame)
[MAC Header][Dati] - in Data Link (MAC) (PDU = frame)
[010101] - in Physical (PDU = bits)
Una volta che i dati sono giunti a destinazione il processo viene ripetuto in senso inverso. Ogni layer estrae i dati che deve elaborare estrapolandoli dal relativo PDU.
Visione d'insieme dei protocolli alla base di Internet: IP, TCP, UDP.