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也有生存時間
2、LWIP不同版本發現問題
當我一直完裸機程序后,發現使用DHCP分配IP時,V2.2.0 V2.2.1這兩個版本分配IP時間長達1分鐘,而V2.1.3版本只需要10秒鐘,對比發現在ipv4文件夾內2.2.0以上版本多了一個文件(如下圖),具體撒原因我不清楚。對比dhcp.c文件也有區別,可是看不懂呀
但是我通過把網線測試,V2.2.0以上版本,DHCP其實一通電初始化完以太網底層就立馬獲取到了,只能要等待將近50-60秒才會顯示出來獲取IP成功,并不是這50-60秒一直在獲取