Эта утилита используются вами очень часто, но догадываетесь ли вы как она работает, приговаривая "сейчас проверим трасертом"? По сути traceroute - это тот же пинг (не зря они часто совмещены в одной программе), т.е. программа, посылающая ICMP-пакеты, но использующий такой параметр IP-пакета как TTL.
Этот числовой параметр пакета каждый роутер при прохождении пакета через себя уменьшает на 1, а в случае если TTL пакета при этом становится равным 0 (т.е. весь лимит израсходован) - посылает сообщение ICMP Time Exceeded в ответ.
Таким образом меняя это число мы можем изучить все шлюзы, через которые лежит путь до хоста. Сначала задаем 1 - таким образом наш локальный роутер при прохождении пакета уменьшает значение до 0 - и посылает нам Time Exceeded - смотрим источник ответа - это первый шлюз.
Tracing route to yandex.ru [213.180.204.11]
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms router [192.168.1.1]
Далее посылаем новый запрос - уже с 2 в TTL - теперь наш роутер успешно пропустит пакет, а провайдерский - вернет Time Exceeded со своим адресом – это второй:
2 <1 ms <1 ms <1 ms 10.2.1.1
И так далее:
3 <1 ms <1 ms <1 ms 81.200.10.1
4 1 ms 1 ms 1 ms h-210.core.superlannet.ru [81.200.12.210]
5 18 ms 11 ms 1 ms ix2-m9.yandex.net [193.232.244.93]
6 1 ms 1 ms 1 ms rhodium-vlan309.yandex.net [77.88.56.126]
7 1 ms 1 ms 1 ms hummer-vlan2.yandex.net [87.250.228.136]
8 2 ms 2 ms 2 ms yandex.ru [213.180.204.11]
Trace complete.
Т.е. столь распространенная утилита использует свойство протокола, предназначенное совсем для других целей - согласно википедии, TTL был введен чтобы избавиться от блуждающих пакетов, которые не могут быть доставлены:
The purpose of the TTL field is to avoid a situation in which an undeliverable datagram keeps circulating on an internet system, and such a system eventually becoming swamped by such immortal datagrams.
А его рекомендуемое значение по умолчанию – 64 (RFC 1700):
The current recommended default time to live (TTL) for the Internet Protocol (IP) [45,105] is 64.
No comments:
Post a Comment