Questo sito utilizza localStorage per migliorare l'esperienza di navigazione.

TCP IP

Il TCP/IP è un protocollo per la comunicazione network. TCP sta per Transmission Control Protocol e IP sta per Internet Protocol.

Network e comunicazione

Il network è formato dai Network Interface Cards (hardware di rete presenti nei computer) che si collegano tra loro tramite un cavo o una connessione wireless.
La comunicazione è il processo di invio dei messaggi da un punto all'altro tramite una connessione network. Il messaggio può essere un file, un messaggio vocale, un video streaming o qualsiasi cosa che possa essere comunicata in forma digitale.
I messaggi non vengono inviati come un unico pacchetto, ma vengono divisi in piccoli pacchetti di dati che vengono inviati uno alla volta e il destinatario li unisce per comporre il messaggio originale.
Nel protocollo TCP/IP, i messaggi vengono divisi in pacchetti chiamati segments e li invia all'IP, che si occupa di instradare i segmenti attraverso le reti fino alla loro destinazione finale.

TCP e UDP

UDP è un'alternativa a TCP e sta per User Datagram Protocol. La differenza principale è che il TCP è più affidabile ma lento, UDP è meno affidabile ma spesso più veloce.
Entrambi fanno parte della stessa suit di protocolli, ma per le dipendenze dal TCP e ragioni storiche, la suite è chiamata TCP/IP.

TCP/IP

TCP/IP è un modello di rete progettato per supportare la comunicazione network, anche se i computer sono di marchi diversi.
Dal nome, TCP/IP sembra essere un set di due protocolli solo - TCP e IP. Tuttavia, consiste in numerosi protocolli impacchettati a diversi livelli.
Il livello superiore è il livello applicativo che genera un messaggio. Il messaggio viene passato ai livelli inferiori al nodo di invio, dove ogni livello incapsula il messaggio dal livello superiore.
Quindi, il messaggio da inviare diventa più grande passando per i vari livelli.

  1. Application Layer: la PDU è chiamata application message
  2. Transport Layer: la PDU è chiamata TCP segment nel caso del protocollo TCP e UDP datagram nel caso del protocollo UDP
  3. Network Layer: la PDU è chiamata IP packet
  4. Data Link Layer: la PDU è chiamata Ethernet frame
  5. Physical Layer: la PDU è chiamata bit stream
TCP/IP Layers Il destinatario del messaggio fa esattamente il contrario, rimuovendo i livelli superiori uno alla volta fino a ottenere il messaggio originale, quindi nel livello applicativo.
TCP/IP Receiver Layers

Livelli

1. Physical layer

Nel livello fisico avviene la comunicazione vera e propria.
In questo livello il messaggio viene convertito in un segnale di 1 e 0 e viene trasmesso sul canale fisico.
Il segnale può essere elettrico se il canale fisico è un cavo di rete, un segnale luminoso se il canale fisico è un cavo ottico e un segnale radio se il canale fisico è aria/vuoto.
Quindi, il segnale generato dal livello fisico dipende dal tipo di canale fisico usato per collegare i due dispositivi.
Il protocollo più comune usato in questo livello è Ethernet.

2. Data Link Layer

La PDU nel livello data link è chiamata Ethernet frame.
Il livello data link è diviso in due sottolivelli:

  1. Medium-access control o MAC sublayer
  2. Logical link control o LLC sublayer

1. MAC Sublayer

Il MAC sublayer serve a:
  • incapsulare dati
  • accedere al physical link
1. Nell'incapsulazione dei dati, il MAC sublayer aggiunge un header e un trailer all'IP packet ricevuto dal livello network. L'header contiene gli indirizzi MAC del mittente e del destinatario, mentre il trailer contiene 4 byte di controllo errori utilizzati per rilevare errori nell'Ethernet frame ricevuto.
Il MAC Address è un indirizzo univoco di 6 byte incollato nella NIC di un dispositivo dal suo produttore.
2. Per accedere al physical link, il metodo di accesso usato da Ethernet è chiamato Carrier Sense Multiple Access/Collision Detection o CSMA/CD.
Con questo metodo, ogni computer ascolta il cavo prima di inviare dati attraverso la rete:
  • Se la rete è libera, il computer può trasmettere
  • Se il primo computer sta già trasmettendo sul cavo, il secondo computer aspetterà e riproverà quando la linea sarà libera.
  • A volte, due computer tentano di trasmettere allo stesso istante. Quando ciò accade, si verifica una collisione. Ogni computer interrompe la trasmissione e aspetta un tempo casuale prima di riprovare a trasmettere. Con questo metodo di accesso è normale avere collisioni. Tuttavia, il ritardo causato dalle collisioni e dalle riransmissioni è molto piccolo

2. LLC Sublayer

Il LLC sublayer serve a:
  • controllare il flusso
  • controllare gli errori
1. Il controllo del flusso è una tecnica che limita la quantità di dati che un mittente può inviare senza sovraccaricare il ricevitore: i dispositivi riceventi hanno una velocità di elaborazione e memoria limitata per memorizzare i dati in arrivo, se questi limiti vengono superati, i dati in arrivo verranno persi. Per evitare ciò, il ricevitore deve informare il mittente di rallentare la velocità di trasmissione prima che questi limiti siano raggiunti. Nel livello data link, il controllo del flusso limita il numero di frame che il mittente può inviare senza sovraccaricare il ricevitore.
2. Il controllo degli errori nel livello data link si riferisce principalmente al controllo degli errori e alla ritrasmissione. Il controllo degli errori viene effettuato utilizzando i byte di controllo degli errori aggiunti nel trailer del frame. La ritrasmissione del frame viene effettuata utilizzando Automatic Repeat Request o ARQ:
Il ricevitore invia un ACK al mittente quando viene ricevuto un frame. Quando l'ACK non viene ricevuto, il mittente invia nuovamente il frame. Quindi, se un frame viene perso o danneggiato, l'ACK non viene inviato. Questo processo viene chiamato Automatic Repeat Request (ARQ). Il livello LLC può anche ridimensionare i pacchetti IP ricevuti dal livello network per adattarli ai frame del livello data link.
I livelli rimanenti tre del protocollo TCP/IP, inclusi i livelli network, transport e application, sono implementati come programmi software all'interno del sistema operativo del computer.

3. Network Layer

Il livello network aggiunge indirizzi logici o indirizzi IP ai segmenti TCP o ai datagrammi UDP per formare pacchetti IP e quindi utilizza i router per inviare i pacchetti IP ad altre reti. Il livello network determina anche il percorso migliore per la consegna dei dati. Quindi le funzioni sono:

  1. Indirizzamento logico
  2. Routing
  3. Determinazione del percorso
L'IP è il protocollo utilizzato in questo livello. 1. Indirizzamento logico: ogni computer in una rete ha un indirizzo IP univoco. Il livello network assegna agli indirizzi IP mittente e destinatario di ogni TCP segment o UDP datagram per formare un pacchetto IP. Gli indirizzi IP vengono assegnati per garantire che ogni pacchetto IP possa raggiungere la destinazione corretta in reti diverse.
2. Routing: il routing è un metodo per spostare un pacchetto IP da sorgente a destinazione presenti in reti diverse. Il routing non è necessario se la sorgente e la destinazione sono presenti nella stessa rete.
Per le comunicazioni all'interno di una rete, il compito è solitamente semplice: il modulo ARP prende l'indirizzo IP di destinazione dal pacchetto IP e restituisce l'indirizzo MAC del computer di destinazione. Viene quindi utilizzato per creare un Ethernet frame che viene consegnato direttamente al destinatario poiché è presente nella stessa rete, quindi non è necessario il routing.
Tuttavia, quando il messaggio viene inviato a un nodo all'esterno di una rete, ad esempio, per l'Internet, l'application layer sposta il messaggio dal mittente al destinatario attraverso i router. Consideriamo due reti connesse con un router. Il computer A deve inviare dati al computer B ed entrambi i computer sono presenti in reti diverse. Pertanto, in questo caso è necessario il routing. Per creare un Ethernet frame, abbiamo bisogno dell'indirizzo MAC del computer di destinazione e dato che la destinazione è in un'altra rete, il modulo ARP non può fornire l'indirizzo MAC di destinazione poiché. L'intermedio tra le reti è il router R: come indirizzo MAC del frame viene assegnato l'indirizzo MAC del router. Dopo aver mandato il messaggio al router, quest'ultimo cambia l'indirizzo MAC a quello del destinatario, dato che attraverso l'ARP conosce gli indirizzi delle altre reti e inoltra il messaggio alla rete giusta.
L'IP è importante perchè il MAC del frame cambia a ogni passaggio, mentre l'IP viene mantenuto lo stesso. 3. Determinazione del percorso: un computer può essere collegato a un server Internet o a un computer in diversi modi. La scelta del percorso migliore per la consegna dei dati dalla sorgente alla destinazione è detta determinazione del percorso. I dispositivi di livello 3 utilizzano protocolli come OSPF (Open Shortest Path First), BGP (Border Gateway Protocol), IS-IS (Intermediate System to Intermediate System) per determinare il percorso migliore per la consegna dei dati.
Perché il routing avviene al livello 3, i router e i gateway vengono a volte chiamati switch di livello 3.

4. Transport Layer

Nel nodo mittente, il livello transport riceve il messaggio dalla application layer. Quando il messaggio raggiunge questo livello viene selezionato il protocollo TCP o UDP.
Il TCP supporta la segmentazione, se il messaggio è grande, viene diviso in pezzi più piccoli e aggiunge un header per formare un segmento TCP.
L'UDP non supporta la segmentazione, quindi le applicazioni che usano UDP devono inviare messaggi abbastanza brevi da poter essere contenuti in un solo UDP datagram. I UDP datagram sono considerati non affidabili poiché non c'è alcuna garanzia che tutti i frame inviati saranno ricevuti del destinatario o nell'ordine corretto. Inoltre, non sono presenti controlli di errore o correzione. Per questo, il TCP è puù affidabile. Ciò però rende UDP veloce ed efficiente per i protocolli DNS, DHCP, SNMP e RIP. UDP è anche adatto per la riproduzione di video in streaming.
TCP, dall'altra parte, è affidabile e garantisce la consegna in ordine dei dati dal mittente al destinatario. La trasmissione dei dati tramite TCP ha tre fasi:
  1. Stabilimento della connessione
  2. Trasferimento dati
  3. Terminazione della connessione
1. Stabilimento della connessione: nella fase di stabilimento della connessione, il mittente TCP o client invia un pacchetto al destinatario TCP o server richiedendo una connessione e il server ritorna un'ACK. Il client conferma ulteriormente il server. Completa il processo di stabilimento della connessione. Poiché una connessione viene impostata prima della trasmissione dei dati, TCP è connection-oriented, e il processo di stabilimento della connessione viene chiamato Three-Way TCP Connection Handshake. TCP Handshake 2. Trasferimento dati: durante il trasferimento dei dati, TCP offre alcune caratteristiche chiave che UDP non fornisce, e include:
  • Trasferimento di dati senza errori
  • Trasferimento di dati ordinati
  • Trasmissione di dati persi
  • Scartare pacchetti duplicati
  • Controllo della congestione
3. Terminazione della connessione: l'ultima fase nel trasferimento dei dati è la terminazione della connessione. Quando un endpoint desidera interrompere la propria connessione, invia un messaggio di fine alla destinazione. L'altra fine conferma il messaggio. Entrambi gli endpoint fanno questo processo di handshake a due fasi. Pertanto, la terminazione della connessione segue un processo di handshake a quattro vie.

5. Network Layer

Il livello application fornisce un'interfaccia per le applicazioni dell'utente che passano messaggi da un computer all'altro in una rete. Le applicazioni dell'utente non si trovano sul livello application, ma usano i protocolli del livello application per eseguire le loro attività. Per esempio, i browser web usano HTTP o HTTPS per navigare in Internet e le email usano il protocollo post office (POP) o il Simple Mail Transfer Protocol (SMTP) per trasferire le email. Quindi, il livello application fornisce i mezzi per accedere alle informazioni in rete. Questa è un'insieme di protocolli forniti dal livello application layer.
  • DNS (Domain Name System): traduce gli indirizzi IP in nomi di dominio e viceversa
  • DHCP (Dynamic Host Configuration Protocol): assegna automaticamente gli indirizzi IP ai computer presenti in rete
  • FTP (File Transfer Protocol): viene usato per trasferire file in Internet HTTP
  • HyperText Transfer Protocol: viene usato per inviare e ricevere pagine web
  • IMAP (Internet Message Access Protocol): viene usato per i messaggi di posta elettronica in Internet
  • IRC (Internet Relay Chat protocol): viene usato per la chat in Internet
  • POP3 (Post Office Protocol Version 3): viene usato dai client di posta elettronica per recuperare i messaggi dai server remoti
  • SMTP (Simple Mail Transfer Protocol): viene usato per i messaggi di posta elettronica in Internet