網(wǎng)絡(luò)中的生存時間 (TTL) 是什么?
生存時間 (TTL) 是指數(shù)據(jù)包在被路由器丟棄之前可存在于網(wǎng)絡(luò)內(nèi)部的時間或“躍點”數(shù)。TTL 還用于其他上下文中,包括 CDN 緩存和 DNS 緩存。
TTL 的工作原理
信息數(shù)據(jù)包被創(chuàng)建并通過 Internet 發(fā)送時,有可能持續(xù)無限期地在路由器之間傳遞。為了減輕這種可能性,數(shù)據(jù)包在設(shè)計時帶有稱為生存時間或躍點限制的到期時間。數(shù)據(jù)包 TTL 可用于確定數(shù)據(jù)包已流通多長時間,并允許發(fā)送方通過 Internet 接收有關(guān)數(shù)據(jù)包路徑的信息。
每個數(shù)據(jù)包都有一個位置存儲數(shù)值,該數(shù)值確定數(shù)據(jù)包應(yīng)繼續(xù)在網(wǎng)絡(luò)中移動的時間。路由器每次接收到一個數(shù)據(jù)包,都會從 TTL 計數(shù)中減一,然后將其傳遞到網(wǎng)絡(luò)中的下一個位置。如果在減去后的任意時間,TTL 計數(shù)等于零,則路由器將丟棄該數(shù)據(jù)包并將 ICMP 消息發(fā)回給原始主機。
常用的網(wǎng)絡(luò)命令 ping 和 traceroute 都使用 TTL。使用 traceroute 命令時,一串剩余計數(shù)越來越高的 TTL 的數(shù)據(jù)包流將通過 Internet 發(fā)送到目的地。由于連接的每一步都是其中一個數(shù)據(jù)包的最后一站,因此每個位置都會在丟棄數(shù)據(jù)包后向發(fā)送方返回 ICMP 消息。然后,ICMP 消息返回到發(fā)送方所花費的時間就可以用于確定到達網(wǎng)絡(luò)上每個連續(xù)躍點所花費的時間。
TTL 還用于什么情況?
除了在 Internet 上跟蹤路由數(shù)據(jù)包外,生存時間還用于在一定時間內(nèi)緩存信息。某些網(wǎng)絡(luò)用例以更傳統(tǒng)的方式運行,而不是測量路由器之間的跳躍時間(每次跳躍之間的時間可能不同)。
Cloudflare CDN 這樣的 CDN 通常使用 TTL 來確定在從源站獲取新副本之前,應(yīng)從 CDN 邊緣服務(wù)器提供多長時間的緩存內(nèi)容。通過正確設(shè)置源站獲取之間的時間量,CDN 能夠提供更新的內(nèi)容,而無需將請求不斷傳播回源站。這種優(yōu)化使 CDN 可以有效地從更靠近用戶的位置提供內(nèi)容,同時減少從源站開始所需的帶寬。
在 DNS 記錄的環(huán)境中,TTL 是一個數(shù)值,它確定 DNS 緩存服務(wù)器在連接到權(quán)威性 DNS 服務(wù)器并獲取記錄的新副本之前可以為 DNS 記錄提供服務(wù)的時間。