許多教材誤導「TTL = DNS 緩存時間」或「TTL 由操作系統固定」。實際上,TTL (Time To Live) 是 IP 頭部 8-bit 字段,標識數據包最大允許路由器轉發次數。
IP_TTL / IPV6_UNICAST_HOPS)設置初始值,常見默認值:Linux 64、Windows 128、某些嵌入式 255。traceroute 原理)。| 初始 TTL | 典型作用域 | 適用場景 |
|---|---|---|
| 1 | 同一鏈路/子網 | 本地廣播、mDNS、鏈路層發現協議 |
| 32 | 同一站點/數據中心 | 集群內部 RPC、服務註冊心跳 |
| 64 (Linux 默認) | 互聯網通用 | 絕大多數 TCP/UDP 應用 |
| 128 (Windows 默認) | 互聯網通用 | Windows 生態應用 |
| 255 | 全球任意節點 | 路由協議(BGP/OSPF)、特殊隧道 |
// Linux C 設置 TTL = 10(僅允許 10 跳)
int ttl = 10;
setsockopt(sock, IPPROTO_IP, IP_TTL, &ttl, sizeof(ttl));
// Java 設置組播 TTL
MulticastSocket socket = new MulticastSocket();
socket.setTimeToLive(5); // 僅本地網段
正確理解:TTL 防止路由環路導致封包無限循環佔用帶寬;它與 DNS TTL(緩存秒數)完全無關,後者是 DNS 資源記錄屬性。