это результат моей трассировки
трассировка 211.140.5.120
1 141.1.31.2 (111.1.31.2) 0.397 ms 0.380 ms 0.366 ms
2 141.1.28.38 (111.1.28.38) 3.999 ms 3.971 ms 3.982 ms
3 142.11.124.193 (112.11.124.133) 1.315 ms 1.533 ms 1.455 ms
4 (201.141.0.261) 2.615 ms 2.749 ms 2.572 ms
5 (201.141.0.82) 2.705 ms 2.564 ms 2.680 ms
6 (201.118.231.14) 5.375 ms 5.126 ms 5.252 ms
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
Я хочу узнать, что означает *** и означает ли результат, что между моим хостом и целевым сервером действительно более 30 переходов?
решение1
Все реализации traceroute полагаются на пакеты ICMP (тип 11), отправляемые отправителю.
Эта программа пытается трассировать маршрут, запуская пакеты UDP-проб с небольшим ttl (время жизни), а затем слушая ответ ICMP "время превышено" от шлюза. Она запускает пробы с ttl, равным единице, и увеличивает его на единицу, пока мы не получим ICMP "port unreachable" (что означает, что мы добрались до "host") или не достигнем максимума (который по умолчанию равен 30 прыжкам и может быть изменен с помощью флага -m). Три пробы (изменяются с помощью флага -q) отправляются при каждой настройке ttl, и выводится строка, показывающая ttl, адрес шлюза и время кругового пути каждой пробы (то есть три *). Если в течение 5-секундного интервала тайм-аута (изменяются с помощью флага -w) нет ответа, для этой пробы выводится "*".
Итак, в вашем случае мы можем заключить, что мы получили ответ только до 201.118.231.14. После этого узлы не отвечают на пакеты ICMP (тип 11) до 30-го перехода, что является максимальным временем жизни (максимальным числом переходов). Вы можете увеличить максимальное время жизни с помощью флага -m.
решение2
Traceoute требует ответа от целевого сервера и каждого из промежуточных переходов для создания своего вывода. Если маршрутизатор не генерирует ответ Time-to-live exceeded
, traceroute ничего не будет знать об этом переходе. Переход, который выводит, * * *
означает, что маршрутизатор на этом переходе не отвечает на тип пакета, который вы использовали для traceroute (по умолчанию это UDP в Unix-подобных системах и ICMP в Windows).
Если вы используете ту же версию traceroute, что и я, вы можете попробовать использовать -e
опцию обхода брандмауэров и -P
опцию использования ICMP, TCP илиГРЕпакеты вместо UDP. Вы также можете попробовать указать определенный порт, который вряд ли будет отфильтрован (например, 80 или 25) с помощью опции -p
.
Могут быть и другие варианты, которые помогут вам получить ответ. Проверьтеman-страница для traceroute.
Отвечая на вторую часть вашего вопроса, нет, этот traceroute не означает, что между вами и целевым сервером ровно 30 переходов. Traceroute «сдается» после определенного количества переходов. Это делается путем ограничения максимального TTL в пакетах, который по умолчанию в Linux равен 30. Вы можете изменить это с помощью опции -m
. Переходов может быть больше или меньше, но поскольку ни один из них после 6-го не отвечает, мы просто не знаем.