Aller au contenu
🛠️ToolsShed

Traceroute Reference

Référence complète de la commande traceroute pour Linux, macOS et Windows.

Commande

traceroute <host>

Options

DrapeauDescription
-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

Exemples

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

Fonctionnement

Traceroute mappe le chemin réseau de votre ordinateur vers un hôte de destination. Il envoie des paquets avec des valeurs TTL (Time To Live) croissantes et enregistre la réponse de chaque routeur, affichant l'adresse IP et le temps de réponse à chaque saut. Cela aide à diagnostiquer les problèmes de connectivité réseau et à comprendre les chemins de routage.

À propos de cet outil

Traceroute est un outil de diagnostic qui mappe le chemin réseau emprunté par les paquets de données voyageant de votre ordinateur vers un hôte de destination, affichant chaque saut de routeur intermédiaire et le temps qu'il faut pour atteindre chacun d'eux. Comprendre comment les données se déplacent sur Internet est crucial pour les administrateurs réseau, les développeurs et les professionnels informatiques qui ont besoin de diagnostiquer les problèmes de connectivité, d'identifier les problèmes de latence ou de comprendre le comportement du routage. Cette Référence Traceroute fournit un guide de commande complet pour les systèmes Linux, macOS et Windows, couvrant la syntaxe, les options et des exemples concrets pour chaque plateforme.

Il suffit de rechercher la commande traceroute pour votre système d'exploitation et d'explorer les explications détaillées des options disponibles—que vous ayez besoin d'ajuster la taille des paquets, de modifier le nombre maximum de sauts, de définir des numéros de port spécifiques ou de configurer les valeurs de délai d'expiration. Que vous dépanniez une connexion lente vers un serveur distant, enquêtiez sur la raison pour laquelle les paquets sont abandonnés à un saut particulier, ou documentiez la topologie du réseau pour la planification de l'infrastructure, cette référence fournit des conseils pratiques sans complexité inutile.

Les professionnels des réseaux, les administrateurs système, les spécialistes en cybersécurité et les ingénieurs cloud comptent tous sur traceroute dans le cadre de leur arsenal d'outils de diagnostic. Cet outil est essentiel pour quiconque est responsable du maintien d'une connectivité réseau fiable, du soutien des systèmes en production ou de l'investigation des problèmes dans des environnements réseau multi-sauts.

Questions Fréquentes

Implémentation du Code

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.