배포 중 궁금증이 생겨 정리해둔다.
1. DNS
1) 도메인
- www.naver.com 같은 것.
- 엄밀히 도메인은 naver.com
- www는 호스트네임 (ex. blog, cafe…)
- 웹사이트에 접속하려면 브라우저가 그 사이트를 제공하는 서버에 요청을 해서 데이터를 받아와야한다. 그러려면 그 서버의 IP 주소를 알아야하는데, 이때 보다 외우기 쉬운 주소(도메인)으로 접속한다. 전화번호부와 비슷한 개념이다.
그렇다면 이 전화번호부는 어디에 있을까?
2) DNS, 네임서버
- 시스템이라는 말에서도 알 수 있듯, 어디 한 군데에 싹 들어있는 게 아니라 다층적으로 구성된 네트워크에 분산돼서 도메인 정보들이 저장되고 조회된다.
- DNS 서버는 네임서버라고도 불린다.
널리 쓰이는 예제
- 내 컴퓨터에서 www.naver.com에 접속한다. 현재 내 브라우저는 네이버의 IP를 모른다.
- 브라우저는 먼저 PC에 설정된 로컬 DNS 서버에 해당 도메인과 호스트명의 IP를 갖고 있는지 물어본다. 이 주소의 정보가 이미 캐싱돼있을 수도 있고, 없을 수도 있다.
- 이 로컬 DNS 서버는 보통 통신사마다 지정된 곳이 있는데, 사용자가 다른 곳으로 바꿀 수 있다.
- 있다면 바로 반환.
- 없으면 로컬 DNS는 Root DNS 서버에 이 주소에 해당하는 IP를 어디서 찾을 수 있는지 물어본다.
- 루트 DNS 서버는 전세계에 13군데가 있다.
- 한국에는 없지만 미러 서버가 이를 대신한다.
- 루트 DNS 서버는 응답으로, .com으로 끝나는 도메인들을 담당하는 서버의 IP 주소를 반환한다.
- 로컬 DNS 서버는 이 주소를 받아들고, .com 담당 서버를 찾아간다.
- .com 담당 서버는 naver.com의 도메인 정보를 가진 naver.com의 도메인 서버를 알려준다.
- 그 주소를 보고 naver.com 서버에 가면, ‘www.naver.com’, ‘mail.naver.com’, ‘blog.naver.com’ 등 여러 호스트네임 별 IP 주소가 있다.
- 여기로부터 www에 해당하는 IP 주소를 얻어낸 다음 브라우저로 반환하고, 비로소 www.naver.com의 서버로 접속하게 된다.
2. A Record vs. CNAME
1) A Record
도메인을 서버의 IP로 직통연결
접속이 빠르다
2) CNAME
도메인을 별명과 연결
IP가 유동적으로 변하는 서버의 경우, 그 바뀌는 IP들에 일정하게 연결된 다른 도메인, 즉 canonical name을 적는다.
AWS나 Firebase에서 아이피가 계속 바뀔 때 사용 가능
한 군데를 더 거친다는 게 단점