엘리의 DNS를 듣고 주관적으로 정리한 내용입니다.
이런 분들이 들으면 좋아요
이렇게 구성되어 있어요
- 이론편: DNS의 개념과 동작 과정
- 실전편: 도메인 등록 및 설정 방법
이론편
Domain Name System
- 도메인 이름과 IP 주소에 대한 정보를 관리하는 시스템
- 인터넷 사용자는 IP 주소를 몰라도 됨

DNS 동작 과정
- 브라우저가 브라우저에 있는 캐시에서 혹시 IP가 있나 찾아봄
- 없으면 컴퓨터에 저장되어 있는 호스트 파일과 캐시에서도 IP를 찾아봄
- 여기에도 없으면 DNS서버에 IP주소 요청
- DNS 서버가 요청받은 IP주소를 전달

DNS 서버 분리
- 전 세계의 모든 정보를 관리해서는 안됨 -> 여러 서버로 분리해서 사용
- 트래픽과 데이터를 분산해서 안정적인 서비스를 제공
- 서버를 분리하기 위해 DNS는 도메인을 계층적이게 관리

DNS 계층 구조
- 트리 구조로 나타냄
www.mo-rak.com. (예시 도메인)
- 오른쪽부터 시작돼서 왼쪽으로 읽어감
- .은 Root Domain, 보통 생략해서 사용
- 하위 도메인인 com이 Top-Level Domain
- 그 하위의 mo-rak과 www가 Second-Level Domain, Third-Level Domain
- Top-Level Domain 아래로는 Sub Domain으로 얘기하기도 함

- 계층 구조에 따라 서버들이 배치되어 있어서 상위 서버는 하위 서버의 위치를 알고 있음
- 타고타고 들어가서 원하는 도메인까지 도착
- 이러한 서버들을 네임서버라고 부름
- 네임 서버들은 다양한 기관에서 관리를 해주고 있는데, 가비아나 Route53같은 도메인 판매업체는 서브 도메인 네임서버에 해당

DNS 동작 과정
- 네임서버에서는 실제로 DNS 정보를 가지고 있음 -> 권한이 있는 네임서버라고 부름
- DNS 정보를 가지고 있지 않은 서버는 권한이 없는 네임서버라고 부름 (로컬 DNS 서버)
- 로컬 DNS서버는 KT나 SKT같은 통신사에서 제공, 클라이언트와 직접적으로 통신을 하고 네임서버와 통신을 함

- 브라우저에서 로컬 DNS 서버로 IP 요청
- 로컬 DNS 서버에서 캐시 확인
- 없으면 힌트파일(루트 네임서버에 대해 알고 있는 정보)을 토대로 루트서버에 IP 요청
- 루트서버는 IP주소를 가지고 있지 않기 때문에 하위 도메인 주소를 줌
- TLD에 요청 -> TLD도 IP주소를 가지고 있지 않아서 서브 도메인 주소를 줌
- 서브 도메인 네임 서버에 요청 -> IP 주소 줌
- 브라우저에게 IP 주소 전달
실전편
도메인 판매 업체
- 도메인을 등록하려면 네임서버를 직접 구축할 수도 있지만 보통 도메인 판매 업체를 많이 이용
- 다양한 업체들이 있지만 이번에는 가비아를 예시로 진행
도메인 적용해보기
- 원하는 도메인을 구매

- DNS 레코드를 추가해 도메인 이름에 IP 주소를 매핑
IP를 자기 IP주소로 변경해서 저장하면 끝
이걸 DNS 레코드라고 하는데 이 값이 가비아 네임서버에 저장됨

DNS 레코드: 호스트
- 호스트는 서브 도메인을 의미
- @(null), www, m, dev 등
- 다양한 문자열들을 입력해서 목적에 맞게 다양한 도메인 이름들을 생성할 수 있음

DNS 레코드: 타입
- 어떤 값이 매핑이 되는지를 설정할 수 있음
- A: 도메인 이름을 IP 주소(IPv4)로 매핑

- CNAME: 도메인 이름에 대한 별칭을 매핑

- www.mo-rak.com 으로 들어가면 mo-rak.com으로 들어가는 것과 같음을 의미
- 사실 A타입을 이용해서 같은 IP 주소를 입력해도 같은 효과를 낼 수 있음 -> 하지만 IP 주소가 변경 될 경우 모든 IP값을 변경해줘야 함
- NS: 도메인 이름에 대한 권한이 있는 네임서버를 매핑

- 여기서는 가비아에서 구매했기 때문에 자동으로 ns값이 가비아 네임서버로 등록되어 있음
- 다른 네임서버에 우리의 특정 도메인 이름에 대한 권한을 위임했을 때 사용
- 이와 관련해서 GSLB, CDN를 가지고 학습하면 좋을듯!
DNS 레코드: 그외 타입
- SOA(Start Of Authority): 도메인 영역에 대한 권한을 설정해줌
- TTL, 네임서버, 관리자 정보 등을 등록
- MX(Main eXchange): 도메인 이름에 메일 서버를 매핑
- PTR(PoinTeR): IP 주소를 도메인 이름에 매핑
- IP 주소에 매핑되는 도메인 이름을 확인할 때 사용
- TXT(TeXT): 도메인 이름에 대한 설명과 간단한 텍스트를 지정
- Google Search Console과 같은 검색 엔진 등록 과정에서 사용되기도 함
DNS 동작 과정 진짜 최종!
- A와 CNAME을 타입을 가지고 마지막으로 최종 정리

- 브라우저에서 로컬 DNS 서버로 IP 주소 요청
- 캐시 확인 후 루트 네임서버로 이동 -> A값이 없기 때문에 NS값이 com 네임서버의 주소를 응답
- com 네임서버로 이동 -> 여기도 A가 없어서 가비아 네임서버의 주소를 응답
- 가비아 네임서버로 이동 -> CNAME 타입으로 mo-rak.com이 매핑되어 있음 -> mo-rak.com에 대한 A 값을 찾아서 응답
- 로컬 DNS에서 브라우저로 IP 주소 전달
https://youtu.be/sDXcLyrn6gU [10분 테코톡] 엘리의 DNS