Когда я делаю пинг, я вижу значение TTL для каждого пакета. Для каждого маршрутизатора, который я вставляю между своим компьютером и маршрутизатором, подключенным к Интернету, значение TTL уменьшается на единицу. Однако установка коммутатора или концентратора не влияет на значение TTL. Это почему?
TTL является частью протокола IPv4 (в версии 6 он называется «Hop Limit», согласно комментарию Стивена Понди). Коммутаторы и концентраторы работают на другом уровне модели ISO / OSI (уровень 2 в отличие от уровня 3 - существуют так называемые коммутаторы уровня 3, но я предполагаю, что вы не спрашиваете о них, поскольку вы также включаете концентраторы) .
The TTL field is set by the sender of the datagram,
and reduced by every host on the route to its destination.
http://en.wikipedia.org/wiki/Time_to_live
Коммутатор или концентратор не являются хостом с точки зрения протокола IP - у них обычно нет IP-адресов. Если они это делают (в случае переключателей), они предназначены для целей управления и на самом деле не участвуют в фактическом функционировании устройства. Вместо этого коммутаторы работают с MAC-адресами, сопоставляя их с портами и «маршрутизируя» пакет только в том смысле, что он отправляет его на правильный порт (концентраторы выполняют гораздо меньше работы и вместо этого отправляют их через все порты). Они не проверяют и не изменяют полезную нагрузку IP - вы также можете использовать другие протоколы.
Короче говоря, Time To Live был реализован для предотвращения маршрутизация(OSI Layer 3) петли. Это сделано для того, чтобы пакет не надеялся вечно между одними и теми же узлами, не достигнув места назначения. Таким образом, только узлы, которые создают маршрутизация решение для пакета уменьшить его TTL на единицу. Когда TTL достигает нуля, пакет снова отбрасывается только устройством, принимающим решения о маршрутизации.