TTL
TTL是 Time To Live 的縮寫,該字段指定IP包被路由器丟棄之前允許通過的最大網段數量。TTL是IPv4包頭的一個8 bit字段。在IPv4包頭中TTL是一個8 bit字段,它位於IPv4包的第9個字節。如下圖所示,每一行表示 32 bit(4字節),位從0開始編號,即0~31。
TTL的作用是限制IP數據包在計算機網絡中的存在的時間。TTL的最大值是255,TTL的一個推薦值是 64。
雖然TTL從字面上翻譯,是可以存活的時間,但實際上TTL是IP數據包在計算機網絡中可以轉發的最大跳數。TTL字段由IP數據包的發送者設置,在IP數據包從源到目的的整個轉發路徑上,每經過一個路由器,路由器都會修改這個TTL字段值,具體的做法是把該TTL的值減1,然后再將IP包轉發出去。如果在IP包到達目的IP之前,TTL減少為0,路由器將會丟棄收到的TTL=0的IP包並向IP包的發送者發送 ICMP time exceeded消息。
TTL的主要作用是避免IP包在網絡中的無限循環和收發,節省了網絡資源,並能使IP包的發送者能收到告警消息。
TTL 是由發送主機設置的,以防止數據包不斷在IP互聯網絡上永不終止地循環。轉發IP數據包時,要求路由器至少將 TTL 減小 1。
TTL值的注冊表位置HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 其中有個DefaultTTL的DWORD值,其數據就是默認的TTL值了,我們可以修改,但不能大於十進制的255。Windows系統設置后重啟才生效。
DNS TTL
TTL(Time-To-Live/生存時間),簡單的說它表示一條域名解析記錄在DNS服務器上緩存時間。當各地的DNS服務器接受到解析請求時,就會向域名指定的DNS服務器發出解析請求從而獲得解析記錄;在獲得這個記錄之后,記錄會在DNS服務器中保存一段時間,這段時間內如果再接到這個域名的解析請求,DNS服務器將不再向DNS服務器發出請求,而是直接返回剛才獲得的記錄;而這個記錄在DNS服務器上保留的時間,就是TTL值。
合理設置域名TTL值。
1、增大TTL值,以節約域名解析時間
通常情況下域名解析記錄是很少更改的。我們可以通過增大域名記錄的TTL值讓記錄在各地DNS服務器中緩存的時間加長,這樣在更長的時間段內,我們訪問這個網站時,本地ISP的DNS服務器就不需要向域名的NS服務器發出解析請求,而直接從本地緩存中返回域名解析記錄。
TTL值是以秒為單位的,通常的默認值都是3600,也就是默認緩存1小時。我們可以根據實際需要把TTL值擴大,例如要緩存一天就設置成86400。
2、減小TTL值,減少更換空間時的不可訪問時間
更換域名空間時會對DNS記錄進行修改,因為DNS記錄緩存的問題,新的域名記錄在有的地方可能生效了,但在有的地方可能等上一兩天甚至更久才生效,只就導致有部分用戶在一段時間內無法不可訪問網站了。
為了盡可能的減小這個各地的解析時間差,合理的做法是:
- 先查看域名當前的TTL值。
- 修改TTL值為可設定的最小值,建議為60秒。
- 等待一天,保證各地的DNS服務器緩存都過期並更新了記錄。
- 設置修改DNS解析到新的記錄,這個時候各地的DNS就能以最快的速度更新到新的記錄。
- 確認各地的DNS已經更新完成后,再TTL值設置成常用的值(如: TTL=86400)。