I protocolli di rete

Un dispositivo Client fa una richiesta al Server.

client-server-model

Questa comunicazione passa attraverso la rete internet, composta da Router che ricevono le richieste e in base all’indirizzo IP di destinazione scelgono dove deve essere inoltrata la richiesta, attraverso un certo numero di salti giungerà alla macchina Server alla quale è destinata. Quando da un client cerca di contattare un server, non è detto che i pacchetti facciano sempre lo stesso percorso, ma la rete si riadatta in base al traffico, lo stato attuale della rete, un certo nodo sia caduto o meno.

In questo percorso vengono usati i protocolli di rete. Tutto è un insieme di bit. Quindi bisogna stabile come questi codici binari devono essere interpretati dai diversi dispositivi client, router e server e quindi servono degli standard, dei protocolli che definiscono il processo.

 

 

Il modello OSI vs Modello TCP/IP

protocolli rete

 

Quando navighiamo in internet usiamo il protocollo http. Facciamo delle richieste http.

Queste richieste che siano http, ftp, mail o telnet vengono impacchettate all’interno di un protocollo del livello sottostante.

A sua volta verrà impacchettato in una serie di bit che compongono la richiesta di livello ancora più basso e cosi via finché non viene incanalato nella rete fisica questa viaggia nella rete e quando arriva al destinatario riapre i pacchetti ad uno a uno e riottiene la richiesta http.

 

 

 

Il modello TCP/IP

TCP-IP-model-vs-OSI-model

Il modello TCP/IP è costituito da quattro livelli. Ai vari livelli del modello TCP/IP vengono assegnati diversi compiti e dunque diversi protocolli.

  • Livello di applicazione: la comunicazione dei programmi tramite la rete viene regolamentata nel livello più alto. Qui lavorano i protocolli HTTP e FTP o per la comunicazione e-mail i protocolli POP o SMTP.
  • Livello di trasporto: Il trasporto è affidato al TCP e UDP. Il protocollo permette la comunicazione end-to-end e, pertanto, è responsabile della connessione tra due dispositivi.
  • Livello di rete: su questo livello lavora l’IP che assicura che i dati trasportati raggiungano la destinazione corretta. Tramite l’indirizzo IP, i pacchetti dati vengono indirizzati attraverso la rete.
  • Livello di accesso alla rete: Qui viene utilizzato soprattutto il cavo Ethernet. Il livello di accesso alla rete permette il collegamento di diverse sottoreti e collega, ad esempio, il Wi-Fi domestico a Internet tramite il router.

Protocollo HTTP

Hypertext transfer protocol (protocollo di trasferimento degli ipertesti) serve a rappresentare le pagine web.

Come funziona?

Quando navighiamo in internet usiamo il protocollo http. Facciamo delle richieste http. Queste richieste che siano http, ftp, mail o telnet vengono impacchettate all’interno di un protocollo del livello sottostante che a sua volta verrà impacchettato in una serie di bit che compongono la richiesta di livello ancora più basso e cosi via finché non viene incanalato nella rete fisica questa viaggia nella rete e quando arriva al destinatario riapre i pacchetti ad uno a uno e riottiene la richiesta http.

Perché succede questo? Quando si mandano delle richieste a livello applicativo devono essere impacchettate e ci sono due principali livelli di trasporto TCP, UDP.

L’UDP ad esempio per lo streaming, videochiamate, a differenza del TCP non gestisce il riordinamento dei pacchetti né la ritrasmissione di quelli persi, ed è perciò generalmente considerato di minore affidabilità. In compenso è molto rapido e quindi si può tollerare qualche perdita di dati.

Esistono dunque diversi livelli con tanti protocolli a seconde delle esigenze e a seconda delle applicazioni c’è bisogno di trattare in modo diverso le informazioni.

Quando la richiesta viene passata a livello di rete (network) il protocollo più famoso che usiamo è il protocollo IP (Internet Protocol). Serve a identificare i diversi dispositivi della rete. Attenzione se smartphone e computer di casa sono connessi alla stessa rete hanno lo stesso IP.

Il DNS (Domain Name System  DNS) è un sistema utilizzato per assegnare nomi ai nodi della rete. Fa si che se scriviamo www.miosito.it verrà tradotto in un determinato indirizzo IP.

TCP/IP MODEL Ecco il percorso di ogni singola richiesta delle comunicazioni in rete:

protocolli rete

Le porte

Immaginiamo di spedire una lettera, specifichiamo un indirizzo via, città cap ma una volta che il postino arriva a quell’indirizzo deve sapere a quale porta consegnare. Ecco allo stesso modo quando comunichiamo con un’altra macchina attraverso questi protocolli, dobbiamo capire con quale porta stiamo parlando.

In altre parole guardando lo schema sopra, alla fine del percorso, quando il pacchetto di informazioni arriva alla macchina di destinazione e deve ripassare dal livello TRANSPORT ad APPLICATION, il pacchetto deve avere come informazione il numero di porta di destinazione perché ci possono essere potenzialmente più servizi in ascolto.

Mentre il pacchetto viaggiava a livello di rete(nei network), tramite i router, non interessava a nessun corriere cosa stava trasportando se richiesta http, ftp etc ma questa info interessa solo al postino finale quando deve consegnare alla porta.

Ogni servizio di alto livello comunica con una diversa porta della macchina.

La porta è un concetto logico non è niente di fisico. E’ un numero che rappresenta una porta attraverso la quale una macchina può rimanere in ascolto di un determinato servizio.

Se tu vuoi parlare col mio computer  e invii richieste http o ftp etc non è che il mio pc siccome conosce questi protocolli risponde a tutti ma solo a quelli cui è abilitato.

Ogni protocollo è associato a una rete. La porta 80 è quella del servizio HTTP, la porta 443 HTTPS …

Le prime 1024 porte sono Well-known ports già assegnate a servizi precisi, e poi chi sviluppa ulteriori applicazioni o modi di comunicare come Docker utilizzerà delle porte fuori da questo range.

Riferimenti:

Tutte le immagini sono state prese da Google immagini.

 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *