Why use the Traceroute or the Tracert command?
The benefits of using the traceroute command or its alternative for Windows called tracert command are:
- Complete route list. You will see all the routers on the way, with their IP addresses and the time it took. You can better understand the network.
- Route timing. See how much time does it take to finish the query. Is it ok for you? What can you do to speed it up? You can have a starting point for improvements.
- It is built-in. You don’t need to install additional software, and its use is free.
- Check if you can reach a target. See if there is a connection between your device and the hostname or IP address you put in the command.
- See problematic slow router. You can see how much time it took in each hop. So you can see a spot that significantly slows your network. You can fix the problem or add more presence in the area.
Notes
To speed up work, normally several probes are sent simultaneously. The downside is that this creates a «storm of packages», especially in the reply direction. Routers can throttle the rate of icmp responses, and some of replies can be lost. To avoid this, decrease the number of simultaneous probes, or even set it to 1 (like in initial traceroute implementation), i.e., -N 1
The final (target) host can drop some of the simultaneous probes, and might even answer only the latest ones. It can lead to extra «looks like expired» hops near the final hop. traceroute uses a smart algorithm to auto-detect such a situation, but if it cannot help in your case, use -N 1.
For even greater stability, you can slow down the program’s work with the -z option. For example, use -z 0.5 for a half-second pause between probes.
If some hops report nothing for every method, the last chance to obtain something is to use the ping command with the -R option (IPv4, and for nearest 8 hops only).
Как использовать Traceroute
Трассировка может быть запущена из окна терминала или из командной строки. Выполните команду трассировки с адресом веб-сайта. Например, если вы хотите запустить трассировку на Andreyex, вы бы выполнить команду:
tracert andreyex.ru
Примечание:
В Linux или Mac команда traceroute является трассировкой. В операционной системе Windows это tracert.
tracert andreyex.ru
Если вы используете трассировку для другого веб-сайта, размещенного в другом регионе мира, вы можете увидеть, как пути отличаются.
Первый “hops” так же, когда трафик достигает вашего поставщика услуг Интернета, а затем пакеты идут по другим сетям.
tracert yandex.ru
Следующая команда производит трассировку до сайта поисковой системы yandex.ru. Если использовать аргументы -T -p 80 -n выполняются TCP на основе трассировки через порт 80 и возвращают IP – адреса, а не имена хостов.
# traceroute -T -p 80 -n centos.org traceroute to centos.org (85.12.30.226), 30 hops max, 60 byte packets 1 188.120.250.1 0.451 ms 0.377 ms 0.362 ms 2 92.63.108.97 0.331 ms 0.308 ms 0.303 ms 3 195.191.239.137 0.930 ms 0.930 ms 0.963 ms 4 81.211.83.225 3.482 ms 4.127 ms 3.387 ms 5 79.104.225.62 42.274 ms 39.820 ms 42.468 ms 6 80.249.209.174 42.039 ms 48.948 ms 48.893 ms 7 91.148.255.65 46.983 ms 41.180 ms 40.193 ms 8 85.12.30.226 40.308 ms 42.608 ms 39.949 ms
Traceroute
Программа traceroute является инструментом для определения маршрута следования пакетов в сетях, работающих по межсетевому протоколу (Internet Protocol (IP)). Также доступен вариант программы для работы по протоколу IPv6 с названием traceroute6.
Программа traceroute доступна практически во всех UNIX-подобных операционных системах. Также существуют аналоги со сходными функциями, такие, как tracepath в современных дистрибутивах Linux и tracert в операционных системах Microsoft Windows. Операционные системы на основе Windows NT также имеют в своем составе утилиту PingPath c аналогичной функциональностью.
Tracerute отправляет последовательность пакетов протокола межсетевых управляющих сообщений по адресу удаленного узла. Определение адресов промежуточных маршрутизаторов, преодолеваемых пакетами, тесно связано с управлением параметром времени жизни пакета (TTL) в рамках межсетевого протокола. Маршрутизаторы при пересылке пакета уменьшают это значение на единицу и отбрасывают пакет когда значение TTL становится равным нулю, возвращая сообщение об ошибке ICMP (ошибке истечения времени ICMP (ICMP Time Exceeded)) отправившему пакет узлу.
В ходе работы traceroute повышает значение TTL для каждой успешно отправленной группы пакетов. Первые три пакета отправляются с значением TTL равным единице, поэтому ожидается, что первый маршрутизатор не будет производить пересылку пакетов. Следующие три пакета имеют значение TTL равное двум, поэтому второй маршрутизатор отправит ошибку отправившему пакеты узлу. Это продолжается до тех пор, пока пакеты не достигнут узла назначения и он не отправит сообщение о приеме в виде эхо-ответа ICMP (ICMP Echo Reply).
Traceroute использует возвращаемые пакеты с сообщениями ICMP для создания списка узлов, которые преодолевают пакеты с данными по пути к узлу назначения. Три значения времени, возвращаемые для каждого узла по пути следования пакетов являются значениями задержек (времени ожидания) и обычно измеряются в миллисекундах для каждого пакета из последовательности.
Базовый синтаксис:
traceroute <целевой узел>
Пример использования:
traceroute www.google.it
traceroute to www.google.it (72.14.234.104), 30 hops max, 60 byte packets
1 192.168.0.1 (192.168.0.1) 1.905 ms 5.552 ms 9.496 ms
2 * * *
3 host141-189-static.38-88-b.business.telecomitalia.it (88.38.189.141) 50.136 ms 53.519 ms 55.674 ms
4 r-bo83-vl19.opb.interbusiness.it (80.21.70.162) 58.609 ms 63.730 ms 66.937 ms
5 172.17.5.69 (172.17.5.69) 74.281 ms 76.749 ms 79.629 ms
6 172.17.8.165 (172.17.8.165) 91.052 ms 42.074 ms 42.009 ms
7 172.17.5.241 (172.17.5.241) 49.091 ms 50.790 ms 53.211 ms
8 te1-9-1-0.milano50.mil.seabone.net (93.186.128.165) 54.800 ms 56.805 ms 59.189 ms
9 te3-2.milano53.mil.seabone.net (195.22.205.227) 60.866 ms 63.446 ms 65.927 ms
10 72.14.198.233 (72.14.198.233) 68.039 ms 70.902 ms 73.316 ms
11 209.85.249.54 (209.85.249.54) 75.359 ms 78.234 ms 80.581 ms
12 72.14.232.63 (72.14.232.63) 41.714 ms 40.862 ms 41.676 ms
13 mil01s07-in-f104.1e100.net (72.14.234.104) 46.361 ms 49.293 ms 52.165 ms
Как мы можем использовать команду TRACERT для обнаружения проблем
Мы должны помнить, что команда tracert очень полезна в очень больших локальных сетях, где пакет может выбирать разные пути для достижения своего конечного хоста. Благодаря этому мы можем знать, через какое оборудование проходит пакет данных, и, таким образом, повысить производительность локальной сети. Теперь мы увидим пример того, что происходит, когда команда Tracert отправляет пакет данных, который не может достичь своего места назначения:
Как мы видим, пакет переходит с маршрутизатора на маршрутизатор и ищет хост назначения. Некоторые маршрутизаторы показывают сообщение об ошибке «тайм-аут», потому что они, вероятно, имеют ограниченный tracert на своих компьютерах, поскольку он является частью внутренней сети оператора.
What is the Difference between Tracert vs Traceroute?
Tracert and Traceroute have different syntax but both of these commands do the basic same thing.
What makes them different is the Operating System where they are executed, Tracert for Windows and Traceroute for Linux.
The other thing is how each command is implemented in the background.
On the foreground, you see the same kind of information for both cases. As a result of running tracert or traceroute, you will see the same route and transit delays of packets across the entire path.
The command is available in Unix-based, Linux, and MacOS as ‘traceroute’, while it is available as ‘tracert’ in Windows.
Traceroute options for Windows
You can use the Tracert command with various options to perform more precise tests. The following options work on Windows Vista, Windows 7, Windows 8, and of course, Windows 10.
Option |
Description |
-d |
Do not resolve addresses to hostnames. |
-h aximum_hops |
Maximum number of hops to search for target. You can put higher than 30, if you want to query a very remote target. |
-j host-list |
Loose source route along host-list (IPv4-only). Show only IPv4 addresses. |
-w timeout | Wait timeout milliseconds for each reply. Inscrease it, to see more about slower routers. |
-R |
Trace round-trip path (IPv6-only). |
-S srcaddr |
Source address to use (IPv6-only). |
-4 |
Force using IPv4. |
-6 |
Force using IPv6. |
Трассировка сети в Nmap
В Nmap для трассировки есть опция —traceroute, пример трассировки до сайта suip.biz:
sudo nmap --traceroute suip.biz
Если вы не хотите сканировать порты, а хотите просто выполнить трассировку, то добавьте опцию -sn:
sudo nmap --traceroute -sn suip.biz
Кстати, это значительно сократить время до вывода результатов.
Бывает, что выводимые при трассировке программой nmap данные не являются полными. В этом случае попробуйте дополнительно добавить опцию -PE:
sudo nmap --traceroute -sn -PE suip.biz
В Nmap можно установить опции в заголовке пакета IP протокола. Среди этих опций имеется такая, которая сохраняет в заголовке пакета пройденный маршрут. Но у этого варианта есть ряд ограничений:
- всего 9 слотов
- некоторые устройства игнорируют эту опцию
- некоторые устройства вообще не пропускают пакеты с установленной этой опцией
Тем не менее иногда это работает, пример команды:
sudo nmap -sn --ip-options "R" -n --packet-trace suip.biz
Пример вывода:
Binary ip options to be send: \x01\x07\x27\x04\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00 \x00\x00\x00\x00\x00\x00\x00\x00 Parsed ip options to be send: NOP RR{#0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0} Starting Nmap 7.70 ( https://nmap.org ) at 2019-07-12 18:02 MSK SENT (0.8154s) ICMP [192.168.1.57 > 185.117.153.79 Echo request (type=8/code=0) id=64674 seq=0] IP SENT (0.8154s) TCP 192.168.1.57:36579 > 185.117.153.79:443 S ttl=43 id=9871 iplen=84 ipopts={ NOP RR{#0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0}} seq=1013479372 win=1024 <mss 1460> SENT (0.8154s) TCP 192.168.1.57:36579 > 185.117.153.79:80 A ttl=41 id=45814 iplen=80 ipopts={ NOP RR{#0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0 0.0.0.0}} seq=0 win=1024 SENT (0.8155s) ICMP [192.168.1.57 > 185.117.153.79 Timestamp request (type=13/code=0) id=32210 seq=0 orig=0 recv=0 trans=0] IP RCVD (1.1526s) ICMP [185.117.153.79 > 192.168.1.57 Echo reply (type=0/code=0) id=64674 seq=0] IP Nmap scan report for suip.biz (185.117.153.79) Host is up (0.34s latency). Other addresses for suip.biz (not scanned): 2a02:f680:1:1100::3d5f Nmap done: 1 IP address (1 host up) scanned in 1.20 seconds
Обратите внимание на строку:
RCVD (1.1526s) ICMP [185.117.153.79 > 192.168.1.57 Echo reply (type=0/code=0) id=64674 seq=0] IP
В ней перечислены первые 9 узлов через которые прошёл пакет.
tracepath
Программа tracepath схожа с traceroute, но использует только одну технику трассировки: UDP, для которой можно указать свой порт. Из-за выбранной техники, программа не требует повышенных привилегий.
Пример запуска:
tracepath suip.biz
Пример вывода:
1?: pmtu 1500 1: _gateway 1.247ms 1: _gateway 1.031ms 2: 10.20.48.1 9.097ms 3: 10.246.245.241 14.034ms 4: 10.185.252.194 14.379ms 5: 10.185.252.29 11.530ms asymm 4 6: 58-97-121-237.static.asianet.co.th 13.849ms asymm 5 7: 171-102-247-184.static.asianet.co.th 15.737ms asymm 6 8: 171-102-250-1.static.asianet.co.th 64.185ms asymm 7 9: 171-102-254-232.static.asianet.co.th 14.962ms asymm 8 10: 171-102-250-156.static.asianet.co.th 13.509ms asymm 9 11: 122.155.226.89 18.793ms 12: 61.19.9.66 58.829ms 13: no reply 14: 87.226.181.87 399.972ms asymm 23 15: 81.177.108.86 263.969ms asymm 14 16: j37-ae9-3001.marosnet.net 307.140ms 17: suip.biz 304.644ms reached Resume: pmtu 1500 hops 17 back 17
В первой колонке рядом с номера узла может стоять знак вопроса — он означает, что в присланном ответе отсутствует номер TTL и программа пытается его предположить.
Вместо звёздочек, если IP не узнан, пишется no reply.
В последнем столбце может быть цифра и слово asymm. Слово asymm означает, что маршрут является ассиметричным — то есть от нас до этого узла пакет идёт по одному пути, а от этого узла к нам пакет проходит по другому пути. Цифра означает возможное количество хопов от этого узла до нас — но информация не является надёжной.
У tracepath не очень много опций:
-4
Использовать только IPv4
-6
Использовать только IPv6
-n
Не печатать имя хоста, а печатать цифровое значение IP.
-b
Печатать и имя хоста и IP адрес в цифровом виде.
-l
Установить начальную длину пакета вместо 65535 для tracepath или 128000 для tracepath6.
-m
Установить максимальное число хопов (или максимум TTL) — то есть количество максимально «простукиваемых» узлов. По умолчанию 30.
-p
Установить начальный порт назначения.
Трассировка программой ping
Программа ping также умеет записывать маршрут — для этого программу нужно запустить с опцией -R. Она в пакет ECHO_REQUEST добавляет опцию RECORD_ROUTE и отображает буфер маршрута возвращаемых пакетов. Эта та же опция, которую использует Nmap. Ограничения такие же: максимум 9 слотов, многие хосты игнорирует или отбрасывают эту опцию.
Пример запуска:
ping -R suip.biz
Пример вывода:
IP маршрута выводятся при каждом пинге. Если маршрут не меняется, то выводится надпись, что маршрут не изменился.
Несмотря на все ограничения опции RECORD_ROUTE, иногда она бывает единственным вариантом получить хоть какую-то информацию о маршруте, поскольку команда ping практически всегда присутствует и не требует повышенных привилегий для запуска.
LIST OF AVAILABLE METHODS top
In general, a particular traceroute method may have to be chosen by -M name, but most of the methods have their simple cmdline switches (you can see them after the method name, if present). default The traditional, ancient method of tracerouting. Used by default. Probe packets are udp datagrams with so-called "unlikely" destination ports. The "unlikely" port of the first probe is 33434, then for each next probe it is incremented by one. Since the ports are expected to be unused, the destination host normally returns "icmp unreach port" as a final response. (Nobody knows what happens when some application listens for such ports, though). This method is allowed for unprivileged users. icmp -I Most usual method for now, which uses icmp echo packets for probes. If you can ping(8) the destination host, icmp tracerouting is applicable as well. This method may be allowed for unprivileged users since the kernel 3.0 (IPv4, for IPv6 since 3.11), which supports new dgram icmp (or "ping") sockets. To allow such sockets, sysadmin should provide net/ipv4/ping_group_range sysctl range to match any group of the user. Options: raw Use only raw sockets (the traditional way). This way is tried first by default (for compatibility reasons), then new dgram icmp sockets as fallback. dgram Use only dgram icmp sockets. tcp -T Well-known modern method, intended to bypass firewalls. Uses the constant destination port (default is 80, http). If some filters are present in the network path, then most probably any "unlikely" udp ports (as for default method) or even icmp echoes (as for icmp) are filtered, and whole tracerouting will just stop at such a firewall. To bypass a network filter, we have to use only allowed protocol/port combinations. If we trace for some, say, mailserver, then more likely -T -p 25 can reach it, even when -I can not. This method uses well-known "half-open technique", which prevents applications on the destination host from seeing our probes at all. Normally, a tcp syn is sent. For non-listened ports we receive tcp reset, and all is done. For active listening ports we receive tcp syn+ack, but answer by tcp reset (instead of expected tcp ack), this way the remote tcp session is dropped even without the application ever taking notice. There is a couple of options for tcp method: syn,ack,fin,rst,psh,urg,ece,cwr Sets specified tcp flags for probe packet, in any combination. flags=num Sets the flags field in the tcp header exactly to num. ecn Send syn packet with tcp flags ECE and CWR (for Explicit Congestion Notification, rfc3168). sack,timestamps,window_scaling Use the corresponding tcp header option in the outgoing probe packet. sysctl Use current sysctl (/proc/sys/net/*) setting for the tcp header options above and ecn. Always set by default, if nothing else specified. mss=num Use value of num for maxseg tcp header option (when syn). info Print tcp flags of final tcp replies when the target host is reached. Allows to determine whether an application listens the port and other useful things. Default options is syn,sysctl. tcpconn An initial implementation of tcp method, simple using connect(2) call, which does full tcp session opening. Not recommended for normal use, because a destination application is always affected (and can be confused). udp -U Use udp datagram with constant destination port (default 53, dns). Intended to bypass firewall as well. Note, that unlike in tcp method, the correspond application on the destination host always receive our probes (with random data), and most can easily be confused by them. Most cases it will not respond to our packets though, so we will never see the final hop in the trace. (Fortunately, it seems that at least dns servers replies with something angry). This method is allowed for unprivileged users. udplite -UL Use udplite datagram for probes (with constant destination port, default 53). This method is allowed for unprivileged users. Options: coverage=num Set udplite send coverage to num. dccp -D Use DCCP Request packets for probes (rfc4340). This method uses the same "half-open technique" as used for TCP. The default destination port is 33434. Options: service=num Set DCCP service code to num (default is 1885957735). raw -P proto Send raw packet of protocol proto. No protocol-specific headers are used, just IP header only. Implies -N 1 -w 5 . Options: protocol=proto Use IP protocol proto (default 253).
Как работает команда Tracert или Traceroute
Диагностическая команда Tracert определяет маршрут до пункта назначения, введенного путем отправки пакетов «эхо-сигнала ICMP», используя протокол управляющих сообщений Интернета, известный как «ICMP», к месту назначения хоста. Эти отправляемые пакеты используют значения времени жизни по умолчанию (TTL), которые мы указываем с помощью параметров команды Tracert.
Когда мы отправляем пакет данных, маршрутизаторы уменьшают этот TTL пакета на одну единицу, прежде чем переслать пакет в следующую точку пути. Таким образом, благодаря TTL мы можем узнать количество «прыжков», которые пакет передал из источника в пункт назначения. Однако, когда TTL пакета достигает нуля, не достигая своего конечного пункта назначения, маршрутизатор возвращает сообщение ICMP «Timeout» на устройство-источник.
Команда Tracert сначала отправляет пакет «ICMP echo» с TTL, равным 1, и увеличивает TTL на 1 при каждой последующей передаче, пока не достигнет конечного пункта назначения или пока не будет достигнут максимальный TTL. Благодаря промежуточным маршрутизаторам, которые возвращают сообщение ICMP «Timeout», мы можем знать маршрут, по которому идет пакет данных, отправленный с нашего компьютера на хост назначения. Однако может случиться так, что некоторые маршрутизаторы отправляют пакеты TTL «Timeout» без предупреждения, и эти пакеты невидимы для команды Tracert.
Как только мы это узнаем, мы можем понять, что команда Tracert работает, отображая на экране упорядоченный список промежуточных маршрутизаторов, которые возвращают сообщение ICMP об истечении времени ожидания. Давайте рассмотрим пример, введя команду Tracert www.redeszone.net в консоли командной строки:
На изображении выше команды Tracert на нашем веб-сайте www.redeszone.net мы видим, что для того, чтобы добраться до конечного веб-сервера, вам нужно сделать восемь прыжков. Кроме того, в каждом прыжке он показывает нам минимальное, среднее и максимальное время каждого скачка пакета данных. В этом конкретном случае мы можем видеть, как некоторые из этих данных не предоставляют их, и именно поэтому он показывает звездочку.
Виды трассировки
Имеется несколько видов трассировки. В основном они различаются отправляемым пакетом — это может быть пакет транспортного протокола TCP или UDP, либо протокола межсетевых управляющих сообщений ICMP, либо сырой IP пакет.
Иногда из-за файерволов или настройки сетевых узлов не удаётся получить IP адрес узла. В этом случае можно попробовать использовать другой метод, который может дать результаты.
Это можно проиллюстрировать на следующих двух примерах трассировки до одного и того же хоста:
traceroute hackware.ru
Звёздочки говорят о том, что мы не узнали часть узлов.
sudo traceroute -I hackware.ru
Благодаря изменению метода трассировки удалось узнать все промежуточные узлы. Другие методы могут дать отличные от показанных результаты.
Некоторые программы позволяют выбирать метод трассировки, менять номер порта, а также устанавливать значения некоторых полей в заголовке пакета.
Mtr
Программа mtr является инструментом для диагностики сети и комбинирует в себе возможности программ traceroue и ping.
После запуска mtr производит исследование соединения между узлом, на котором она запущена и целевым узлом, заданным параметром командной строки путем отправки пакетов со специально установленными низкими значениями параметра TTL. После этого отправка пакетов с низким значением параметра TTL продолжается, параллельно ведется запись времени приема ответных сообщений от промежуточных маршрутизаторов. Это позволяет mtr подсчитать и вывести процент принятых ответов и время ответа маршрутизаторов по пути следования пакетов до целевого узла. Внезапное повышение количества потерянных пакетов или времени ожидания ответа обычно говорит о плохом качестве (или просто о перегрузке) сети.
Базовый синтаксис:
mtr <имя узла>
Вывод команды «mtr google.com»:
mtr --report --report-cycles 10 www.google.com > google_net_report.txt
Эта команда позволяет поместить отчет, составляемый программой mtr, в текстовый файл. В режиме создания отчета mtr выводит результаты работы в виде отформатированного текста, включая в него описание необходимого количества пинг-циклов, требующихся для выполнения команды. Этот текстовый отчет может быть впоследствии без труда прикреплен к сообщению электронной почты.
Если вы предпочитаете программы с графическим интерфейсом, вы можете использовать
для исследования сетей программу Wireshark, о которой читайте здесь.
Description
The Internet is a large and complex aggregation of network hardware, connected together by gateways. Tracking the route your packets follow (or finding a gateway that’s discarding your packets) can be difficult. The traceroute command utilizes the IP protocol «time to live» field and attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to some host.
The only mandatory parameter is the destination hostname or IP number. The default probe datagram length is 40 bytes, but this may be increased by specifying a packet size (in bytes) after the destination hostname.
traceroute attempts to trace the route an IP packet would follow to some Internet host by launching probe packets with a small ttl (time to live) then listening for an ICMP «time exceeded» reply from a gateway. It start its probes with a ttl of one and increases this by one until it gets an ICMP «port unreachable» (or TCP reset), which means we got to the «host», or hit a max (which defaults to 30 hops). Three probes (by default) are sent at each ttl setting and a line is printed showing the ttl, address of the gateway and round trip time of each probe. The address can be followed by additional information when requested. If the probe answers come from different gateways, the address of each responding system will be printed. If there is no response within a 5.0 seconds (default), an «*» (asterisk) is printed for that probe.
After the trip time, some additional annotation can be printed: !H, !N, or !P (host, network or protocol unreachable), !S (source route failed), !F (fragmentation needed), !X (communication administratively prohibited), !V (host precedence violation), !C (precedence cutoff in effect), or !<num> (ICMP unreachable code <num>). If almost all the probes result in some kind of unreachable, traceroute gives up and exit.
You don’t want the destination host to process the UDP probe packets, so the destination port is set to an unlikely value (you can change it with the -p flag). There is no such a problem for ICMP or TCP tracerouting (for TCP we use half-open technique, which prevents our probes to be seen by applications on the destination host).
In the modern network environment the traditional traceroute methods cannot be always applicable, because of widespread use of firewalls. Such firewalls filter the «unlikely» UDP ports, or even ICMP echoes. To solve this, some additional tracerouting methods are implemented (including tcp); see below. Such methods try to use particular protocol and source/destination port, to bypass firewalls (to be seen by firewalls as a start of allowed type of a network session).
Traceroute Example
Traceroute starts its journey towards its destination differently. It begins with a TTL=1 (instead of the default 51) and adds one until it reaches its final destination.
When beginning the Traceroute test, the next hop that receives the packet with a TTL=1, which in my case, is the gateway, will execute the TTL-1 by protocol, which will result in TTL=0. That means there will be no further forwarding and the packet will be discarded.
The next-hop (my gateway) will notify the source that the TTL exceeded with the “ICMP TTL exceeded” message, containing valuable information such as IP, hostname, and delay.
As mentioned in the previous section, the main job of the Traceroute command is to +1 to the TTL until the packet reaches the final destination.
So, back to our example, let’s traceroute 8.8.8.8.
The Traceroute example shows that the packet took 13 hops from the source (192.168.0.1) to reach its destination (8.8.8.8), along with all information from the hops in between.
From the same screenshot, you can see that the hop number 10 is “72.14.219.20” the same IP that we got from command “ping 8.8.8.8 -10”.
Чем Tracert отличается от Ping?
Широкоизвестная команда PING используется для проверки связи с сервером. Ваш компьютер отправляет четыре пакета данных в пункт назначения, и как только они прибудут туда, пакеты вернутся обратно на ваш компьютер.
Если вы получили все или только часть пакетов данных на свой компьютер, это говорит о наличии общего соединения между вашим ПК и конечным пунктом. Кроме этого, вы получите данные о том, сколько по времени (в миллисекундах) заняло путешествие пакетов данных туда-обратно.
Traceroute даст нам больше информации – утилита не только проверит наличие связи с конечным пунктом назначения, но и с каждым маршрутизатором на этом пути. Она измерит время приема-передачи пакетов данных от каждого встреченного на пути маршрутизатора.
Notes
To speed up work, normally several probes are sent simultaneously. On the other hand, it creates a «storm of packages», especially in the reply direction.
Routers can throttle the rate of icmp responses, and some of replies can be lost. To avoid this, decrease the number of simultaneous probes, or even set it to
1 (like in initial traceroute implementation), i.e. -N 1
The final (target) host can drop some of the simultaneous probes, and might even answer only the latest ones. It can lead to extra «looks like expired» hops
near the final hop. We use a smart algorithm to auto-detect such a situation, but if it cannot help in your case, just use -N 1 too.
For even greater stability you can slow down the program’s work by -z option, for example use -z 0.5 for half-second pause between probes.
If some hops report nothing for every method, the last chance to obtain something is to use ping -R command (IPv4, and for nearest 8 hops
only).
Traceroute IPv4 and IPv6
By default, tracert and traceroute will test the path only for IPv4 addresses. But that doesn’t mean you can’t test IPv6. All modern OSs come with full support for IPv6 addresses, including all commands, such as ping, traceroute, netstat, etc., to support IPv6.
But IPv4 is the preferred addressing method, so you might not have IPv6 routes in your router ready to send the ICMP packet towards the IPv4 destination. If you do have IPv6 routes support in your OS and your router, you can perform a test.
To test a route for an IPv6 address, use the “tracert6” or “traceroute6” for Linux OS. The tracert6 command sends a sequence of User Datagram Protocol (UDP) to the destination host. While in the case of Windows, you can traceroute to IPv6 addresses using “tracert -6”.
- For macOS and Linux: traceroute6 2a00:1450:400a:804::2004
- For Windows: tracert -6 2a00:1450:400a:804::2004
Что означает вывод tracert
Основная идея не требует пояснений. Первая строка представляет ваш домашний роутер (при условии, что вы находитесь за маршрутизатором, может быть вариант, что ваш компьютер подключён к Интернет-провайдеру напрямую, без роутера), следующие строки представляют вашего интернет-провайдера, а каждая нижняя строка представляет маршрутизатор, который находится дальше.
Формат каждой строки следующий:
Hop RTT1 RTT2 RTT3 Доменное имя
- Hop: всякий раз, когда пакет передаётся между маршрутизатором, это называется «переходом», по английски hop. Например, в выходных данных выше мы видим, что для доступа к серверам ZaWindows.ru из моего текущего местоположения требуется 11 хопов.
- RTT1, RTT2, RTT3: это время приема-передачи, которое требуется пакету, чтобы добраться до узла и обратно на ваш компьютер (в миллисекундах). Это часто называют задержкой, и это то же число, которое вы видите при использовании ping. Traceroute отправляет три пакета на каждый прыжок и отображает все полученные значения, поэтому вы имеете некоторое представление о том, насколько согласована (или непоследовательна) задержка. Если вы видите * в некоторых столбцах, это означает, что вы не получили ответа, что может указывать на потерю пакета.
- Доменное имя : доменное имя, если оно доступно, часто может помочь вам увидеть местоположение маршрутизатора. Если оно недоступно, отображается только IP-адрес роутера.
Теперь вы сможете использовать команду tracert и понимать её вывод.