Host 記錄和 A 記錄之間的實際差異是什麼?兩者都指向一個IP,那麼有什麼差別呢?
答案1
實際的 DNS 規格中沒有主機記錄這樣的東西。主機記錄通常是一個邏輯結構DDI(DNS、DHCP 和 IPAM)解決方案如訊息布洛克斯和別的。它們包括各種 DNS 記錄類型(A、AAAA、PTR、CNAME 等)以及與「主機」相關的其他元資料。
答案2
正如其他人所說,DNS 規範中沒有「主機」記錄之類的東西。大多數人會混淆主機名稱和 DNS 記錄,因為 DNS 經常用於儲存主機名稱和 IP 位址之間的關係,以A
、AAAA
和PTR
記錄類型表示。
DNS 的功能遠不止於此:
- DNS 是一個廣泛分佈的分層資料庫,可用於儲存任意數量的事物。它恰好專注於將名稱映射到 IP 位址,反之亦然,因為這是互聯網最需要的資料庫。
- 所有主機名稱都是合法的 DNS 標籤。 (標籤 = DNS 記錄的左側)
- 並非所有 DNS 標籤都是合法的主機名稱實體。這就是人們感到困惑的地方。維基百科很好地涵蓋了這個主題,但簡短的版本是有許多將透過 DNS 語法檢查但在主機名稱中使用不合法的字元。這是一個非常重要的暗示,表示 DNS 不受主機名稱規範的約束。
為了總結和強化上述主題,我將從中刪除一堵厚厚的文字牆RFC-2181:
- 名稱語法
有時,人們會認為網域名稱系統僅用於將 Internet 主機名稱對應到數據,以及將 Internet 位址對應到主機名稱。這是不正確的,DNS 是一個通用的(如果有些限制的話)分層資料庫,並且可以儲存幾乎任何類型的數據,用於幾乎任何目的。
DNS 本身僅對可用於識別資源記錄的特定標籤施加一項限制。這項限制與標籤的長度和全名有關。任何一個標籤的長度限制在 1 到 63 個八位元組之間。完整網域的長度限制為 255 個八位元組(包括分隔符號)。零長度全名被定義為代表 DNS 樹的根,並且通常書寫和顯示為“.”。除了這些限制之外,任何二進位字串都可以用作任何資源記錄的標籤。類似地,任何二進位字串都可以用作任何記錄的值,其中包含網域名稱作為其部分或全部值(SOA、NS、MX、PTR、CNAME 以及可能添加的任何其他值)。 DNS 協定的實作不得對可使用的標籤施加任何限制。特別是,DNS 伺服器不得拒絕為某個區域提供服務,因為該區域包含某些 DNS 用戶端程式可能無法接受的標籤。 DNS 伺服器可以配置為在載入時發出警告,甚至拒絕載入包含可能被認為有問題的標籤的主要區域,但是預設情況下不應發生這種情況。
但請注意,使用 DNS 資料的各種應用程式可能會對其環境中可接受的特定值施加限制。例如,任何二進位標籤都可以有 MX 記錄,並不表示任何二進位名稱都可以用作電子郵件地址的主機部分。 DNS 的用戶端可以對用作 DNS 查找請求金鑰的值以及 DNS 傳回的值施加任何適合其情況的限制。如果用戶端有此類限制,則它全權負責驗證來自 DNS 的數據,以確保其在使用該數據之前符合要求。
最後一段尤其重要。 DNS 標準對於合法儲存的內容非常開放在 DNS 內,但其他標準可以規定服務如何消耗DNS 可以對應用程式應該(或不應該)期望在那裡找到的內容施加任何限制。對於由 RFC 定義的主機名稱來說正是如此外部DNS 標準。
答案3
DNS 將 A 記錄指定為可能的記錄類型。 A 記錄有時稱為主機記錄。它們是同一件事,但我更喜歡使用“A 記錄”,因為這就是它的正式名稱。
您是否在某些情況下遇到過這兩個概念,它們似乎意味著不同的事物?我知道 Infoblox DNS 設備支援「主機物件」的概念,這是其配置中的資料結構,在 DNS 伺服器中轉換為 A 和 PTR 記錄。
答案4
是的,我正在與 Infoblox 打交道。你們是對的 - Host Record 是 Infoblox 創建的一個對象,用於同時創建 A 記錄和 PTR 記錄。
也可以建立單獨的正向和反向查找。雖然在搜尋大型資料庫時有點慢,但 Infoblox 對很多事情都有好處。
感謝您的投入。學到了很多 :)