Kubernetes CKA課程筆記 29

為什麼需要DNS? 基本DNS運作

ZONGRU Li
7 min readOct 22, 2021

考量到上一篇最後測試curl的情境

如果哪天遇到在測試Pod內執行curl指令到Service-Name:Service-Port

假設發現不通!!!

然後確認了

  1. Service Component還在! (OK)
  2. Pod還活著,並且確認是Service的Endpoint! (OK)

那麼問題會出在哪裡呢?

所以就要研究上一篇最後Service-Name如何解析成Service的IP位置!

也就是當curl是打向Service的IP:Service的Port可以通!

那也就是"Service-Name解析成IP位置"這個過程出了問題!

至於何謂DNS呢?

DNS — Domain Name Service

  • 整個網路都依賴DNS來運作
  • 所有電腦在網路世界裡都是有唯一的IP位置來辨別
  • 任何電子元件(如電腦)與其他電子元件溝通都透過IP位置
  • 但是進到google(www.google.com)或FB(www.facebook.com)等網站
  • 都不是透過IP位置,並且實際上這些網站背後可能有多台電腦
  • 這些電腦都是不同IP位置
  • 並且當地的餐廳網站則可能是只有單一個電腦在處理
  • 所以為什麼要用名子替代IP位置?
  • 簡單原因是人類比較容易記住名稱而非像電腦一樣容易辨識IP位置
  • 所以名稱轉變為IP位置,最終Request傳送到某個IP位置
  • 完成這件事的就是DNS=translates domain names to IP addresses
  • 最初期網路興盛前,DNS的設置是存在本機/etc/hosts目錄下
  • 並且上述路徑仍是當今DNS服務查找的第一個位置
  • 但是現在網路太過龐大,不太可能本機端就把所有的DNS存在單一電腦裡
  • DNS使用簡單的劃分策略來切分不同的domaingroup
  • Domain Name使用hierarchical(等級制)結構
  • 從根源(Root) Domains先劃分出13個由a ~ m(參考)根域名伺服器
  • 往下在畫分Top Level Domains(或稱TLD),其中有6個較為常見的:
6個常見的TLD(Top Level Domains),由不同目的取用(如下)
  1. .mli : for military(軍事) (ex : www.marines.mli)
  2. .edu : for educational institutions (ex : www.mit.edu)
  3. .com : for general purpose or businesses (ex : www.google.com)
  4. .org : for non-profit organizations (ex : www.wikipedia.org)
  5. .net : for networking technologies (ex : www.fairtrade.net)
  6. .gov : for government (ex : www.nyc.gov)
  • 在後續演變下,TLD又有增加由地理位置的domains:
  • at(Austria),de(Germany),us(USA),fr(France)
  • ex : www.a1.at 或www.bmw.de等
  • 後面還有各種TLD加入(.biz,.int,.dev,…etc)
  • 當有企業建立網站,則可以購買domain(ex : google.com或是amazon.com)
  • 購買可能為期一年之類的期限
  • 至於誰管理這些domain?或誰出售這些domain?誰建立名稱可循性
  • 一切都是由網際網路名稱與數字位址分配機構(ICANN)
  • ICANN(Internet Corporation for Assigned Names and Numbers)
  • ICANN統一管理了domain的命名空間,註冊與授權及分配
  • 所以所有的domain name都屬於Root
  • 例如講師建立了網站給人瀏覽
  • 所以在TLD.com後面購買了"techworld-with-nana"這個名稱
  • 但是該公司網站又有劃分三台主機Server
  • 所以網域上又有Subdomain(分別為bootcamp,workshops,course),故有:
  1. www.bootcamp.techworld-with-nana.com
  2. www.workshops.techworld-with-nana.com
  3. www.course.techworld-with-nana.com
  • 也就是企業網站再依據Subdomain來區分不同應用系統
  • 這些系統都屬於該企業公司
  • 如上圖此時就有完整的domain name可以進到對應的IP位置機台
  • 還有另一個domain name定義FQDNRoot開始

Fully Qualified Domain Name(FQDN):

  • course.techworld-with-nana.com.
  • (注意上面尾巴多了個點,也就是Root,但實際上不太需要用這個)

至於DNS又是如何解析的?

DNS解析:

  • 一般電腦都有預先安裝好DNS Client
  • 所以打開瀏覽器鍵入網址後
  • 系統都會發出DNS Query(例如問www.facebook.com)
  • 去詢問DNS該網址位置,找到對應該網址的IP位置
  • 首先DNS Query會先到達recursive name server(遞迴式名稱伺服器)
  • 遞迴式名稱伺服器通常就是網路服務供應商
  • 遞迴式名稱伺服器通常會儲存詢問的網址對應的IP位置
  • 若很剛好這個網址沒有儲存
  • 則會在轉拋這個DNS Query給”13 Root Server”其中一個
  • 用以請求top level domain(因為top level domainRoot Server管理)
  • 這些13 Root Server分布在全世界
  • (由技術上拓展鏡像伺服器架設13 Root Server到2019共有1008台)
  • 所以DNS Query很快會得到回應,並返還回到recursive name server
  • 但是通常返還的不是真正Query所要的IP位置
  • 而是返還告知recursive name server,這個.comTLD你可以詢問這個位置的TLD Server(管理.com的TLD Server)
  • TLD Server則再回應給recursive name server一個清單
  • 該清單上記載針對.com的authoritative name Server(授權名稱伺服器)
  • 最終這些清單上的所有authoritative name Server才真的知道facebook.com的IP位置
  • recursive name server由清單挑選一個authoritative name Server詢問
  • 然後recursive name server才真的拿到facebook.com的IP位置
  • 而當然不是每次都需要這麼費工
  • 所以個人電腦或recursive name server都有cache機制紀錄一段時間
  • 保留facebook.com對應的IP位置一陣子
個人電腦或遞迴式名稱伺服器會保留該DNS的真實IP位置一陣子

參考課程(reference)

--

--

ZONGRU Li
ZONGRU Li

Written by ZONGRU Li

2022/11/17 開源部分個人筆記給LINE "Java程式語言討論區"社群,希望能對社群的技術學習做一點點貢獻.(掩面....記得退訂閱!

No responses yet