All’interno della semantica della stratificazione del servizio dell’architettura di rete O, il livello di presentazione risponde alle richieste di servizio dal livello dell’applicazione e invia le richieste di servizio al livello di sessione tramite un punto di accesso unico al servizio di presentazione (PSAP).
Il livello di presentazione garantisce che le informazioni inviate dal livello di applicazione di un sistema siano leggibili dal livello di applicazione di un altro sistema. Sul sistema di invio è responsabile della conversione in formati standard trasmissibili. Sul sistema di ricezione è responsabile della traduzione, formattazione e consegna delle informazioni per l’elaborazione o la visualizzazione. In teoria, allevia i protocolli di livello applicativo di preoccupazione per quanto riguarda le differenze sintattiche nella rappresentazione dei dati all’interno dei sistemi dell’utente finale. Un esempio di un servizio di presentazione potrebbe essere la conversione di un file di computer di testo con codice di interscambio decimale con codice binario esteso (EBCDIC-coded) in un file con codice ASCII. Se necessario, il livello di presentazione potrebbe essere in grado di tradurre tra più formati di dati utilizzando un formato comune.
In molte applicazioni e protocolli ampiamente utilizzati non viene fatta alcuna distinzione tra i livelli di presentazione e di applicazione. Ad esempio, HyperText Transfer Protocol (HTTP), generalmente considerato come un protocollo a livello di applicazione, ha aspetti a livello di presentazione come la capacità di identificare la codifica dei caratteri per una corretta conversione, che viene quindi eseguita nel livello dell’applicazione.
Il livello di presentazione è il livello più basso in cui i programmatori di applicazioni considerano la struttura e la presentazione dei dati, invece di inviare semplicemente dati sotto forma di datagrammi o pacchetti tra host. Questo livello si occupa di problemi di rappresentazione delle stringhe – se usano il metodo Pascal (un campo di lunghezza intera seguito dalla quantità specificata di byte) o il metodo C/C++ (stringhe terminate null, ad esempio "thisisastring"
). L’idea è che il livello dell’applicazione dovrebbe essere in grado di puntare ai dati da spostare e il livello di presentazione lo tradurrà in comandi in grado di essere compreso da altre applicazioni e processi.
La serializzazione di strutture dati complesse in stringhe di byte piatte (utilizzando meccanismi come TLV o XML) può essere considerata la funzionalità chiave del livello di presentazione. La rappresentazione della struttura è normalmente standardizzata a questo livello, spesso utilizzando XML. Oltre a semplici pezzi di dati, come le stringhe, le cose più complicate sono standardizzate in questo livello. Due esempi comuni sono “oggetti” nella programmazione orientata agli oggetti e il modo esatto in cui viene trasmesso lo streaming video.
La crittografia e la decrittografia sono in genere eseguite anche a questo livello, sebbene possano essere eseguite sui livelli di applicazione, sessione, trasporto o rete, ognuno con i propri vantaggi e svantaggi. Ad esempio, quando si accede ai siti di conto bancario, il livello di presentazione decrittograferà i dati man mano che vengono ricevuti.