arrow_backTorna alle field notes
NETWORKING Pubblicato 8 Aug 2026

Cosa significa davvero End-to-End nelle reti?

Analisi pratica della connettività end-to-end, perché si interrompe nelle reti reali e come testarla con traceroute e verifiche MTU.

Quando si dice che una connessione è "end to end", significa che i dati viaggiano dall'applicazione sorgente originale all'applicazione destinazione senza che qualche middlebox li riscritti o interrompa silenziosamente lungo il percorso. Sembra semplice finché non inizi a tracciare il percorso reale di un pacchetto attraverso NAT, firewall, load balancer e proxy.

Il principio end-to-end

Questa idea viene da un articolo del 1984 di Saltzer, Reed e Clark, che sostenevano che certe funzioni come l'affidabilità e la crittografia dovrebbero stare agli endpoint di una rete, non nel mezzo. La rete core dovrebbe solo inoltrare i pacchetti. Gli endpoint gestiscono il controllo degli errori, la ritrasmissione e l'ordinamento.

TCP è l'esempio più chiaro. I router nel mezzo non tracciano numeri di sequenza né confermano i segmenti. È il compito dei due host che eseguono gli stack TCP. Il livello di rete (IP) fa solo il best-effort delivery, e TCP a ogni estremità corregge quello che si perde o si riordina.

Dove il principio end-to-end si rompe oggi

Le reti moderne violano questo principio costantemente, di solito per buoni motivi operativi:

  • NAT riscrive l'IP sorgente e la porta, quindi il pacchetto che il server vede non è il pacchetto che il client ha inviato.
  • TLS-terminating proxy e load balancer (come un AWS ALB o un nginx reverse proxy) terminano una sessione TCP/TLS e ne avviano una nuova. L'endpoint reale del client è il proxy, non il server applicativo.
  • Firewall stateful tracciano lo stato della connessione e possono scartare pacchetti che non corrispondono alle sequenze attese, iniettando effectivamente se stessi nella conversazione.
  • CGNAT sulle reti ISP significa che molti clienti condividono un IP pubblico, infrangendo l'assunto che un IP corrisponda a un singolo host.

Questo importa praticamente quando stai debuggando. Se un utente segnala "la connessione è caduta", devi sapere se è caduta al loro laptop, al loro router domestico, all'ISP, a un nodo edge CDN, a un load balancer o al server origin. Il pensiero end-to-end ti costringe a tracciare l'intera catena invece di solo controllare i log del tuo server.

Testare la connettività end-to-end

Alcuni strumenti che ti mostrano davvero il percorso, non solo successo/fallimento:

# Traccia il percorso hop per hop
traceroute 8.8.8.8

# Su Linux, MTR fornisce statistiche continue per hop
mtr google.com

# Verifica problemi MTU che frammentano o scartano pacchetti silenziosamente
ping -M do -s 1472 8.8.8.8

Quell'ultimo comando vale la pena impararlo bene. I fallimenti della path MTU discovery sono un classico problema "sembra end-to-end ma non lo è davvero". Piccoli pacchetti come un TCP SYN passano bene, ma una volta che invii un payload di dimensioni complete, qualche hop nel mezzo lo scarta silenziosamente perché troppo grande e l'ICMP "fragmentation needed" viene bloccato da un firewall. La connessione si blocca e tutti incolpano l'applicazione.

Per TCP in particolare, tcpdump o ss -ti su entrambi gli estremi ti dice se i due host sono d'accordo che hanno una connessione aperta:

ss -ti dst 203.0.113.5

Se un lato pensa che la connessione sia ESTABLISHED e l'altro non mostra niente, qualcosa nel mezzo (di solito un firewall che fa timeout di connessioni inattive) l'ha silenziosamente terminata.

Perché questo importa per la sicurezza

La crittografia end-to-end è la versione rilevante per la sicurezza dello stesso concetto. TLS tra un browser e un edge CDN non è la stessa cosa di TLS tra il browser e il tuo server origin. Se il CDN termina TLS e inoltra plaintext (o una nuova connessione TLS) al tuo backend, hai due hop crittografati separati, non un canale crittografato continuo. Va bene per la maggior parte dei casi, ma se stai gestendo qualcosa di sensibile, devi sapere esattamente dove avviene la decrittazione e chi può vedere plaintext a ogni hop.

La stessa logica si applica ai VPN. Un VPN "full tunnel" ti dà la crittografia end-to-end dal tuo dispositivo al nodo di uscita VPN, ma la connessione dal nodo di uscita al server di destinazione reale è un hop separato con le sue proprietà di sicurezza.

L'insegnamento pratico

Quando qualcuno dice che un percorso di rete è end to end, chiedi: end to end tra quali due punti, esattamente? Tra il client e il load balancer? Tra il load balancer e il server applicativo? Nominare gli endpoint effettivi trasforma un'affermazione di rete vaga in qualcosa che puoi testare con una cattura di pacchetti.

Se vuoi approfondire il tracciamento del traffico reale e la lettura delle catture di pacchetti, controlla i segmenti Wireshark e TCP/IP fundamentals sulla piattaforma DEFENSE_GRID di Korra Studio.

Scritto con assistenza AI, revisionato e pubblicato da Michal Pilch (CISSP), Korra Studio.

Pronto per andare oltre?

Questa è una nota dalla knowledge base di Korra Studio — la piattaforma abbina ogni argomento a mentoring 1-to-1.

Inizia gratisarrow_forward