Il modello Open System Interconnection si propone di definire il comportamento generico di software di comunicazione in modo da favorire l'interoperabilita' di software prodotto da ditte diverse.
Viene visto il software di comunicazione come formante una catasta di sette livelli componenti, indipendenti e sovrapposti, e di complessita' sempre crescente dal basso verso l'alto.
I nomi di questi livelli o strati sono:
Si prevede che una singola ditta produca software ricoprente uno o piu' strati consecutivi del modello e che altre ditte producano software ricoprente gli altri strati. L'acquirente del software da tutte queste ditte ha una garanzia del funzionamento trasparente e armonico dell'intera catasta di software.
A questo scopo il modello OSI definisce:
Vi e' un concetto gerarchico primario nel modello OSI. Software ad un qualsiasi livello, nell'espletamento delle sue funzioni, puo' compiere delle richieste di servizio al software al livello sottostante, il quale in un tempo successivo ritorna un appropriato responso al software a livello soprastante.
La definizione del metodo di esecuzione delle richieste e dei responsi e delle modalita' di rendez-vous tra software a livelli adiacenti definisce i Service Access Points (SAP) o canali comunicativi tra livelli adiacenti.
Il modello da' soltanto una indicazione architettonica dei SAP, che a seconda del sistema operativo vengono implementati da librerie software diverse.
L'interfaccia piu' evidente e conosciuta e' tra il livello di trasporto e sessione. Si parla anche di software applicativo se al di sopra di questa interfaccia e fisico se al di sotto.
Un'altra interfaccia importante e' tra i livelli Data Link e Reti. A volte i livelli Rete e Trasporto, in certi contesti, vengono chiamati il middleware.
Oltre al concetto verticale di gerarchia di strati software il modello
OSI descrive anche il concetto orizzontale di
Dal punto di vista formale un protocollo e' definito da:
L'implementazione specifica di un dato protocollo puo' essere in un linguaggio qualsiasi e su un sistema operativo qualsiasi.
Un protocollo e' sempre definito all'interno di uno strato software del modello OSI, e puo' funzionare in un ambito piu' ristretto dell'intero strato'