Un pacchetto ricevuto dalla rete internet porta in sè le informazioni sull’indirizzo IP del mittente e sull’indirizzo MAC del nodo più vicino al destinatario. E’ possibile risalire dal pacchetto ricevuto (magari ricostruendo la sua ‘storia’ nella rete) all’indirizzo MAC del mittente?Grazie e complimenti per lo straordinario servizio!

Premetto che non sono un esperto di protocolli di rete, comunque per quanto
conosco l’argomento proverò a chiarire alcuni concetti.
Il protocollo di rete su cui si basa Internet (TCP/IP), è strutturato
in modo che sia possibile trasmettere pacchetti di dati, indipendentemente
dal percorso che debbano seguire attraverso la rete.
La figura seguente dovrebbe rendere bene l’idea, di come sia fatta concettualmente la rete.
Tra il computer sorgente e quello destinazione si frappongono un gran numero di macchine intermedie
e tra ognuna di queste e le altre si ripresenta la stessa situazione.


I percorsi possibili sono innumerevoli e questa è proprio la forza della rete,
perché anche se un gran numero di macchine intermedie cessa di funzionare, ma
continua ad esistere un percorso possibile, la comunicazione continua.

Venendo alla domanda specifica, il tracciamento del percorso di rete seguito dai pacchetti
è possibile, ed esistono molti programmi che permettono di farlo.
Una delle tecniche utilizzate è quella che sfrutta il TTL (Time To Live), presente
nell’intestazione dei pacchetti, la cui struttura è rappresentata nella figura seguente.


Il TTL è un numero che rappresenta il numero massimo di passaggi intermedi(macchine attraversate)
del pacchetto. Ad ogni passaggio su una macchina questo contatore viene decrementato, e quando arriva
a zero, e la macchina di destinazione non è stata ancora raggiunta, il pacchetto viene scartato e
rispedito al mittente, dove ora però la sorgente è la macchina che lo ha scartato.
Sfruttando questo meccanismo è possibile lanciare lo stesso pacchetto con TTL=1, in modo che venga
scartato dalla prima macchina intermedia, poi con TTL=2 per la seconda, e così via finché non ritorni
qualcosa dalla macchina di destinazione.
Per quello che riguarda i MAC Address, non vengono registrati nei pacchetti IP, e appartengono allo
strato sottostante dell’intero protocollo di rete (MAC Layer).
Di seguito c’è una rappresentazione schematica di alcuni degli strati dell’intero protocollo:

   Your PC                 Other Machine
+-------------+ +-------------+
| Network | | Network |
|Applications | |Applications |
+------+------+ +------+------+
| TCP | UDP | | TCP | UDP |
+------+------+ +------+------+
| IP | | IP |
+-------------+ +-------------+
|Network Card | |Network Card |
| MAC layer | | MAC layer |
+.............+ +.............+
| Physical | | Physical |
| ethernet |<-ethernet->| ethernet |
+-------------+ +-------------+

Le applicazioni di rete in genere non ricevono tutta la pila dei layer del protocollo, ma solo
quello che gli interessa, e che gestiscono. Di norma il MAC Layer viene gestito in hardware dalle
schede di rete, per cui dalla propria scheda di rete è possibile estrarre il proprio MAC address,
e probabilmente (sempre dalla scheda di rete) è possibile ricavare il MAC della scheda di rete dell’ultima
macchina che ha maneggiato il pacchetto che ci è arrivato, ma non di più.