网络设备如何影响 TTL

Win*_*ute 4 router switch ping ttl

当我执行 ping 操作时,我可以看到每个数据包的 TTL 值。对于我在计算机和连接到 Internet 的路由器之间插入的每个路由器,TTL 值都会下降 1。但是,插入交换机或集线器对 TTL 值没有任何影响。这是为什么?

Edu*_*nec 17

TTL 是 IPv4 协议的一部分(根据 Steven Monday 的评论,在 v6 上它被称为“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.
Run Code Online (Sandbox Code Playgroud)

http://en.wikipedia.org/wiki/Time_to_live

交换机或集线器不是 IP 协议意义上的主机——它们通常没有 IP 地址。如果他们这样做(在交换机的情况下),他们是出于管理目的,并不真正参与设备的实际运行。相反,交换机使用 MAC 地址,将它们映射到端口,并仅在将数据包发送到正确端口的意义上“路由”数据包(集线器所做的工作要少得多,而是通过所有端口发送它们)。他们不会检查或更改 IP 有效负载 - 您也可以使用其他协议。

http://en.wikipedia.org/wiki/ISO_model

  • @Pacerier:请允许我澄清一下。对于 IPv4,路由器必须将 TTL 字段至少减少 1,但可以选择将 TTL 减少超过 1。在 IPv6 中,根据 RFC 2460,“跳数限制”应始终减少 1。 (2认同)

小智 5

简而言之,实现生存时间是为了防止路由(OSI 第 3 层)循环。那是为了防止数据包在相同节点之间永远等待而永远不会到达其目的地。因此,只有为数据包做出路由决策的节点才将其 TTL 减 1。当 TTL 达到零时,只有设备做出路由决定,才能再次丢弃数据包。