Domain-Name-System

記憶體的 DNS 記錄可能會使 TTL 值翻倍嗎?

  • August 11, 2022
  1. 權威 DNS 伺服器發送一條 TTL 為 600 秒的 A 記錄。
  2. 此記錄由另一個 DNS 記憶體,該 DNS 又在 599 秒後回复具有 600 秒 TTL 的 A 記錄的請求。

由於接收記錄的客戶端收到了 600 秒的 TTL,理論上,記憶體 DNS 不應該將 TTL 調整為 1 秒以傳遞記錄的真實年齡嗎?TTL 的目的是允許在已知的時間間隔內更改和重新傳播記錄,這不是可能使該時間間隔加倍嗎?

這不會使該間隔增加一倍嗎?

不。

帶有記憶體的遞歸解析器在時間 T 獲得了一條 TTL 為 600(秒)的記錄。它將它保存在它的記憶體中(讓我們認為它有無限的空間 - 所以永遠不需要提前驅逐數據 - 而且它們不是與 TTL 值混淆的本地策略)。

在 T 和 T+600 之間,該值在其記憶體中。如果它對記錄有任何查詢,它會在查詢到來的那一刻給出它的 TTL,所以如果一個查詢在 T+30 出現,那麼給出的 TTL 將是 600 - 30 = 570,如果查詢是在T+599 給出的 TTL 將是 600 - 599 = 1

現在在 T+600 或更準確的時間之後的任何時間會發生什麼,如果有查詢出現?

$$ 1 $$ 記憶體將計算 TTL 以提供給客戶端,並確定它已變為 0 或負數,這意味著它已過期。所以記憶體實際上沒有數據來回复客戶端。所以它會刪除它的記憶體數據,再次詢問相關的權威名稱伺服器,它會希望回複數據,以及一個 TTL(可能又是 600,可能是別的東西),解析器將把它複製到它的記憶體中供以後使用並回复把它交給發出請求的客戶。

$$ 1 $$還有其他情況:如果認為“重要”,記憶體可以決定搶先重新查詢即將過期的記錄,以便在查詢之後使它們已經可用。

引用自:https://serverfault.com/questions/1107890