快取與 bailiwick — 能相信到哪裡
區分 referral、glue、bailiwick,整理出哪些資訊可以放進 cache。
前章回顧: 第 1 章中,我們確認了當 shared recursive resolver 的 cache 殘留偽造的 RRset 時,所有使用者都會收到相同錯誤答案的整體圖像。本章中,我們將整理 referral / glue / bailiwick,作為判斷「resolver 可以把什麼放進 cache」的依據。
委任時回傳的不是「最終 answer」而是「下一站」
recursive resolver 並不會一次就收到最終答案。父區域會回傳指向 child zone 之 NS 的 referral,resolver 再依這份指引前往下一台 authoritative server。
| 位置 | 常見內容 | 思考方式 |
|---|---|---|
| ANSWER | 最終 RRset | 是否確實是所要名稱與型別的答案 |
| AUTHORITY | NS / SOA | 是 referral 還是否定回應 |
| ADDITIONAL | glue / 輔助位址 | 是前往下一站的立足點,還是無關的附加資料 |
練習 2-1 — glue 是作為橋樑的立足點
若 Additional 中含有對應 in-bailiwick NS 名稱的 A / AAAA,resolver 就更容易到達 child zone。
Q1. 父區域 example.com 將 shop.example.com 委任給 ns1.shop.example.com,referral 的 Additional 中含有 ns1.shop.example.com A 192.0.2.53。對於這筆附加資訊的說明,最貼切的是哪一個?
思考這是否是到達子區域的「立足點」。
這是為了前往子區域的 in-bailiwick glue。作為推進委任的輔助資訊很有用,但不能以與一般最終 answer 相同的強度來看待。
Q2. 在 dig 的輸出中,delegation 的 NS 群主要出現在哪個位置?
referral 指示的是「下一站」而非「最終 answer」。
delegation 的 NS 群在 dig 中主要出現在 AUTHORITY 區段。ANSWER 是最終 RRset,ADDITIONAL 是 glue 或輔助位址,QUESTION 是放置查詢之名稱、型別、類別的區段(dig 的輸出由 HEADER / QUESTION / ANSWER / AUTHORITY / ADDITIONAL 這 5 個區段構成)。
bailiwick 判定的 3 種情境
Additional 中的記錄要如何處理,取決於它所在的委任範圍是在內側(in-bailiwick)還是外側(out-of-bailiwick)。
此處的判定是為了概念學習。實作細節各有不同,但「委任的立足點」與「無關的附加資料」要分開思考的觀點相當重要。
謹慎處理 out-of-bailiwick additional
若 referral 的 Additional 混入了 unrelated 的資料就會很危險。因此 resolver 的實作在判斷哪些範圍的 glue 要如何相信時,會格外嚴格。這種情境下常出現的概念就是 bailiwick。
bailiwick 的語源: 原本是中世紀英格蘭法律中指「bailiff(執行官)的管轄區域」的法律用語,具有「某主體所負責範圍」的含義。在 DNS 的脈絡中,將其轉用為判斷 「是否在委任源區域所負責的名稱空間範圍內」 的觀念。出現在 referral 的 Additional 中的記錄,若位於該委任的範圍 (bailiwick) 之內,就稱為 in-bailiwick;位於之外,就稱為 out-of-bailiwick。
練習 2-2 — 謹慎處理 out-of-bailiwick additional
若 referral 的 Additional 中混入無關的資料就會很危險。bailiwick 是用來限制「哪些範圍的 glue 要如何相信」的觀念。
Q3. 從 example.com 指向 ns.partner.net 的 referral 中,Additional 附帶了 ns.partner.net A 198.51.100.10。最保守的處理方式是哪一個?
確認那筆附加的 A 是否在 example.com 的管轄範圍內。
對於 out-of-bailiwick 的附加資訊,不要全面當作權威資料來相信,必要時另外解析該名稱本身才是保守的做法。bailiwick 的觀念正是為了抑制無關附加資料的混入而存在。
Q4. 關於 bailiwick 概念的主要目的,最貼切的是哪一個?
思考「在哪個範圍的介紹信上要嚴格對待其接受方式」。
bailiwick 是為了抑制接受搭著 referral 夾帶進來的無關附加資料而存在的觀念。透過它,resolver 可以限定 glue 的處理方式。
Q5. 關於 Additional 中的 glue,正確的是哪一個?
glue 很方便,但它的角色是「橋樑」。
glue 是追蹤 delegation 的輔助資訊。所謂「限定其處理方式」具體是指 (1) 僅將 in-bailiwick glue 作為委任的立足點使用、(2) 不將 out-of-bailiwick 的 Additional 視為權威資料,必要時另行解析、(3) 不將 Additional 中的記錄當作使用者所查詢名稱的最終 answer,這 3 點。
第 2 章重點整理
- delegation 的 NS 主要出現在 AUTHORITY,作為立足點的 glue 出現在 ADDITIONAL
- in-bailiwick glue 與 out-of-bailiwick additional 不應以相同的強度相信
- bailiwick 是抑制無關附加資料混入的觀點