Spiegazione facile e semplice - Livello Transport

 


Livello Transport





Il livello 3 ha lo scopo di instradare i pacchetti e quindi compiere il “Routing”. 

La comunicazione secondo lo standard ISO/Osi è diviso in 7 livelli, in ogni livello troviamo dei protocolli che vengono utilizzati per poter comunicare in rete in modo da creare degli standard e delle regole uguali per tutti (Un esempio di protocollo del livello 3 è il protocollo IP).


Il livello 4 ha vari scopi :

  • Fornire un trasporto affidabile ed efficace 

  • Crea una conversazione diretta end-to-end tra il mittente e il destinatario 

  • A scambiarsi sono le TPDU, (TPDU sta per Transport PDU), quelli che noi chiamiamo Segmenti

  • Nasconde il trasporto fisico dei messaggi creando logicamente un collegamento diretto tra mittente e destinatario. Dei sette livelli infatti è il primo livello della pila protocollare ISO/OSI che comunica direttamente con il destinatario 

  • Il livello 4 garantisce l’ordine di arrivo dei pacchetti , controlla se alcuni di questi sono stati persi, nel caso ciò avvenisse vengono nuovamente rimandati i pacchetti persi.

  • Il livello 4 riordina tutti i vari TPDU. 

  • Controlla gli errori proprio come il livello 2 e 3 

  • Controlla il flusso 



Nel livello 4 sono definiti due tipi di connessione : 

  • TCP (affidabile) : orientato alla connessione e affidabile. 

Il TCP è un protocollo di trasporto che assicura il trasporto affidabile delle                                   informazioni, la corretta sequenza  senza errori dei dati, inoltre il TCP effettua un controllo sul flusso in modo da limitare il traffico e quindi condividere le risorse in modo equo.

  • UDP (NON affidabile): senza connessione e non affidabile


A seconda dei casi e delle necessità viene scelta la tipologia di connessione. Se necessitiamo di una connessione veloce e istantanea come le dirette o il gaming utilizzeremo una comunicazione UDP quindi non affidabile, ciò comporta sicuramente una maggior velocità nella comunicazione ma non avremo nessun controllo sui pacchetti quindi è molto probabile che alcuni pacchetti si perdano in rete ciò potrebbe comportare qualche piccolo rumore o qualche piccolo lag, ma abbiamo praticamente una comunicazione molto veloce. 


Mentre se necessitiamo di un controllo su tutti i pacchetti, e quindi vogliamo che tutte le informazioni arrivano a destinazione abbiamo bisogno di una comunicazione TCP quindi una comunicazione Affidabile, che controlla se tutti i pacchetti sono arrivati a destinazione, 

Un esempio è il protocollo HTTP, ha bisogno di una comunicazione affidabile in modo che tutte le informazioni arrivino con successo senza nessuna perdita di pacchetti. 


Ogni livello offre servizi al livello superiore. I livelli tra  di loro comunicano tramite le primitive, ovvero dei metodi che svolgono delle determinate azioni (Vedi dopo). 


Protocollo: insieme di regole che hanno lo scopo di fornire una per la comunicazione. 

Serivizio: azioni che vengono offerte al livello superiore, quindi un insieme di primitive fornite per il livello superiore.

SAP (Service Access Point): come dice il nome stesso è il punto di accesso a un servizio per il livello superiore. Detto in parole povere serve a far comunicare il livello sottostante con quello superiore. 


Primitive: sono le funzioni base che vengono utilizzate dal programmatore (API), sono i metodi e le funzioni che il programmatore utilizza effettivamente esempio:

  • request()

  • indication()

  • response()

  • Confirm()


Esempio:

– Mittente invia T-CONNECT.REQUEST() //mitt. Vuole connettersi

– Destinatario riceve T-CONNECT.INDICATION //qualcuno vuole

connettersi al destinatario

– Destinatario invia T-CONNECT.RESPONSE() //destinatario accetta conn.

– Mittente riceve T-CONNECT.CONFIRM //mitt. Riceve conferma


Multiplazione dei segmenti 


Il livello 4 riceve i messaggi dal livello sottostante tramite la SAP di trasporto , li incapsula in segmenti e li invia logicamente al livello 4 del destinatario.


Il livello 4 tramite la SAP di Trasporto riceve dei messaggi, questi messaggi verranno fatti passare nella stesso canale comunicativo. Quindi vengono fatti confluire i vari messaggi tutti all’interno di uno stesso canale. Solitamente questo avviene all’invio dei messaggi .


Demultiplazione dei segmenti 


Il livello 4 riceve il messaggio tramite la SAP di rete di destinazione estrae ogni segmento dal messaggio e tramite il SAP di trasporto lo consegna all’applicazione. 



Servizi offerti che offre il livello 4

  1. Trasporto Affidabile  e non Affidabile (esempio UDP e TCP) 

  2. Trasporto Connesso e Non Connesso 

  3. Trasporto orientato alla connessione 

  4. Trasporto Connectionless 





Trasporto affidabile : garanzia di consegna dei messaggi nel corretto ordine, inoltre si utilizzerà l’ACK di consegna per comunicare al mittente che i dati sono arrivati a destinazione. (Il risultato è una connessione più lenta ma senza la perdita di nessun paccetto)

Trasporto NON affidabile : nessuna garanzia di consegna dei messaggio, quindi nessuna ACK di conferma risultato connessione più veloce e immediata ma con la possibile perdita di qualche informazione


Duplicati

All’interno del livello 4 abbiamo una funzione fondamentale per regolare e quindi proseguire correttamente la comunicazione, ovvero il Three Way HandShaking , quest’ultima funzionalità server a prevenire i duplicati dei pacchetti. 

Può infatti capitare che durante l'invio di un pacchetto quest’ultimo non arrivi a destinazione.
Se durante un lasso di tempo ben preciso il primo pacchetto non arriva ne verrà mandato un secondo, uguale ovviamente a quello che si è perso, a contraddistinguere i due pacchetti è un numeretto che ogni pacchetto ha. Tuttavia può capitare che il primo pacchetto ovvero quello che si era perso, potrà arrivare con molto ritardo anche dopo il secondo pacchetto mandato, per evitare quindi doppioni che potrebbero causare problemi alla comunicazione, viene usato il Three Way HandShaking che ha lo scopo di scartare i pacchetti doppioni. 


Spiegazione più approfondita delle varie tipologie di servizi 


  • Servizi Connessi : Si stabilisce una connessione a priore, una caratteristica fondamentale, i pacchetti arrivano nello stesso ordine in cui vengono mandati.

        Un servizio connesso si divide in 3 fasi : 

  1. Instaurazione delle connessione (viene creata la connessione)
  2. Trasferimento dei pacchetti che arrivano nello stesso ordine di come sono stati inviati
  3. Chiusura della connessione


{I pacchetti possono prendere strade diverse, quindi non si avrà una singola comunicazione ma i pacchetti possono prendere direzioni diverse, ciò comporta ad un arrivo di pacchetti in modo NON ordinato, sarà lo stello livello 4 che li riordinerà, altri pacchetti invece si perderanno e non arriveranno affatto. 

Dato che ogni pacchetto può prendere snodi diversi rende la comunicazione più robusta perché in caso di guasto e un connessione cessa di esistere ne resteranno molte altre che porteranno a destinazione. La parola chiave in questi casi è ridondanza, quindi possiamo dire che è più a prova di guasto}

  • Servizi non connessi : non si stabilisce nessuna connessione iniziale e quindi i pacchetti possono prendere strade diverse, inoltre alcune strade porteranno a destinazione prima altre saranno più lente, ciò quindi implica che tutti i pacchetti non arriveranno in ordine. Sarà lo stesso livello 4 che riordinerà tutti i vari pacchetti. 

{ prima ancora di inviare i pacchetti si crea una collegamento tra mittente e destinatario, tutti i pacchetti verranno mandati uno dietro l’altro lungo questa comunicazione. Ciò comporta che tutti i pacchetti arriveranno già in modo ordinato, ma a differenze del servizio non connesso, questa comunicazione è molto più soggetta a guasti perchè se quest’unica comunicazione cade i pacchetti non potranno più arrivare a destinazione. }

TSAP 



Il TSAP (Transport Service Access Point), nel TCP/IP sono conosciuti come porte o numeri di porte. Sono delle porte standard che vengono utilizzate per la comunicazione, ogni porta ha il proprio numero. Queste porte le utilizziamo sempre ma molte volte ignoriamo la loro esistenza. Quando cerchiamo un informazioni su Google, la nostra macchina si sta connettendo ad un Server utilizzando una porta di comunicazione che nel caso del protocollo HTTP è la porta 80, per questo protocollo in realtà esistono più porte che ci permettono di comunicare all’esterno, come la porta 8080 o nel caso dell HTTPS la porta numero 443. Servono per facilitare la connessione, in modo che così si crea uno standard in modo che tutti possono comunicare senza creare ambiguità


Riassunto Generale 


Per mettere in comunicazione le due entità, abbiamo bisogno del TSAP address, questo indirizzo è composto da una coppia di informazioni NSAP address, cioè l'indirizzo IP più il port number (il numero di porta)


Per risolvere il problema dei duplicati si utilizza la soluzione three-way handshaking, questo protocollo funziona così: il richiedente invia una TPDU di tipo request con un numero "x" proposto come inizio per la comunicazione, il destinatario invia un TPDU di tipo ACK, conferma il numero "x" e propone il suo numero "y"


Il richiedente infine inizia a trasferire i primi dati e conferma il numero "y" (i valori "x" e "y" sono dei valori che devono essere ogni volta diversi, in modo da non generare problemi nella comunicazione)


**(Tutto ciò che si è scritto sono l'attivazione della connessione!!)**


Rilascio della connessione: per il rilascio della connessione viene utilizzato di nuovo il three-way handshaking con la gestione in più del time out, il mittente invia un disconn.request, se questa richiesta viene persa, entro in un tempo prefissato viene inviata nuovamente per un massimo di "n" volte. Appena arriva la disconn.request la connessione viene rilasciata e viene inviato in ACK di conferma, se non dovesse arrivare nessun ACK di conferma la connessione viene rilasciata comunque.


(il destinatario quando riceve la disconn.request, attende l'ACK di conferma. Quando arriva l'ACK o scade il timer viene rilasciata la connessione.)


Il multiplexing-demultiplexing permette una comunicazione tra processi di tipo molti a molti, ovvero processi diversi che girano sullo stesso host (stesso indirizzo IP) destinati ad un Host destinatario, con un altro indirizzo IP. La corrispondenza tra processo mittente e processo destinatario è possibile grazie ai numeri di porta che identificano il singolo processo


Multiplexing: avviene nella trasmissione, quindi nell'invio dei dati, vengono raccolti i dati dei vari processi e vengono instradati tutti in uno stesso canale comunicativo (avviene all'inizio della comunicazione)


Demultiplexing: avviene nella ricezione quindi nell'arrivo dei dati. I dati vengono estrapolati dal canale comunicativo e vengono mandati verso i Socket destinatari

 Un socket è la porta che viene utilizzata per la trasmissione ricezione dei dati, è quella che non in gerco chiamiamo porta (è composta da un numero di porta che cambia da tipologia di protocollo)


La dimensione minima di un frame ethernet è di 64 byte, mentre quella massima 1518 byte. 1500 byte sono utilizzati per gli effettivi dati, i restanti 18 sono utilizzati per l'intestazione ethernet più il CRC (controllo degli errori)


Intestazione ethernet = 14 byte 

CRC = 4 byte


Il pacchetto ha un header che occupa una dimensione di 20 byte, unità alla parte dei dati arriviamo ad un massimo di 1500 byte. Nel caso noi avessimo delle informazioni con un peso di 1460 byte arriveremo a 1480 con l'header


Per avere una comunicazione bisogna avere una coppia di socket composti da un socket Number e da un indirizzo IP

Quella che noi chiamiamo TSAP


Servizio Full Duplex, vuol dire che il mittente e il destinatario possono comunicare contemporanea in entrambe le direzioni


Le caratteristiche più importanti del protocollo TCP sono le seguenti : ogni byte del flusso TCP è numerato con un Numero avente massimo 32 bit.  Un segmento TCP non può superare le  65.535 byte di grandezza, ogni pacchetto ha un Header di 20 byte ed una parte opzione di max 40 byte +  la grandezza occupata dagli effettivi dati




Componenti del TCP 


  • Source port [16 bit] - Identifica il numero di porta sull'host mittente associato alla connessione TCP.

  •  Destination port [16 bit] - Identifica il numero di porta sull'host destinatario associato alla connessione TCP.

  •  Sequence number [32 bit] - Numero di sequenza, indica l’offset (espresso in byte), a partire dall' Initial Sequence Number (ISN), dell'inizio del segmento TCP all'interno del flusso completo, negoziato all'apertura della connessione.


  • Acknowledgment number [32 bit] - Numero di riscontro, ha significato solo se il flag ACK è settato a 1, e conferma la ricezione di una parte del flusso di dati nella direzione opposta, indicando il valore del prossimo Sequence number che l'host mittente del segmento TCP si aspetta di ricevere.

  •  TCP Header Len: [4 bit] - Indica la lunghezza (in numero di word da 32 bit) dell'header del segmento TCP; tale lunghezza può variare da 5 word (20 byte) a 15 word (60 byte) a seconda della presenza e della lunghezza del campo facoltativo Options.


  •  Flags [8 bit] - Bit utilizzati per il controllo del protocollo:

  • URG - se settato a 1 indica che nel flusso sono presenti dati urgenti alla posizione (offset) indicata dal campo Urgent pointer;

  • ACK - se settato a 1 indica che il campo Acknowledgment number è valido;

  •  PSH - se settato a 1 indica dati urgenti (pushed data), da consegnare subito ai livelli superiori senza aspettare che il buffer si riempia;

  • RST - se settato a 1 c’è una richiesta di reset e che la connessione non è valida(ci sono problemi); viene utilizzato in caso di grave errore;

  • SYN - se settato a 1 indica che l'host mittente del segmento vuole aprire (fase di setup) una connessione TCP con l'host destinatario e specifica nel campo Sequence number il valore dell' Initial Sequence Number (ISN); ha lo scopo di sincronizzare i numeri di sequenza dei due host. L'host che ha inviato il SYN deve attendere dall'host remoto un pacchetto SYN/ACK.

  • FIN - se settato a 1 indica che l'host mittente del segmento vuole chiudere la connessione TCP aperta con l'host destinatario. Il mittente attende la conferma dal ricevente (con un FIN-ACK). A questo punto la connessione è ritenuta chiusa per metà: l'host che ha inviato FIN non potrà più inviare dati, mentre l'altro host ha il canale di comunicazione ancora disponibile. Quando anche l'altro host invierà il pacchetto con FIN impostato la connessione, dopo il relativo FIN-ACK, sarà considerata completamente chiusa; cioè sia mittente che destinatario devono ricevere il FIN-ACK per chiudere la connessione.


  • Window Size [16 bit] – finestra di ricezione: è usata dal ricevente per indicare al mittente quanti byte può ricevere in quel momento (e quindi quanti byte potrrà spedire il mittente). Infatti il controllo di flusso è di tipo sliding window di dimensione variabile. Il valore 0 indica di non spedire dati per il momento.

  •  Checksum [16 bit] - simile a quello di IP, il calcolo però si effettua sull’intero segmento TCP, non soltanto sull’header.

  • Urgent pointer [16 bit] - Puntatore a dato urgente, ha significato solo se il flag URG è settato a 1 ed indica l’offset in byte a partire dal Sequence number del byte di dati urgenti all'interno del flusso.

  •  Options - Opzioni (facoltative) per usi del protocollo avanzati. Fra le più importanti, negoziabili al setup, la dimensione massima dei segmenti da spedire.


Conclusione 

Spero che questa guida sul livello Transport vi sia stata utile. Ricordiamo una cosa importante, questi argomenti sono davvero vasti e ovviamente non possono essere studiati e conosciuti solo attraverso un unico articolo o link, ma sta a voi continuare ad essere curiosi su questo mondo. 

Post che ti consiglio : 





























Commenti