Traceroute

**<code>traceroute</code>** і **<code>tracert</code>** — кампутарныя ўтыліты дыягностыкі для каманднага радку, якая дазваляе прасачыць магчымыя маршруты (шляхі) і затрымкі перадачы пакет па кампутарнай сетцы.

Утыліта паказвае час, выдаткаваны пакетамі на маршрут туды і назад да кожнага чарговага вузла на шляху да пункту прызначэньня. Сума сярэдніх часоў у кожным пераходзе вызначае агульны час, выдаткаваны на ўсталяваньне злучэньня. Выкананьне перапыняецца, калі ўсе (зазвычай тры) адасланыя пакеты згубіліся больш чым два разы.

Гэтым яна адрозьніваецца ад утыліты ping, якая падлічвае толькі выніковы час туды-назад да пункту прызначэньня.

## Рэалізацыі
Каманда даступная ў шматлікіх сучасных апэрацыйных сыстэмах, прычым у Unix-падобных (FreeBSD, macOS, Linux) звычайна называецца `traceroute`, а ў Windows і ReactOS — `tracert`. Апэрацыйныя сыстэмы на базе Windows NT маюць яшчэ ўтыліту PathPing, якая спалучае функцыянал ping і tracert.

Дзеля вызначэньня прамежкавых маршрутызатараў на шляху да прызначэньня выкарыстоўваецца значэньне часу жыцьця пакету (ЧЖП), вядомае таксама як *ліміт пераходу*. Traceroute адсылае пакеты, у кожным зь іх паступова павялічваючы іхнія значэньні ЧЖП, пачынаючы ад ЧЖП = 1. Пры перанакіраваньні маршрутызатары памяншаюць значэньні ЧЖП на адзін, адкідаючы пакеты, значэньне ЧЖП якіх зраўнялася з нулём, і вяртаючы памылку ICMP пра сканчэньне часу. Першы маршрутызатар атрымлівае першы камплект пакетаў, зьмяншае значэньне ЧЖП пакету, адкідае яго, бо ягоны ЧЖП дасягнуў нуля. Назад ён адсылае паведамленьне ICMP пра сканчэньне часу. Наступны камплект пакетаў мае ЧЖП, роўны двум, таму першы маршрутызатар перанакіроўвае іх далей, а другі маршрутызатар адкідае іх і адказвае паведамленьнем ICMP пра сканчэньне часу. Такім парадкам traceroute з атрыманых паведамленьняў складае сьпіс маршрутызатараў, празь якія праходзяць пакеты, пакуль яны не дасягнуць канчатковага пункту прызначэньня, які вяртае паведамленьне пра недасяжнасьць прызначэньня (калі адсылаліся UDP-пакеты) альбо рэха-адказ ICMP (калі адсылаліся пакеты ICMP).

Час, які вяртае кожны маршрутызатар на маршруце, азначае затрымку сеткі і звычайна вымяраецца для кожнага пакету ў мілісэкундах. Адпраўнік чакае адказу цягам вызначанай колькасьці сэкундаў. Калі ў азначаны час пакет не пацьверджаны, выводзіцца зорачка.

Для інтэрнэт-пратаколу не патрэбна, каб усе пакеты ішлі тым самым шляхам, таму ў сьпісе вузлоў могуць быць тыя, празь якія ішлі іншыя пакеты. Калі вузел у пераходзе №N не адказвае, ён не выводзіцца ў пратакол.

Калі сетка мае абарончы экран і выкарыстоўвае Windows ды Unix-падобныя сыстэмы, то для праходу праз сеткавы экран для traceroute трэба ўключыць больш за адзін пратакол.

Некаторыя рэалізацыі traceroute, напрыклад, *tcptraceroute* і *lft*, адсылаюць пакеты TCP. У Windows NT зьявілася ўтыліта PathPing, якая спалучае функцыянал ping і traceroute.

## Выкарыстаньне

Большасьць рэалізацыяў маюць магчымасьць задаваць колькасьць запытаў на пераход, час чаканьня адказу, ліміт пераходаў і нумар порту. Выклік traceroute без парамэтраў выводзіць сьпіс даступных можнасьцяў. У АС Linux дакумэнтацыю выводзіць каманда *man traceroute*, у тым ліку паказвае сьцяжкі памылак.

Прыклад:


```console
$ traceroute -w 3 -q 1 -m 16 example.com
traceroute to example.com (93.184.216.34), 16 hops max, 52 byte packets
 1  192.x.x.x (192.x.x.x)  5.152 ms
 2  10.x.x.x (10.x.x.x)  12.767 ms
 3  172.x.x.x (172.x.x.x)  11.638 ms
 4  172.x.x.x (172.x.x.x)  13.193 ms
 5  xxx.x.x.x.cox.net (68.x.x.x)  20.624 ms
 6  xxx.xxx.xxx.edgecastcdn.net (192.x.x.x)  56.205 ms
 7  xxx.xxx.xxx.edgecastcdn.net (192.x.x.x)  24.573 ms
 8  *
 9  *
10 93.x.x.x (93.x.x.x) 22.810 ms
11 93.x.x.x (93.x.x.x) 20.235 ms
```


Як пададзена вышэй, у выкліку каманды перададзены час чаканьня тры сэкунды (замест пяці), адсылка толькі аднаго запыту на пераход (замест трох), абмежаваньне максымальнай колькасьці пераходаў 16-цю (замест 30), і пунктам прызначэньня — *example.com*. На 8-м і 9-м радкох (ЧЖП 8 і 9) паказаныя зорачкі, бо тут маршрутызатар не адказаў у азначаны час.

## Значэньне
Traceroute можа дапамагчы ў пошуку хібных апісаньняў табліцы маршрутызацыі ці абарончага экрану, які можа блякаваць ICMP-трафік. Слушны адказ traceroute не гарантуе злучэньня праграмам, бо абарончы экран можа прапускаць ICMP-пакеты, але блякаваць пакеты іншых пратаколаў.

Тэстэры пранікненьняў карыстаюцца traceroute для збору інфармацыі пра інфраструктуру сеткі і дыяпазоны IP-адрасоў вакол дадзенага вузлу.

Traceroute можа дапамагчы аптымізаваць загрузку зьвестак. Калі існуюць некалькі люстэркаў аднаго рэсурсу, можна пратэсьціць кожнае зь іх дзеля пошуку найхутчэйшага.

## Мінуўшчына
Як паведамляе старонка дакумэнтацыі ўтыліты traceroute для Unix, пачаткова праграму напісаў Ван Якабсан у 1987 року.

## Крыніцы

## Вонкавыя спасылкі
* Traceroute з выкарыстаньнем можнасьцяў IP

Катэгорыя:Каманды Windows
Катэгорыя:Аналізатары трафіку
Катэгорыя:Вольнае сеткавае праграмнае забесьпячэньне
Катэгорыя:Адміністраваньне кампутарных сетак