DNS

DNS(Domain Name System) 원리

  • Domain Name System Server에 domain과 ip를 저장하면, 클라이언트가 도메인을 입력했을 때 먼저 hosts 파일에서 검색한 후 없다면 Domain Name System Server에 해당 도메인에 해당하는 ip가 있는지 찾아서 요청을 보낸다.

DNS 각 위치별 이름
각 부분별로 DNS server가 따로 존재한다.
Root를 담당하는 DNS server는 Top-level를 담당하는 server를 알고 있어야한다.(상위가 하위의 DNS 목록과 ip 주소들을 알고 있어야한다. 단, 직속 하위 파트만 알고 있다.)

❔ Client가 도메인으로 IP 주소를 찾는 방법( blog.example.com 도메인의 IP를 찾아라! )

  1. 클라이언트가 Root 네임 서버에게 도메인을 아는지 요청한다.
    • 이때, 클라이언트는 Root 네임 서버를 알고 있다.
  2. Root DNS 서버가 .com을 전담하는 DNS 서버들의 IP 목록을 알려준다.
  3. 클라이언트가 Top-level DNS 서버에게 아는지 요청한다.
  4. Top-level DNS 서버가 example.com을 전담하는 DNS 서버들의 IP 목록을 알려준다.
  5. 클라이언트가 Second-level DNS 서버에게 아는지 요청한다.
  6. Second-level DNS 서버가 blog.example.com을 전담하는 DNS 서버들의 IP 목록을 알려준다.
  7. 클라이언트가 Sub DNS 서버에게 아는지 요청한다.
  8. Sub DNS 서버는 blog.example.com에 해당하는 IP 주소를 알려준다.
  • 만약 클라이언트가 도메인을 칠 때마다 요청을 위와 같이 보낸다면, 비효율적이다!
    한번 요청했던 도메인은 DNS 서버가 기억(cache)하고 있다가 갖고 있던 것을 준다.
    이는 권한이 있는 서버가 응답한 것이 아니기 때문에 Non-authoritative answer이다.
    nslookup(Name Server lookup) 명령어로 IP를 알 수 있다.

🤷‍♀️ CNAME, A가 뭐죠?

1. CNAME

  • Canonical Name Record의 약자
  • DNS record 형식이 도메인으로 되어있다.
  • 도메인 주소에 대한 별명을 지어주는 것이다.

2. A

  • Address Record의 약자
  • DNS record 형식이 IP주소로 되어있다.
  • 도메인 주소에 대한 IP Address를 매핑(연결)시킨다.


[참고]
https://opentutorials.org/course/3276