lwIP学习记录5——裸机lwIP工程学习后的总结
1、ping包的TTL生存时间如何修改
当我们把工程烧录到板子上是,我们对板子的IP进行ping包,看到信息如下图
这时候我好奇TTL是什么作用,为什么有的设备是64有的设备是128有的是255?
解:TTL(Time to Live)是IP数据包中的一个字段,用于限制数据包在网络中的存活时间或最大转发跳数。
初始值设置与操作系统关联
- TTL=64:
通常由 Linux、类UNIX系统(如FreeBSD、Solaris)或 Compaq Tru64 发出。数据包从源主机发出时初始TTL值为64,每经过一个路由器减112。 - TTL=255:
主要见于 传统UNIX系统(如SunOS、NetBSD)。初始TTL值为255,同样每经过路由器减112。
Windows系统初始TTL通常为128(如Windows NT/XP)
路径跳数诊断
- TTL 64:
若返回的TTL值为56,说明数据包从源到目标经过了64-56=8
个路由器56。 - TTL 255:
若返回值为247,则路径经过255-247=8
个路由器39。
注意:TTL的初始值取决于发送主机的操作系统,与目标主机无关。
TTL的核心作用
- 防网络环路:
通过逐跳减1机制,确保数据包不会因路由错误无限循环(TTL=0时自动丢弃)28。 - 操作系统识别:
结合返回的TTL值可推断目标主机操作系统(如TTL≈64→Linux,TTL≈128→Windows)12。
综上TTL核心价值在于 路径跳数诊断 和 安全风险预警。
那么我们的板子如何修改这个值呢?
解:这这个文件下,修改IP_DEFAULT_TTL的值就可以了
官方的注释这么说明:
IP_DEFAULT_TTL: Default value for Time-To-Live used by transport layers.
IP_DEFAULT_TTL:传输层使用的生存时间的默认值。
除了ping包有生存空间,我们的UDP和TCP也有生存时间