Make
a donation:
IBAN: IT36M0708677020000000008016 - BIC/SWIFT:
ICRAITRRU60 - VALERIO DI STEFANO or Privacy PolicyCookie PolicyTerms and Conditions a2 --- Definizione dei protocolli e dei servizi
Capitolo 145. Definizione dei protocolli e dei servizi
Prima ancora di analizzare sommariamente il funzionamento dei protocolli IP, è opportuno portare l'attenzione a due file di configurazione che di solito sono già stati predisposti correttamente dalle varie distribuzioni GNU/Linux: si tratta di /etc/protocols e /etc/services. Normalmente non ci si accorge nemmeno della loro presenza, ma la loro mancanza, o l'indicazione errata di alcune voci pregiudica seriamente il funzionamento elementare delle reti IP.
145.1
Protocolli di trasporto e di rete
I protocolli di comunicazione possono inserirsi a diversi livelli nella stratificazione del modello di rete ISO-OSI. Quelli riferiti ai livelli di trasporto e di rete sono classificati nel file /etc/protocols che alcuni programmi hanno la necessità di consultare. Di solito non c'è la necessità di modificare questo file che però deve essere presente quando si utilizzano programmi che accedono alla rete. Segue un estratto abbreviato di questo file:
ip 0 IP # internet protocol, pseudo protocol number
icmp 1 ICMP # internet control message protocol
...
tcp 6 TCP # transmission control protocol
...
udp 17 UDP # user datagram protocol
...
ipv6 41 IPv6 # IPv6
...
ipv6-icmp 58 IPv6-ICMP # ICMP for IPv6
...
145.2
Servizi
I protocolli TCP e UDP inseriscono il concetto di porta di comunicazione. Per la precisione, ogni pacchetto TCP o UDP, contiene una porta mittente e una porta di destinazione. Naturalmente, al livello IP vengono anche aggiunte le indicazioni dell'indirizzo IP del mittente e del destinatario.
Perché un pacchetto possa essere ricevuto da un destinatario, occorre che questo sia in ascolto proprio sulla porta prevista, altrimenti il pacchetto in questione non raggiunge il suo obiettivo. In generale, un'applicazione che deve svolgere un servizio attraverso la rete, deve stare in ascolto sempre della stessa porta, in modo tale che chi vuole accedervi sappia come farlo. Dall'altra parte, un'applicazione che vuole accedere a un servizio, deve aprire per conto proprio una porta locale qualsiasi, purché non utilizzata, iniziando poi a inviare dei pacchetti TCP o UDP (in base alle caratteristiche del protocollo al livello superiore) presso l'indirizzo e la porta del servizio. Si intende che l'applicazione che svolge il servizio sappia a quale porta rispondere perché questa informazione è parte dei pacchetti TCP e UDP.
Figura 145.2. Viaggio di un pacchetto UDP o TCP: «n» è la porta di origine; «m» è la porta di destinazione.
Figura 145.3. Andata e ritorno per le connessioni che prevedono l'uso delle porte: «n» è la porta usata nel nodo «A»; «m» è la porta usata nel nodo «B».
I servizi di rete sono offerti attraverso protocolli al quinto livello del modello ISO-OSI, ovvero a livello di sessione, utilizzando nello strato inferiore (TCP o UDP) delle porte ben conosciute, che tendono così a confondersi con il servizio stesso. Per esempio, la porta 23 viene usata per il protocollo TELNET, pertanto tende a essere identificata con il servizio corrispondente.
Figura 145.4. Esempio di ciò che accade quando dal nodo «A» un processo instaura una connessione HTTP con il nodo «B»; in particolare, in questo caso il processo in questione utilizza localmente la porta 1 083.
Generalmente, nei sistemi Unix le porte che gli applicativi devono utilizzare per stare in ascolto in attesa di richieste di connessione sono elencate nel file /etc/services. Il file in questione serve anche ai programmi che accedono ai servizi (sia locali, sia remoti), per sapere quale porta interpellare.
Il file /etc/services viene utilizzato in particolare da Inetd, per interpretare correttamente i nomi di tali servizi indicati nel suo file di configurazione /etc/inetd.conf.
Spesso, nel file /etc/services si annotano due righe per ogni porta: una nel caso di utilizzo del protocollo TCP e l'altra nel caso di UDP. Questo può succedere anche quando il servizio corrispondente fa sempre uso di uno solo dei due protocolli.
Segue un estratto molto breve del file in questione, in cui si può vedere la definizione di servizi di uso comune:
ftp-data 20/tcp
ftp 21/tcp
...
ssh 22/tcp # SSH Remote Login Protocol
ssh 22/udp # SSH Remote Login Protocol
telnet 23/tcp
smtp 25/tcp mail
...
domain 53/tcp nameserver # name-domain server
domain 53/udp nameserver
...
www 80/tcp http # WorldWideWeb HTTP
www 80/udp # HyperText Transfer Protocol
...
pop3 110/tcp pop-3 # POP version 3
pop3 110/udp pop-3
...
irc 194/tcp # Internet Relay Chat
irc 194/udp
...
x11 6000/tcp x11-0 # X windows system
x11 6000/udp x11-0 # X windows system
...
145.3
Messaggi ICMP
Più o meno allo stesso livello dei protocolli TCP e UDP, si affianca il protocollo ICMP, il quale non dispone di porte, ma di messaggi, definiti attraverso un codice numerico, composto da un tipo e da un eventuale sottotipo.