Vai al contenuto
🛠️ToolsShed

Traceroute Reference

Riferimento completo dei comandi traceroute per Linux, macOS e Windows.

Comando

traceroute <host>

Opzioni

OpzioneDescrizione
-nDo not resolve hostnames (faster)
-m <hops>Set maximum hops (default: 30)
-w <sec>Wait time per probe (default: 5s)
-q <n>Number of probes per hop (default: 3)
-IUse ICMP ECHO instead of UDP
-TUse TCP SYN (requires root)
-p <port>Destination port for UDP/TCP
-i <iface>Use specified network interface
-s <src>Use specified source address
-4 / -6Force IPv4 or IPv6

Esempi

traceroute google.com

Basic traceroute to a host

traceroute -n 8.8.8.8

Traceroute without DNS resolution

traceroute -m 15 example.com

Limit to 15 hops maximum

traceroute -I google.com

Use ICMP instead of UDP

sudo traceroute -T -p 80 example.com

TCP traceroute on port 80

Come funziona

Traceroute mappa il percorso di rete dal tuo computer all'host di destinazione. Invia pacchetti con valori TTL (Time To Live) crescenti e registra la risposta di ogni router, mostrando l'indirizzo IP e il tempo di risposta ad ogni hop. Questo aiuta a diagnosticare i problemi di connettività di rete e a comprendere i percorsi di instradamento.

Informazioni sullo strumento

Traceroute è uno strumento di diagnostica che traccia il percorso di rete seguito dai pacchetti di dati che viaggiano dal tuo computer a un host di destinazione, mostrando ogni hop di router intermedio e il tempo necessario per raggiungere ciascuno. Comprendere come i dati viaggiano su Internet è cruciale per amministratori di rete, sviluppatori e professionisti IT che hanno bisogno di diagnosticare problemi di connettività, identificare problemi di latenza o comprendere il comportamento del routing. Questo Riferimento Traceroute fornisce una guida completa dei comandi per sistemi Linux, macOS e Windows, coprendo sintassi, opzioni ed esempi del mondo reale per ogni piattaforma.

Semplicemente cerca il comando traceroute per il tuo sistema operativo ed esplora le spiegazioni dettagliate delle opzioni disponibili—che tu debba regolare le dimensioni del pacchetto, modificare i massimi hop, impostare numeri di porta specifici o configurare i valori di timeout. Che tu stia risolvendo una connessione lenta verso un server remoto, investigando perché i pacchetti vengono scartati a un hop particolare, o documentando la topologia della rete per la pianificazione dell'infrastruttura, questo riferimento fornisce una guida pratica senza complessità inutili.

I professionisti di rete, gli amministratori di sistema, gli specialisti in cibersicurezza e gli ingegneri cloud si affidano tutti su traceroute come parte del loro toolkit di diagnostica. Questo strumento è essenziale per chiunque sia responsabile del mantenimento di una connettività di rete affidabile, del supporto di sistemi in produzione o dell'investigazione di problemi in ambienti di rete multi-hop.

Domande Frequenti

Implementazione del Codice

import subprocess
import platform
import re

def traceroute(host: str, max_hops: int = 30) -> list[dict]:
    """Run traceroute and parse output."""
    system = platform.system()
    if system == "Windows":
        cmd = ["tracert", "-h", str(max_hops), host]
    else:
        cmd = ["traceroute", "-m", str(max_hops), host]

    result = subprocess.run(cmd, capture_output=True, text=True, timeout=60)
    lines = result.stdout.splitlines()
    hops = []
    for line in lines[1:]:  # skip header
        # Parse hop number and RTT values
        match = re.match(r"\s*(\d+)\s+(.+)", line)
        if match:
            hop_num = int(match.group(1))
            rest = match.group(2)
            times = re.findall(r"([\d.]+)\s*ms", rest)
            hostname = re.search(r"([\w.-]+)\s+\(", rest)
            hops.append({
                "hop": hop_num,
                "host": hostname.group(1) if hostname else "*",
                "times_ms": [float(t) for t in times],
            })
    return hops

hops = traceroute("google.com", max_hops=15)
for hop in hops:
    avg = sum(hop["times_ms"]) / len(hop["times_ms"]) if hop["times_ms"] else None
    avg_str = f"{avg:.1f} ms" if avg else "*"
    print(f"{hop['hop']:2d}  {hop['host']:<40} {avg_str}")

Comments & Feedback

Comments are powered by Giscus. Sign in with GitHub to leave a comment.