Quando eseguo da Windows il traceRt ad un indirizzo ipv4 ottengo il percorso di instradamento del traffico VERSO quell'indirizzo ip.
Ho cercato di comprendere come funziona il routing su internet.
Se ho compreso bene, la rete internet funziona attraverso un 'continuo aggiornamento' di 'tabelle di routing' tra i router presenti in internet (compreso il mio), che ad un certo intervallo di tempo regolare (variabile, di default poco meno di 1 minuto) 'chiedono' ai router adiacenti l'aggiornamento delle tabelle di routing del traffico.
Questo aggiornamento viene eseguito attraverso differenti tecnologie, pi˙ o meno recenti o performanti.

Fin qui dovrei aver compreso + o - benino.

Se ho compreso bene, quando invio una richiesta di connessione, il mio router 'indirizza il 'pacchetto di dati' verso quella che, all'ultimo aggiornamento delle tabelle di routing, dovrebbe essere la via 'pi˙ breve' per raggiungere l'indirizzo di destinazione.
Durante il tragitto, se alcuni router, hanno una nuova tabella di routing aggiornata, reindirizzano il mio pacchetto di dati, sempre verso la 'via pi˙ breve'.

Fin qui, se ho compreso bene, dovrebbe essere tutto ok.

Ma una cosa non mi Ú chiara.

In particolare, quando mi collego ad un indirizzo IP che 'forza' l'instradamento del traffico in entrata attraverso un particolare nodo della rete (ad esempio un 'passaggio obbligato' attraverso un server anti ddos).

Ad esempio:

instradamento normale:
mio server a Milano --> nodo Exchange a Milano -->... ... --> nodo Exchange a Roma --> mio server di Roma

instradamento con traffico in entrata dirottato:
mio server a Milano --> nodo Exchange a Milano --> ... ... --> nodo Exchange a Monaco --> server ddos Monaco --> nodo Exchange a Monaco --> ... ... --> nodo Exchange a Roma

Se non ho capito male, se il server di Roma 'imposta' l'instradamento del traffico in entrata dirottandolo verso Monaco, tutti i router adiacenti della rete internet 'acquisiscono' che per raggiungere quell'indirizzo bisogna passare per Monaco.

Qui la mia domanda:

Quando (ad esempio tramite un programma) creo una connessione dal mio server a Milano, al server a Roma,
il traffico in uscita dal server di Roma, non necessariamente dovrebbe passare da Monaco, giusto?

Il traffico in uscita dal mio server di Roma seguirß la via (teorica) pi˙ breve, quindi da Roma a Milano.
Corretto?

Questo in pratica si dovrebbe tradurre in quanto segue:

Se dal mio server a Milano, tramite un programma in c# eseguo una chiamata del framework .net System.Net.WebRequest
(seguendo la teorica via pi˙ breve) i dati seguiranno il seguente percorso:

[request]
Milano --> Monaco -->... --> Roma
[response]
Roma --> Milano

Quindi mentre eseguendo un traceRt, da Milano a Roma otterrei una latenza di 450 millisecondi, quando eseguo la chamata, potrei ottenere i dati in un tempo differente dal doppio della latenza ottenuta con il traceRt
Ma teoricamente dovrei ottenere una latenza:
(latenza traceRt da Milano a Roma - rapportata alla dimensione del pacchetto di dati della richiesta) + ritardo dell'elaborazione dei dati + (latenza traceRt da Roma a Milano - rapportata alla dimensione del pacchetto di dati della risposta)
Che si potrebbero quantificare in circa 550 millisecondi.

Qui la mia domanda: il mio ragionamento Ú corretto?