Перейти к содержимому

Traceroute Reference

Полный справочник команды traceroute для Linux, macOS и Windows.

Команда

traceroute <host>

Флаги

ФлагОписание
-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

Примеры

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

Как это работает

Traceroute отображает сетевой путь от вашего компьютера к хосту назначения. Он отправляет пакеты с возрастающими значениями TTL (Time To Live) и записывает ответ каждого маршрутизатора, показывая IP-адрес и время отклика на каждом маршруте. Это помогает диагностировать проблемы сетевого подключения и понять пути маршрутизации.

Об этом инструменте

Traceroute — это диагностический инструмент, который отображает сетевой путь, по которому проходят пакеты данных от вашего компьютера к хосту назначения, показывая каждый промежуточный маршрутизатор и время, затраченное на достижение каждого маршрутизатора. Понимание того, как данные передаются через Интернет, критично для администраторов сетей, разработчиков и ИТ-специалистов, которым необходимо диагностировать проблемы подключения, выявлять проблемы с задержками или понимать поведение маршрутизации. Этот справочник Traceroute предоставляет полное руководство команд для систем Linux, macOS и Windows, охватывая синтаксис, параметры и реальные примеры для каждой платформы.

Просто найдите команду traceroute для вашей операционной системы и изучите подробные объяснения доступных параметров—независимо от того, нужно ли вам изменить размер пакета, изменить максимальное количество переходов, установить определённые номера портов или настроить значения времени ожидания. Устраняете ли вы медленное соединение с удалённым сервером, исследуете, почему пакеты отбрасываются на определённом переходе, или документируете топологию сети для планирования инфраструктуры, этот справочник предоставляет практическое руководство без ненужных сложностей.

Сетевые профессионалы, администраторы систем, специалисты по кибербезопасности и инженеры облачных вычислений полагаются на traceroute как часть своего набора диагностических инструментов. Этот инструмент незаменим для всех, кто ответственен за поддержание надёжного сетевого подключения, поддержку production-систем или исследование проблем в многокоординатных сетевых окружениях.

Часто задаваемые вопросы

Реализация кода

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.