網絡故障(network failure)是指由于硬件的問題、軟件的漏洞、病毒的侵入等引起網絡無法提供正常服務或降低服務質量的狀態。 DNS緩存不僅在操作系統中生成,而且在瀏覽器,應用程序和IPS網絡運營商中生成。這些DNS緩存的位置以及如何清除它們將在下面詳細說明。 1、瀏覽器的DNS緩存時間與DNS服務器返回的TTL值無關。 2、應用程序的DNS緩存由應用程序控制。以Java為例,Java Web應用程序的DNS緩存受JVM的緩存策略控制 3、操作系統緩存將引用DNS服務器響應的TTL值,但并不完全等于TTL值。 身體 : DNS查詢請求類型 查詢響應類型 DNS服務器對客戶請求的響應類型很多,常見的有四種: 權威答復:權威答復是返回給客戶的肯定答復,并且設置了DNS消息中的權威位。此回復是從權威的DNS服務器發送的; 轉發答復:轉發答復包含與客戶端的解析請求匹配的資源記錄; 參考答復:參考答復僅在DNS服務器以迭代模式工作時使用,并且包含有助于客戶端解決請求的其他信息。例如,當DNS服務器找不到與客戶端發起的解析請求匹配的值時,它將向DNS客戶端發送參考回復,告訴其幫助解決該請求; 否定答復:否定答復表示權威服務器在解析客戶端的請求時可能會遇到以下兩種情況之一: 權威DNS服務器報告客戶端查詢的名稱不存在; 權威DNS服務器報告存在相應的名稱,但是沒有指定類型的資源記錄。 無論響應是肯定的還是否定的,DNS客戶端都將結果保存在其本地緩存中。 DNS的TTL是指生存時間,即生存時間。 DNS服務器解析并返回IP分配策略和客戶端的域名IP選擇策略 一個簡單的測試,首先解析163個域名 ? C:\ Users \ cmcc> nslookup 服務器: 地址:211.140.188.188 非權威性答復: 名稱: 地址:111.1.38.160 111.1.38.159 223.94.95.114 223.94.95.119 別名: 可以看出該域名返回了多個IP。 DNS服務器將對IP返回采取一些策略,以確?蛻舳嗽L問服務器的負載平衡或速度保證,例如IP的隨機返回,向用戶返回最近的IP等。主要控制策略是調整列表中返回的第一個IP。 RFC1794解釋了dns對負載平衡的支持: 一般客戶端(例如瀏覽器)為DNS返回的IP選擇第一個IP。如果第一個IP出現故障,則轉到第二個IP。還有一些客戶端在連接到第一個IP后立即失敗。 每個鏈接中的DNS緩存介紹瀏覽器DNS緩存 瀏覽器的DNS緩存時間與DNS服務器返回的TTL值無關。 瀏覽器在獲取網站域名的實際IP地址后將緩存其IP,以減少網絡請求的丟失。每個瀏覽器都有固定的DNS緩存時間。 Chrome的到期時間為1分鐘,并且在此期間內將不會再次請求DNS。 Chrome瀏覽器更方便地查看其DNS緩存時間,請在地址欄中輸入 chrome:// net-internals /#dns 您可以看到瀏覽器的緩存 Java DNS緩存 Java Web應用程序的DNS緩存由JVM緩存策略控制。當InetAddress類首次使用某個域名(例如)創建InetAddress對象時,JVM將從DNS獲取該域名及其名稱。信息(例如IP地址)存儲在DNS緩存中。當InetAddress類下次使用此域名時,它將直接從DNS緩存中獲取所需的信息,而不必訪問DNS服務器。更改此值有兩種方法:
用于成功查找的Java級名稱查找緩存策略: 任何負值:永遠緩存 任何正值:緩存地址的秒數 零:不緩存 默認值為永遠(FOREVER)。出于安全原因,這 設置安全管理器后,將永久進行 緩存。當有安全感 未設置管理器,此實現中的默認行為 要緩存30秒。 networkaddress.cache.negative.ttl = 10 networkaddress.cache.ttl = -1 此文件中的文字清楚地解釋了上述值。 cache.negative.ttl是指緩存DNS否定回復的時間。 OS DNS緩存 操作系統緩存將引用DNS服務器響應的TTL值,但并不完全等于TTL值。 測試,以Zhihu的DNS解析為例:
記錄名稱.......: 記錄類型......:1 生存時間...:323(秒) 數據長度......:4 Part ...:答案 一條(主機)記錄。...:60.28.215.71 記錄名稱.......: 記錄類型......:1 生存時間...:323 數據長度......:4 Part ...:答案 一條(主機)記錄。...:60.28.215.70 通過域名解析命令獲取ISP域名服務中的TTL時間:
服務器: 地址:211.140.188.188 得到答案: 標題: opcode = QUERY,id = 2,rcode = NOERROR 標頭標志:響應,想要遞歸,遞歸有效。 問題= 1,答案= 2,權限記錄= 2,其他= 18 問題: ,類型= A,類= IN 答案: -> 互聯網地址= 60.28.215.71 ttl = 900(15分鐘) -> 互聯網地址= 60.28.215.70 ttl = 900(15分鐘) 授權記錄: -> 名稱服務器= ttl = 136(2分鐘16秒) 您可以看到,本地ISP服務器上的緩存時間為15分鐘,即使刷新了本地操作系統緩存,該緩存在ISP上仍然存在。 Windows Windows 2003之前的注冊表中DNS緩存設置時間的位置為HKEY_LOCAL_MACHINE / SYSTEM / CurrentControlSet / Services / Dnscache / Parameters 鍵名稱為MaxCacheEntryTtlLimit,它是DNS緩存條目的最大TTL。在XP和2003系統中,此項的名稱為MaxCacheTtl。 MSDN中有詳細的介紹: 詳細說明DNS域TTL與操作系統的DNS緩存策略之間的關系: MaxCacheEntryTtlLimit的默認值為DWORD = 0x15180 = 86400秒= 1天 如果DNS區域為TTL 如果DNS區域為TTL> MaxCacheEntryTtlLimit,則使用MaxCacheEntryTtlLimit 以下命令可用于Windows系統: ? ipconfig / displaydns顯示本地dns,生存期為80-8000可用 ipconfig / flushdns刷新Windows dns緩存 Android 默認情況下,地址被緩存600秒(10分鐘)。查找失敗將被緩存10秒鐘。 DNS緩存 在Android4.0(冰淇淋三明治)和更早的版本中,DNS緩存是由InetAddress和C庫執行的,這意味著無法正確兌現DNS TTL。在以后的版本中,緩存僅由C庫完成,并且DNS TTL被采用。 IOS 根據官方文檔,iOS設備上的DNS緩存每24小時刷新一次 其他系統與DNS相關的命令 MAC lookupd-flushcache清除緩存 Linux /etc/init.d/nscd restart清除緩存 ISP DNS緩存 ISP(電信運營商)高速緩存不可靠,某些高速緩存服務器(數量不多)將忽略網站DNS提供的TTL,并自行設置更長的TTL,導致無法在以下情況下及時獲取新IP:頂級DNS已更新地址。 可以看出,在從根DNS請求域名解析的過程中,有太多級別會影響DNS的獲取。緩存是一把雙刃劍,它提高了DNS的獲取速度,并且還影響了IP更改時DNS的無法使用。更新到最新的時間。
當今,越來越多的業務應用運行于網絡架構之上,保障網絡的持續、高效、安全的運行,成為網絡管理者面臨的巨大挑戰。 |
溫馨提示:喜歡本站的話,請收藏一下本站!