TTL

В протоколах IPv4 и IPv6 есть специальный механизм, предотвращающий бесконечное циркулирование пакетов по сети, в случае, если из-за ошибки в маршрутизации образовалась петля. В IPv4 для этого присутствует специальное поле в пакете TTL, в IPv6 оно называется Hop Limit.

В случае, если в сети имеется петля маршрутизации, пакеты ходят от маршрутизатора к маршрутизатору до тех пор пока не будут уничтожены. Подробнее о маршрутизации и петлях можно прочитать в статье «Маршрутизация». Как же работает механизм уничтожения таких зависших пакетов?

В IP есть поле TTL (Time to live), которое отмеряет «время жизни» пакета. Когда пакет создаётся, в это поле записывается определённое значение (например, 255). Каждый маршрутизатор, обрабатывающий пакет, уменьшает значение поля на 1 и когда очередной маршрутизатор уменьшит TTL до нуля, он не отправляет пакет дальше, а уничтожает его.

Таким образом, TTL любого конкретного пакета можно интерпретировать, как количество маршрутизаторов, которое может пройти этот пакет. Значения в 255 более чем достаточно для любого реального маршрута. Для того чтобы посмотреть, какие маршрутизаторы проходит пакет, достаточно запустить на компьютере (или на маршрутизаторе) команду трассировки. Например, в windows можно запустить tracert google.com Обычно количество промежуточных маршрутизаторов не превышает 20-25 штук в худшем случае, если трафик идёт с одного континента на другой. Поэтому, если их вдруг насчиталось 255 – это точно петля.

Исключением может служить использование туннелей (или VPN) в этом случае один ip пакет заворачивается в другой и счётчик TTL уменьшается именно у внешнего пакета, в то время, как внутренний пакет, будучи распакованным на том конце, будет иметь TTL всего на единицу меньше исходного. По такому пакету нельзя судить, сколько реально маршрутизаторов его передавало.

Добавить комментарий