1,7K подписчиков

Командная строка: как определить проблемы с Интернетом

У тебя часто бывает так, что ты работаешь в сети, а с Интернетом какие-то проблемы и ты не понимаешь почему? В понимании и возможно решении этой проблемы тебе поможет Командная строка. Сегодня ты познакомишься с такой полезной программой, как traceroute (Linux) или tracert (windows), которая позволяет определить проблемы с твоим Интернетом. Давай начнем.

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

Передача пакета
Передача пакета

В этой статье мы рассмотрим внутреннее устройство команды "traceroute" и ее принципы работы, а также разберем пользу данной команды при устранении неисправности сети.

Основные принципы работы команды "traceroute":

Команда "traceroute" использует протоколы ICMP.

Краткая справка Протокол ICMP (Internet Control Message Protocol) — это способ общения между компьютерами в интернете. Он используется для отправки сообщений об ошибках, проблемах сети и других важных событиях. Когда компьютер в интернете пытается отправить данные другому компьютеру, он использует протокол ICMP для проверки доступности этого компьютера. Если компьютер недоступен, то ICMP сообщает об этом. Протокол ICMP очень важен для работы интернета. Без него не было бы способа узнать, работает ли другой компьютер в сети или нет.

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

Сама команда Traceroute (tracing route) — это утилита командной строки, которая позволяет определить путь, который проходит пакет данных от отправителя к получателю через сеть. Вот последовательность работы команды traceroute:

  1. Команда traceroute запускается на компьютере-отправителе и передает пакет данных на компьютер-получатель;
  2. Пакет данных передается через сеть до первого узла, где он останавливается и возвращается обратно на компьютер-отправитель;
  3. Затем команда traceroute передает новый пакет данных через этот узел и продолжает следовать по маршруту до тех пор, пока не достигнет конечного пункта назначения;
  4. В процессе следования команда traceroute записывает информацию о каждом узле, через который проходит пакет данных, такую как IP-адрес и задержку времени передачи данных;
  5. Когда пакет достигает конечного пункта назначения, команда traceroute завершается и выводит информацию о всем пути, пройденном пакетом данных.

Давайте попробуем выполнить эту команду и посмотреть, сколько точек пройдет запрос до произвольного сайта, например mom.ru. Для этого в первую очередь необходимо открыть командную строку. В Linux terminal, а в Windows cmd (введите в поиске и откроется черное окно).

В командной строке вводим:

  • для Linux команда имеет полное название traceroute mom.ru
  • для windows команду сократили tracert mom.ru

Нажимаем клавишу Enter и смотрим результат.

Результат работы команды traceroute.
Результат работы команды traceroute.

Анализ вывода команды "traceroute":

Вывод команды "traceroute" содержит список IP-адресов и задержек, которые происходят на каждом узле маршрута. Это позволяет определить проблемные узлы или узкие места в сети.

Как видно из примера выше на каждый адрес команда возвращает три варианта времени в миллисекундах. Когда вы выполняете команду traceroute, она отправляет серию сетевых пакетов к конечному пункту назначения и затем анализирует путь, который эти пакеты проходят, чтобы добраться до этого пункта. Каждый узел (или роутер) на пути пакетов может отвечать на запрос traceroute тремя временными значениями, чтобы отразить задержку (или время отклика) при прохождении через данный узел. Эти три временных значения представляют:

  1. Время отсылки пакета (Send Time);
  2. Время прохождения пакета через узел (Transit Time);
  3. Время отклика от узла (Response Time).

Трехкратное повторение времен помогает определить стабильность и надежность сетевого узла, так как сеть может быть подвержена различным факторам, влияющим на время отклика.

Но однозначно бросаются в глаза звездочки в многих строках *. Если traceroute не получает ответ от какого-либо узла, он отображает знак * вместо времени ответа.

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

Важно отметить, что знаки * в процессе выполнения команды traceroute не всегда указывают на проблемы в сети. Они могут быть результатом нормального функционирования сети или конфигурации узлов, которые не отвечают на запросы traceroute.

Ну и заключительное, что необходимо обсудить в выводе команды, это сквозная последовательность. Дело в том, что когда вы отправляете запрос, то в первую очередь он отправляется на роутер к которому вы подключены. Он расположен на пункте №1. Если здесь вы видите время больше 40 миллисекунд, и вы при этом находитесь близко к роутеру, то смело идите и перезагружайте его. Если у вас больше 60 миллисекунд на №2 - это ваш провайдер, то здесь перезагрузка роутера может помочь, но в очень редких случаях. Если не помогает, то смотрите насколько возрастает время ожидания на следующих пунктах. Если на каждом последующем время вырастает в два раза относительно предыдущего, то звоните своему провайдеру и пусть он разбирается что у него не так.

После №3 запрос уже покидает ваш город и движется к ближайшему маршрутизатору на пути к целевому адресу, который вы указали в команде. Далее вы уже ни на что не можете повлиять как пользователь. В последующих пунктах вы можете лишь увидеть насколько хорошо работает маршрутизация.

Если вы проверяете путь в корпоративной сети, то здесь будут абсолютно другие показатели и скорости, поэтому рекомендации выше не берите во внимание.

Внутреннее устройство команды "traceroute":

Если говорить о внутреннем устройстве команды, то стоит говорить о принципах, на котором она работает. А это протокол ICMP, в котором можно выделить следующие основные пункты:

  1. ICMP-сообщения: протокол ICMP использует специальные ICMP-сообщения для передачи информации между узлами в сети. Эти сообщения могут быть использованы для различных целей, таких как проверка доступности узлов, передача сообщений об ошибках, определение маршрутов и другие сетевые задачи;
  2. Отправка ICMP-сообщений: когда узел или маршрутизатор обнаруживает проблему или событие, требующее передачи ICMP-сообщения, он создает и отправляет это сообщение на адрес назначения. ICMP-сообщение может содержать информацию о типе ошибки, коде ошибки, данные и другие поля, которые могут быть полезны для диагностики проблемы;
  3. Обработка ICMP-сообщений: узлы и маршрутизаторы, получающие ICMP-сообщения, анализируют их и принимают соответствующие действия в зависимости от типа и кода сообщения. Например, если ICMP-сообщение указывает на недоступность узла, узел может отправить сообщение об ошибке обратно отправителю или принять меры для обхода проблемного узла;
  4. Использование ICMP в инструментах сетевой диагностики: ICMP широко используется в инструментах сетевой диагностики, таких как команда "ping" и "traceroute", с которым мы сегодня познакомились. Команда ping использует ICMP-сообщения Echo Request и Echo Reply для проверки доступности узлов в сети. А команда traceroute, как ты уже понял, использует ICMP-сообщения Time Exceeded для отслеживания маршрута пакетов данных в сети;
  5. Защита от злоупотреблений: ICMP-сообщения могут быть использованы злоумышленниками для атак на сеть, поэтому существуют механизмы защиты от злоупотреблений. Например, межсетевые экраны (firewalls) могут блокировать ICMP-сообщения или ограничивать их использование для предотвращения возможных атак. Именно из-за этих подходов вы и увидели звездочки в некоторых пунктах трассировки запросов.

Инструменты для выполнения "traceroute":

Существует множество инструментов, которые позволяют выполнить команду "traceroute". Некоторые из них включают в себя утилиты командной строки, которые мы сегодня использовали, т.е. tracert в операционных системах Windows и traceroute в UNIX-подобных системах. Также существуют онлайн-сервисы, которые позволяют выполнить traceroute веб-интерфейсом.

Сервис ping.eu
Сервис ping.eu

Но нужно понимать, что данный вариант показывает движение запросов не от вашего компьютера, а от сервера сайта ping.eu. Его можно использовать, чтобы проверить движения от сервера ping.eu к вашему серверу, чтобы понимать, как меняется маршрут в зависимости от положения запрашивающего.

Заключение:

Команда "traceroute" является полезным инструментом для анализа сетевого трафика и определения маршрута до целевого узла. Понимание внутреннего устройства команды позволяет эффективно использовать ее в различных сценариях.

Подписывайся, чтобы ничего не пропустить.