Андрей Смирнов
Время чтения: ~27 мин.
Просмотров: 1

Как работает traceroute в linux?

List Of Available Methods

In general, a particular traceroute method may have to be chosen by «-M name«, but most of the methods have their simple command-line switches (you can see them after the method name, if present).

defaultThe 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, -IThe most commonly-used method, which uses icmp echo packets for probes. If you can ping the destination host, icmp tracerouting is applicable as well. This method may be allowed for unprivileged users since the kernel 3.0 (IPv4 only), 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:
rawUse only raw sockets (this is the traditional method). This method is tried first by default (for compatibility reasons), then new dgram icmp sockets as fallback.
dgramUse only dgram icmp sockets.
tcp, -TWell-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 cannot. 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. The tcp method may be one of the following:
syn,ack,fin,rst,psh,urg,ece,cwrSets specified tcp flags for probe packet, in any combination.
flags=numSets the flags field in the tcp header exactly to num.
ecnSend syn packet with tcp flags ECE and CWR (for Explicit Congestion Notification, rfc3168).
sack,timestamps,window_scalingUse the corresponding tcp header option in the outgoing probe packet.
sysctlUse current sysctl (/proc/sys/net/*) setting for the tcp header options above and ecn. Always set by default, if nothing else specified.
mss=numUse value of num for maxseg tcp header option (when syn).
infoPrint 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.

The default tcp method is syn,sysctl.

tcpconnAn implementation of the tcp method using a simple connect() call, which performs full tcp session opening. Not recommended for normal use, because a destination application is always affected (and can be confused).
udp, -UUse udp datagram with constant destination port (default 53, dns). Intended to bypass firewall as well. Note, that unlike in tcp method, the corresponding application on the destination host always receive your probes (with random data), and most can easily be confused by them. In most cases it will not respond to your packets, so you will never see the final hop in the trace. (DNS servers usually reply with something angry, however). 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=numSet 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=numSet 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.

Options:

protocol=protoUse IP protocol proto (default 253).

Суперсэмплинг

квадрата

Псевдокод трассировщика лучей

CanvasToViewport(x, y) {
    return (x*Vw/Cw, y*Vh/Ch, d)
}


ReflectRay(R, N) {
    return 2*N*dot(N, R) - R;
}


ComputeLighting(P, N, V, s) {
    i = 0.0
    for light in scene.Lights {
        if light.type == ambient {
            i += light.intensity
        } else {
            if light.type == point {
                L = light.position - P
                t_max = 1
            } else {
                L = light.direction
                t_max = inf
            }

            # Проверка теней
            shadow_sphere, shadow_t = ClosestIntersection(P, L, 0.001, t_max)
            if shadow_sphere != NULL
                continue

            # Диффузность
            n_dot_l = dot(N, L)
            if n_dot_l > 0
                i += light.intensity*n_dot_l/(length(N)*length(L))

            # Блеск
            if s != -1 {
                R = ReflectRay(L, N)
                r_dot_v = dot(R, V)
                if r_dot_v > 0
                    i += light.intensity*pow(r_dot_v/(length(R)*length(V)), s)
            }
        }
    }
    return i
}


ClosestIntersection(O, D, t_min, t_max) {
    closest_t = inf
    closest_sphere = NULL
    for sphere in scene.Spheres {
        t1, t2 = IntersectRaySphere(O, D, sphere)
        if t1 in  and t1 
А вот сцена, использованная для рендеринга примеров:
viewport_size = 1 x 1
projection_plane_d = 1

sphere {
    center = (0, -1, 3)
    radius = 1
    color = (255, 0, 0)  # Красный
    specular = 500  # Блестящий
    reflective = 0.2  # Немного отражающий
}
sphere {
    center = (-2, 1, 3)
    radius = 1
    color = (0, 0, 255)  # Синий
    specular = 500  # Блестящий
    reflective = 0.3  # Немного более отражающий
}
sphere {
    center = (2, 1, 3)
    radius = 1
    color = (0, 255, 0)  # Зелёный
    specular = 10  # Немного блестящий
    reflective = 0.4  # Ещё более отражающий
}
sphere {
    color = (255, 255, 0)  # Жёлтый
    center = (0, -5001, 0)
    radius = 5000
    specular = 1000  # Очень блестящий
    reflective = 0.5  # Наполовину отражающий
}


light {
    type = ambient
    intensity = 0.2
}
light {
    type = point
    intensity = 0.6
    position = (2, 1, 0)
}
light {
    type = directional
    intensity = 0.2
    direction = (1, 4, 4)
}

To run traceroute on Windows:

  1. Open the command prompt.
    • Go to Start > Run.
    • Type cmd and press the Enter key.
    • This will bring up a command prompt window. It has a line that looks like this:C:\Documents and Settings\yourname> _ with a cursor blinking next to the > symbol.
  2. In the command prompt, type:tracert hostnamewhere hostname is the name of the server connection you are testing. See the section  below for help with the hostname.
  3. You may have to wait up to a minute or more for the test to complete. It will generate a list of the connections along the way and some information about the speed of the steps along the way.
  4. Send us the complete results (every line) for analysis. Select tracert results using your mouse cursor and right-click on it to copy into clipboard. You can now paste it into a document and send to Support.

Description

traceroute tracks the route packets taken from an IP network on their way to a given host. It utilizes the IP protocol’s time to live (TTL) field and
attempts to elicit an ICMP TIME_EXCEEDED response from each gateway along the path to the host.

traceroute6 is equivalent to traceroute -6

The only required parameter is the name or IP address of the destination host . The optional packet_len‘gth is the total size of the probing
packet (default 60 bytes for IPv4 and 80 for IPv6). The specified size can be ignored in some situations or increased up to a minimal value.

This program 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. We start our probes with a ttl of one and increase by one until we get 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 will give up and exit.

We 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 can not 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 LIST OF
AVAILABLE METHODS
below. Such methods try to use particular protocol and source/destination port, in order to bypass firewalls (to be seen by firewalls
just as a start of allowed type of a network session).

СинтаксисSyntax

ПараметрыParameters

ПараметрParameterОписаниеDescription
/d/dПредотвращает попытки средства tracert разрешить IP-адреса промежуточных маршрутизаторов к их именам.Prevents tracert from attempting to resolve the IP addresses of intermediate routers to their names. Это может ускорить отображение результатов tracert .This can speed up the display of tracert results.
/h<MaximumHops>/h <MaximumHops>Указывает максимальное число прыжков в пути для поиска целевого объекта (назначение).Specifies the maximum number of hops in the path to search for the target (destination). Значение по умолчанию — 30 прыжков.The default is 30 hops.
/j<Hostlist>/j <Hostlist>Указывает, что сообщения эхо-запроса используют параметр свободного исходного маршрута в заголовке IP с набором промежуточных назначений, указанных в hostlist.Specifies that echo Request messages use the Loose Source Route option in the IP header with the set of intermediate destinations specified in Hostlist. При свободной маршрутизации последовательные промежуточные назначения могут быть разделены одним или несколькими маршрутизаторами.With loose source routing, successive intermediate destinations can be separated by one or multiple routers. Максимальное число адресов или имен в списке узлов равно 9.The maximum number of addresses or names in the host list is 9. Hostlist — это серия IP-адресов (в точечно-десятичной нотации), разделенных пробелами.The Hostlist is a series of IP addresses (in dotted decimal notation) separated by spaces. Используйте этот параметр только при трассировке IPv4-адресов.Use this parameter only when tracing IPv4 addresses.
/w<timeout>/w <timeout>Указывает время в миллисекундах, в течение которого должно ожидаться получение сообщения о превышении времени ICMP или эхо-ответа, соответствующего заданному сообщению запроса эха.Specifies the amount of time in milliseconds to wait for the ICMP time Exceeded or echo Reply message corresponding to a given echo Request message to be received. Если оно не получено в течение времени ожидания, отображается звездочка (*).If not received within the time-out, an asterisk (*) is displayed. Время ожидания по умолчанию — 4000 (4 секунды).The default time-out is 4000 (4 seconds).
/R/RУказывает, что заголовок расширения маршрутизации IPv6 используется для отправки сообщения эхо-запроса на локальный узел с использованием назначения в качестве промежуточного назначения и проверки обратного маршрута.Specifies that the IPv6 Routing extension header be used to send an echo Request message to the local host, using the destination as an intermediate destination and testing the reverse route.
Ключ<Srcaddr>/S <Srcaddr>Указывает исходный адрес, используемый в сообщениях эхо-запроса.Specifies the source address to use in the echo Request messages. Используйте этот параметр только при трассировке IPv6-адресов.Use this parameter only when tracing IPv6 addresses.
/4/4Указывает, что для этой трассировки tracert.exe может использовать только IPv4.Specifies that tracert.exe can use only IPv4 for this trace.
/6/6Указывает, что для этой трассировки tracert.exe может использовать только IPv6.Specifies that tracert.exe can use only IPv6 for this trace.
<TargetName>Указывает назначение, определенное IP-адресом или именем узла.Specifies the destination, identified either by IP address or host name.
/?/?Отображение справки в командной строке.Displays help at the command prompt.

Рендеринг наших первых сфер

противоположномза камерой

За камерой
Между камерой и плоскостью проекции
Сцена

передзазабудем

O = <0, 0, 0>
for x in [-Cw/2, Cw/2] {
    for y in [-Ch/2, Ch/2] {
        D = CanvasToViewport(x, y)
        color = TraceRay(O, D, 1, inf)
        canvas.PutPixel(x, y, color)
    }
}
CanvasToViewport(x, y) {
    return (x*Vw/Cw, y*Vh/Ch, d)
}
TraceRay(O, D, t_min, t_max) {
    closest_t = inf
    closest_sphere = NULL
    for sphere in scene.Spheres {
        t1, t2 = IntersectRaySphere(O, D, sphere)
        if t1 in  and t1 < closest_t
            closest_t = t1
            closest_sphere = sphere
        if t2 in  and t2 < closest_t
            closest_t = t2
            closest_sphere = sphere
    }
    if closest_sphere == NULL
        return BACKGROUND_COLOR
    return closest_sphere.color
}

какой-то

IntersectRaySphere(O, D, sphere) {
    C = sphere.center
    r = sphere.radius
    oc = O - C

    k1 = dot(D, D)
    k2 = 2*dot(OC, D)
    k3 = dot(OC, OC) - r*r

    discriminant = k2*k2 - 4*k1*k3
    if discriminant < 0:
        return inf, inf

    t1 = (-k2 + sqrt(discriminant)) / (2*k1)
    t2 = (-k2 - sqrt(discriminant)) / (2*k1)
    return t1, t2
}
viewport_size = 1 x 1
projection_plane_d = 1
sphere {
    center = (0, -1, 3)
    radius = 1
    color = (255, 0, 0)  # Красный
}
sphere {
    center = (2, 0, 4)
    radius = 1
    color = (0, 0, 255)  # Синий
}
sphere {
    center = (-2, 0, 4)
    radius = 1
    color = (0, 255, 0)  # Зелёный
}

Исходный код и рабочее демо >>

Сцена

сцену

Часть I: трассировка лучей

обязаныШвейцарский ландшафтГрубая аппроксимация ландшафта

Для каждого пикселя холста
    Закрасить его нужным цветом
Разместить глаз и рамку в нужных местах
Для каждого пикселя холста
    Определить квадрат сетки, соответствующий этому пикселю
    Определить цвет, видимый сквозь этот квадрат
    Закрасить пиксель этим цветом

Основы трассировки лучей

сейчасположением камерыокном просмотра (viewport)областью видимости (field of view)

Разместить глаз и рамку в нужных местах (1)
Для каждого пикселя холста
    Определить квадрат сетки, соответствующий этому пикселю (2)
    Определить цвет, видимый сквозь этот квадрат (3)
    Закрасить пиксель этим цветом (4)

Как читать результат трассировки

В

Второй, третий и четвертый столбцы содержат значения RTT – времени, прошедшего от момента отправки запроса до получения ответа (как вы помните, партия состоит из трех пакетов). Чем оно меньше, тем быстрее осуществляется передача. Если оно больше 4 секунд, интервал ожидания считается превышенным.

Последний столбец – это имена и адреса промежуточных и конечного узлов.

Звездочки вместо значений не всегда указывают на недоступность или неисправность сетевого устройства (как пишут в некоторых источниках). Чаще всего это просто настройка, не позволяющая отправлять ответные ICMP-сообщения (меры по защите веб-узла от DDoS-атак). Если ваш запрос благополучно достиг конечной точки за приемлемое время, беспокоиться не о чем.

Причиной сбоя доставки ICMP-пакетов (если запрос так и не дошел до адресата) может быть неработоспособность (отключение или неисправность) сетевого устройства или политика безопасности (блокировка данного действия администратором сети).

Understanding traceroute results.

The traceroute hop consists of four tabs:

Number: This column is simply the number of the hop.Round Trip Time (RTT):This value also called latency and displays the time (in milliseconds) which packet takes to get to a hop and back. Asterisk (*) under RTT means that the packet did not return. This does not necessarily mean packet loss as many Internet routers may intentionally discard ping commands.

Name: The fully qualified domain name (FQDN) of the system. Many times the FQDN may provide an indication of where the hop is physically located. Sometimes the FQDN can’t be found and only IP address displayed. It is a common thing and also does not mean there is trouble with connectivity.IP Address: The IP address associated with theName.

Request timed out:

Request timed out meansthat the host you’re pinging might be: down or unreachable behind a firewall that drops your ICMP echorequestpackets. Also. the command may be disabled for that network by the sysadmin.

If «Request timed out» appearing at the beginning (usually on hop 2) it can be ignored as it’s a common hop.

«Request timed out» at the end of the traceroute may occur for several reasons.

  • The destination’s firewall or other security device is blocking the request. Request blocked by the destination’s firewall or security device.
  • There could be a problem on the return path from the target system. 
  • There may be a connection problem at that destination.

In general, first hops are the network from where the traceroute initiated, middle hops are Internet services provider side, and the end is the destination point.

Альтернативы и дополнения к traceroute


Полученная с помощью tracemap графическая карта трассировки пути на корневые серверы DNS с хоста, расположенного в Киеве

  • tracepath — похожая на traceroute программа, но может строить асимметричные трассы и имеет некоторые другие отличия.
  • mtr — Интерактивная программа, способная постоянно выводить обновлённую статистику по трассе.
  • tracemap — программа, позволяющая выполнять трассировку пути на несколько хостов сразу и представить полученные данные в виде графической карты.
  • tcptraceroute (tracetcp) — аналогичная traceroute программа, но предназначена для диагностики TCP соединений; вместо UDP-пакетов использует TCP-пакеты открытия соединения (|) с указанным сервисом (по умолчанию — web-сервер, порт 80) интересующего хоста; в результате получаем информацию о времени прохождения данного вида TCP-пакетов через маршрутизаторы и информацию о доступности сервиса на интересующем хосте, либо, в случае проблем с доставкой пакетов — видим, в каком месте трассы они возникли.

Зачем читать эту статью?

  1. Шейдеры. В первых видеопроцессорах алгоритмы были жёстко заданы в «железе», но в современных программист должен писать собственные шейдеры. Другими словами, вам всё равно нужно реализовывать большие фрагменты ПО рендеринга, только теперь оно выполняется в видеопроцессоре.
  2. Понимание. Вне зависимости от того, используете ли вы готовый конвейер или пишете свои шейдеры, понимание того, что происходит за кулисами позволит вам оптимальнее использовать готовый конвейер и писать шейдеры лучше.
  3. Интересность. Немногие области информатики могут похвастаться возможностью мгновенного получения видимых результатов, которые даёт нам компьютерная графика. Чувство гордости после запуска выполнения первого запроса SQL несравнимо с тем, что вы чувствуете в первый раз, когда удастся правильно оттрассировать отражения. Я преподавал компьютерную графику в университете в течение пяти лет. Меня часто удивляло, как мне удавалось семестр за семестром получать удовольствие: в конце концов мои усилия оправдывали себя радостью студентов от того, что они могли использовать свои первые рендеры в качестве обоев рабочего стола.

Рендеринг с диффузным отражением

light {
    type = ambient
    intensity = 0.2
}
light {
    type = point
    intensity = 0.6
    position = (2, 1, 0)
}
light {
    type = directional
    intensity = 0.2
    direction = (1, 4, 4)
}
ComputeLighting(P, N) {
    i = 0.0
    for light in scene.Lights {
        if light.type == ambient {
            i += light.intensity
        } else {
            if light.type == point
                L = light.position - P
            else
                L = light.direction

            n_dot_l = dot(N, L)
            if n_dot_l > 0
                i += light.intensity*n_dot_l/(length(N)*length(L))
        }
    }
    return i
}
    return closest_sphere.color
    P = O + closest_t*D  # вычисление пересечения
    N = P - closest_sphere.center  # вычисление нормали сферы в точке пересечения
    N = N / length(N)
    return closest_sphere.color*ComputeLighting(P, N)
sphere {
    color = (255, 255, 0)  # Yellow
    center = (0, -5001, 0)
    radius = 5000
}

Исходный код и рабочее демо >>

Summary

Although it is underestimated, Traceroute is one of the best OS-native network analytics tools. It is not only capable of testing connectivity, as Ping does, but it also finds all hops in between source and destination, including names, and delay times.

And all of this is done with the same protocol that Ping uses, ICMP. Also, by altering a field in the IP packet, the TTL.

Some software developers are even creating a front-end version of traceroute and including things such as GUIs, Geographical maps, graphs, etc. All to make a simple tool even more powerful.

But if you understand the basics and some of the tricks shown in this article, you probably won’t need fancy software.

Traceroute comes in all OS out there, from Linux, Windows, UNIX-based, to macOS.

The underlying functionality is the same, but remember that there are few command syntax and output distinctions.

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).

Слушатели трассировки

По умолчанию трассировочная информация пишется в окно Output отладчика Visual Studio. Изменяя конфигурацию приложения, этот вывод можно направить в другое место. Куда будет записан вывод трассировки — зависит от слушателей. Слушатель наследуется от абстрактного базового класса TraceListener.

В .NET поставляется несколько слушателей трассировки для записи событий трассировки в различные места. Для файловых слушателей трассировки используется базовый класс TextWriterTraceListener, а также производные классы XmlWriterTraceListener — для записи XML-файлов и DelimitedListTraceListener — для записи файлов с разделителями. Запись в журнал событий осуществляется с помощью либо EventLogTraceListener, либо EventProviderTraceListener.

Слушатель EventProviderTraceListener использует формат файла событий, который появился в Windows Vista. Можно также комбинировать веб-трассировку с трассировкой System.Diagnostics и записывать сведения в файл trace.axd.

.NET Framework предлагает множество слушателей, в которые может быть записана трассировочная информация. В случае если слушатели не отвечают существующим требованиям, можно написать собственный слушатель, наследуя специальный класс от базового класса TraceListener. С помощью такого специального слушателя можно, например, записывать трассировочную информацию в веб-службу, отправлять сообщения на мобильный телефон и т.д.

Слушатель трассировки можно сконфигурировать программно, создав объект слушателя и присвоив его свойству Listeners класса TraceSource. Однако обычно намного интереснее просто изменить конфигурацию, чтобы определить другой слушатель.

Слушатели можно сконфигурировать как дочерние элементы элемента <source>. В этом случае определяется тип класса слушателя и с помощью initializeData указывается направление вывода слушателя. В показанной ниже конфигурации определяются слушатели XmlWriterTraceListener для записи в файл demotrace.xml и DelimitedListTraceListener для записи в файл demotrace.txt:

С таким слушателем можно указывать дополнительную информацию, которая должна быть записана в журнал трассировки. Эта информация задается в XML-атрибуте traceOutputOptions и определена перечислением TraceOptions. Доступными значениями перечисления являются Callstack, DateTime, LogicalOperationStack, ProcessId, Threadld и None. В XML-атрибут traceOutputOptions можно добавлять сразу несколько необходимых значений, разделяя их запятыми, как в слушателе delimitedListener из предыдущего примера.

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 can not 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 just as a start of allowed type of a network session).

Пример в Linux

В UNIX/Linux системах существуют режимы, в которых запуск программы возможен только от имени суперпользователя root (администратора). К числу этих режимов относится важный режим трассировки с помощью ICMP (ключ ).

Во всех остальных случаях, traceroute может работать от имени обычного рядового пользователя.
При этом, параметры по умолчанию различаются от дистрибутива к дистрибутиву, хотя в справке традиционно пишется ключ (UDP) в качестве такового. В отдельных RedHat-based дистрибутивах фактически в качестве умолчания используется , поэтому в случае, если команда из следующего примера выдаст сообщение о недостатке прав, попробуйте явно указать ключ .

  $ traceroute www.ru
  traceroute to www.ru (194.87.0.50), 30 hops max, 38 byte packets 
   1    mygateway.ar7                       (192.168.1.1)       0.777 ms    0.664 ms   0.506 ms
   2    L0.ghsdr04                          (213.227.224.91)   15.661 ms   15.867 ms  31.426 ms
   3    213.227.224.1                       (213.227.224.1)    16.797 ms   18.221 ms  16.756 ms
   4    dg                                  (213.186.216.161)  53.068 ms   39.163 ms  38.283 ms
   5    br13                                (213.186.193.43)   40.156 ms   39.768 ms  42.803 ms
   6    aggr                                (62.221.40.169)    37.884 ms   38.712 ms  37.207 ms
   7    edge-3GE-216dot1q.kiev.ucomline.net (213.130.30.182)   39.723 ms   38.039 ms  41.261 ms
   8    ae0-202.RT771-001.kiv.retn.net      (81.222.15.1)      40.029 ms   37.088 ms  40.039 ms
   9    ae0-3.RT502-001.msk.retn.net        (81.222.15.1)     128.932 ms  122.043 ms 121.612 ms
  10    GW-Demos.retn.net                   (81.222.8.46)     120.023 ms  121.135 ms 119.493 ms
  11    iki-1-vl10.demos.net                (194.87.0.83)     119.074 ms  119.784 ms 123.607 ms
  12    www.ru                              (194.87.0.50)     120.358 ms  122.545 ms 119.399 ms

Remarks

  • This diagnostic tool determines the path taken to a destination by sending ICMP echo Request messages with varying time to Live (TTL) values to the destination. Each router along the path is required to decrement the TTL in an IP packet by at least 1 before forwarding it. Effectively, the TTL is a maximum link counter. When the TTL on a packet reaches 0, the router is expected to return an ICMP time Exceeded message to the source computer. tracert determines the path by sending the first echo Request message with a TTL of 1 and incrementing the TTL by 1 on each subsequent transmission until the target responds or the maximum number of hops is reached. The maximum number of hops is 30 by default and can be specified using the /h parameter. The path is determined by examining the ICMP time Exceeded messages returned by intermediate routers and the echo Reply message returned by the destination. However, some routers do not return time Exceeded messages for packets with expired TTL values and are invisible to the tracert command. In this case, a row of asterisks (*) is displayed for that hop.
  • To trace a path and provide network latency and packet loss for each router and link in the path, use the pathping command.
  • This command is available only if the Internet Protocol (TCP/IP) protocol is installed as a component in the properties of a network adapter in Network Connections.

Трассировка маршрута

Использование утилиты «Tracert».

Рассмотрим пример работы программы в операционной системе Windоws. Программа tracert выполняет отправку данных указанному узлу сети, при этом отображая сведения о всех промежуточных маршрутизаторах, через которые прошли данные на пути к целевому узлу. В случае проблем при доставке данных до какого-либо узла программа позволяет определить, на каком именно участке сети возникли неполадки. Здесь хочется отметить, что программа работает только в направлении от источника пакетов и является весьма грубым инструментом для выявления неполадок в сети. В силу особенностей работы протоколов маршрутизации в сети Интернет, обратные маршруты часто не совпадают с прямыми, причем это справедливо для всех промежуточных узлов в трейсе. Поэтому ICMP ответ от каждого промежуточного узла может идти своим собственным маршрутом, затеряться или прийти с большой задержкой, хотя в реальности с пакетами, которые адресованы конечному узлу, этого не происходит. Кроме того, на промежуточных маршрутизаторах часто стоит ограничение числа ответов ICMP в единицу времени, что приводит к появлению ложных потерь.
Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:

1. Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.

2. Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.

3. Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная строка.

Далее вам необходимо произвести трассировку до заданного ip адреса или доменного имени.

Использование утилиты «Pathping

PathPing предоставляет информацию о латентности сети и потерях данных на промежуточных узлах между исходным пунктом и пунктом назначения. Команда pathping в течение некоторого периода времени отправляет многочисленные сообщения с эхо-запросом каждому маршрутизатору, находящемуся между исходным пунктом и пунктом назначения, а затем на основании пакетов, полученных от каждого из них, вычисляет результаты. Поскольку pathping показывает коэффициент потери пакетов для каждого маршрутизатора или связи, можно определить маршрутизаторы или подсети, имеющие проблемы с сетью. Команда pathping выполняет эквивалентное команде tracert действие, идентифицируя маршрутизаторы, находящиеся на пути.

Запуск программы производится из командной строки. Для этого вы должны войти в неё. Для операционных систем семейства Windows существует несколько способов запуска командной строки:

1. Пуск — Выполнить — В графе «Открыть» написать «cmd» и нажать Ок.

2. Сочетание клавиш Win (кнопка с логотипом Windows) + R (должны быть нажаты одновременно) — В графе «Открыть» написать «cmd» и нажать Ок.

3. Пуск — Все программы (или просто «Программы», зависит от версии операционной системы) — Стандартные — Командная

Внимание! Выполнение данной команды потребует некоторое время, необходимо дождаться полного выполнения, как указано в примере ниже

Копирование текста из командной строки.

Чтобы скопировать текст к кликаем правой кнопкой мышки по командной строке и вызываем контекстное меню. В открывшемся меню выбираем пункт «Пометить». После этого текст в командной строке можно выделить обычным движением мышкой и скопировать с помощь комбинации клавиш Ctrl+C.

Далее результаты необходимо будет переслать на электронный адрес почты 911@profintel.ru, с указанием вашего id номера и кратким описанием вашей проблемы.

To run traceroute on Linux:

  1. Open Command Line.
  2. In Command Line, type:tracert hostnamewhere hostname is the name of the server connection you are testing. See the section  below for help with the hostname.
  • You may have to wait up to a minute or more for the test to complete. It will generate a list of the connections along the way and some information about the speed of the steps along the way.
  • Send us the complete results (every line) for analysis.

Determining hostname:

Note: the hostname should be replaced with whatever site is not working for you.

  • If you are a Hosted Exchange email customer, you can use the hostname for the server specified in your email account settings for the email program you are using.
  • If you are having trouble accessing Intermedia’s web site, the traceroute should be to the web site’s URL address.
  • If you have been instructed by Support to conduct this test, we will tell you what hostname to test for.

Please also note that even if the problem seems to occur closer to Intermedia’s end, it may actually be a problem at your ISP. This is why it is imperative that we see the entire traceroute ourselves.

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации