Как сетевые устройства влияют на TTL
Когда я пингуюсь, я вижу значение TTL для каждого пакета. Для каждого маршрутизатора, который я вставляю между моим компьютером и маршрутизатором, который подключается к Интернету, значение TTL уменьшается на единицу. Однако вставка коммутатора или концентратора не влияет на значение TTL. Это почему?
2 ответа
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 достигает нуля, пакет снова отбрасывается только устройством, принимающим решения о маршрутизации.