Хелпикс

Главная

Контакты

Случайная статья





Трассировка.



Трассировка.

Итак, теперь поговорим о том как работает трассировка. Но перед этим разберемся с таким понятием как TTL. TTL (time to life) — время жизни пакета в сети. Собственно «время» термин не очень верный. На самом деле TTL это просто число, записанное в заголовке сетевого пакета. Суть в том что когда пакет приходит на очередной маршрутизатор, то из этого числа вычитается единица, и если результат не равен нулю, то пакет пинается дальше по маршруту. А вот если TTL обнулилось, то роутер отправляет его прямиком в ад, под марш Мендельсона. А если проще, то пакет отбрасывается. При этом роутер может опционально ответить хосту, отправившему пакет, специальным уведомлением по протоколу ICMP о том, что у пакета кончилось TTL и он был отброшен.

 

Именно по такому принципу работает трассировка. Т.е хост отправляет 1-й пакет с TTL=1. Первый же маршрутизатор на пути пакета вычитает из TTL единицу, тем самым обнуляя его. После чего он шлет нашему хосту ICMP уведомление, записав в ответ заодно и свой IP-адрес. Следующий пакет отправляется в сеть уже с TTL=2. Соответственно, первый маршрутизатор вычев 1 НЕ обнулит его. А вот на ВТОРОМ роутере TTL снова станет равным нулю. И хост получит уведомление об окончании TTL уже от второго маршрутизатора. И так этот процесс будет повторяться многократно. Думаю лучше разобрать на примере. Допустим, нам захотелось экстрима, и мы решили проверить доступность ресурса под названием example.com, а заодно выяснить маршрут до этого самого ресурса. На схеме ниже видно, что на пути пакетов лежит 3 маршрутизатора, это 192.168.1.1, 192.168.1.2 и 192.168.1.3. Но мы пока этого не знаем и набираем команду tracert example.com. Что происходит в этом случае?

!

Компьютер пользователя (далее просто компьютер) отправляет первый пакет, причем как уже говорилось TTL устанавливается равным 1. Первый роутер 192.168.1.1 получив наш пакет, как и ожидается вычитает из TTL единицу. Затем спохватившись, он понимает что TTL теперь равно 0 и с криком «А мужики то не знают!», он отбрасывает пакет и отправляет компьютеру ICMP уведомление (Type=11, code=0). Это самое сообщение можно перевести на человеческий примерно так: «Эй, это 192.168.1.1! Я отбросил твой пакет, потому что у него кончилось TTL» Получив уведомление, компьютер таким образом узнает адрес первого хопа на пути к вожделенному ресурсу. Затем на компьютер отправляет еще один пакет уже с TTL=2. Хоп 192.168.1.1 получив пакет и вычтя как обычно 1 из TTL видит, что значение этого самого TTL НЕ РАВНО нулю и посему со спокойной душой отправляет его дальше. После чего, этот пакет получает следующий маршрутизатор с адресом 192.168.1.2. И снова вычитается из TTL единица, TTL становиться равным 0 и вот теперь 192.168.1.2 отправит нашему компьютеру сообщение аналогичное тому, что отправлял компьютеру в прошлый раз роутер 192.168.1.1 («Эй , это 192.168.1.2...»). Таким образом на компьютер узнает адрес следующего хопа на пути пакета. Затем в сеть будет отправлен пакет с TTL=3 и уведомление мы получим уже от 192.168.1.3. Думаю, дальше объяснять смысла нет. Весь этот процесс повторяется до тех пор пока не будет достигнут интересующий нас ресурс. Вот собственно и вся азбука...

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.