Livello Applicazione:
Prendiamo il caso di Internet Explorer (IE), potremmo disistallare il TCP/ IP, la scheda rete (NIC Network Interface Card) e così via IE potra’ comunque visualizzare il documento HTML locale.
Ma le cose si complicherebbero se volessimo aprire una pagina remota ad esempio Facebook,youtube,google, ecc. Perche’ IE ed altri browser tentono di accedere al livello applicazione, quindi in poche parole il livello applicazione funziona come interfaccia tra il programma e il livello successivo. Tieni bene in mente che IE ad esempio non fa parte del livello applicazione ma si interfaccia con esso e il relativo protocollo che viene usato per accedere alle risorse remote ad esempio HTTP e HTTPS.
Vediamo un’altro punto di vista. Immagina che tu voglia creare il tuo programma per navigare in internet, oppure per inviare e ricevere email, oppure per condividere files ecc ecc possiamo usare qualsiasi linguaggio di programmazione desiderato ma, dobbiamo necessariamente usare i protocolli e porte definiti dallo standard OSI.
Brower (www) protocollo HTTP/HTTPS porta 80/443
Email (es. Outlook) Protocollo POP3 porta 110 per ricevere le e-mail e protocollo SMTP porta 25 per inviarle.
Tasferimento File (mozzilla) Protocollo FTP porta 21
Livello Presentazione:
Questo é il primo strato che si occupa del significato dei dati. Con stringhe di bit è possibile rappresentare dati di natura più diversa come testi, numeri in virgola fissa, numeri in virgola mobile, ecc…, rappresentati con codifiche diverse. Lo strato di presentazione si occupa di rendere compatibili le rappresentazioni dei dati negli scambi tra computer che utilizzano codifiche diverse e rende la comunicazione delle applicazioni, presenti su computer con sistemi operativi differenti, in maniera indipentente.
In questo livello si presentano vari standard, come:
ASCII e EBCDIC (per i file di testo)
GIF (Graphic Interchange Format)
JPEG (Joint Photographic Experts Group)
TIFF (Tagged Image File Format)
MPGEG (Motion Picture Expert Group)
MIDI (Musica Istrument Digital Interface)
QuickTime (per i file video/audio)
Livello Sessione:
Il livello di sessione implementa sessioni applicative one-to-one: definisce la ritrasmissione dei dati, il metodo di ordinamento dei segmenti e controlla la comunicazione in generale. Tutte queste funzionalità sono coperte dal TCP per le applicazioni che utilizzano quel protocollo di trasporto, ma le applicazioni che sfruttano UDP devono implementare queste funzionalità in modo autonomo (all’interno dell’applicazione) o fare affidamento su un protocollo aggiuntivo specifico per il livello di sessione. Molte applicazioni (come TFTP) si basano sulla prima opzione, mentre la seconda alternativa è quella privilegiata per VoIP. Per il traffico VoIP, il protocollo su cui facciamo affidamento per la sessione è Real-time Transport Protocol (RTP). Dato che stiamo parlando di applicazioni che utilizzano UDP come trasporto sottostante.
Livello Trasporto:
Il livello di sessione implementa sessioni applicative one-to-one: definisce la ritrasmissione dei dati, il metodo di ordinamento dei segmenti e controlla la comunicazione in generale. Tutte queste funzionalità sono coperte dal TCP per le applicazioni che utilizzano quel protocollo di trasporto, ma le applicazioni che sfruttano UDP devono implementare queste funzionalità in modo autonomo (all’interno dell’applicazione) o fare affidamento su un protocollo aggiuntivo specifico per il livello di sessione. Molte applicazioni (come TFTP) si basano sulla prima opzione, mentre la seconda alternativa è quella privilegiata per VoIP. Per il traffico VoIP, il protocollo su cui facciamo affidamento per la sessione è Real-time Transport Protocol (RTP). Dato che stiamo parlando di applicazioni che utilizzano UDP come trasporto sottostante.
TCP (Trasmission Control Protocol).
Il TCP e’ un protocollo appartenente alla suite di protocolli internet, si occupa del controllo e della trasmissione affidabile tra il mittente e il destinatario, su di esso si appoggiano la gran parte delle applicazioni della rete internet. Solitamente viene chiamato TCP/IP ma e’ sbagliato in quanto IP lo troviamo al livello NETWORK del modello OSI ed erroneamente viene considerato un’unico protocollo.
Le caratteristiche principali del protocollo TCP sono:
Orientamento alla connessione. Ovvero prima di poter trasmettere i dati deve stabilire la comunicazione negoziando una connessione tra mittente e destinatario, questa funzione viene chiamata 3-way handshake che rimane attiva anche in assenza di scambio di dati e viene esplicitamente chiusa quando non e’ piu’ necessaria. Nella figura viene mostrato come viene stabilita la funzione per stabilire la connessione.
SYN = (syncronization)
ACK = (Acknowledge)
TCP è un protocollo affidabile: garantisce la consegna dei segmenti a destinazione attraverso il meccanismo degli acknowledgements.
TCP (Trasmission Control Protocol).
Il servizio offerto dal TCP è il trasporto di un flusso di byte bidirezionale tra due applicazioni in esecuzione su host differenti. Il protocollo permette alle due applicazioni di trasmettere contemporaneamente nelle due direzioni, quindi il servizio può essere considerato “Full-duplex” anche se non tutti i protocolli applicativi basati su TCP utilizzano questa possibilità .
Il flusso di byte prodotto dall’applicazione (o applicativo, o protocollo applicativo) sull’host mittente, viene preso in carico dal TCP per la trasmissione, quindi frazionato in blocchi, detti segmenti, e consegnato al TCP sull’host destinatario che lo passerà all’applicativo indicato dal numero di porta nell’header (es.: applicativo HTTP, porta 80).
TCP garantisce che i dati trasmessi, se giungono a destinazione, lo facciano in ordine e una volta sola (“at most once“). Più formalmente, il protocollo fornisce ai livelli superiori un servizio equivalente ad una connessione fisica diretta che trasporta un flusso di byte. Questo è realizzato attraverso vari meccanismi di acknowledgment e di ritrasmissione su timeout.
TCP offre funzionalità di controllo di errore sui pacchetti pervenuti grazie al campo checksum contenuto nella sua PDU.
TCP possiede funzionalità di controllo di flusso tra terminali in comunicazione e controllo della congestione sulla connessione, attraverso il meccanismo della finestra scorrevole. Questo permette di ottimizzare l’utilizzo dei buffer di ricezione/invio sui due end devices (controllo di flusso) e di diminuire il numero di segmenti inviati in caso di congestione della rete.
TCP fornisce un servizio di multiplexing delle connessioni su un host, attraverso il meccanismo delle porte.