DNS
DNS(Domain Name System) 원리
- Domain Name System Server에 domain과 ip를 저장하면, 클라이언트가 도메인을 입력했을 때 먼저 hosts 파일에서 검색한 후 없다면 Domain Name System Server에 해당 도메인에 해당하는 ip가 있는지 찾아서 요청을 보낸다.
각 부분별로 DNS server가 따로 존재한다.
Root를 담당하는 DNS server는 Top-level를 담당하는 server를 알고 있어야한다.(상위가 하위의 DNS 목록과 ip 주소들을 알고 있어야한다. 단, 직속 하위 파트만 알고 있다.)
❔ Client가 도메인으로 IP 주소를 찾는 방법( blog.example.com 도메인의 IP를 찾아라! )
- 클라이언트가 Root 네임 서버에게 도메인을 아는지 요청한다.
- 이때, 클라이언트는 Root 네임 서버를 알고 있다.
- Root DNS 서버가 .com을 전담하는 DNS 서버들의 IP 목록을 알려준다.
- 클라이언트가 Top-level DNS 서버에게 아는지 요청한다.
- Top-level DNS 서버가 example.com을 전담하는 DNS 서버들의 IP 목록을 알려준다.
- 클라이언트가 Second-level DNS 서버에게 아는지 요청한다.
- Second-level DNS 서버가 blog.example.com을 전담하는 DNS 서버들의 IP 목록을 알려준다.
- 클라이언트가 Sub DNS 서버에게 아는지 요청한다.
- 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를 매핑(연결)시킨다.