Ti sei mai chiesto come comunica il tuo computer con altri computer sulla tua LAN locale o con altri sistemi su Internet?
Comprendere la complessità del modo in cui i computer interagiscono è una parte importante del networking ed è di uguale interesse per un amministratore di sistema così come per uno sviluppatore. In questo articolo, cercheremo di discutere il concetto di comunicazione dal livello fondamentale di base che deve essere compreso da tutti.
SUITE PROTOCOLLO TCP/IP
Le comunicazioni tra computer su una rete avvengono tramite tute di protocollo. La suite di protocolli più utilizzata e più ampiamente disponibile è la suite di protocolli TCP/IP. Una tuta di protocollo consiste in un'architettura a più livelli in cui ogni livello descrive alcune funzionalità che possono essere eseguite da un protocollo. Ogni livello di solito ha più di un protocollo opzioni per svolgere la responsabilità a cui il livello aderisce. TCP/IP è normalmente considerato un sistema a 4 livelli. I 4 livelli sono i seguenti:
- Livello applicazione
- Livello di trasporto
- Livello rete
- Livello collegamento dati
1. Livello di applicazione
Questo è il livello superiore della suite di protocolli TCP/IP. Questo livello include applicazioni o processi che utilizzano i protocolli del livello di trasporto per consegnare i dati ai computer di destinazione.
Ad ogni livello ci sono alcune opzioni di protocollo per svolgere l'attività designata a quel particolare livello. Quindi, il livello dell'applicazione ha anche vari protocolli che le applicazioni usano per comunicare con il secondo livello, il livello di trasporto. Alcuni dei più diffusi protocolli a livello di applicazione sono:
- HTTP (protocollo di trasferimento ipertestuale)
- FTP (Protocollo di trasferimento file)
- SMTP (Simple Mail Transfer Protocol)
- SNMP (Simple Network Management Protocol) ecc
2. Livello di trasporto
Questo livello fornisce la spina dorsale al flusso di dati tra due host. Questo livello riceve i dati dal livello dell'applicazione sopra di esso. Esistono molti protocolli che funzionano a questo livello, ma i due protocolli più comunemente usati a livello di trasporto sono TCP e UDP.
TCP viene utilizzato dove è richiesta una connessione affidabile mentre UDP viene utilizzato in caso di connessioni inaffidabili.
TCP divide i dati (provenienti dal livello dell'applicazione) in blocchi di dimensioni adeguate e quindi li passa alla rete. Riconosce i pacchetti ricevuti, attende i riconoscimenti dei pacchetti inviati e imposta il timeout per inviare nuovamente i pacchetti se i riconoscimenti non vengono ricevuti in tempo. Il termine "connessione affidabile" viene utilizzato quando non si desidera perdere alcuna informazione che viene trasferita sulla rete attraverso questa connessione. Pertanto, il protocollo utilizzato per questo tipo di connessione deve fornire il meccanismo per ottenere questa caratteristica desiderata. Ad esempio, durante il download di un file, non si desidera perdere alcuna informazione (byte) poiché potrebbe causare il danneggiamento del contenuto scaricato.
UDP fornisce un servizio relativamente più semplice ma inaffidabile inviando pacchetti da un host all'altro. UDP non adotta misure aggiuntive per garantire che i dati inviati vengano ricevuti o meno dall'host di destinazione. Il termine "connessione inaffidabile" viene utilizzato quando la perdita di alcune informazioni non ostacola l'esecuzione dell'attività attraverso questa connessione. Ad esempio, durante lo streaming di un video, la perdita di pochi byte di informazioni per qualche motivo è accettabile in quanto ciò non danneggia molto l'esperienza dell'utente.
3. Livello di rete
Questo livello è anche noto come livello Internet. Lo scopo principale di questo livello è organizzare o gestire il movimento dei dati sulla rete. Per movimento di dati, generalmente si intende l'instradamento dei dati sulla rete. Il protocollo principale utilizzato a questo livello è IP. Mentre ICMP (usato dal popolare comando 'ping') e IGMP sono usati anche a questo livello.
4. Livello collegamento dati
Questo livello è anche noto come livello di interfaccia di rete. Questo livello è normalmente costituito dai driver di dispositivo nel sistema operativo e dalla scheda di interfaccia di rete collegata al sistema. Sia i driver del dispositivo che la scheda di interfaccia di rete si occupano dei dettagli di comunicazione con il supporto utilizzato per trasferire i dati sulla rete. Nella maggior parte dei casi, questo supporto è sotto forma di cavi. Alcuni dei famosi protocolli utilizzati a questo livello includono ARP (protocollo di risoluzione degli indirizzi), PPP (protocollo da punto a punto) ecc.
ESEMPIO DI CONCETTO TCP/IP
Una cosa che vale la pena notare è che l'interazione tra due computer sulla rete attraverso la suite di protocolli TCP/IP avviene sotto forma di un'architettura client server.
Il client richiede un servizio mentre il server elabora la richiesta del client.
Ora, dal momento che abbiamo discusso i livelli sottostanti che aiutano il flusso di dati dall'host al target su una rete. Facciamo un esempio molto semplice per rendere più chiaro il concetto.
Considera il flusso di dati quando apri un sito web.
Come si vede nella figura sopra, le informazioni fluiscono verso il basso attraverso ogni livello sulla macchina host. Al primo livello, poiché viene utilizzato il protocollo http, viene formata una richiesta HTTP e inviata al livello di trasporto.
Qui il protocollo TCP assegna alcune informazioni in più (come numero di sequenza, numero di porta di origine, numero di porta di destinazione ecc.) Ai dati provenienti dal livello superiore in modo che la comunicazione rimanga affidabile, ovvero si potrebbe mantenere una traccia dei dati inviati e dei dati ricevuti.
Al livello inferiore successivo, IP aggiunge le proprie informazioni sui dati provenienti dal livello di trasporto. Queste informazioni aiuterebbero nel viaggio di pacchetti sulla rete. Infine, il livello di collegamento dati assicura che il trasferimento dei dati da/verso il supporto fisico avvenga correttamente. Anche in questo caso la comunicazione effettuata a livello di collegamento dati può essere affidabile o inaffidabile.
Queste informazioni viaggiano sul supporto fisico (come Ethernet) e raggiungono il computer di destinazione.
Ora, sulla macchina di destinazione (che nel nostro caso è la macchina su cui è ospitato il sito Web) si verificano le stesse serie di interazioni, ma in ordine inverso.
Il pacchetto viene prima ricevuto al livello di collegamento dati. A questo livello le informazioni (che sono state riempite dal protocollo del livello di collegamento dati della macchina host) vengono lette e il resto dei dati viene passato al livello superiore.
Allo stesso modo al livello di rete, le informazioni impostate dal protocollo del livello di rete della macchina host vengono lette e il resto delle informazioni viene passato al livello superiore successivo. Lo stesso accade a livello di trasporto e infine la richiesta HTTP inviata dall'applicazione host (il tuo browser) viene ricevuta dall'applicazione di destinazione (server del sito Web).
Ci si potrebbe chiedere cosa succede quando le informazioni specifiche di ciascun livello vengono lette dai protocolli corrispondenti sulla macchina di destinazione o perché sono richieste? Bene, cerchiamo di capire questo da un esempio di protocollo TCP presente a livello di trasporto. Sulla macchina host questo protocollo aggiunge informazioni come il numero di sequenza a ciascun pacchetto inviato da questo livello.
Sulla macchina di destinazione, quando il pacchetto raggiunge questo livello, il TCP a questo livello prende nota del numero di sequenza del pacchetto e invia un riconoscimento (che è il numero di sequenza ricevuto + 1).
Ora, se l'host TCP non riceve il riconoscimento entro un tempo specificato, invia nuovamente lo stesso pacchetto. Quindi in questo modo TCP si assicura che nessun pacchetto venga perso. Quindi vediamo che il protocollo a ogni livello legge le informazioni impostate dalla sua controparte per ottenere la funzionalità del livello che rappresenta.
PORTE, SERVER E STANDARD
Su una macchina particolare, un numero di porta accoppiato con l'indirizzo IP della macchina è noto come socket. Una combinazione di IP e porta sia sul client che sul server è nota come quattro tupla. Questa tupla di quattro identifica in modo univoco una connessione. In questa sezione discuteremo come vengono scelti i numeri di porta.
Sai già che alcuni dei servizi molto comuni come FTP, telnet ecc. funzionano su numeri di porta noti. Mentre il server FTP viene eseguito sulla porta 21, il server Telent viene eseguito sulla porta 23. Quindi, vediamo che alcuni servizi standard forniti da qualsiasi implementazione di TCP/IP hanno alcune porte standard su cui vengono eseguiti. Questi numeri di porta standard sono generalmente scelti da 1 a 1023. Le porte conosciute sono gestite da Internet Assigned Numbers Authority (IANA).
Sebbene la maggior parte dei server standard (forniti dall'implementazione della suite TCP/IP) funzionino su numeri di porta standard, i client non richiedono alcuna porta standard su cui funzionare.
I numeri di porta del client sono noti come porte temporanee. Per effimero intendiamo di breve durata. Questo perché un client può connettersi al server, fare il suo lavoro e quindi disconnettersi. Quindi abbiamo usato il termine "di breve durata" e quindi non sono richieste porte standard per loro.
Inoltre, poiché i client devono conoscere i numeri di porta dei server per connettersi ad essi, la maggior parte dei server standard funziona su numeri di porta standard.
Le porte riservate ai client generalmente vanno da 1024 a 5000. Il numero di porta superiore a 5000 è riservato a quei server che non sono standard o ben noti.
Se osserviamo il file "/etc/services", troverai la maggior parte dei server standard e la porta su cui girano.
$ cat /etc/services systat 11/tcp users daytime 13/udp netstat 15/tcp qotd 17/tcp quote msp 18/udp chargen 19/udp ttytst source ftp-data 20/tcp ftp 21/tcp ssh 22/tcp ssh 22/udp telnet 23/tcp ... ... ...
Come puoi vedere dal file /etc/services, FTP ha la porta numero 21, telent ha la porta numero 23 ecc. Puoi usare il comando 'grep' su questo file per trovare qualsiasi server e la sua porta associata.
Per quanto riguarda gli standard, le seguenti quattro organizzazioni/gruppi gestiscono la suite di protocolli TCP/IP. Sia l'IRTF che l'IETF rientrano nell'IAB.
- Società Internet (ISOC)
- The Internet Architecture Board (IAB). L'IAB rientra nell'ISOC.
- La Internet Engineering Task Force (IETF)
- La task force di ricerca su Internet (IRTF)