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,每经过一个路由器减1‌12。
  • TTL=255 ‌:
    主要见于 ‌传统UNIX系统 ‌(如SunOS、NetBSD)。初始TTL值为255,同样每经过路由器减1‌12。
    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也有生存时间